高级
各种小众、危险或不稳定的功能,可能会产生意想不到的结果,仅供更有经验的用户使用。
Context.readForwardFee
Context
的扩展函数。
读取 forward fee,并以 Int
的形式返回 nanoToncoins 的金额。
使用示例
getConfigParam
通过 “id “号加载 TON 区块链的配置参数。
使用示例
acceptMessage
同意购买一些汽油来完成当前交易。 处理外部信息时需要这一操作,因为外部信息本身没有价值(因此没有 gas )。
使用示例
commit
提交 寄存器c4
(“持久化数据”)和c5
(“操作”)的当前状态,这样,即使随后在计算阶段出现异常,当前执行也会因保存的值而被视为 “成功”。
使用示例
nativePrepareRandom
使用 nativeRandomizeLt()
准备随机数生成器。 由 randomInt()
和 random()
函数自动调用。
使用示例
nativeRandomize
使用指定的种子 x
随机化伪随机数生成器。
使用示例
nativeRandomizeLt
使用当前 逻辑时间 随机化随机数发生器。
使用示例
nativeRandom
生成并返回 -bit 随机数,就像 randomInt()
,但不会事先用 nativePrepareRandom()
初始化随机生成器。
nativeRandomInterval
生成并返回 -bit 的随机数,范围从 到 max
,类似于 random()
,但不会事先用 nativePrepareRandom()
初始化随机生成器。
nativeSendMessage
通过指定完整的 “单元格 “和信息 “模式”,排队发送信息。
nativeReserve
以指定的金额和模式调用本地 raw_reserve
函数。 raw_reserve “是一个函数,用于创建输出操作,从账户余额中储备特定数量的nanoToncoins。
它在 FunC 中的签名如下
该函数有两个参数:
- 金额:要储备的 nanoToncoins的数量。
- 模式决定预订行为。
函数 “raw_reserve “大致等同于创建一个向外发送的消息,将指定的 “金额”nanoToncoins(或 “b ” “金额”nanoToncoins,其中 “b “为余额)发送给自己。 这就确保了后续产出行动所花费的资金不会超过剩余资金。
您可以使用原始的 Int
值,并手动为 mode
提供这些值,但为了方便起见,您可以使用一组常量来轻松构建复合 mode
。 有关基本模式和可选标记的更多信息,请参阅下表。
基本模式
由此产生的 mode
值可以有以下基本模式:
模式值 | 恒定名称 | 说明 |
---|---|---|
ReserveExact | 精确保留指定数量的 纳顿币。 | |
ReserveAllExcept | 保留所有 [纳米通币](/book/integers#nanotoncoin),但保留指定数量的 [纳米通币](/book/integers#nanotoncoin)。 | |
ReserveAtMost | 最多保留指定 “数量 “的 纳顿币。 |
可选标记
此外,生成的 mode
还可以添加以下可选标记:
标志值 | 恒定名称 | 说明 |
---|---|---|
ReserveAddOriginalBalance | 用经常账户的原始余额(计算阶段之前)增加 “金额”,包括所有额外货币。 | |
ReserveInvertSign | 在执行保留之前否定 amount 值。 | |
ReserveBounceIfActionFail | 如果预订失败,则退回交易。 |
使用标志组合模式
要为 mode
参数创建 Int
值,只需通过 bitwise OR操作将基本模式与可选标志结合起来: