NFT盲盒系统开发,NFT交易系统APENFT系统治理,数字藏品盲盒系统,NFT艺术品铸造系统,NFT系统开发,数字藏品交易系统数字藏品拍卖系统,NFT交易系统,天猫数字藏品代上架,蚂蚁链粉丝粒代上架,NFT中国代上架,Opensea平台代上架,NFT系统源码,NFR系统,NFR系统源码,数字产品交易系统源码,NFT培训,NFT入行,NFT如何参与,元宇宙系统开发,元宇宙模式开发公司,BSC智能链NFT元宇宙挖/矿游戏系统开发,NFT元宝宙链游系统开发,BSC链质押流动挖/矿NFT游戏开发,链游开发,dapp智能合约软件定制,defi质押挖/矿系统源码搭建,上链挖/矿平台dapp平台源码搭建,开发模式分析,经济模型分析,案例分析,技术分析,开发源代码,开发技术公司,开发技术团队,开发服务商,CyberDragon赛博之龙游戏软件系统开发,NFT和链游再次占据加加密新闻头条
自从2017年提出ERC-721规范后,非同质化通证(NFT)已经从虚拟定物交易的实验性平台发展到被主流行业大规模采用。在这个教程中,我们将门票作为一种NFT资产,利用FLow区/块/链的Cadence智能合约来解
决票务市场的主要痛点,例如防伪、中介手续费、二级市场混乱等问题。
NBATopShot已经向其80万用户售卖了超过3亿美元的NFT,索斯比则刚刚以1700万美元的价格拍出一幅数字艺术品。当你购买一个NBATopShot藏品时,你并没有获得的商业权力,你甚至不能独享其权力。实际
上那幅1700万美元的艺术品,你可以免费观赏。
不过让我们探讨下NFT带来的价值:资产具有密码学算法可验证的所有权以及合约赋予的售卖或转让能力。
很多类型的资产可以受益于密码学可验证的所有权:成绩单、证书、知识产权等。想象一下用区/块/链代替USPTO.….可以跳过律师直接提交
你的申请,先到先服务是一个朋友的建议让我看是考虑将门票作为一种NFT资产,这很有意义。票务市场大的问题是什么?下面是一些:
防伪大量的交易手续费。我们都知道当你看到50美元的门票却需要花费72.50美元以便覆盖售票中介的成本时的感觉不受监管的二级市场
如果我们使用智能合约来管理资产,这些问题就会消失。确定NFT的真实性是小事一桩,交易手续费也可以通过采纳区/块/链得到大幅削
减。当然我们可以在Flow主网或测试网部署合约,但是我们讲利用FLow仿真器来进行快速本地开发。使用如下命令启动仿真器
我们的非同质化票证智能合约需要定义NFT的特点以及铸造、存储、转让等函数。其中某些功能需要公开可用,例如存入或获取元数据,而
另一些功能例如提取和铸造,则需要一定的权限才可以执行我也希望确认我们的票证是不可转让的,因此我们需要设置必要的检查条件以便
禁止多次存入。下面看一下我们的Cadence智能合约。
关于Cadence,Flow官方文档要比我介绍的更清楚,不过在更高的层面来说,Cadence使用Resources(资源)和Capabilities(能力)来定义谁(Who)可以访问什么(What)功能。
例如,我们讲NFTCollection和NFTMinter资源存入部署账号的路径,这意味着这些资源是私有的。但是我们在路径下发布一个指向
NFTReceiver能力的链接。另外需要注意的是,我们的NFT只是简单的利用其整数1D
定义,并采用一个numTransfers计数器来记录NFT的存入次数。在这个示例中,如果某人试图再次转让我们的票证,交易将失败。将合约
存入名为的目录.在我们部署合约之前,我们需要创建flow.json文档来指定谁(Who)在哪里(Where)部署什么(What)。在项目目录中执行以下命令初始化这个文件
这会给我们一个启动账号以及相应的私钥。稍后我们将查看flow.json文件,但是首先我们需要为参与者创建一个账号。运行下面的代码来生
成密钥对:
保存上述命令生成的密钥对,然后运行:
将ATTENDEE PUB KEY替换为你刚刚生成的公钥。
记录下来0x开头的地址。现在我们具备了flow.json需要的所有资料
注意:永远不要共享你的私钥。
你将看到我们在NonFungibleTicket合约中添加了一个指针(Pointer),我们的新的参与者账号以及仿真器账号(标识我们的票证发行人)的合约部署。现在我们可以用下面的命令部署合约:
如果一切顺利,你将会看到下面这样的输出:
现在是时候创建我们的个NFT了。下面我们将使用Cadence,但是我们将使用交易而不是定义一个合约。交易是我们使用智能合约中定义的函数的方法,交易执行将导致区/块/链状态的变化。
对我而言,这部分有趣的环节是NFT的元数据。我创建了一个演示用的具有若于属性的票证,例如区域和排,以及一个指向票证图像的URI链接。
这引起了我的思考,我不知道是否轻级NET用户理解其工作原理。
区/块/链在跟踪NFT的持有人以及其相关的元数据方面表现出色。然而,数字资产更常见的实现方式是采用外部存储来保存这些资产的实际内容。
作为S3 bucket服务的用户,没有什么可以阻止我删除或更新这些文件!
想象一下,你花费3万美元购买了StephCurry的3分球,然而DapperLab悄悄地将其替换为AlexCaruso的罚球!希望像IIPFS这样的去中心化存储方案能够解决这一类问题。
我们的票务发行账号部署合约,因此该账号在其私有存储中保存了NFTMinter资源。必须使用这个账号来签名如下交易:
如果我们尝试用参与者账号签名,交易就会失败。接下来让我们用一个Cadence脚本来检查我们的票务签发账号的余额。
使用如下命令运行脚本;
然后你将看到一个包含所持有NFT的ID的数组:
这表示发行账号目前持有我们新铸造的NFT!
现在我们将把门票转让给一位热切等待的乐迷。首先我们将在参与者的存储中创建一个NFTCollection资源。
这让我们有机会了解FLow架构的一个有用的方面。
在以太坊中,如果你将以大币发送到一个无效的钱包地址,这些以大币就没了,然而在ow中,在没有明确的目标地址时资源不可能发误出去,或者整个衣易回滚,我们不会因为主误发送到无效地址而失去门票
使用以上交易运行如下命令:
现在我们的参与者已经准备接收票据了。我们将使用Cadence交易来完成这个操作,在这个交易中发行账号取出其NFT然后存入参与者的藏品存储。
别忘了每次存入时,合约都会增加存储在NFT中的numTransfers参数的值。在这个交易之后,numTransfers=1.
下面是合约的内容:
使用下面的命令转让门票:
你可以分别用两个账号运行CheckTicketBalance脚本,验证下getIDs()在使用发行账号时返回空数组,而在使用参与者账号时返回!接下来让我们看看如果试图将门票转回发行账号会发生什么情况。
我们的智能合约正确地杜绝了这种情况的发生。我们的门票在二级市场不可以再次销售!
我们不会深入介绍前端应用的细节,它主要是利用FLOwJS库访问我们的Cadence合约。在这个简单的示例程序中,我们读取NFT的元数据,但是你可以用同样的方法执行仟何Cadence代码。