NFT链游项目系统开发技术方案丨NFT链游铸造定制开发技术

简介: NFT链游项目系统开发技术方案丨NFT链游铸造定制开发技术

可调度项、事件和错误

在本教程的上一节中,我们奠定了旨在管理小猫的所有权的基础 - 即使它们还不存在!在这一部分中,我们将通过使用我们声明的存储项目使我们的托盘能够创建Kitty来使用这些基础。稍微分解一下,我们将写:

create_kitty:一个可调度或可公开调用的函数,允许帐户铸造Kitty。
mint():一个辅助功能,用于更新托的存储项目并执行错误检查,由 调用。create_kitty
pallet Events: 使用 FRAME的#[pallet::event] 属性。
在本部分结束时,我们将检查所有内容是否编译无误,并使用外部PolkadotJS 应用程序 UI 调用我们的 create_kitty 。

公共和私人功能
在我们深入研究之前,了解我们将围绕 Kitty pallet的铸币和所有权管理功能进行编码的pallet设计决策是非常重要。

作为开发人员,我们希望确保我们编写的代码高效且优雅。 通常,针对一个进行优化会针对另一个进行优化。 我们将设置pallet以优化两者的方式是将“繁重”逻辑分解为私有辅助函数。 这也提高了代码的可读性和可重用性。 正如我们将看到的,我们可以创建可以由多个可调度函数调用的私有函数,而不会影响安全性。 事实上,以这种方式构建可以被认为是一种附加的安全功能。 查看这个关于编写和使用辅助函数的操作指南以了解更多信息。

在开始实施这种方法之前,让我们首先描绘一下组合可调度和辅助函数的样子。

create_kitty是一个可调度的功能或外在功能::

检查源是否已签名
使用签名帐户生成随机哈希
使用随机哈希创建新的 Kitty 对象
调用私有函数mint()
mint是一个私有助手函数,它:

检查小猫咪是否不存在
使用新的 Kitty ID 更新存储(适用于所有 Kitty 和所有者的帐户)
更新存储和新所有者帐户的新小猫总数
存入一个事件,以指示已成功创建小猫
编写可调度create_kitty
FRAME 中的可调度始终遵循相同的结构。 所有的pallet dispatchable 都存在于#[pallet::call] 宏下,该宏需要使用impl<T: Config> Pallet {} 声明dispatchables 部分。 阅读有关这些 FRAME 宏的文档以了解它们的工作原理。 这里我们需要知道的是,它们是 FRAME 的一个有用功能,可以最大限度地减少为将pallet正确集成到 Substrate 链的runtime所需编写的代码。

权重
根据其文档中描述的#[pallet::call] 的要求,每个可调度函数都必须具有关联的权重。 权重是使用 Substrate 开发的重要部分,因为它们提供了围绕计算量的安全防护,以在执行时适合块。

Substrate 的加权系统迫使开发人员在调用每个外部函数之前考虑其计算复杂性。 这允许节点考虑最坏情况的执行时间,避免因外部因素导致网络滞后,这些外部因素可能需要比指定的块时间更长的时间。 权重也与任何已签名外在的收费系统密切相关。

由于这只是一个教程,我们将默认所有权重为 100 以保持简单。

假设您现在已经用本节的帮助文件替换了pallets/kitties/src/lib.rs 的内容,找到ACTION #1 并使用以下行完成函数的开头:

[pallet::weight(100)]

pub fn create_kitty(origin: OriginFor) -> DispatchResult {

let sender = ensure_signed(origin)?; // <- add this line
let kitty_id = Self::mint(&sender, None, None)?; // <- add this line
// Logging to the console
log::info!("A kitty is born with ID: {:?}.", kitty_id); // <- add this line

// ACTION #4: Deposit `Created` event

Ok(())

}
我们不会进行调试,但登录到控制台是一个有用的提示,可确保您的托盘按预期运行。 为了使用 log::info,将其添加到您的托盘的 Cargo.toml 文件中。

