Telegram Group & Telegram Channel
最近都在学习 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://www.tg-me.com/us/telegram/com.laiskynotes/296
next: https://www.tg-me.com/us/telegram/com.laiskynotes/319



tg-me.com/laiskynotes/318
Create:
Last Update:

最近都在学习 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://www.tg-me.com/us/telegram/com.laiskynotes/296
next: https://www.tg-me.com/us/telegram/com.laiskynotes/319

BY Laisky's Notes




Share with your friend now:
tg-me.com/laiskynotes/318

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

Spiking bond yields driving sharp losses in tech stocks

A spike in interest rates since the start of the year has accelerated a rotation out of high-growth technology stocks and into value stocks poised to benefit from a reopening of the economy. The Nasdaq has fallen more than 10% over the past month as the Dow has soared to record highs, with a spike in the 10-year US Treasury yield acting as the main catalyst. It recently surged to a cycle high of more than 1.60% after starting the year below 1%. But according to Jim Paulsen, the Leuthold Group's chief investment strategist, rising interest rates do not represent a long-term threat to the stock market. Paulsen expects the 10-year yield to cross 2% by the end of the year. A spike in interest rates and its impact on the stock market depends on the economic backdrop, according to Paulsen. Rising interest rates amid a strengthening economy "may prove no challenge at all for stocks," Paulsen said.

What is Telegram?

Telegram’s stand out feature is its encryption scheme that keeps messages and media secure in transit. The scheme is known as MTProto and is based on 256-bit AES encryption, RSA encryption, and Diffie-Hellman key exchange. The result of this complicated and technical-sounding jargon? A messaging service that claims to keep your data safe.Why do we say claims? When dealing with security, you always want to leave room for scrutiny, and a few cryptography experts have criticized the system. Overall, any level of encryption is better than none, but a level of discretion should always be observed with any online connected system, even Telegram.

telegram from us


Telegram Laisky's Notes
FROM USA