快速上手了解智能合約(NFT標準) | TON Blockchain, TEP62

Ton101 | 區塊鏈 TON Blockchain
20 Aug 202310:19

Summary

TLDR大家好,我是霍华德。在上周的工作坊后,一些人私信我询问关于NFT的问题。今天我们将快速录制一个视频,帮助大家理解Tact语言的结构以及如何理解这个NFT合约。首先,让我们回顾一下我们的报告,我会在视频底部发送链接,你可以直接用你的本地IDE打开数据。在开始之前,我想先介绍它的通信方式。首先,你需要有一个自己的TonKeeper钱包,或者任何一个你通用的钱包。它本身是一个合约,发生在其中的铸造交易将是你发送消息给NFT集合的合约,然后它会生成一条消息并发送给NFT项目,这意味着如果你以Azuki为例,你可能有10,000个Azuki,最终你将有10,001个智能合约地址,这与我们熟悉的以太坊非常不同。理解了基本概念后,我们可以回到上面查看代码。首先,我们汇聚了代码的几个范围,你可以清楚地看到关键字“合约”代表什么。第一个是集合合约,第二个合约将是项目合约。这与我们熟悉的以太坊NFT结构也不同。我们可以一步步解释。一个常见的整数,一个共同的常量,所以它被称为常量,对吧?然后我们可以标准化TON这个词,并说它是0.03。至于为什么我们选择存储这两个数据,因为TON合约有一个特殊的余额来支付这个合约的存储费用。成本就是这样,但我们可以在未来提到细节。在我们扩展了集合合约之后,你可以看到它非常基础。显然这是一个集合,有点像这个合约的数量。它是最基本的,从最大的合约开始,父合约,它存储一些常规参数。例如,它现在有几个铸造ID,所以它的ID和索引实际上是一个ID。它从0开始,增加到你设置的数量。上限,第二个是你的所有者是谁,第三个是你的版税费用参数。我们在这里设置了一个数据类型,这是数据的类型。我们可以稍后调用这个东西。事实上,Tact支持自定义数据结构。让我们继续。你需要使用一组URL链接,这些是一些字符串,它们是字符串。你需要将字符串压缩成单元。我们熟悉这种细胞核形式,以存储在合约中,所以你可以看到它非常标准,我们会先压缩它,然后将其存储在单元中,因为简单的字符字符串不能传递给合约,然后你会看到你知道的“函数”。你将文本铸造传递给合约,它将是铸造。一个成功的NFT。第一行相当特殊。它是一个上下文消息。什么是上下文消息?我们可以回到这个仓库,我这里有,一个以前的文档,这是一个Tact语言的文件。你可以输入它并看到上下文实际上有这些消息附加。也就是说,你可以使用这个文本作为一个对话框,它会有弹跳。消息将有谁是发送者等。所以你可以调用这个上下文,然后你可以使用这个“ctx.value”或“ctx.sender”来进行过滤操作,也就是说,这个消息意味着我传入了这个数据,这个值,是这个文本对话框窗口的发送者,即调用这个铸造交易的人。当你进入合约时,这很容易理解。然后你在这里打开铸造,你会看到有一些细节需要写在这里。我们可能有需要和其他东西。铸造成功后,它将有一笔转移行动的交易,所以你必须满足我们的铸造要求。它会在这里设置,然后帮助你发送,下一步的相应交易信息继续下去。值得一提的是,如果我们在这里写一个函数,你将有不同的初始代码。你需要知道的是,你输入这个关键字匹配。这个初始代码将生成合约地址,因为我们的合约地址是要给出参数“到”,所以为什么ID有区别?事实上,每个NFT项目都有一个不同的ID,所以你需要输入一个不同的参数。到集合合约,它将返回,你所说的项目是什么样的地址,等等。如果你可以看细节,我们这边实际上是一个自我获取的功能,仍然在底部。那么你怎么做到呢?什么样的索引ID是值?通过这个描述,我们将返回一个初始代码。正如我刚才解释的,你将生成不同的NFT项目地址。原因是,有不同的初始代码。在这里,你只能确定生成地址的区别,取决于你这边的索引ID。这应该很容易理解。接下来,我们可以,传递一些基本参数给它。“SendParameter”是标准的,你想要什么,当发送消息时需要什么参数?你需要准备到,价值,反弹和模式。你可以,在刚刚分享的Tact文件中看到这些东西的细节。值得一提的是,你需要,第一次调用一个。合约,带有你的初始代码,所以这就是为什么你需要放置,初始DOT代码,并且数据是附加的。此外,如果你是最初部署这个合约,你需要这两个值被传递到新合约,以帮助合约成功部署,因为每个合约都需要这两个参数。如果我们在下一行,那么我们必须,告诉这个集合的主合约这个ID。父合约知道这是可以的。现在ID被添加下来了。如果有人将来发送这个铸造消息,它的ID将继续被添加下来。通过类比,让我们继续。这个接收实际上是一个标准的,如果没有扩展,也就是说,可能有人想从这个版税中拿走一些引用,等等。这并不重要,但它以标准的方式编写,所以我相信,让我们继续,呃,正如我们在下面谈论的,我还将使用,我们的结构结构在这里。结构是,我们首先定义,数据结构看起来像什么,然后这里将有一个标准的。需要返回的参数,以帮助大家理解,为什么这些参数被定义?你可以看到你回到我们的仓库,将有一个TEP。TEP的真正名称是,(Ton)增强提案,实际上它有点像,我们熟悉的一些规范,如ERC20。我们需要这些规范来帮助我们理解,NFT将具有什么功能,以及你需要在NFT本身上发送什么信息,所以我们不会在这里。关于这个TEP有太多细节,所以让我们继续,所以你需要设置这些标准,获取函数,以帮助大家获取,一些关于这个合约的相关信息。值得一提的是,这个获取函数,属于离链的,它是一个从你的链上获取数据的函数。它不是用于调用其他智能合约的。例如,如果你在以太坊上,你实际上可以调用,一些其他智能合约的函数,以获取,以太坊上其他合约的数据,因为在TON上它是异步的,所以你不能简单地依赖一个获取函数来获取,其他智能合约的数据。至于如何获取它,我们稍后会提到,所以接下来的,实际上是标准的,以帮助我们计算,也就是说,帮助我们计算,一些当前需要的信息,还获取一些标准化的返回值,以帮助我们。例如,当我们的前端需要调用,然后继续下去,包括消息旁边的参数。它实际上是有点像一个函数ID,也帮助我们定义并获取,我们想要来回发送的,这个交易的消息簿的,接口,所以这也是在TEP上首先定义的,我们可以继续。这里的消息,值得一提的是。它的整数侧实际上可以广泛地定义你是什么类型的数据。与Solidity相比,它更严格。最明显的区别当然是,当然,燃气费是不同的。例如,未签名的Intefer 16和uint64消耗的存储空间是不同的,但这有点太详细了。事实上,如果你写涂鸦。结构是这里更重要的一点,但它也很容易理解。你可以自定义数据结构的类型,所以,你可以自由使用它,它的灵活性相对较大。接下来,让我们看看NFT项目。当我们谈论NFT项目时,我想提醒你让我们看看NFT转移其所有者许可的情况。例如,这里有两个钱包地址。原来,我们需要发送转移数据结构,这是,以0X5F开头的数据格式,到我们自己的。这个NFT项目的拥有者,NFD项目接收到这个消息,并确认这是真正的所有者,也就是说,这个项目的拥有者可以发送这个消息。通过后,他将同时发送这两个消息。其中一条消息是发送给新所有者的,告诉新所有者,你现在是这个NFT项目的持有者,第二条消息是发送回原始持有者,说你的转移许可已经被转移了。这与我们在以太坊上的概念不同,因为我们知道,这是一个异步合约在Tom上,所以它需要这样的设计,同时通知原始持有者和新持有者,你有一个新合约。到达通知类似于这个概念,这与以太坊非常不同。让我们看看NFT项目需要什么信息。例如,可能有这些参数。你需要通过哪个地址传递集合,因为这可以帮助我们知道,某些消息只能由集合传递和调用,这是一种权限限制的行动。接下来的部分与上述类似。这部分,将是我们刚刚提到的转移行动,所以你可以看到,这一边的这个消息意味着,这个条件只会在使用初始化是第一次铸造时使用。另一种情况是,我刚才说的转移,所以下面的范围将被使用,当我只是说转移时,所以下面的范围将触发这个,所有者分配和访问,刚刚提到的是,标准转移行动的一部分。接下来的段落,实际上是一个链接,用于计算和维护余额。至于为什么它被写成这样,我们可以在以后提到。嗯,它将是一样的。标准采取一些基本信息等。总的来说,大致就是这样。这是一个标准的NFT集合,带有Tect语言的NFT项目的解释。我不想这个视频太长。如果你有其他问题,请随时在下面留言。在这段解释视频的结尾,我想强调并推广一件事,我们现在正在准备将TON的相关资源本地化。虽然这是本地化志愿者的工作,但他将是一个有偿的,有偿的链接。所以如果你感兴趣,请尽快联系我们。好的,这是一个简单的概述,带你了解Tact语言的结构是什么样的,以及每一段意味着什么。这就是今天的视频。