相关文章
|
4月前
|
存储 区块链 数据库
元宇宙NFT链游系统开发DAPP技术方案分析
元宇宙NFT链游系统开发DAPP(去中心化应用)的技术方案涉及多个关键技术和步骤。以下是对该技术方案的综合分析: 1. 区块链技术基础 区块链技术是NFT(非同质化代币)和元宇宙系统的核心基础。它提供了去中心化、透明、不可篡改的数据存储和交易机制。在NFT链游系统中,区块链用于记录NFT的唯一性、所有权和交易历史。
|
存储 人工智能 物联网
NFT链游系统开发(案例详解)丨元宇宙链游开发方案
NFT链游系统开发(案例详解)丨元宇宙链游开发方案
|
存储 JSON 区块链
GameFi游戏NFT链游开发系统搭建技术
  游戏对计算的要求极高,大部分游戏均有客户端与服务器长连接、网络低延迟、频繁的数据写入(并发读写)、玩家交互、承载弹性等各类计算能力需求。
GameFi游戏NFT链游开发系统搭建技术
|
JavaScript 前端开发 测试技术
乌托邦UOT系统开发NFT技术实现
智能合约是代码(它的功能)和数据(它的状态)的集合,存在于以太坊区块链的特定地址。智能合约账户能够在彼此之间传递信息,进行图灵完备的运算。智能合约依靠被称作以太坊虚拟机(EVM)字节代码(以太坊特有的二进制格式)上的区块链运行
乌托邦UOT系统开发NFT技术实现
|
安全 区块链 开发者
nft链游系统开发
链游就是指区块链技术上运作的手机游戏,使游戏玩家第一次变成手机游戏真正的主人。
268 0
nft链游系统开发
|
区块链 Windows
区块链链游项目系统开发技术功能丨链游NFT元宇宙系统开发技术方案
区块链链游项目系统开发技术功能丨链游NFT元宇宙系统开发技术方案
150 0
|
物联网 区块链 vr&ar
浅谈NFT元宇宙链游系统开发案例及源码分析丨NFT元宇宙链游系统开发技术方案
什么是元宇宙   一个平行于现实世界的虛拟空间,是由AR、VR、互联网所组成的,未来,只要你戴上耳机以及头显设备就可以通过终端连接进入计算机所模拟构建的虛拟世界。(当然现在元宇宙只是一个概念)。
浅谈NFT元宇宙链游系统开发案例及源码分析丨NFT元宇宙链游系统开发技术方案
|
存储 区块链 vr&ar
NFT元宇宙链游系统开发(详细及分析)丨NFT元宇宙链游开发源码逻辑
元宇宙是一个平行于现实世界,又独立于现实世界的虚拟空间,是映射现实世界的在线虚拟世界,是越来越真实的数字虚拟世界。而区块链是采用分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
|
存储 前端开发 图形学
NFT元宇宙链游系统开发(开发原理)丨NFT元宇宙链游系统开发(方案及源码)
 NFT将成为元宇宙的关键基础设施,元界悔成为NFT最实出的应用,NFT的独特性和可替代性将为现实世界中的人类沉浸在元宇宙中提供可靠的墓础元宇宙是线上线下世界的融合,物理与电子相结合的方式。元宇宙为虚拟世界深入现实世界铺平了道路,无论是从虛拟到现实,还是从现实到虛拟,都致力于为用户提供更真实的体验。
|
数据可视化 区块链
NFT卡牌链游系统开发GameFi搭建技术
GameFi通过DeFi和NFT概念的融合,并以游戏的方式呈现,以更加直观的方式运行区块链金融体系,在具体的链游项目中,GameFi的游戏规则和道具、衍生品,就是建立在DeFi逻辑基础之上的NFT产品运行方式。
NFT卡牌链游系统开发GameFi搭建技术