English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE คนไทย Français русский

回答

收藏

2.5 可扩展合同

开源社区 开源社区 8485 人阅读 | 0 人回复 | 2025-03-06

📝 您还将了解到:
  • 无限水平可扩展性的真正含义是什么,如何在应用程序中利用这一优势?
  • 要充分利用可扩展的 TON 区块链,应遵循哪些原则?

    7 |/ G3 f2 P3 j2 x" h

! v2 Z- K5 M8 T  g' B8 h4 C# t
我们来谈谈可扩展性。
💎  在 TON 中,您确实有一个非常具体的可扩展性保证。TON 保证可以扩展到单个合约的分片。
因此,一个合约上的操作不会对另一个合约上的操作造成影响🍼。而 TON 网络显然会负责它们之间的所有信息路由🚅。
❗ 你的工作是利用区块链的整体可扩展性,而不是在自己的合约中制造障碍!
单体合约的问题。
对于来自传统系统、大型网络数据库或以太坊的人来说,一个显而易见的问题是,他们将合约设计成一个单体应用程序,拥有自己的可变长度存储空间。
🌐 例如,在以太坊中,通证是以银行分类账的形式实现的,其中只有一个智能合约包含账户列表。如果有一百万个用户,这个列表就会有一百万行。每个用户都有一个条目,说明该用户的地址是什么。他们的余额是多少。设计这样的合约非常简单直接。你可以进行原子交易,从一个余额中扣除,然后添加到另一个余额中。这样就很容易设计出系统的运行方式。 但是,这种模式无法在TON上扩展,因为如果把这么长的清单放在一份合约中,马上就会出现问题。
  • 1️⃣首先,你在合约中存储的所有这些数据的租金成本将逐步增长。💸
  • 2️⃣其次,每当用户出现并希望对该合约进行操作时,他们将不得不支付越来越大的交易费用,因为他们将对合约中的大量数据进行操作。🌄
    ; }" ?5 n( c6 e. j4 T
. b7 e" O$ `3 j/ n
规则
为了帮助您,为您提供如何正确设计多用户和大规模应用程序和 TON 的指南,这里有一些规则。📰
  • ❗ 避免使用长度可变的数据。
  • ❗ 如果必须有一个列表,那么至少要使它简短并有边界,比如静态定义。
  • ❗如果必须要有一个列表,而且它应该是动态增长的,那么至少要确保该合约为单个用户所有,并且他们拥有控制其存储的专有权。一个简单的例子就是 TON DNS 项目中的记录。
    , w) i* t; A. K

) K& `& I* g# a! }3 [; i区块链是一个数组。
在 TON 中制作大型列表或数据字典的可扩展方法是将区块链本身用作数组。下面是一个简单的例子。
您可以想象这样一个系统:您有多个相互连接的合约,每个用户都在处理自己的合约。而且您不必将整个列表存储在应用程序的中央部分。
💎 在 TON 生态系统中,代币的设计是实现这一理念的最流行的例子。 个人用户的余额分布在所谓的 Jetton 钱包中。7 b$ k. b  u% f% S, b3 f- Q/ k7 b& a
🔥 这样做的好处在于,一个地方的两个 Jeton 钱包之间的操作不会影响另一个地方的另外两个钱包的操作,而且它们可以分散在不同的分块链上,不会造成任何障碍。

2 Y6 h7 b- ^( L$ I
📝 现在你知道了:
  • TON 保证可以扩展到单个合约的分片。
  • 出于速度、可扩展性以及节省GAS的考虑,TON 区块链上的以太坊单体钱包合约应该以不同的方式实现。
  • 避免使用长度可变的数据作为首要任务。
  • 如果必须要有一个列表,那么至少要让它简短且有边界,比如静态定义。
  • TON DNS 域名是一个可收集的非同质化通证,可以有任意数量的附加记录与之相关。
  • 在 TON 中制作大型列表或数据字典的可扩展方式是将区块链本身用作数组。
  • TON 中代币的设计方式是有一个单个发行人合约,但该合约并不存储所有用户的列表。相反,它被授权为其他用户铸造和创建代币,单个用户的余额分布在所谓的 Jettons 钱包中。

    8 x, K4 J8 S# ^/ F1 R* R' b
; v: F8 r* U$ }4 \* q6 U; e
- _* V! M8 U0 w
2 _1 W& c0 c. d# t3 L: P

, {& ?8 h1 [7 v- @1 o
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则