📜 [專欄新文章] 硬體錢包 ledger s 進行以太坊交易
✍️ Peter Lai
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
最近協助一個朋友使用硬體錢包 ledger s 進行以太坊交易,一開始閱讀了官方文件後,目前支援的除了他們的 app 外就是 myetherwallet,如果要由程式進行交易的話,不能使用上面的兩種服務,好險後來找到了官方的套件,這篇文章紀錄使用 ledger s 進行交易的方式。
硬體錢包 ledger s 進行交易有下列兩種方式:
透過 ledger s 簽章交易,最後再由程式發送到區塊鏈節點。
使用 ledger s 14 個字 mnemonic,並使用 hdkey 錢包簽章交易,最後再由程式發送到區塊鏈節點。
上面兩種方式各有優缺點,第一種方式因為 mnemonic 儲存在硬體錢包中所以會比第二種方式安全,不過每次交易都需要在硬體錢包上面勾選同意,而第二種方式比較方便,可以快速產生好幾筆交易,這篇文章指介紹第一種方式簽章交易。
在繼續閱讀下面文章前請先確認您的 ledger s 已經設定 pin code 和 mnemonic,並且開啟了以太坊以及與您的電腦連接,設定以及開啟的文件可以看這份文件。
連接 ledger s
在繼續簽章前,我們需要先與 ledger s 建立連線
ledger.comm_node.create_async().then(function(comm) { // use eth application const eth = new ledger.eth(comm)
}).catch(function (err) {
// handle error
})
取得 hdpath 的錢包位址
eth.getAddress_async("m/44'/60'/0'/0/0", false, true).then(function (address) {
// address
}).catch(function (err) { // handle error
})
簽章交易
eth.signTransaction_async("m/44'/60'/0'/0/0", rawTransaction).then(function (signed) {
// signed transaction
}).catch(function (err) {
// handle error
})
這時 ledger s 上面就會顯示確認視窗
確認後會取得 v, r, s,更新原來交易資料的 v, r, s
txData.v = '0x' + signed.vtxData.r = '0x' + signed.rtxData.s = '0x' + signed.s
let tx = new Transaction(txData)
最後取得交易的 hex,就可以送到區塊鏈的結點進行交易了
let rawTx = '0x' + tx.serialize().toString('hex')
例如:我要轉一個以太幣給 0x9a896bdeec0aa6caa5a75dd56e017560b7b8c441
我的交易資料:
let txData = { to: '0x9a896bdeec0aa6caa5a75dd56e017560b7b8c441', value: '0x0de0b6b3a7640000', // gas: '0x52', gasPrice: '0x04e3b29200', gasLimit: '0x5208', data: '', nonce: '0x00', chainId: 4 // EIP 155};
我的交易 hex :ec808504e3b29200825208949a896bdeec0aa6caa5a75dd56e017560b7b8c441880de0b6b3a7640000801c8080
簽章過後的交易:0xf86c808504e3b29200825208949a896bdeec0aa6caa5a75dd56e017560b7b8c441880de0b6b3a7640000805ca0845a039560428422454a04b7b8d72c7f5a9cb2e5fb1c8dc325c68a2b6f4489bfa0343135bbda1223500a85294731eb7601d458faf6228363d8e569ac3274313d39
最後送到 testrpc 並且查詢餘額(單位為 wei):
交易完成後的餘額
這樣我們就完成一筆交易了!
手動完成一筆交易是不是很有成就感呢?關於如何將交易的資料轉為 hex,可以試試 ethereumjs-tx,這個函式庫讓我們可以不用處理 rlp 編碼以及交易資料排序。
購買硬體錢包當然是為了將虛擬貨幣存放在一個平時沒有網路連接的位置,上述交易的方式只能在 application 有開啟才可以運行,而且每筆交易簽章也都需要經過硬體錢包上的確認,私鑰的處理都還是交給硬體錢包所以比較安全,希望這篇文章能夠協助各位使用硬體錢包 ledger s 進行以太坊交易。
程式碼都已經放上 github,有興趣的可以試試看!
硬體錢包 ledger s 進行以太坊交易 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
Search