开发指南: 使用Crust存储NFT文件

CN
Crust
关注
3年前


Crust 提供了 Web3 生态系统的去中心化存储网络,支持包括 IPFS 在内的多种存储层协议,并对应用层提供接口。Crust 的技术栈还能够支持去中心化计算层。Crust 旨在构建一个重视数据隐私和所有权的分布式云生态系统。


相信关注区块链领域新鲜事的社区伙伴们近期都或多或少有感受过一些冠以NFT名头的交易对于人们感官的冲击。这种加密领域的新兴热潮正在改变人们在数字领域买卖商品的方式。随着NFT的浪潮涌现,也为去中心化存储带来了新的机会。Crust也将乘NFT迅速发展之势,进一步加深在NFT领域的探索与合作。


Crust Wiki现已新增存储NFT场景具体教程,为此后与NFT项目深度合作并深入NFT市场打下了坚实基础。


定义


NFT英文全称为Non-Fungible Token,非同质化代币,具有不可分割、不可替代、独一无二等特点。同质化代币,即FT(Fungible Token),互相可以替代、可接近无限拆分的Token。相较于FT,NFT的关键创新之处在于提供了一种标记原生数字资产所有权(即存在于数字世界,或发源于数字世界的资产)的方法,且该所有权可以存在于中心化服务或中心化库之外。


NFT资产,比如艺术品和收藏品,往往需要图像、视频等多媒体文件来呈现,这些文件存储在区块链上相对昂贵,因此需要被存储在链下。


市值


根据监控NFT市场的Nonfungible.com的最新估计,到2020年年底NFT的市场价值增长了705%,达到了3.38亿美元。截止到今年2月底,NFT的销售额接近3.1亿美元,几乎是2020年全年销量的五倍。


存储


如何确定一枚NFT的独有属性决定于元数据。元数据提供特定令牌 ID的描述性信息。目前大多数项目都是以太坊区块链当前的存储限制为条件,对元数据进行脱链存储的。


如果要脱离区块链存储元数据,则有两种选择:

(1)集中式服务器

最简单的元数据存储方案是在一个像 AWS 这样的中央服务器或云存储解决方案上存储。中心化缺点显而易见:

1) 开发人员可以随意更改元数据

2) 如果项目离线,那么元数据可能就不存在了。

为解决问题2,目前有几个服务(包括 OpenSea )将元数据在其自己的服务器上缓存在,以确保即使原始托管解决方案失败,也能有效地向用户提供元数据。


(2)IPFS

IPFS是一个点对点的文件存储系统,允许在计算机之间保存内容,因此文件可以备份到多个不同节点。这确保了元数据是不可变的,因为它是由文件的 hash唯一寻址的,而只要有一个节点愿意托管数据,数据就会随着时间持续存在,不会因为项目停摆而无法寻回。


现在,开发人员可以通过已开放的Crust存储网络来简化这一过程进行高效存储。


NFT在Crust上的存储


NFT交易平台可以通过集成Crust和IPFS满足NFT文件的存储需求。解决方案分为以下四个步骤:

1. NFT交易平台将NFT文件导入IPFS;

2. NFT交易平台通过Crust网络存储和分发NFT文件;

3. NFT交易平台监控NFT文件在Crust网络中的存储状态;

4. 用户在NFT交易平台访问NFT文件。


详细流程


1. 将NFT文件导入IPFS

NFT平台需要运行一个IPFS节点,在NFT生成时,交易平台将NFT文件导入IPFS。


curl --request POST 'http://127.0.0.1:5001/api/v0/add' --form '=@"/home/crust/FireCloud.png"

所有导入IPFS的文件将会获得一个唯一的CID(任何人都可以通过这个CID在IPFS网络内检索到对应文件)。


{

"Name": "FireCloud.png",

"Hash": "QmbLmgLUR1VZNpttojd752fyng8Bz3ZbPqabQ76MVLXT7P",

"Size": "2247325"

}


获得的返回值中,CID为: QmbLmgLUR1VZNpttojd752fyng8Bz3ZbPqabQ76MVLXT7P


