【问题标题】:What is the TL-B scheme in ton-solidity and how to use it?什么是 ton-solidity 中的 TL-B 方案以及如何使用它?
【发布时间】:2022-01-10 02:12:22
【问题描述】:

这个问题是关于 Everscale 区块链智能合约的 ton-solidity 语言。

有时,我会看到与 TL-B 方案相关的代码。例如,像这样:

function getInvokeMessage(address sender, address recipient, uint128 amount, bool bounce, TvmCell payload) public pure
        returns(TvmCell message) {
        TvmCell body = tvm.encodeBody(MsigDebot.invokeTransaction, sender, recipient, amount, bounce, payload);
        TvmBuilder message_;
        message_.store(false, true, true, false, address(0), address(this));
        message_.storeTons(0);
        message_.storeUnsigned(0, 1);
        message_.storeTons(0);
        message_.storeTons(0);
        message_.store(uint64(0));
        message_.store(uint32(0));
        message_.storeUnsigned(0, 1); //init: nothing$0
        message_.storeUnsigned(1, 1); //body: right$1
        message_.store(body);
        message = message_.toCell();
    }

我需要一步一步的解释,这段代码是做什么的?或者给我解释它的参考文档。

【问题讨论】:

    标签: blockchain solidity tlb everscale


    【解决方案1】:

    消息根据TL-B scheme构造。

    通常,消息的类型称为“消息 X”

    这种类型有 3 个部分。

    第一部分是“CommonMsgInfo”

               /* int_msg_info$0
               ihr_disabled:Bool
               bounce:Bool
               bounced:Bool
               src:MsgAddressInt
               dest:MsgAddressInt */
            message_.store(false, true, true, false, address(0), address(this));
            message_.storeTons(0);//value:CurrencyCollection
            message_.storeUnsigned(0, 1);//value:CurrencyCollection (for other currencies)
            // In the next 4 fields we store zeroes, because blockchain software will replace them
            // with the correct values after this function finishes execution.         
            message_.storeTons(0);//ihr_fee:Grams
            message_.storeTons(0);//fwd_fee:Grams
            message_.store(uint64(0));//created_lt:uint64
            message_.store(uint32(0));//created_at:uint32
    

    第二部分的类型为“init”

            message_.storeUnsigned(0, 1); //no initial state
    

    第三部分的类型为“body”

            message_.storeUnsigned(1, 1); //1 because, we don't store body in current cell
            message_.store(body);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 2022-01-10
      • 2015-03-13
      • 2013-10-25
      • 2014-11-19
      相关资源
      最近更新 更多