Takeaways

  • 📚 了解NFT结构:视频旨在帮助理解Tact语言的结构以及NFT合约的构成。
  • 💡 TON钱包使用:需要拥有TonKeeper钱包或任何通用钱包,这些钱包本身是合约。
  • 🔗 Mint交易机制:在TON中,Mint交易会生成消息并发送给NFT集合,然后集合生成消息并发送给NFT项目。
  • 📈 智能合约地址:在TON中,每个Azuki NFT可能对应一个智能合约地址,与以太坊的NFT结构不同。
  • 🔑 合约关键词:代码中有两个关键位置使用“contract”关键词,分别代表集合合约和项目合约。
  • 🗃️ 数据存储:TON合约有特殊的余额要求,用于支付合约存储费用,这与存储的数据类型有关。
  • 📝 自定义数据结构:Tact支持自定义数据结构,允许开发者根据需要定义数据类型。
  • 🔑 函数和消息:合约中的Mint函数将处理NFT的铸造,并且会有一个特殊的上下文消息,用于交互。
  • 🔍 上下文消息:上下文消息允许过滤和识别消息的发送者,这对于理解交易的发起者很重要。
  • 🚀 初始代码和部署:每个NFT项目都有不同的初始代码,这决定了生成的合约地址的差异。
  • 💻 函数参数:发送消息时需要准备的参数包括To、Value、Bounce和Mode,这些参数在Tact文件中有详细说明。
  • 🔗 函数和数据获取:合约中的get函数用于从链上获取数据,不同于以太坊,TON的get函数不能用于调用其他智能合约。
  • 📝 TEP规范:TEP(Ton Enhancement Proposals)类似于ERC20,是TON网络上NFT功能和信息传递的规范。
  • 🛠️ 消息和数据类型:TON中的消息和数据类型定义比Solidity更严格,这影响了合约的存储和计算。
  • 🔄 NFT所有权转移:在TON中,NFT所有权转移涉及到发送给新旧所有者的消息,以确保双方同时得到通知。