2. 通过Crust网络存储和分发NFT文件

当NFT文件被传入IPFS网络后,为了保证文件始终能被访问,我们需要Crust网络节点Pin住该文件并提供检索。


2.1 安装依赖

NFT交易平台安装Crust对应依赖。

@crustio/type-definitions 适配Crust网络的自定义数据类型

@polkadot/api polkadot api库提供的Promise风格的界面,用于在Crust链上执行相关操作


2.2 初始化API实例

NFT交易平台在服务器端初始化api 实例,从而可以与Crust Network交互。


import { ApiPromise, WsProvider } from '@polkadot/api';

import { typesBundleForPolkadot, crustTypes } from '@crustio/type-definitions';


// WS address of Crust chain

const chain_ws_url = "ws://127.0.0.1:9933";


// Connect to chain

const api = new ApiPromise({

provider: new WsProvider(chain_ws_url),

typesBundle: typesBundleForPolkadot,

});


2.3 设置链上身份

NFT交易平台需要在链上获得 KeyringPair 才能发送订单交易。它可以从帐户的种子文件中生成:


/* eslint-disable node/no-extraneous-import */

import {Keyring} from '@polkadot/keyring';

import {KeyringPair} from '@polkadot/keyring/types';


// Seeds of account

const seeds = "echo xxxx soccer xxxx catch xxxx stone xxxx pumpkin nest merge xxxx";


const kr = new Keyring({

type: 'sr25519',

});


// krp will be used in sending transaction

const krp = kr.addFromUri(seeds);


2.4 在Crust网络发起一笔存储订单

NFT交易平台通过集成以下代码来发起存储订单。其中fileSize就是步骤1中获得的size。


/**

* Place stroage order

* @param api chain instance

* @param fileCID the cid of file

* @param fileSize the size of file in ipfs

* @param tip tip for this order

* @return true/false

*/

async function placeOrder(api: ApiPromise, krp: KeyringPair, fileCID: string, fileSize: number, tip: number) {

// Determine whether to connect to the chain

await api.isReadyOrError;

// Generate transaction

const pso = api.tx.market.placeStorageOrder(fileCID, fileSize, tip, false);

// Send transaction, for 'sendTx()' please refer https://github.com/crustio/crust-demo/blob/main/sample-store-demo/src/utils.ts

const txRes = JSON.parse(JSON.stringify((await sendTx(krp, pso))));

return JSON.parse(JSON.stringify(txRes));

}


2.5 Crust存储文件

Crust网络中大量节点在监听到存储订单后将会通过IPFS网络获取对应NFT文件,保证了文件的高可用性和高下载速度。


3. 监控NFT文件在Crust网络中的存储状态

NFT交易平台通过集成以下代码查询对应NFT文件的存储状态。


/**

* Get on-chain order information about files

* @param api chain instance

* @param cid the cid of file

* @return order state

*/

async function getOrderState(api: ApiPromise, cid: string) {

await api.isReadyOrError;

return await api.query.market.files(cid);

}

一次实例查询结果如下:


{

"file_size": 2247325,

"expired_on": 896600,

"claimed_at": 12164,

"amount": 92812500,

"reported_replica_count": 43,

"replicas": [

{

"who": "5Ck95aKKQHiFd2W8gfrbqiF8u7L4DSEYqBazA3iqbCgncj4H",

"valid_at": 12094,

"anchor": "0x9a59000c5a3e5f8f6261e09cc8b77c98d2c45bac0a2af7a151d97a392b927b074c6d580053e50f11325ca0dc3f2135eb4372b6f4e73329f99705208a31c4d728",

"is_reported": true

}

]

}

其中reported_replica_count的值为Crust网络中存储了NFT文件FireCloud.png的节点数,expired_on的值为这个文件订单在Crust网络中过期的块高。


除了可以通过代码访问Crust网络,也可以通过Crust Apps监控文件存储状态:



4. NFT文件的检索和访问

NFT交易平台可以提供IPFS Getway服务,或使用三方提供的公共IPFS Gateway服务。使得每个NFT文件都可以通过一个包含了CID的连接来访问。NFT交易平台的前端通过这些连接来向用户展示NFT对应的多媒体信息。


