【问题标题】:How to call run-local function from debot?如何从 debot 调用 run-local 函数?
【发布时间】:2021-12-28 20:36:22
【问题描述】:

如何从 debot 调用另一个合约的本地运行(不发送消息)功能?例如,用于获取公共变量。

【问题讨论】:

    标签: solidity ton


    【解决方案1】:

    这对我很有用。

    在debot中:

    1. 使用函数为另一个合约的函数创建接口(如果也是公共变量)。
    interface IOther {   
        function funcName()    
        external returns(uint);
    }
    
    1. 构建消息并发送。
    function runLocal() public{
            optional(uint256) pubkey = 0;                 
            address remoteContract = address.makeAddrStd(0, 0xceaa3bc6b00cf2b1e750dae2dd94d246a126a989009a3fb3bb73bea1a48b3b);                    
            TvmCell message = tvm.buildExtMsg({
                abiVer: 2,
                callbackId: tvm.functionId(onSuccessFuncName),
                onErrorId: tvm.functionId(onErrorFuncName),
                time: uint64(now),
                dest: remoteContract,
                call: {
                    IOther.funcName
                }
                });
                tvm.sendrawmsg(message, 1);      
        }
    
        function onSuccessFuncName(uint response) public{                                        
            /* working with response from remote contract */
        } 
        
        function onErrorFuncName() public{        
           /* catch error */
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 2021-03-11
      • 2011-10-23
      • 1970-01-01
      • 2015-08-01
      相关资源
      最近更新 更多