TON 虚拟机 -- 引言&目录

  • King
  • 更新于 19小时前
  • 阅读 83

为了深入掌握TON,我们必须深入探究TVM的精髓。在此过程中,TVM手册堪称不可或缺的参考资料。我已开始利用空余时间逐步将其翻译成中文,期望这一努力能够为各位同仁提供助力。作者:尼古拉·杜罗夫日期:2020年3月23日摘要本文的目的是提供对Telegram开放网络虚拟机(Telegr

为了深入掌握TON,我们必须深入探究TVM的精髓。在此过程中,TVM手册堪称不可或缺的参考资料。我已开始利用空余时间逐步将其翻译成中文,期望这一努力能够为各位同仁提供助力。

作者:尼古拉·杜罗夫

日期:2020年3月23日

摘要

本文的目的是提供对 Telegram 开放网络虚拟机(Telegram Open Network Virtual Machine,简称 TON VM 或 TVM)的描述,该虚拟机用于在 TON 区块链中执行智能合约。


引言

Telegram 开放网络虚拟机(TON VM 或 TVM)的主要目的是在 TON 区块链中执行智能合约代码。TVM 必须支持所有解析传入消息和持久数据所需的操作,还要能够创建新消息并修改持久数据。

此外,TVM 必须满足以下要求:

  • 它必须能够为未来的扩展和改进提供支持,同时保持向后兼容性和互操作性,因为一旦智能合约代码被提交到区块链中,无论 VM 未来如何修改,该代码都必须能够以可预测的方式继续运行。
  • 它必须努力实现高效的“虚拟机代码”密度,以便典型的智能合约代码占用尽可能少的区块链持久存储空间。
  • 它必须完全确定性运行。换句话说,相同代码与相同输入数据的每次运行都必须产生相同的结果,无论使用的是何种软件或硬件。

TVM 的设计基于上述要求。尽管本文描述的是 TVM 的一个初步和实验版本,但系统中内置的向后兼容机制使得我们无需过于担心该版本操作编码效率的问题。

TVM 并非旨在通过硬件实现(例如,专门的微处理器芯片),而是通过在常规硬件上运行的软件实现。这种设计考虑让我们能够在 TVM 中引入一些高层次的概念和操作,这些操作若通过硬件微代码实现可能会十分复杂,但通过软件实现却不会带来显著问题。这些操作对于实现高代码密度和最小化智能合约代码在 TON 区块链中部署时的存储字节(或存储单元)占用是十分有用的。

目录

  1. 概述
    1.0 比特串的符号表示
    1.1 TVM 是栈机
    1.2 TVM 指令的类别
    1.3 控制寄存器
    1.4 TVM 的整体状态(SCCCG)
    1.5 整数运算

  2. 2.1 栈调用约定
    2.2 栈操作原语
    2.3 栈操作原语的效率
  3. 单元、内存和持久存储
    3.1 单元的概述
    3.2 数据操作指令和单元
    3.3 哈希映射或字典
    3.4 具有可变长度键的哈希映射
  4. 控制流、延续与异常
    4.1 延续与子程序
    4.2 控制流原语:条件与迭代执行
    4.3 对延续的操作
    4.4 延续作为对象
    4.5 异常处理
    4.6 函数、递归和字典
  5. 代码页与指令编码
    5.1 代码页和不同 TVM 版本的互操作性
    5.2 指令编码
    5.3 代码页零中的指令编码
    附录 A 指令和操作码
    附录 B TVM 的形式化属性和规格
    附录 C 栈和寄存器机器的代码密度
  • 翻译
  • 学分: 3
  • 分类: TON
  • 标签: TON  TVM 
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
King
King
0x56af...a0dd
擅长Rust/Solidity/FunC开发