TGViewer
Laisky's Notes Laisky's Notes @laiskynotes · 3.35K subscribers
Post #318 1.81K
最近都在学习 TON 开发,积累了一些经验。TON 有很多独特的设计和开发范式,值得先记个小笔记,主要以 Ethereum/EVM 作对比。这是基于我目前的理解,不一定正确,有兴趣欢迎讨论。

1. 所有的调用都是消息,所有的消息都是异步的。也就是说,你没法同步取得跨合约调用的结果。

2. 每次调用的费用是非确定性的,而且因为整个调用是异步的,没法预知调用的总费用。所以只能先给一个相对较高的手续费,然后等合约执行完后退还余款。TON 的费用的精确控制非常困难,我花了很多时间在这上面,这个以后可以单独讲一篇,简而言之就是整个调用链应该有一个唯一的起点和唯一的终点。唯一的起点是因为交易发起者只有一个人,唯一的终点是因为要汇集所有消息的余额。
注意,交易执行的总费用是很可能超过用户支付的 input value 的,换言之合约在用自己的余额给用户交易付费,要特别小心!

3. 合约在链上不会永久存在,部署 code 和 data 后状态会成为 active,但是同时会开始计费缴纳租金。租金从合约余额扣除,扣完后经过一段时间后合约的数据会被删除,仅保留哈希。用户可以重新上传数据恢复合约。如果一段时间后未恢复,所有的链上数据都会被销毁。之所以这样做是因为 TON 链上交互非常依赖子合约,子合约的数量会随着用户量倍增,必须通过限制合约存活时间来控制链上数据量。

4. 合约不会直接和用户交互,而是会用用户的钱包地址给用户部署一个子合约,然后主合约和这个子合约交互。子合约里会有两个属性,master 指向主合约,owner 指向用户的钱包合约地址。这样做的好处是,因为子合约代码是主合约部署的,那么子合约的行为就是确定性的。所以 TON 的合约开发类似于工厂模式,你首先需要编写一个主合约,然后需要给你所有的交互对象各自编写一个子合约。

5. 主合约内不保存任何用户数据,仅保留必须的全局变量。这是和 EVM 最显著的一个区别。拿 ERC-20 代币来说,EVM 合约需要存储一个巨大的用户账本。而 TON 的主合约什么都不存,只需要给用户部署一个子合约,然后将用户持有的代币信息保存在子合约里即可。因为子合约的代码是主合约部署的,所以行为完全可控和可信。用户间转账只需要子合约间互相通信即可,双方可以通过校验对方的地址来确定合约代码的完整性,毕竟合约地址本质上就是合约代码和初始化数据的哈希,而初始化参数往往就是 master 和 owner 的地址。

6. 我目前的开发组合是 blueprint + tact + tonkeeper。开发体验非常痛苦,缺乏必要的文档和示例,等我有空整理一篇博客。 #blockchain

prev: https://t.me/laiskynotes/296
next: https://t.me/laiskynotes/319
  • 👍 14
  • ❤ 3
  • 👎 1
More from @laiskynotes
  1. Oct 6, 2026https://x.com/LaiskyCai/status/2107307813727060123?s=20 codex 最近有三个完全免费的工具,结合之后可以发挥非常强大能力:…
  2. Sep 15, 2026学习了一下 OpenAI 推出的 Agents API https://openai.com/index/introducing-the-agents-api/ 众所周知 Agen…
  3. Aug 28, 2026前阵子读了本很有趣的书,侯杨方的《这才是丝绸之路》。作者抛开抽象的文本溯源,而是采用实地考察的方式,重走了真实的丝绸之路。此书给我最大的感触就是:真实而且符合常理。 在我以前的想象…
  4. Jun 5, 2026读完 Mario Puzo 的《教父 The Godfather》三部曲小说,才意识到自己当年年轻时根本完全就没看懂电影《教父》。然后又去把电影重温了一遍,才发现原来电影里有很多细…
  5. May 22, 2026记录一下最近遇到的一个糟心事儿。 最近两个月开始又开始找工作机会,总的来说很不顺利,托朋友联系了两个内推也是石沉大海。(各位要是有远程工作的机会也请联系 job@laisky.co…
  6. May 14, 2026作为一个从业十多年的程序员,我已经半年没手写过一行代码了。上个月大概提交了 20 万行,这个月大概 4 万行。 昨天认真考虑了一下这个现象,我个人认为,虽然 AI 仍然存在显然的不…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →