首页 游戏 软件 资讯 排行榜 专题
首页
web3.0
TON链NFT开发教程:源码解析

TON链NFT开发教程:源码解析

热心网友
54
转载
2025-05-19

在EVM和TON Chain上开发NFT的区别

对于DApp开发者来说,发行一个FT或NFT通常是最基本的需求。我以此为学习入口,来探讨在EVM和TON Chain上开发NFT的区别。在EVM中,NFT通常会选择继承ERC-721标准。这个标准定义了不可分割且具有唯一性的加密资产类型,而每个资产都通过一个唯一的tokenId来标识。为了承载更多的属性,每个tokenId通常会有一个metadata链接,用于保存NFT的其他可扩展数据,例如PFP图片的链接和某些属性名称等。对于熟悉Solidity或面向对象编程的开发者来说,实现这样一个智能合约并不难,只要定义好合约中需要的数据类型和相应的修改逻辑即可实现一个NFT。

大家都在用的虚拟币交易平台推荐:

然而,在TON Chain上,情况就大不相同了。TON的数据存储基于Cell实现,且同一个账户的Cell通过有向无环图来管理。这就导致了需要持久化存储的数据不能无边界地增长,因为数据深度的增加会导致查询成本过高,甚至可能导致合约陷入死锁问题。此外,为了追求高并发性能,TON采用了Actor模型,这意味着智能合约之间只能通过发送内部消息的方式进行异步调用,无论是状态修改还是只读类型的调用都需要遵循这个原则,同时还需要考虑异步调用失败后的数据回滚问题。

基于上述设计原则,TON中智能合约的开发与EVM大不相同。在TON中,NFT的开发需要采用主从合约的架构,每个NFT都是一个独立的子合约,保存了所有者地址、metadata等数据,而主合约则管理全局数据,如NFT名称、符号和总供应量等。在明确了架构后,需要解决核心功能的需求,明确哪些功能由主合约承载,哪些由子合约承载,并通过内部信息沟通,同时考虑执行错误时的数据回滚逻辑。

TON 项目开发教程(一):源码角度看如何在 TON Chain 上创建一个NFT

从源码学习开发TON智能合约

TON选择了名为Func的静态类型语言来开发智能合约,让我们通过源码来学习如何在TON上开发智能合约。我选择了TON官方文档中的NFT示例进行介绍。合约结构分为两个功能合约和三个必要的库。主合约nft-collection的代码展示了如何在TON智能合约中持久化存储数据。在Solidity中,数据的持久化存储由EVM自动处理,但在Func中,开发者需要自己实现相应的处理逻辑,这有点类似于C和C++需要考虑GC的过程。

让我们看下代码,load_data函数用于读取持久化存储的数据,通过get_data返回持久化合约存储的cell。cell类型在TON区块链中用于存储所有持久数据,每个cell最多有1023位任意数据和最多四个对其他cell的引用。cell可以通过begin_parse函数转换为slice类型,然后从slice加载数据位和对其他cell的引用。save_data函数则是一个反向过程,通过begin_cell创建一个builder,并依次存储相关数据,最后通过end_cell完成新cell构建,并通过set_data完成持久化存储。

接下来是业务相关函数,首先介绍如何通过合约创建新的合约。在TON中,智能合约之间的调用是通过发送内部消息的方式实现的,通过send_raw_message函数实现。该函数的第一个参数是message编码后的cell,第二个参数是标识位,用于表明该交易的执行方式。TON中有不同的内部消息发送的执行方式,包括3种消息Modes和3种消息Flags。deploy_nft_item函数用于创建或铸造新的NFT实例,通过send_raw_message发送内部消息,并选择了flag 1的发送标识位,仅将编码中指定的fee作为本次执行的gas fee。

