Trezor
如何使用 trezor connect 簽署 ERC20 交易
我將一些 ERC20 代幣發送到我的 trezor 中的乙太坊地址,我可以使用 MEW 成功地看到它。我希望將其用作氣隙錢包,但經常使用(即,不是冷錢包)。
假設我創建了一個原始交易,如何呼叫 trezorconnect 對其進行簽名?
$$ Edit: The method might be to call signtx in trezor and have crypto elements v,r,s returned and then somehow convert to format ready for broadcast. If correct, code please? $$
如果你有 R、S、V,使用 ethereumjs-tx 庫:
let signedTransaction = _.clone(unsignedTransaction) signedTransaction.r = Buffer.from(rsv.r, 'hex') signedTransaction.s = Buffer.from(rsv.s, 'hex') signedTransaction.v = Buffer.from(rsv.v, 'hex') let tx = new ethTx(signedTransaction); const serializedTx = tx.serialize(); const rawTx = '0x' + serializedTx.toString('hex');
然後你發送 rawTx:
web3.eth.sendSignedTransaction(rawTx)
請注意,當您使用 ledger(可能也使用 trezor)簽署交易時,您必須在簽署之前將鏈 id 放在“v”中,如下所示:
transactionCopy.v= "0x0" + chainId.toString(16) transactionCopy.r="0x00" transactionCopy.s="0x00"