gpt4 book ai didi

blockchain - 在波场网络中签署并广播智能合约交易

转载 作者:行者123 更新时间:2023-12-04 04:05:14 27 4
gpt4 key购买 nike

使用 node.js 客户端,我试图通过以下方式调用智能合约功能:

  • 创建交易
  • 签名
  • 广播签署的交易

  • 我部署了一个简单的智能合约:
    pragma solidity ^0.4.25;

    contract Test {

    event MyEvent(address sender, string message, uint sessionId, uint value);
    event TestEvent(address sender);

    constructor() public {
    }


    function testFunction(string message, uint sessionId)
    public
    payable {
    emit MyEvent(msg.sender, message, sessionId, msg.value);
    }

    function test2()
    public {
    emit TestEvent(msg.sender);
    }
    }
    我成功调用 test2 (发送空参数数组时)但未能调用 testFunction这需要参数。
    我试过使用 tronweb triggerSmartContract call :
    async function triggerSmartContract() {

    try {

    const options = {
    feeLimit: 1000000000,
    callValue: 50
    };

    const parameters = [{type: 'string', value: 'test-round-id-1'}, {type: 'uint', value: 12345}];
    const issuerAddress = tronWeb.defaultAddress.base58;
    const functionSelector = 'testFunction(string, uint)';

    let transactionObject = await tronWeb.transactionBuilder.triggerSmartContract (
    contract_address,
    functionSelector,
    options,
    parameters,
    tronWeb.address.toHex(issuerAddress)
    );

    if (!transactionObject.result || !transactionObject.result.result)
    return console.error('Unknown error: ' + txJson, null, 2);

    // Signing the transaction
    const signedTransaction = await tronWeb.trx.sign(transactionObject.transaction);

    if (!signedTransaction.signature) {
    return console.error('Transaction was not signed properly');
    }

    // Broadcasting the transaction
    const broadcast = await tronWeb.trx.sendRawTransaction(signedTransaction);
    console.log(`broadcast: ${broadcast}`);
    } catch (e) {
    return console.error(e);
    }
    }
    代码运行并在区块链上创建交易,但结果为 FAIL-REVERT OPCODE EXECUTED .
    在 tronweb 对象中定义的地址和 key 的钱包中有足够的资金(它没有耗尽气体/没有足够的资金很重要)。
    智能合约中的功能也被定义为应付款。
    由于我可以成功调用任何没有参数的函数,我倾向于认为问题与我构造 parameters 的方式有关。大批。我建了 parameters在遍历 source code of the transactionBuilder (line 833) 之后以这种方式排列(成对的 typevalue ) .
    有什么建议?

    最佳答案

    有完全相同的问题。解决方案:

  • 删除 const functionSelector = 'testFunction(string,uint)'; 中的空格正如malysh所建议的
  • 更改 uintuint256
  • 关于blockchain - 在波场网络中签署并广播智能合约交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62625008/

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