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 文件中。

相关文章
|
9月前
|
存储 人工智能 物联网
NFT链游系统开发(案例详解)丨元宇宙链游开发方案
NFT链游系统开发(案例详解)丨元宇宙链游开发方案
|
9月前
|
Rust 安全 区块链
NFT元宇宙游戏链游系统开发技术方案
智能合约的编写和部署需要一定的技术知识和经验
|
10月前
|
安全
卡牌NFT链动链游系统开发项目方案丨航海士NAGA链游系统开发技术
卡牌NFT链动链游系统开发项目方案丨航海士NAGA链游系统开发技术
|
JavaScript 前端开发 测试技术
乌托邦UOT系统开发NFT技术实现
智能合约是代码(它的功能)和数据(它的状态)的集合,存在于以太坊区块链的特定地址。智能合约账户能够在彼此之间传递信息,进行图灵完备的运算。智能合约依靠被称作以太坊虚拟机(EVM)字节代码(以太坊特有的二进制格式)上的区块链运行
乌托邦UOT系统开发NFT技术实现
|
安全 区块链 开发者
nft链游系统开发
链游就是指区块链技术上运作的手机游戏,使游戏玩家第一次变成手机游戏真正的主人。
240 0
nft链游系统开发
|
区块链 Windows
区块链链游项目系统开发技术功能丨链游NFT元宇宙系统开发技术方案
区块链链游项目系统开发技术功能丨链游NFT元宇宙系统开发技术方案
123 0
|
存储 区块链 vr&ar
NFT元宇宙链游系统开发(详细及分析)丨NFT元宇宙链游开发源码逻辑
元宇宙是一个平行于现实世界,又独立于现实世界的虚拟空间,是映射现实世界的在线虚拟世界,是越来越真实的数字虚拟世界。而区块链是采用分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
|
存储 前端开发 图形学
NFT元宇宙链游系统开发(开发原理)丨NFT元宇宙链游系统开发(方案及源码)
 NFT将成为元宇宙的关键基础设施,元界悔成为NFT最实出的应用,NFT的独特性和可替代性将为现实世界中的人类沉浸在元宇宙中提供可靠的墓础元宇宙是线上线下世界的融合,物理与电子相结合的方式。元宇宙为虚拟世界深入现实世界铺平了道路,无论是从虛拟到现实,还是从现实到虛拟,都致力于为用户提供更真实的体验。
|
物联网 区块链 vr&ar
浅谈NFT元宇宙链游系统开发案例及源码分析丨NFT元宇宙链游系统开发技术方案
什么是元宇宙   一个平行于现实世界的虛拟空间,是由AR、VR、互联网所组成的,未来,只要你戴上耳机以及头显设备就可以通过终端连接进入计算机所模拟构建的虛拟世界。(当然现在元宇宙只是一个概念)。
浅谈NFT元宇宙链游系统开发案例及源码分析丨NFT元宇宙链游系统开发技术方案
|
编解码 区块链 图形学
NFT链游系统开发(详细 及案例)丨NFT链游系统开发(区块链游戏开发源码)
  以区块链为核心的数字科技可以推动信息技术服务,从而促进数字产业化;元宇宙可以创造和创新更广泛的应用场景,拉动信息消费促进产业数字化。因此,以区块链为核心的Web3.0技术体系推动形成的元宇宙数字生态,将对数字产业化和产业数字化提供有力支撑,为数字经济高质量发展打造新引擎。