我写了一个智能合约,它在输入地址、消息、金额和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));