Web3js

如何自動簽署交易?

  • September 14, 2018

一個 api 將呼叫智能合約函式。它應該自行簽署交易,而不是人工干預。

我認為原始交易可以在這里工作。還有其他選擇嗎?

任何幫助深表感謝。謝謝!

–編輯– 問題已更新!

試試這個(使用 web3.js v1):

let Web3 = require("web3");
let web3 = new Web3(NODE_ADDRESS);

async function send(transaction, reestimate = function(gas) {return gas;}) {
   let gas = await transaction.estimateGas({from: PUBLIC_KEY});
   let options = {
       to  : transaction._parent._address,
       data: transaction.encodeABI(),
       gas : reestimate(gas)
   };
   let signedTransaction = await web3.eth.accounts.signTransaction(options, PRIVATE_KEY);
   return await web3.eth.sendSignedTransaction(signedTransaction.rawTransaction);
}

用法範例#1:

let receipt = await send(myContract.methods.myFunc(arg1, arg2, arg3));
...

用法範例 #2:

let reestimate = function(gas) {return gas * 2;};
let receipt = await send(myContract.methods.myFunc(arg1, arg2, arg3), reestimate);
...

合約不能自己簽署交易。交易必須由外部擁有的賬戶簽署。如果交易沒有由外部擁有的賬戶簽名,那麼它將不會包含在區塊鏈中。

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