Ethereumjs

如果我發送由 ethereumjs-wallet 生成的私鑰簽名的交易,交易將不會送出到一個塊

  • June 20, 2018

問題

所以基本上我要做的是發送由 ethereumjs-wallet 生成的帳戶簽名的交易,這樣我的節點就不會保留 UTC 文件,因此如果有人竊取帳戶 UTC 文件,我沒有問題。但是,如果節點上沒有用於簽署我的交易的地址的 UTC 文件,我的契約將不會執行。

這是我用於發送 Tx 的程式碼的一部分。

utils.askForInput('Owner address: ')
 .then((ownerAddr) => {
   Tx.ownerAddr = ownerAddr;
   return utils.askForInput('New wallet address: ');
 }).then(async (newAddr) => {
   const data = await utils.prepareData('addWallet', newAddr);
   const nonce = await utils.getAccountNonce(Tx.ownerAddr);

   console.log('Data: ' + data);
   console.log('Nonce: ' + nonce);

   return utils.askForInput('Signed Transaction: ');
 }).then(async (signedTx) => {
   await utils.sendRawTransaction(signedTx);

   utils.closeReadLine();
 }).catch((err) => {
   console.log(err);

   utils.closeReadLine();
 });

可能的解決方案

我可以創建 UTC 文件並呼叫契約,在我完成所有操作後,我可以刪除 UTC 文件。但我認為這是一個黑客。我的問題是為什麼會出現這種情況,是否有必要像這樣解決它。

只是為了指出我的程式碼有效,如果為該帳戶創建了 UTC 文件。

我發現我需要在創建的地址上有一些乙太幣,這樣地址才能執行天然氣價格為 0 的交易。所以我需要在發送原始交易之前用乙太幣填充賬戶。

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