TON选择了一种名为TL-B的二进制语言来描述消息的执行方式,通过设置不同的标记位来实现特定功能的内部消息。StateInit的编码规则对应了calculate_nft_item_state_init函数,包含新合约的源码和初始化数据。TON中,所有未生成的智能合约可以预先计算其生成后的地址,通过workchain标识位与stateinit的哈希值拼接而成。calculate_nft_item_address函数即为预先计算新合约地址的函数。

send_royalty_params函数是对只读请求的内部消息的响应,在TON中内部消息不仅包含可能会修改数据的操作,只读操作也需要通过这种方式实现。TON中智能合约只有两个统一的入口,recv_internal和recv_external,开发者需要在函数内部根据需求,采用类似switch的方式根据message指定的不同标记位来响应不同的请求。通过throw_unless函数抛出异常,类似于Solidity中的require函数,用于权限检查等逻辑判断。

最后,为了使代码结构更清晰,提供了一系列帮助获取持久化信息的辅助函数,开发者可以参考这种结构来开发自己的智能合约。

TON 项目开发教程(一):源码角度看如何在 TON Chain 上创建一个NFT

TON 项目开发教程(一):源码角度看如何在 TON Chain 上创建一个NFT

TON 项目开发教程(一):源码角度看如何在 TON Chain 上创建一个NFT

TON 项目开发教程(一):源码角度看如何在 TON Chain 上创建一个NFT

TON 项目开发教程(一):源码角度看如何在 TON Chain 上创建一个NFT

TON 项目开发教程(一):源码角度看如何在 TON Chain 上创建一个NFT

TON 项目开发教程(一):源码角度看如何在 TON Chain 上创建一个NFT

TON生态的DApp开发真是一件有趣的事情,与EVM的开发范式有很大差异。我会通过一系列文章来介绍如何在TON Chain中开发DApp,与大家共同学习,把握这波机会。也欢迎大家在Twitter上与我互动,碰撞一些新的有趣的DApp创意,一起开发。

来源:https://www.php.cn/faq/843420.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

“链接未来·智汇静安”区块链创新应用优秀场景分享(四)| 信医基于区块链与隐私计算的真实世界研究数据产品
科技数码
“链接未来·智汇静安”区块链创新应用优秀场景分享(四)| 信医基于区块链与隐私计算的真实世界研究数据产品

聚焦数字技术,释放创新动能。为集中展示静安区区块链技术从“实验室”走向“应用场”的丰硕成果,挖掘一批可复制、可推广的行业解决方案,加速构建区块链产业生态闭环,静安区数据局特推出“静安区区块链创新应用

热心网友
04.07
什么是拜占庭将军问题?一文读懂区块链如何创建信任
web3.0
什么是拜占庭将军问题?一文读懂区块链如何创建信任

拜占庭将军问题:区块链信任根基的理论基石 在探讨区块链如何构建无需信任的协作体系时,一个源自分布式系统理论的核心概念绕不开,那就是“拜占庭将军问题”。它精准刻画了在网络参与者无法完全互信、通信也可能不可靠的环境下,达成稳定共识所面临的深层困境。这一理论挑战由Leslie Lamport等学者在198

热心网友
04.04
区块链介绍:PoS 机制是什么?如何运作?有何风险?
web3.0
区块链介绍:PoS 机制是什么?如何运作?有何风险?

PoS共识机制终极指南:原理、优势、风险与未来 在区块链技术迈向大规模应用的关键十字路口,共识机制是决定网络未来的核心。随着以太坊成功完成“合并”全面转向权益证明,PoS共识机制已从幕后走向台前,成为引领下一代区块链基础设施的关键技术。它不仅是对传统工作量证明的革新,更是对整个加密世界能源观、安全观

热心网友
04.03
什么是区块链中的分叉?概念、类型及其影响
web3.0
什么是区块链中的分叉?概念、类型及其影响