比如,Firecloud.png这个NFT文件,通过IPFS的公共Gateway访问的url为:


https://ipfs.io/ipfs/QmbLmgLUR1VZNpttojd752fyng8Bz3ZbPqabQ76MVLXT7P



如果用户本地安装并启动了IPFS,则访问同样的NFT文件url时会直接通过本地IPFS检索该NFT文件。


http://localhost:8080/ipfs/QmbLmgLUR1VZNpttojd752fyng8Bz3ZbPqabQ76MVLXT7P



由于Crust网络中大量节点存储了该文件,因此本地运行了IPFS的用户访问NFT文件时可以获得多点加速的效果。


更多信息详情请见:

https://wiki.crust.network/docs/zh-CN/buildIntegrationNFTDataStorage



Crust 的NFT周边


此前,Crust加入Polkapets NFT系列,上线Bondly,迅速售空。



关于Crust Fire Cloud


Crust Fire Cloud极其迅速敏捷,天性认真且正直。它们以积极进取并能够快速准确地完成工作而感到自豪。同时它们也具有坚韧的决心及野心,这使它们能够成为战斗中的重要伙伴。在平时,Crust Fire Cloud喜欢在多岩石的区域跳跃奔跑,并在高树上攀爬。正如松鼠一般,具有优异的记忆能力,依据食物的某些特定属性,采用组块分析策略在多个地方整理和埋藏它们的食物。当激怒它们时,它们会吸收周围的热量并释放出强大的火力。必须小心对待它们,避免发生意外将其栖息地烧毁。


关于PolkaPets


PolkaPets 是一种 NFT 收藏卡游戏,体现为用艺术化的生物形象,来代表 PolkaPet 生态中的特定项目。生物的能力,行为和力量与该生物所代表的 Polkadot 项目的特定愿景有关。


每个 PolkaPet 都会拥有一个独特的用途,用于奖励在其钱包中持有特定 PolkaPet NFT 的社区成员。奖励的形式有可能是费用折扣、向 PolkaPet 持卡人空投代币等等。


此外,在 PolkaPets TCG 中,玩家可以在竞争性游戏中将其 PolkaPets 彼此配对。玩家将通过赢得比赛,完成故事情节任务等来获得奖励。


Crust NFTs价值


后期Crust将陆续推出NFT周边,并推出配套持有NFT周边的荣誉标准,诸如获得 VIP 福利和即将到来的里程碑的第一手信息、社区活动优先权、增加神秘盲盒 NFT 大奖的中奖率、享受Crust生态系统应用的好处、标示化 VIP 用户状态等等。敬请期待!


小脆皮微信形象变更


同时,为了更好地融入到社区伙伴之中,小脆皮形象将依照Fire Cloud进行变更,欢迎各位社区伙伴多与小脆皮进行交流探讨,共建和谐社区氛围!



关于 Crust Network

 

Crust 提供了 Web3 生态系统的去中心化存储网络,支持包括 IPFS 在内的多种存储层协议,并对应用层提供接口。Crust 的技术栈还能够支持去中心化计算层。Crust 旨在构建一个重视数据隐私和所有权的分布式云生态系统。


力求与 Crust 主网功能相同的 Crust Maxwell 预览网于2月4日正式上线,集成Crust所有核心功能,包括代币质押、去中心化存储市场DSM及文件检索机制等


Crust Network 先后加入 Substrate Builders Program、Web3.0 Bootcamp,以及获得 Web3 基金会 Grant 。



Crust 相关:

Crust Network 技术白皮书 v1.9.8

Crust Network 经济白皮书 v.1.1

Crust Network 代币指标 & 经济学


官网:https://crust.network/ 

 Twitter:@CrustNetwork

 Medium:https://medium.com/@crustnetwork

 GitHub:https://github.com/crustio

 Telegram:https://t.me/CrustNetwork



免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

HTX:注册并领取8400元新人礼
广告
分享至:
APP下载

X

Telegram

Facebook

Reddit

复制链接