NFT铸造链上智能合约开发详情丨NFT铸造链上智能合约系统开发(开发案例)及成熟源码

简介:   区块链的部分价值,早以“互联网+数据库”的形式发展了很多年。在“互联网+数据库”的模式下,“+”到一定程度,就到私有链的水平了。然后每一个私链进行合并,当私链具备了更多共通性和可交换性之后,就变成了公链。

  区块链的部分价值,早以“互联网+数据库”的形式发展了很多年。在“互联网+数据库”的模式下,“+”到一定程度,就到私有链的水平了。然后每一个私链进行合并,当私链具备了更多共通性和可交换性之后,就变成了公链。

  目前区块链发展的最大掣肘,在于各个区块里的数据不统一。很多互联网是局域型的,内外网并不互通。“从私链走向公链”的过程,就是打破局域网和建立数据标准化的过程,另外,虽然发展区块链的意义重大,不是一有区块链之后,以前的商业就出现翻天覆地的变化。“区块链”要发挥巨大作用,有赖于从区块链技术发展出来的通证经济。

  burn销毁的核心函数为_burn函数,由于销毁事实上相当于将NFT转移给0地址,所以其大量逻辑与transfer类似。

  _burn函数定义如下:

  function _burn(uint256 tokenId,bool approvalCheck)internal virtual

  1

  参数含义如下:

  tokenId待销毁NFT的tokenId

  approvalCheck是否检测函数调用者的权限

  大致流程如下:

  获取待销毁NFT拥有者的信息

  如果设置approvalCheck为true则检测函数调用者的相关权限

  清空待销毁NFT的授权approve数据

  减少拥有者的balance

  在_packedOwnerships中写入销毁信息

  恢复代币连续性

  释放事件

  接下来,我们详细分析具体的代码实现:

  uint256 prevOwnershipPacked=_packedOwnershipOf(tokenId);

  address from=address(uint160(prevOwnershipPacked));

  (uint256 approvedAddressSlot,address approvedAddress)=_getApprovedSlotAndAddress(tokenId);

  此处代码与transferFrom函数的开始部分基本一致,但在from处理方面进行了简化。

  接下来,我们检查调用者的相关权限并清空授权,代码如下:

  if(approvalCheck){

  if(!_isSenderApprovedOrOwner(approvedAddress,from,_msgSenderERC721A()))

  if(!isApprovedForAll(from,_msgSenderERC721A()))_revert(TransferCallerNotOwnerNorApproved.selector);

  }

  assembly{

  if approvedAddress{

  //This is equivalent todelete _tokenApprovals[tokenId].

  sstore(approvedAddressSlot,0)

  }

  }

  此部分代码与transferFrom函数完全一致,不再详细介绍。

  _packedAddressData[from]+=(1<<_BITPOS_NUMBER_BURNED)-1;

  _packedOwnerships[tokenId]=_packOwnershipData(

  from,

  (_BITMASK_BURNED|_BITMASK_NEXT_INITIALIZED)|_nextExtraData(from,address(0),prevOwnershipPacked)

  );

  此处使用_packedAddressData[from]+=(1<<_BITPOS_NUMBER_BURNED)-1;代码将balance-=1和numberBurned+=1合并一起执行。

  其中_BITPOS_NUMBER_BURNED的值为128,为方便读者理解,我们再次给出_packedAddressData的格式:

  //Bits Layout:

  //-[0..63]balance

  //-[64..127]numberMinted

  //-[128..191]numberBurned

  //-[192..255]aux

  mapping(address=>uint256)private _packedAddressData;

  if(prevOwnershipPacked&_BITMASK_NEXT_INITIALIZED==0){

  uint256 nextTokenId=tokenId+1;

  if(_packedOwnerships[nextTokenId]==0){

  if(nextTokenId!=_currentIndex){

  _packedOwnerships[nextTokenId]=prevOwnershipPacked;

  }

  }

  }

相关文章
|
区块链 数据库 数据安全/隐私保护
IPPswap代币合约开发案例版丨IPPswap代币合约系统开发详细程序/规则玩法/方案介绍/源码平台
 Pledged mining refers to holding a certain amount of digital currency and locking it onto the blockchain network to obtain corresponding mining rewards.Pledge refers to locking a certain amount of digital currency in a blockchain network to prove one's support and participation in the network.
|
6月前
|
存储 算法 区块链
DAPP质押合约代币项目模式系统开发案例
“去中心化”也是区块链的典型特征之一,它使用分布式存储和算力,整个网络节点的权利和义务是相同的
|
6月前
|
人工智能 安全 物联网
NFT铸造智能合约代币质押系统开发|逻辑原理
智能合约是DAPP的核心组成部分,它负责处理应用程序的业务逻辑。
|
存储 安全 区块链
NFT智能合约系统开发|NFT铸造交易系统开发方案模式
智能合约可以通过分布式存储以及协议协商实现数据的可靠,从而实现不存在中心化
|
区块链
NFT系统开发|NFT铸造合约交易项目系统开发指南与方案
要理解智能合约的概念和作用,首先需要了解区块链的基本架构
|
安全 算法 区块链
DAPP矩阵公排互助系统开发|DAPP链上合约开发
智能合约作为Web3下的核心概念,具有巨大的潜力和应用前景
|
存储 监控 算法
DAPP链上质押项目系统开发|DAPP合约模式开发案例
DAPP不依赖中心化机构也不受单一实体控制,因此DAPP可以减少中心化机构的意见干扰
|
存储 安全 测试技术
dapp丨lp丨defi发行代币合约系统开发项目详细/案例分析/成熟技术/源码逻辑
  去中心化应用:区块链不仅仅是一种存储和传输数据的技术,还可以支持构建去中心化应用(DApp)。通过智能合约等技术,可以在区块链上实现自动化的、不需要中间人的应用程序。
|
存储 人工智能 大数据
|
存储 前端开发 安全
defi丨dapp丨ippswap代币发行合约项目系统开发规则方案及开发案例源码
  智能合约是一种基于区块链技术的自动执行代码。它是一种可以在区块链上自动执行、不可篡改的协议。智能合约能够有效地执行预定义好的规则和条款,并且在满足预设条件的情况下自动执行。这种合约大大降低了交易成本,提高了交易的可靠性。