前言:区块链共识演进的十字路口 在去中心化的世界里,区块链网络的魅力源于其开源的本质与动态演进的能力。然而,当社区成员对技术升级或治理规则产生分歧时,网络便会面临关键的抉择时刻。这种由共识分歧导致原有链产生分支的现象,被称为区块链分叉。它不仅是技术事件,更是社区意志、发展方向与加密资产价值重构的核心

热心网友
04.02
什么是代币经济学?新手必看的区块链基础知识
web3.0
什么是代币经济学?新手必看的区块链基础知识

在快速变化的Web3世界中,代币经济学被誉为项目的灵魂与生命线。一个设计精良的代币经济模型不仅能驱动生态持续繁荣,更是投资者评估项目长期价值的核心标尺。对于希望深耕区块链、DeFi或元宇宙领域的参与者而言,掌握代币经济学分析方法,是做出明智决策的关键第一步。 代币经济学:为什么它是Web3项目的命脉

热心网友
04.02

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

美国SEC主席Paul Atkins证实:加密货币安全港提案已送交白宫审查
web3.0
美国SEC主席Paul Atkins证实:加密货币安全港提案已送交白宫审查

加密货币行业翘首以盼的监管里程碑,终于有了实质性进展。美国证券交易委员会(SEC)主席保罗·阿特金斯(Paul Atkins)近日证实,那份允许加密项目在早期获得注册豁免权的“安全港”框架提案,已经正式送抵白宫,进入了最终审查阶段。 在范德堡大学与区块链协会联合举办的数字资产峰会上,阿特金斯透露了这

热心网友
04.08
微策略Strategy报告:第一季录得144.6亿美元浮亏 再斥资约3.3亿美元买进4871枚比特币
web3.0
微策略Strategy报告:第一季录得144.6亿美元浮亏 再斥资约3.3亿美元买进4871枚比特币

微策略Strategy报告:第一季录得144 6亿美元浮亏 再斥资约3 3亿美元买进4871枚比特币 市场震荡的威力有多大?看看Strategy的最新季报就明白了。根据其最新向美国证管会(SEC)提交的8-K报告,受市场剧烈波动影响,这家公司所持的比特币在第一季度录得了一笔惊人的数字——144 6亿

热心网友
04.08
稳定币发行商Tether再扩Web3版图!Paolo Ardoino:正开发去中心化搜索引擎Hypersearch
web3.0
稳定币发行商Tether再扩Web3版图!Paolo Ardoino:正开发去中心化搜索引擎Hypersearch

稳定币巨头Tether的动向,向来是加密世界的风向标。这不,它向Web3基础设施的版图扩张,又迈出了关键一步。公司执行长Paolo Ardoino在社交平台X上透露,其工程团队正在全力“烹制”一个新项目——去中心化搜索引擎 “Hypersearch”。这个消息一出,立刻引发了行业的广泛猜想。 采用D

热心网友
04.08
Base链首个原生DeFi借贷协议Seamless Protocol倒闭 将于2026年6月30日下线
web3.0
Base链首个原生DeFi借贷协议Seamless Protocol倒闭 将于2026年6月30日下线

基地位于Coinbase旗下以太坊Layer2网络Base的Seamless Protocol,日前正式宣告了服务的终结。这个曾经吸引了超过20万用户的原生DeFi借贷协议,在运营不到三年后,终究没能跑赢时间。它主打的核心产品是Integrated Leverage Markets(ILMs)——一

热心网友
04.08
PAAL代币如何参与治理?社区投票能决定哪些事项?
web3.0
PAAL代币如何参与治理?社区投票能决定哪些事项?

PAAL代币揭秘:深度解析Web3社区治理的核心钥匙 在去中心化自治组织的浪潮中,谁真正掌握了项目的话语权?PAAL代币提供了一套系统化的答案。它不仅是生态内流转的价值媒介,更是开启链上治理大门的核心凭证。通过持有并质押PAAL代币,用户能够对协议升级、资金分配乃至战略方向等关键事务投出决定性的一票

热心网友
04.08