无法通过reactjs调用智能合约的公共纯函数



我写了一个智能合约,它在输入地址、消息、金额和nonce后返回消息哈希。它是一个公共纯功能

function _3_1getMessageHash(address _to, uint _amount, string memory _message, uint _nonce) public pure returns (bytes32)
{
return keccak256(abi.encodePacked(_to, _amount, _message, _nonce));
}

我想通过reactjs访问这个函数。我可以访问智能合约的其他功能,但不能访问此功能。

function sign_1(e){
e.preventDefault();
//console.log(project.methods.retailer.call().call());  // this works
console.log(project.methods._3_1getMessageHash({sellerinfo}['sellerinfo'], quantity1,'test',0).call());                    // this doesn't 
console.log(project.methods._3_1getMessageHash({sellerinfo}['sellerinfo'], quantity1,"test",0).send({from:{CurrentAccount}['CurrentAccount']})); //this doesn't either

}

请提出所需的更改建议。

如果这是一个需要在任何地方使用的全局函数,那么我建议将其放入一个名为GlobalFunctions或类似组件中。然后,您需要确保导出和导入所需的每个函数。

export function _3_1getMessageHash(address _to, uint _amount, string memory _message, uint _nonce) public pure returns (bytes32)
{
return keccak256(abi.encodePacked(_to, _amount, _message, _nonce));
}

然后你需要在哪里使用它:

import { _3_1getMessageHash } from '../../GlobalFunctions' // Whatever the relative path is

最后你可以更改:

console.log(project.methods._3_1getMessageHash({sellerinfo}['sellerinfo'], quantity1,'test',0).call());

收件人:

console.log(_3_1getMessageHash({sellerinfo}['sellerinfo'], quantity1,'test',0));

相关内容

  • 没有找到相关文章

最新更新