Private-Key
在 etherscan 中發布原始簽名交易是否安全?
我正在製作一個離線創建交易的流程,並使用外部節點(etherscan.io)發布它。
所以流程將從這裡開始:
- 我將使用此程式碼生成簽名的原始 tx
var { Transaction } = require('@ethereumjs/tx'); var web3utils = require("web3-utils"); const txParams = { from: '0x0000000000000000000000000000000000000000', to: '0x0000000000000000000000000000000000000000', nonce: web3utils.toHex(0), gasPrice: web3utils.toHex(1000000000), gasLimit: web3utils.toHex(50000), value: web3utils.toHex( web3utils.toWei("0.1", "ether"), ), } const tx = Transaction.fromTxData(txParams) const privateKey = Buffer.from( 'e331b6d69882b4cb4........67688d3dcffdd2270c0fd109', 'hex', ) const signedTx = tx.sign(privateKey) const serializedTx = signedTx.serialize(); const rawTx = serializedTx.toString("hex"); console.log(rawTx); //f86b808432c35......67904d240
- 我會將 rawTx (f86b808432c35……67904d240) 複製並粘貼到https://etherscan.io/pushTx
是否可以通過某種方式解碼從 rawTX 獲取我的私鑰?或者公開 rawTx 是否安全?
謝謝
保存發布已簽名的交易。無法從簽名交易中獲取您的私鑰。你將它發送到區塊鏈,每個人都可以而且必須看到簽名的交易。
術語 rawTx 在這裡具有誤導性 - 在您的程式碼中,它是序列化和編碼的簽名交易。所以,這沒關係
只是補充兩點:
1)增加nonce值
在您的程式碼中,您有以下行:
nonce: web3utils.toHex(0),
確保使用 from 賬戶的交易計數作為 nonce 值。這是避免重放攻擊的機制。區塊鏈不會接受具有相同隨機數的簽名交易。
2)保護你的私鑰
切勿在原始碼中寫入私鑰。始終通過強加密保護它並在執行時載入它(或者更好地使用硬體錢包)。