Q & A

  • 什么是NFT的Tact语言结构?

    -Tact语言结构是用于编写和理解TON区块链上NFT智能合约的一种编程语言。它包括集合合约和物品合约,以及用于定义数据结构和函数的关键字。

  • 为什么要使用TonKeeper钱包或通用钱包?

    -TonKeeper钱包或通用钱包是TON区块链上用户与NFT智能合约交互的工具。它们允许用户发送交易,如铸造(Mint) NFT,并接收相关的反馈信息。

  • 在TON区块链上,NFT集合和NFT物品是如何通过智能合约区分的?

    -在TON区块链上,NFT集合和NFT物品通过两种不同的智能合约来区分。集合合约负责管理整个NFT系列,而物品合约则管理单个NFT的具体信息。

  • TON区块链上的NFT与以太坊上的NFT在结构上有什么不同?

    -TON区块链上的NFT结构与以太坊不同,主要在于TON上的NFT集合和NFT物品是通过两个不同的智能合约来管理的,而以太坊上的NFT通常使用单一的智能合约来管理整个系列。此外,TON上的NFT地址数量会随着NFT物品的增加而增加,这与以太坊也有所不同。

  • 什么是常量(constant)在TON合同中的作用?

    -在TON合同中,常量用于定义一些固定值,如TON的单位值,这些值在合同执行过程中不会改变,用于标准化操作和计算。

  • 为什么需要压缩字符串并将其存储在细胞(cell)中?

    -在TON区块链上,简单的字符字符串不能直接传递给智能合约。因此,需要将字符串压缩成细胞(cell)的形式存储在合约中,以便于管理和调用。

  • Mint函数在NFT合同中的作用是什么?

    -Mint函数是NFT合同中用于铸造新NFT的函数。当用户调用Mint函数并满足合约中的条件时,合约将生成一个新的NFT并记录相关的交易信息。

  • 上下文消息(context message)在TON智能合约中扮演什么角色?

    -上下文消息在TON智能合约中用于传递关于消息发送者和接收者的信息,如发送者的身份和消息内容。它允许合约根据消息的上下文进行相应的处理。

  • 为什么每个NFT项目都有一个不同的初始代码?

    -每个NFT项目都有一个不同的初始代码,这是因为初始代码与NFT项目的特定属性相关联,如索引ID。不同的初始代码会导致生成不同的NFT项目地址,增加了系统的灵活性和可定制性。

  • 如何通过TEP来理解NFT的功能和所需信息?

    -TEP(Ton Enhancement Proposals)类似于以太坊上的ERC20标准,它提供了一组规范,帮助开发者和用户理解NFT将具有哪些功能,以及在NFT本身上需要发送哪些信息。

  • TON区块链上的NFT转移与以太坊有何不同?

    -TON区块链上的NFT转移是异步的,需要同时通知原始持有者和新持有者关于NFT所有权转移的情况。这与以太坊上NFT转移的概念不同,因为以太坊上的转移通常是同步的。

  • 为什么在TON区块链上部署智能合约时需要初始代码和数据?

    -在TON区块链上部署智能合约时,需要初始代码和数据来帮助合约成功部署。这是因为每个合约都需要这两个参数来初始化其状态和功能。

Outlines

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant

Mindmap

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant

Keywords

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant

Highlights

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant

Transcripts

plate

Cette section est réservée aux utilisateurs payants. Améliorez votre compte pour accéder à cette section.

Améliorer maintenant
Rate This

5.0 / 5 (0 votes)

Étiquettes Connexes
NFTTact语言TON区块链智能合约霍华德区块链技术数字资产加密货币技术讲解钱包安全Sinicization
Besoin d'un résumé en anglais ?