跳到主要内容

常见问题解答

本节涵盖了关于TON区块链最受欢迎的问题。

概述

能分享一下关于 TON 的简要概述吗?

TON 与 EVM 区块链的主要相似之处和不同之处是什么?

TON 有测试环境吗?

区块

获取区块信息的RPC方法是什么?

验证者生产区块。现有区块通过Liteservers可用。Liteservers通过轻客户端访问。在轻客户端之上构建了第三方工具,如钱包、浏览器、dapps等。

此外,这里有三个高级第三方区块浏览器:

在我们文档的Explorers in TON部分阅读更多。

区块时间

2-5秒

信息

通过阅读我们在analysis page上的分析,比较TON的链上指标,包括区块时间和最终确定时间。

最终确定时间

小于6秒

信息

通过阅读我们在analysis page上的分析,比较TON的链上指标,包括区块时间和最终确定时间。

平均区块大小

max block size param 29
max_block_bytes:2097152
信息

Network Configs中找到更多实际参数。

TON 上的区块布局是怎样的?

对布局中每个字段的详细解释:

交易

获取交易数据的RPC方法是什么?

TON 交易是异步的还是同步的?是否有文档显示这个系统是如何工作的?

TON区块链消息是异步的:

  • 发送者准备交易正文(消息boc)并通过轻客户端(或更高级工具)广播
  • 轻客户端返回广播状态,而非执行交易的结果
  • 发送者通过监听目标账户(地址)状态或整个区块链状态来检查期望结果

使用一个与钱包智能合约相关的例子来解释TON异步消息传递是如何工作的:

钱包合约转账的示例(低层级):

是否可以确定交易100%完成?查询交易级数据是否足以获得这些信息?

简短回答:要确保交易已完成,必须检查接收者的账户。

要了解有关交易验证的更多信息,请参阅以下示例:

TON 中交易的布局是怎样的?

对布局中每个字段的详细解释:

是否可以批量处理交易?

是的,TON上可以通过两种不同的方式实现交易批量处理:

  • 通过利用TON的异步特性,即向网络发送独立的交易
  • 通过使用接收任务并将其作为批处理执行的智能合约

使用批量处理特性的合约示例(高负载钱包):

默认钱包(v3/v4)也支持在一笔交易中发送多达4条消息。

标准

TON 的货币精度是多少?

9位小数

信息

Mainnet支持的小数位数:9位。

是否有标准化的协议用于铸造、销毁和交易中转移可替代和不可替代代币?

非同质化代币(NFT):

Jettons(代币):

其他标准:

是否有用 Jettons(代币)和 NFT 解析事件的示例?

在TON上,所有数据都以boc消息的形式传输。这意味着在交易中使用NFT并不是特殊事件。相反,它是发送给或从(NFT或钱包)合约接收的常规消息,就像涉及标准钱包的交易一样。

然而,某些索引的API允许您查看发送到或从合约发送的所有消息,并根据您的特定需求对它们进行过滤。

要更好地理解这个过程是如何工作的,请参阅支付处理部分。

账户结构

地址格式是什么?

是否可以拥有类似于 ENS 的命名账户

是的,请使用TON DNS:

如何区分普通账户和智能合约?

如何判断地址是否为代币地址?

对于Jettons合约必须实现标准的接口并在get_wallet_data()get_jetton_data()方法上返回数据。

是否有特殊账户(例如,由网络拥有的账户)与其他账户有不同的规则或方法?

TON内有一个特殊的主链叫做Masterchain。它由网络范围内的合约组成,包括网络配置、与验证者相关的合约等:

信息

在TON区块链概述文章中阅读更多关于masterchain、workchains和shardchains的信息:Blockchain of Blockchains

一个很好的例子是治理智能合约,它是masterchain的一部分:

智能合约

是否可以检测到 TON 上的合约部署事件?

TON中的一切都是智能合约

账户地址是从其初始状态确定生成的,其中包括初始代码初始数据(对于钱包,初始数据包括公钥在内的其他参数)。当任何组件发生变化时,地址相应改变。

智能合约可以存在于未初始化状态,意味着其状态在区块链中不可用但合约有非零余额。初始状态本身可以稍后通过内部或外部消息发送到网络,因此可以监控这些来检测合约部署。

为了防止消息链在不存在的合约处中断,TON使用了“弹回”功能。在这些文章中了解更多信息:

是否可以将代码重新部署到现有地址,还是必须作为新合约部署?

是的,这是可能的。如果智能合约执行特定指令(set_code()),其代码可以被更新并且地址将保持不变。

如果合约最初无法执行set_code()(通过其代码或来自外部的其他代码的执行),那么它的代码将永远无法更改。没有人能够在同一地址重新部署带有其他代码的合约。

智能合约可以被删除吗?

是的,要么是由于存储费用累积的结果(合约需要达到-1 TON余额才能被删除),要么是通过发送带有mode 160的消息。

智能合约地址是否区分大小写?

是的,智能合约地址是区分大小写的,因为它们是使用base64算法生成的。您可以在这里了解更多关于智能合约地址的信息。

Ton 虚拟机(TVM)与 EVM 兼容吗?

TVM与以太坊虚拟机(EVM)不兼容,因为TON采用了完全不同的架构(TON是异步的,而以太坊是同步的)。

了解更多关于异步智能合约

是否可以为 TON 编写 Solidity?

相关地,TON生态系统不支持在以太坊的Solidity编程语言中开发。

但如果您在Solidity语法中添加异步消息并能够与数据进行低层级交互,那么您可以使用FunC。FunC具有大多数现代编程语言通用的语法,并专为TON上的开发设计。

远程过程调用(RPC)

推荐的节点提供商用于数据提取包括:

API类型:

  • 了解更多关于不同API类型(索引、HTTP和ADNL)

节点提供商合作伙伴:

TON社区项目目录:

以下提供了两个主要资源,用于获取与TON区块链公共节点端点相关的信息(适用于TON Mainnet和TON Testnet)。