跳到主要内容

区块链的区别

在本章中,我们将研究以太坊区块链与 TON 区块链的主要区别。分析将包括对网络架构的概述,突出它们的独特功能,并评估各自的优缺点。

从对以太坊和 TON 生态系统的概述开始,我们可以注意到这两个平台都提供了类似的参与者和服务结构,包括持有资产和进行交易的用户、保持网络正常运行和安全的验证者,以及将区块链作为其产品和服务基础的应用开发者。两个生态系统都包括托管和非托管服务,为用户提供不同程度的资产控制。

此外,值得强调的是,这两个平台都有利于创建去中心化应用程序(DApps),为开发者提供强大的开发工具和标准。

然而,尽管以太坊和 TON 在整体结构和提供的功能上有相似之处,但其关键技术方面和网络设计方法却有很大不同。这些差异为全面了解每个平台的独特优势和局限性奠定了基础,这对于寻求最大限度发挥每个网络功能的开发人员来说尤为重要。在下面的小节中,我们将更详细地探讨这些差异,重点关注网络架构、模型、交易机制和交易结算系统,为开发者提供所需的见解。

区块链架构

以太坊继承并扩展了比特币的基本原理,为开发者提供了创建复杂的去中心化应用程序(DApps)所需的灵活性。以太坊的独特之处在于它能为每个账户提供个性化的数据存储,使交易不仅能执行代币转账,还能通过与智能合约的交互改变区块链的状态。我们知道,这种在账户间同步交互的能力为应用开发带来了巨大的前景,但同时也提出了可扩展性的问题。以太坊网络上的每笔交易都需要节点更新和维护区块链的全部状态,这会导致显著的延迟,并随着网络利用率的提高而增加 gas 成本。

为了应对这些挑战,TON 提供了一种旨在提高可扩展性和性能的替代方法。TON 的设计初衷是为开发人员提供最大的灵活性来创建各种应用程序,它使用分片和主链的概念来优化区块创建过程。在每个 TON 分片链和主链中,平均每 5 秒钟就会生成一个新区块,从而确保交易的快速执行。与同步更新状态的以太坊不同,TON 实现了智能合约之间的异步消息传递,允许每笔交易独立并行处理,大大加快了网络上的交易处理速度。需要熟悉的章节和文章:

总之,通过比较 TON 和以太坊的架构和技术基础,TON 显然具有显著优势。TON 采用创新的异步交易处理方法以及独特的分片和主链架构,展示了在不影响安全性或集中化的情况下支持每秒数百万次交易的潜力。这为该平台提供了出色的灵活性和效率,使其成为广泛应用的理想选择。

基于账户的模式(Account-based model)(以太坊)与演员模型(Actor Model)(TON)

在第一小节中,我们对以太坊和 TON 进行了比较,强调了它们在架构上的主要区别以及以太坊面临的主要挑战。特别值得注意的是,这些区块链在组织交互和使用模型方面采用了不同的方法。这些差异来自每个平台独特的架构选择。对于习惯使用以太坊的开发人员来说,必须深入了解这些差异,才能有效地过渡到在 TON 上进行开发。这种理解将使架构能够适应和优化智能合约在新环境中的交互。

那么,让我们回忆一下以太坊中基于账户的模型是如何工作的。以太坊使用这种模式来跟踪余额。就像银行账户一样,资金存储在账户中,而不是单个的币中。账户有两种类型:

  • 外部拥有账户(EOA)--外部管理账户由用户使用公钥和私钥对控制。公用密钥允许他人向该账户发送付款。
  • 合约账户--由智能合约代码而非私钥控制。由于没有私钥,合约账户无法自行启动交易。

当以太坊用户创建钱包时,当调用第一笔交易或收到第一笔资金时,外部账户会被添加到去中心化网络中所有节点的全局状态中。部署智能合约会创建一个合约账户,该账户能够根据特定条件以编程方式存储和分配资金。所有账户类型都有余额和存储空间,并能通过调用其他账户中的函数触发交易。这种结构使以太坊具备了作为可编程货币的能力。

以太坊采用同步交易处理方式,每笔交易都按照严格的顺序依次处理。这确保了区块链的状态始终保持一致,并且对网络中的所有参与者都是可预测的。所有交易都是原子性的,要么完全成功完成,要么完全失败,没有任何部分或不完全的执行。此外,当一个智能合约被调用时,它反过来又会调用另一个智能合约,这种调用在同一个交易中是即时的。但这里也有弊端,一个交易可以无限增长。同步性的负面影响仍然是超载,因为计算无法并行运行。随着合约和用户数量的增加,无法并行计算成为限制网络发展的主要因素。

现在让我们来了解一下什么是演员模型?演员模型是并行和分布式计算的一种方法,其主要元素是演员--独立的可执行代码块。这种模式最初是为集群计算而开发的,由于其扩展能力、并行性和容错性,被广泛应用于微型服务器架构,以满足现代分布式系统的需求。行为体接收和处理消息,根据消息的逻辑,通过接受本地变化或执行响应操作做出响应,还可以创建其他行为体或继续发送消息。它们是线程安全和可重入的,无需加锁,简化了任务的并行处理。这种模式非常适合构建可扩展和可靠的服务器解决方案,可提供高效的并发访问控制,并支持同步和异步消息传递。

