Private-Key

在 etherscan 中發布原始簽名交易是否安全?

  • March 5, 2021

我正在製作一個離線創建交易的流程,並使用外部節點(etherscan.io)發布它。

所以流程將從這裡開始:

  1. 我將使用此程式碼生成簽名的原始 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
  1. 我會將 rawTx (f86b808432c35……67904d240) 複製並粘貼到https://etherscan.io/pushTx

是否可以通過某種方式解碼從 rawTX 獲取我的私鑰?或者公開 rawTx 是否安全?

謝謝

保存發布已簽名的交易。無法從簽名交易中獲取您的私鑰。你將它發送到區塊鏈,每個人都可以而且必須看到簽名的交易。

術語 rawTx 在這裡具有誤導性 - 在您的程式碼中,它是序列化和編碼的簽名交易。所以,這沒關係

只是補充兩點:

1)增加nonce值

在您的程式碼中,您有以下行:

nonce: web3utils.toHex(0),

確保使用 from 賬戶的交易計數作為 nonce 值。這是避免重放攻擊的機制。區塊鏈不會接受具有相同隨機數的簽名交易。

2)保護你的私鑰

切勿在原始碼中寫入私鑰。始終通過強加密保護它並在執行時載入它(或者更好地使用硬體錢包)。

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