我使用了Web3@1.00在node.js中与私人区块链交互。我根据Web3的官方文件编写代码@1.00。
varWeb3=要求(('web3');varTX=要求(('ethereumjs-tx');varWeb3=新的Web3(('http:// localhost:8101');//获取私人关键var解密=Web3。eth。帐户。解密({“地址”:“ 68C5CB5AA9F568AE2A6EC530E982F4F1144F2D10”,,,,“加密”:{“密码”:“ AES-128-CTR”,,,,“密文”:“ 96B6A86BD5FF16A56699975974AEBBA844BC414BC52D9CC36843B4F41E89D46B9”,,,,“密码”:{“ iv”:“ 6858473AC21C43E94ADD7E0B70306DA5”},,“ KDF”:“ Scrypt”,,,,“ KDFPARAMS”:{“ dklen”:32,,,,“ n”:262144,,,,“ P”:1,,,,“ R”:8,,,,“盐”:“ 4DEE1EE7CF929CD38938AAF0A6C83CEEB743348980052B6FB94AB139AE7E09DB”},,,,“苹果电脑”:“ F7D9BBD81F9C91FFA21E564E613BAE57BD77C1914A6690F6018623FF2CE80845”},,“ID”:“ 0EB12580-D11A-49F5-91BB-3592A530E4D8”,,,,“版本”:3},,,,'123');var私人关键=新的缓冲((解密。私人关键。基因((2),“十六进制”);//检查nonceWeb3。eth。GetTransactionCount(('0x68C5CB5AA9F568AE2A6EC530E982F4F4F1144F2D10')。然后((安慰。日志);varRAWTX=Web3。eth。帐户。Signtransaction({从:'0x68C5CB5AA9F568AE2A6EC530E982F4F4F1144F2D10',,,,至:'0x7FDEC66A5C1B69824DFE3BC29138FAC9DDF13ED4'''',,,,价值:'1000000000',,,,气体:2000000},,解密。私人关键)。然后((安慰。日志)。RAWANSACTION;varTX=新的TX((RAWTX);TX。符号((私人关键);var序列化tx=TX。连载();Web3。eth。sendsignedTransaction(('0x'+序列化tx。to((“十六进制”);
但是,我无法发送交易。Web3.Eth.SendSignedTransaction()给我以下错误:
((节点:78916)未经手的反射措施:未经手承诺拒绝((拒绝ID:1):错误:回来错误:NONCE太低((节点:78916)[[DEP0018这是给予的弃用折磨:未经手承诺拒绝。在未来,,,,承诺未处理的拒绝将终止节点。JS过程和非-零出口代码。
请帮助我知道如何解决此问题。
这一点代码看起来不对:
varRAWTX=Web3。eth。帐户。Signtransaction({从:'0x68C5CB5AA9F568AE2A6EC530E982F4F4F1144F2D10',,,,至:'0x7FDEC66A5C1B69824DFE3BC29138FAC9DDF13ED4'''',,,,价值:'1000000000',,,,气体:2000000},,解密。私人关键)。然后((安慰。日志)。RAWANSACTION;
我认为rawTX之后是不确定的吗?您正在尝试在Promise对象上访问一个名为“ RawTransaction”的字段。
代码可能看起来像这样(完全未经测试):
Web3。eth。帐户。Signtransaction({nonce:1,,,,//在此处使用正确的nonce,只需在1处进行硬编码。从:'0x68C5CB5AA9F568AE2A6EC530E982F4F4F1144F2D10',,,,至:'0x7FDEC66A5C1B69824DFE3BC29138FAC9DDF13ED4'''',,,,价值:'1000000000',,,,气体:2000000},,解密。私人关键)。然后((TX=>{varRAWTX=TX。RAWANSACTION;Web3。eth。sendsignedTransaction((RAWTX)。上(('收据',,,,安慰。日志);});