在2018年,Telegram 团队推出了一个革命性的公链项目——TON,一经发布即吸引了大量眼球,原因在于其背后巨大的潜在Web2用户群体。
TON 的发展几经波折,在2023年,TON 推出了 DeFi 流动性激励计划,举办了Hack-a-TON 黑客松,旨在吸引全球顶尖开发者为 TON 生态注入新鲜血液,共同探索 DeFi、NFT 等前沿技术领域。现如今,其正在成为一个快速发展、充满活力的生态系统。
TON 发展历史
在2018年,Telegram 创立了 Telegram Open Network 项目,通过ICO募资约17亿美元,但后续 Telegram 受到 SEC 指控非法募资。在2020年 Telegram 团队同意支付1850万美元的罚款与 SEC 达成和解,放弃 Telegram Open Network 项目并将资金退还。
Telegram 团队随后将 Telegram Open Network 网络中所有的代币锁进智能合约中,任何人都可以参与挖矿获得 TON 代币(2022年6月,TON挖矿结束,TON网络已完全转变为PoS)。Telegram 此举将 Telegram Open Network 交给了社区,由名为NewTON社区的开发人员继续开发。之后 NewTON 社区更名为 TON 基金会,Telegram Open Network 也更名为 The Open Network,这便是现在的TON 公链。
而在2020年 Telegram 等待 SEC 判决时,TON Labs 对 Telegram Open Network 进行了分叉,发布了 "Free TON" 版本。目前 Free TON 已更名为 Everscale,且其发展路线和代码与原先的 TON 也有很大不同。
TON 链上数据
目前链上的验证器数量为357个,PoS 机制下总质押 $TON 数量为5亿多个,分布在24个国家当中。
https://www.tonstat.com/#toncoin
source: https://www.tonstake.com/#/
TON 代币数据
$TON 在 ETH 和 BSC 链上均有代币合约。根据 EagleEye 平台的数据,在9月17日,$TON 的链上交易出现短期峰值,Buy/Sell Ratio 接近 1.17。$TON 价格在9月20日达到近期高点2.6美元。
source: https://eagleeye.space/detail/toncoin
此外,EagleEye 平台监控到中心化交易所 MEXC 上近期交易 $TON 非常活跃。10月5日,TON 宣布获得 MEXC Ventures 千万美元投资,同时双方建立战略合作伙伴关系。MEXC 将为 TON 生态提供营销服务和推广,提供 $TON 抵押借款服务。
source: https://eagleeye.space/detail/toncoin
TON 设计特点
1. 智能合约的调用为异步
与以太坊等公链不同,TON 的智能合约之间的调用是异步的。这样的设计提高了可拓展性,因为当一个智能合约调用另一个智能合约的函数时,这个调用不会立即执行,不需要在一个区块中处理完所有的交易。但同时异步性也增加了开发者在 TON 链上开发和维护应用的门槛。
source: Beosin
3. 分布式哈希表
区块链网络数据存储和访问方式会影响其网络的数据一致性、可访问性和安全性。TON 采用哈希表进行数据存储。
首先,哈希表是一种数据结构,它通过使用哈希函数将键(key)映射到存储桶(bucket)中,从而实现快速数据访问。在 TON 中,哈希表是分布式的,意味着数据被存储在网络中的多个节点上。
当需要存储一个数据项时,TON 使用一个哈希函数来确定应该将数据项存储在哪个节点上。
当需要检索数据时,使用相同的哈希函数来快速找到存储数据的节点,允许高效的数据插入、删除和查找操作。
数据被加密和冗余存储在多个节点上,即使某些节点发生故障或被攻击,数据仍然可以从其他节点恢复,确保了数据的安全性和持久性。与传统的哈希表相比,分布式哈希表在分布式和大规模环境中提供了更高的性能和可靠性。
以下是 TON 与 Ethereum、Bitcoin 网络的对比:
Telegram 中推出的“Secret Chats"功能采用端到端加密技术,旨在提高用户之间消息传输的安全性。进入2022年年末,Telegram 进一步更新,推出了基于区块链的匿名号码登录功能,允许用户无需手机号注册,仅通过保存 TON 钱包的助记词进行登录,从而提供一个额外的隐私选项。
2023年1月,TON 进一步扩展其功能,发布了 TON Storage。这是一个点对点的文件共享系统,与 Dropbox 和 torrents 有某些相似之处。这一系统的特点是简化文件交换过程,并为存储在区块链上的文件提供加密保护。同时,为了确保文件的持久存储,托管这些文件的节点运营者也能获得相应激励。
TON 开发语言
在 TON 上开发智能合约,开发者有三种编程语言选择:Fift、FunC 和 Tact。Fift 偏底层,包含 TVM 和 Fift 汇编指令,使用 Fift 进行开发难度较大,极少开发者选择使用 Fift 语言开发智能合约。Tact 是 TON 新推出的高级语言,语法类似 Typescript,旨在降低开发难度。目前使用最多的开发语言为 FunC,它是类似C语言的编程语言。
source: Beosin
在开发 TON 智能合约时,Beosin安全团队建议开发者需要注意以下7点:
1. FunC 与 Tact 均为静态类型语言,开发者需要非常清楚地知道其代码中变量存储的数据类型。读取非预期的类型和值都会引起错误。
2. TON 区块链不包含revert消息。因此开发者需要考虑好代码运行的结束路径。
3. TON 区块链有多个交易阶段:计算阶段(computational phase),执行阶段(actions phase)和反弹阶段(bounce phase)。计算阶段会执行合约代码,执行阶段才会发送消息。因此,开发者在测试代码时需要注意交易执行目前位于第几阶段。
4. FunC 中有 method_id 标识符的函数可用于接收区块链内部和外部消息。
5. TON 区块链是异步的,开发者需注意处理失败的调用信息。
6. 注意智能合约中处理反弹信息(bounced message)的代码。如果智能合约发送带有 TON 资产的反弹信息到其它账户,建议在智能合约中扣除gas费。
7. 对于外部消息,开发者需要注意重放攻击的风险。可以通过设置计数器或是标识符来避免重放攻击。
Beosin 安全团队正式推出针对 TON 智能合约的安全审计服务,旨在提前发现并协助项目方修复项目中的安全风险,保障用户与项目方的资产安全。其主要安全审计项包括:
1. 重放攻击
保护智能合约不遭受外部信息(external messages)重放攻击的最简单方法是在智能合约的持久数据中存储一个 32 位计数器 cur-seqno,并在任何入站外部信息(签名部分)中预期一个 req-seqno 值。只有当签名有效且 req-seqno 等于 c007r-seqno 时,外部信息才会被接受。处理成功后,持久数据中的 cur-seqno 值会增加一个,因此同一外部信息将不会再被接受。
如果没有 seqno(或其他防止重放攻击的机制),任何人(通常是资金接收方)都可以读取交易数据(例如来自区块链浏览器)并创建另一笔虚假交易并将其重新发送到原始钱包智能合约并强制其执行再次重新发送 TON,最终耗尽其所有资金。
2. 访问控制
在合约中应该只有特定的用户拥有对于特定操作的权限。例如操作 NFT 转账,应该只能由 NFT 的 owner(或被owner授权的账户)进行。合约应该严格检查权限,如果通过,则进行转账操作。如果不通过,交易应该回退。
3. 变量覆盖
FunC 合约中通过 set_data 函数写入变量,如果变量顺序或者变量名编写错误,很容易意外地写入错误变量并将原来的变量覆盖。
4. 业务设计
部分项目合约在设计上就存在被攻击的风险,需要严格地从攻击者的角度考虑设计上是否存在攻击的可能。
5. 业务实现
一些项目中,设计上并不存在攻击风险,但是在具体实施时,并未按照原有设计或实现方式存在问题,导致了漏洞的产生。
6. 错误处理
由于 TON 的设计,代码的结束路径需要开发者进行考量。合约可能收到回退消息(bounced messages),合约需要对这些消息进行正确的处理。另外,在处理回退消息时还需要考虑gas耗尽的情况,这同样会产生意外的错误。
7. 校验缺失
消息流每个阶段都需要检查,攻击者可以在消息流第一阶段执行的同时启动另一个消息流,导致先前的检查失效。
8. 消息流错误
应该保证消息流符合设计,否则会带来意外的错误和损失。
9. 数据结构检查
FunC 里面会有函数进行消息传递和阶段,可能存在问题,(例如:end_parse() 函数,检查切片是否为空,否则抛出异常。它可以确保切片具有预期的效果。抛异常的逻辑在代码编写时可能会写的有问题,例如抛异常但是没返回值。其他函数也可能会有一样的问题)。
10. 序列化消息传递问题
可能会有接收或者get函数中序列化消息错误,例如send_raw_message函数。
a. 函数命名,配置命名,私有变量命名,get函数是否合理返回值,revert判断,0地址检查。
b. 一些特权风险,func中也会有这样的函数,可以提中心化或者权限过高。
FunC 中的 msg 调用和常规不太一样,签名和调用长度是按照位置发送的,可能存在问题。
TON 生态
TON 生态中目前拥有 551 个apps, 分布在19个以上的细分领域中。
钱包
Ton Space 是 @wallet 中的非托管钱包,是 Telegram 中嵌入式的原生钱包,可用于导入现有的 TON 区块链钱包或创建新的 TON 区块链钱包。用户还可以选择使用TG账号和邮箱保存相应的私钥,并进行 NFT 的查看、发送和交易。Ton Space 即将支持更多功能,包括 DeFi 应用如 DEX、质押和借贷协议等,用户能使用 TON Connect 来访问TON上的第三方 dApp。
https://wallet.tg/
目前支持平台数量最多的 TON 区块链钱包为 Tonkeeper,支持网页端与移动端,在移动端还可查看用户持有的 TON 链上的NFT。值得注意的是,TON 的钱包为智能合约钱包,除了为实现 TON 网络的更多分片外,还为钱包提供了实现更多复杂应用的可能。
https://tonkeeper.com/
DEX
目前 TON 生态上共有6个主要的去中心化交易所,包括 Megaton Finance、ION Finance、DeDust、STON.fi 、Flex 和 Tegro Finance。这些 DEX 在用户受众方面都有不同侧重,Ston.fi 和 DeDust 拥有最大的用户群(进行swap的用户),而 DeDust 和 Megaton 有更活跃的用户。
https://megaton.fi/pool
此外,去中心化订单簿模式的交易所 Storm Trade 正在测试中,支持网页端的同时也支持 Telegram bot 模式,用户在未来可直接使用 Storm Trade 开发的bot进行交互。
借贷
TON 链的第一个借贷项目 Evaa Protocol 预计在10月10日上线Beta版本。7月19日,Evaa Protocol 宣布 TONcoin.fund 成为其战略投资者,10月2日在 Tonstarter 平台完成了私募融资13万美元。借贷协议 Evaa Protocol 的加入将有益于 TON 生态系统的资产流动性。
https://evaa.finance/
跨链桥
目前 TON 官方跨链桥支持资产在 TON 与 ETH、与 BSC 之间的互跨,其它链的官方跨链桥仍在开发中。
此外,第三方跨链桥有 Orbit Bridge,Wallet Bridge 和 Tontake Bridge。Orbit Bridge 与 Megaton Finance 均由韩国公链 Klaytn 上的 DEX 平台 KlaySwap 团队开发,支持11条公链的互跨。Wallet Bridge 与 Tontake Bridge 为 Telegram bot 形式,但使用人数较少,用户需注意交互风险。
数据平台
https://beta.redoubt.online/
其开发团队 Devnull 在今年7月 Beosin 支持的 Hack-a-Ton 黑客松中获得二等奖,后续将支持更多 TON 相关的数据分析。
TON的现在与未来
目前,TON 正在大力发展 DeFi 生态。今年,TON 已经举办了两场大型黑客松,主题均与DeFi相关。Beosin作为 Hack-a-ton x DWF Labs x AWS 的独家安全伙伴为开发者提供 workshop 指导与每周答疑,解决开发者构建 TON 生态项目的挑战。
Beosin成为TON黑客松合作伙伴
此外,TON 在各地区大力举办社区聚会与开发者训练营,旨在吸引更多开发者参与 TON 生态建设。Beosin 分别在今年7月和8月在新加坡、巴厘岛作为本地合作伙伴承办了 TON 线下meetup,并为首尔 Tact BootCamp 的参赛队伍进行了合约开发培训和获奖项目安全审计折扣。
Beosin 与 TON 社区合作
在第二次黑客松进行的同时,TON 在6月6日开启了生态项目流动性激励计划的申请,以支持 TON 生态的DeFi项目方和吸引更多用户。
Unibot、Banana Gun 等 Telegram trading bot,它们后续支持 TON 生态代币的交易并非难事。
Beosin 的 EagleEye 链上监测平台在未来也计划上线 Telegram bot,为广大用户提供快捷的项目信息与数据查询。目前,EagleEye 已支持分析链上巨鲸地址,检测合约风险,监控项目社媒平台,为用户提供全面的项目信息。
https://eagleeye.space/detail/toncoin
综上,随着生态的逐步构建和 TON 在移动端的优势,TON 依然具有非常大的潜力,在未来有很大机会吸引海量的用户参与其生态。