Web3js
如何自動簽署交易?
一個 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); ...
合約不能自己簽署交易。交易必須由外部擁有的賬戶簽署。如果交易沒有由外部擁有的賬戶簽名,那麼它將不會包含在區塊鏈中。