Trezor

如何使用 trezor connect 簽署 ERC20 交易

  • April 29, 2018

我將一些 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"

引用自:https://ethereum.stackexchange.com/questions/46074