我使用web3dart结合了Ganache和Truffle来运行我的稳固合同,我的flutter应用程序可以很好地阅读合同,但是当我运行写到契约的函数时,它就不起作用了(不能从应用程序写到合同)。我在web3dart包上看到它说,在运行写到契约的函数时,应该使用.sendTransaction()而不是.call()

对于凭证,我使用了WalletConnect,我使用了在包示例源代码这里中编写的WalletConnectEthereumCredentials类。
事务从MetaMask钱包地址到合同地址(可以用EtherScan跟踪)都是成功的,但是合同数据仍然保持不变。
“稳固守则”:
function update(string memory newMessage) public {
message = newMessage;
} 颤振守则:
final cred = WalletConnectEthereumCredentials(provider: provider);
try {
var transactionId = await _web3client.sendTransaction(
cred,
Transaction.callContract(
contract: _deployedContract,
function: _updateFunction,
parameters: ["NEW_MESSAGE"],
from: EthereumAddress.fromHex(
cred.provider.connector.session.accounts[0]),
),
chainId: 4);你可以看到WalletConnectEthereumCredentials和WalletConnectEthereumCredentials在walletConnect 存储库上都有什么
发布于 2022-08-26 12:08:40
解决了!只需部署契约,而不是在机器上本地运行。
基本上,我试图对在Ganache上本地运行的合同进行事务处理。因此,我在松露上部署了合同,这解决了这个问题,我可以使用我的应用程序与合同完全交互。
https://stackoverflow.com/questions/73422813
复制相似问题