gpt4 book ai didi

node.js - 无需元掩码即可写入以太坊

转载 作者:太空宇宙 更新时间:2023-11-04 01:41:14 24 4
gpt4 key购买 nike

我正在尝试在不使用元掩码的情况下将一些数据写入以太坊 Rinkeby 测试网络,但是在调用该方法时我收到以下错误,但我的参数计数是正确的

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 246): Error: Invalid number of arguments to Solidity function

Node 代码

var Web3        = require('web3')
var contract = require("truffle-contract")
var quickBooks = require('../build/contracts/quickBooks.json')

Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send;

var provider = new Web3.providers.HttpProvider("https://rinkeby.infura.io/v3/KEY")
var quickBooksContract = contract(quickBooks);
quickBooksContract.setProvider(provider);


var writeToEthereum = async function(_json){
//console.log(_json)
var instance = await quickBooksContract.at('ADDRESS')
var result = await instance.write.call(_json,_json.txhash,_json.createdt,"1",_json.write_set[0].set,{
from : "ADDRESS"
})
console.log(result);
}

坚固性

pragma experimental ABIEncoderV2;

contract quickBooks{

struct Tx{
string txId;
string timeStamp;
string blockHash;
string payLoad;
string json;
}

mapping(string => Tx) private data;

function write(string _json,string _txId,string _timeStamp,string _blockHash,string _payLoad) public returns(bool success){
data[_txId] = Tx(_txId,_timeStamp,_blockHash,_payLoad,_json);
return true;
}

function read(string _txId)public returns(Tx){
return data[_txId];
}
}

最佳答案

您的call合约函数是错误的,你应该在函数名后面传递参数给函数。您这样做的方式是在 call() 的位置传递参数。选项。

await instance.write(<params here>).call();

您可以在文档中阅读有关此内容的更多信息:https://web3js.readthedocs.io/en/1.0/web3-eth-contract.html

关于node.js - 无需元掩码即可写入以太坊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52837204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com