在 TON 中,一切都由智能合约来表示,在演员模型中,智能合约也可称为演员。智能合约是一个对象,具有地址、代码、数据和余额等属性。它能够存储数据,并根据从其他智能合约接收到的指令行事。合约接收到信息并在 TVM 中执行代码进行处理后,可能会出现各种情况:

  • 合约更改其属性 code, data, balance
  • 合约可选择生成一条发送信息
  • 合约进入待机模式,直至发生以下事件

脚本的结果总是创建一个事务。 事务本身是异步的,这意味着系统可以在等待过去的事务完成的同时继续处理其他事务。这为处理复杂的事务提供了更大的灵活性。有时,单个事务可能需要按特定顺序执行多个智能合约调用。由于这些调用是异步的,开发人员可以更轻松地设计和实现可能涉及多个并发操作的复杂交易流。来自以太坊的开发者需要认识到,TON 区块链中的智能合约只能通过发送异步消息来相互通信,这意味着如果需要从另一个合约请求数据,并且需要立即响应,这将是不可能的。相反,get methods 必须由网络外的客户端调用,就像以太坊中的钱包使用 RPC 节点(如 Infura)来请求智能合约状态一样。这是一个重要的限制,原因有几个。例如,闪贷是必须在单个区块内执行的交易,依赖于在同一交易中借款和还款的能力。这得益于以太坊 EVM 的同步性,但在 TON 中,所有交易的异步性使得执行闪电贷款变得不可行。此外,在 TON 中,为智能合约提供外部数据的 Oracles 还涉及到更复杂的设计过程。关于 Oracles 是什么以及如何在 TON 中使用 Oracles,请参阅 此处

钱包的区别

我们已经讨论过,在以太坊中,用户的钱包是根据其地址生成的,地址与公钥之间是 1 对 1 的关系。但在 TON 中,所有钱包都是智能合约,必须由用户自己部署。由于智能合约的配置方式和功能各不相同,因此钱包也有多个版本,你可以在此 阅读相关内容。由于钱包是智能合约的一种,用户可以拥有多个不同地址和初始参数的钱包。要发送交易,用户必须用自己的私钥签署信息,并将其发送到自己的钱包合约,再由钱包合约转发给特定 DApp 应用程序的智能合约。这种方法大大提高了钱包设计的灵活性,开发者可以在未来添加新版本的钱包。目前,在以太坊中,开发者们正在积极使用 gnosis 等多签名钱包(智能合约),并刚刚开始引入 ERC-4337 等所谓的 "账户抽象",在这些钱包中,将充斥着诸如在没有原生代币的情况下发送交易、账户丢失后的恢复等功能,但值得注意的是,与以太坊中的 EOA 相比,钱包账户的使用 gas 费要昂贵得多。

信息和交易

两个合约之间发生的事情被称为消息--少量代币和任意数据被发送到指定地址。当消息到达合约时,合约代码会对其进行处理,合约会更新其状态,并选择性地发送新消息。合约上的所有这些操作都会被记录为事务。让我们举个例子,我们有一连串的消息,从合约A到合约B,从合约B到合约C,那么我们将有两条消息和三个事务。但最初,要改变区块链的状态,你需要一个外部信号。要调用智能合约,你需要发送一条外部消息,这条消息会发送到验证器,然后验证器将其应用到智能合约中。我们在上一小节中已经讨论过,钱包就是一个智能合约,因此外部信息通常会首先发送到钱包的智能合约,钱包会将其记录为第一笔交易,而第一笔交易通常包含实际目标合约的嵌入式信息。钱包智能合约收到消息后,会对其进行处理,并将其传递给目标合约(在我们的例子中,合约 A 可以是一个钱包,当它收到外部消息时,就会产生第一笔交易)。一连串的交易构成了一条链。因此,您可以看到每个智能合约都有自己的交易,这意味着每个合约都有自己的 "小区块链"(您可以在此 阅读更多相关信息),因此网络可以完全独立地处理由此产生的交易。

Gas 系统的区别

在以太坊中,交易成本以 gas 衡量,它反映了交易所需的计算资源数量。gas 成本分为协议设定的 base fee 和用户为加快验证程序处理交易而增加的 priority feetotal fee = units of gas used * (base fee + priority fee)。 此外,以太坊的存储基本上是免费的,这意味着数据一旦存储到区块链上,就不需要支付持续的费用。

在 TON 中,交易费用的计算很复杂,包括几种类型的费用:在区块链中存储智能合约的费用、向区块链导入消息的费用、在虚拟机上执行代码的费用、代码执行后处理操作的费用以及向 TON 区块链外发送消息的费用。gas 价格和其他一些参数可以通过在主网络上投票来改变。与以太坊不同,TON 用户不能自己设定 gas 价格。此外,开发者需要手动将剩余的 gas 资金归还给所有者,否则这些资金将一直被锁定。智能合约存储的使用也会影响价格:如果一个钱包的智能合约长时间未被使用,下一次交易的成本会更高。