这个问题是关于Everscale区块链智能合同中的大量可靠语言的问题。
有时,我会看到与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();
}我需要一步一步的解释,这段代码在做什么?或者给我参考一下解释它的文档。
发布于 2022-01-25 21:08:26
消息相应地构造为TL方案。
一般来说,该消息的类型称为"Message“
这种类型由三个部分组成。
第一部分是"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第三部分为“体”型。
message_.storeUnsigned(1, 1); //1 because, we don't store body in current cell
message_.store(body);https://stackoverflow.com/questions/70218889
复制相似问题