无标题为什么以太坊作为NFT领悟的头把座椅

Posted 共享区块链

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无标题为什么以太坊作为NFT领悟的头把座椅相关的知识,希望对你有一定的参考价值。

尽管有着较高交易成本和不断加剧的 L1 链的竞争,以太坊依旧不可争议地维持着 NFT 领域的头把交椅,为何如此?

近年来,加密行业发生了很大变化。发生了很多事情,特别是像以太坊这样的智能合约平台。例如,在 2017 年和 2018 年,以太坊仍然主要用于 1CO (首次代币发行) 项目的筹资目的。相比之下,来自 DeFi (去中心化金融) 和 NFT (非同质化代币) 领域的应用如今主导了以太坊区块链。

其他一些替代性智能合约平台 (比如 Fantom、Terra、Binance smart Chain、Solana 等) 已经尝试在以太坊的成功基础上继续发展。为了做到这一点,他们开发了自己的 L1 (第一层) 区块链,这些区块链通常不太去中心化和安全,但作为交换,它们更便宜、更快。

就 DeFi 领域而言,Terra、Binance Smart Chain (BSC)、Avalanche、Fantom 或 Solana 等替代性 L1 区块链网络已经成功地在 DeFi 生态系统中获得了可观的市场份额。Coin98 Analytics 的数据显示,目前这些替代性 L1 区块链中的 DeFi 协议的 TVL (总锁仓价值) 合计占到了整个 DeFi 领域中的所有资本的三分之一以上。如下图所示:

上图:以太坊和其他区块链平台上的 TVL (总锁仓价值) 占比情况,数据来源:Coin98 Analytics

但是,虽然这些替代性 L1 网络能够在一些方面 (尤其是 DeFi 领域) 取得一些进展,但它们在 NFT 领域的情况截然不同。

以太坊网络占据 NFT 交易量的 90% 以上

截至目前,以太坊能够保持其在 NFT 领域的市场份额。根据 1confirmation 的 2021 年 NFT 年度报告,在去年年底,超过 90% 的 NFT 交易量仍然通过以太坊网络及其可扩展性解决方案 (如Polygon、Ronin 和 Arbitrum) 完成。如下图所示:

当然,随着时间的推移,这些替代性智能合约平台也有可能在 NFT 领域获得更多的市场份额。然而,令人惊讶的是,与 DeFi 相比,NFT 到目前为止在小投资者中特别受欢迎,但它仍然主要在以太坊网络上交易。

尽管以太坊网络有着较高的交易费用,但许多散户投资者似乎并不回避在以太坊上购买 NFT。

以太坊占主导地位的原因

最大的基础设施和社区

以太坊是加密领域的第一个智能合约平台,多年来已经建立了最大的区块链基础设施和社区。因此,用户可以在以太坊生态系统中访问大量的去中心化应用和 NFT 项目。此外,与其他智能合约平台相比,以太坊网络中吸引的资金也明显更多。这对 NFT 交易者来说是一个巨大的优势,因为他们可以在相对成熟的市场上交易 NFT。

最活跃的开发者社区

此外,以太坊拥有最大、最活跃的开发者和 NFT 创作者社区。无论是最新的可扩展性解决方案,还是试验新的 NFT 项目,以太坊现在都是 NFT 世界的中心。大规模复制或模仿这种优势并不容易。因此,对 NFT 生态系统的成功复制要比 DeFi 领域困难得多。

最长的历史

以太坊继续占据主导地位的另一个原因是,以太坊的 NFT 场景拥有迄今为止最长的历史。以太坊上的首个 NFT 项目早在 2015 年就构想出来了,对于许多 NFT 收藏者来说,CryptoKitties 或 CryptoPunks 等较早的 NFT 数字收藏品非常有价值。

最安全的智能合约平台

以太坊在其整个生命周期中也保持了完美的正常运行时间。因此,该网络在可靠地保护 NFT 方面拥有最长和最可靠的记录。

拥有最高质量的 NFT 项目

正是由于许多基于以太坊的 NFT 项目都有着最高的安全性和最长的历史,因此这些 NFT 项目被大多数人认为是最想要获取的 NFTs。所以,当用户想要获取最有趣的项目的 NFT 时,其他区块链上的 NFT 在感知质量方面无法与之媲美。

总结

在加密领域,事情可能会发生难以置信的快速变化。因此,以太坊完全有可能随着时间的推移而失去其 NFT 生态系统的一些重要优势。然而,就目前而言,以太坊网络在 NFT 方面所具有的优势仍然是非常大的,而且像 Polygon、Optimism、Arbitrum 等这样的可扩展性解决方案正在使以太坊网络的交易成本低。因此,其他替代性 L1 区块链在 NFT 领域争夺

源码解读以太坊新标准EIP-4907是怎样实现NFT租赁的?

前菜

内容概要

在这周,NFT 租赁市场 Double Protocol 提交的可租赁 NFT 标准“EIP-4907”通过了以太坊开发团队的最终审核,成为第 30 个 ERC 标准“Final”的状态。

让我们一起来阅读这极简的源代码,来缕清其他是如何实现NFT租赁的?

目录大纲

1. 为什么需要租赁?
2. 源码解读
    2.1 实现原理&数据结构
    2.2 设置用户
    2.3 查询用户&过期时间
    2.4 租赁关系的强制性设计
3. 总结


为什么需要租赁?

NFT 的爆发毋庸置疑,而伴随普及引发了对其资产实用性的需求,尤其是在元宇宙和边玩边赚 (P2E) 的场景下,仅仅单纯的资产所有权并不足以支撑更多的应用玩法的诞生。

一直的痛点是供给不平衡,导致的好项目少,浮于金融玩法的韭菜项目多,既然如今web3有大量web2行业精英在涌入,也必然需要快速的新标准推出,来将创造力的供给释放。

NFT流动性的紧缺,使得他风风火火的同时也备受诟病,他之前产权一体化的金融化操作,市场各类安全问题欺诈、剽窃、钓鱼、跑路、资产被盗层出不穷。

而Eip-4907,想要解决的就是分离NFT的资产价值和使用价值,释放出NFT的市场流动性

源码解读

由于Eip4907极其简单,因此对代码的解读无论是否技术同学均可来尝试理解其细节设计。

2.1 、实现原理:

他作为 ERC-721 的扩展, EIP-4907 增加了一个变量UserInfo,让应用可以查询此NFT当前被租出去的目标地址“user”和出租时间”expires"。如果发现已经超出出租时间,则租赁关系宣告失效。

代码极为简单仅有72行,使用这个标准,就是在原来的ERC721之上新增

  • 1个事件(用于通知链下应用称为事件)

  • 3个方法(用于实现链上数据管理功能)

分别是

  • UpdateUser 事件:当NFT转移,租赁校色设置时,发出租赁用户改变的通知

  • setUser 方法:NFT所有者授权者可用,设置此NFTID的出租用户和过期时间

  • userOf 方法:任何人可用,查询此NFTID的出租用户

  • userExpires 方法:任何人可用,查询此NFTID的过期时间

2.1 、数据结构:

理解ERC标准协议的最佳方式就是理解他管理数据的最底层数据结构

例如:前文【源码解读】你买的NFT到底是什么?

其实NFT只是通过2个映射(_owners,_balances),即一种字典形式的key-value对应关系的存储结构去记录数据


mapping(uint256 => address)  _owners;// 记录每一个NFTID当前对应的所有者地址
mapping(address => uint256)  _balances; //记录了当前所有者总计持有的NFT数量

而Eip-4907则是新增了一个数据对象UserInfo 在所有权的概念之外增加“用户”的维度


struct UserInfo     
        address user;   // 用户地址
        uint64 expires; //用户到期时间
    

数据结构简单,就意味着管理的方法实现也非常简单

2.2、设置用户setUser 方法

设置用户仅有3个步骤

  • 【审计】此交易的发起者其是否持有此NFTid或是有Approved自动扣款权利
  • 【设置】设置UserInfo中用户的用户地址和到期时间
  • 【通知】发出设置成功的UpdateUser事件

function setUser(uint256 tokenId, address user, uint64 expires) public virtual
  require(_isApprovedOrOwner(msg.sender, tokenId),"ERC721: transfer caller is not owner nor approved");
  UserInfo storage info =  _users[tokenId];//新增存储登记信息
  info.user = user;   
  info.expires = expires;
  emit UpdateUser(tokenId,user,expires); //发出事件通知链下应用

2.3、查询NFTid的用户信息

媒体处处宣传的超时自动失效,而无需二次链上交易登记失效节约gas的逻辑就在这了。

查询的逻辑很简单,按指定的NFTID查询 _users的user信息即可,但他增加了,if判断,当前块的时间block.timestamp 是否会超过设置的过期时间expires,所以此查询仅在时间内有效。


function userOf(uint256 tokenId)public view virtual returns(address)
  if( uint256(_users[tokenId].expires) >=  block.timestamp)
      return  _users[tokenId].user; 
  ;//执行此函数,在未到期的情况下,返回此ID的当前用户地址
  elsereturn address(0);
  //到期情况下,则返回0地址,意未占用

2.3、查询NFTid的用户过期时间信息

此处无需类似user查询时候判断是否过期,因为得知上一次过期时间,也是加快NFT用户使用率的一种方式。


function userExpires(uint256 tokenId) public view virtual returns(uint256)
        return _users[tokenId].expires;//执行此函数,返回此ID的用户过期时间
    

2.4、租赁关系的强制性设计

此eip4907的协议,对标准交易方法Transfer 增加了一部分内容,通过_beforeTokenTransfer 实现,就是强制在进行Transfer交易转移后就删除掉这部分对用户的信息,并且发出事件通知已经用户失效了。


function _beforeTokenTransfer(address from,address to,uint256 tokenId
) internal virtual override
        super._beforeTokenTransfer(from, to, tokenId);
        //当交易不是自己转自己的情况下,如果有设置“用户”则删除他
        if (from != to && _users[tokenId].user != address(0)) 
            delete _users[tokenId];// 删除用户信息
            emit UpdateUser(tokenId, address(0), 0);// 发出事件通知已删除
        
    

总结

没想到吧,这么快就代码讲完了,因为确实他写完了,对的,不像是之前的通过限制转移权的方法EIP-5058,见前文【EIP-5058 能否防止NFT项目方提桶跑路?

其实他EIP-4907只是多了个变量,并称之为租赁用户而已,可以声明,但是其他应用认不认就是另一码事了,毕竟其强制性有限,转移就能强行终止出租授权

当然你或许会问,为什么这么简单反而火速成为了难得一见,且每次都能掀起一番波浪的Final标准呢?

这也就是web3的哲学:越简单,越优雅,剩下的交给共识。

我个人认可这样的哲学与趋势

web3过去爆发或是得益于金融操作,但是好的生态不能只是金融价值,还需要更有商业价值,需要更广大的用户融入于生活生产形成价值闭环,货币终究只是手段而不是目的本身

引用:

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4907.md

写在最后:

前文回顾

【解密】OpenSea免费创造的NFT都没上链竟能出现在我的钱包里?

【源码解读】你买的NFT到底是什么?

EIP-5058 能否防止NFT项目方提桶跑路?

当我们在看Etherscan的时候,到底在看什么?

当奈飞的NFT忘记了web2的业务安全

欢迎各位同学从后台提交有趣的合约或交易哈希。

关注十四,用技术的眼光发现价值。

看到这里,帅气的你不点个赞吗?

 

以上是关于无标题为什么以太坊作为NFT领悟的头把座椅的主要内容,如果未能解决你的问题,请参考以下文章

关于 NFT 和以太坊的一些新手问题

源码解读以太坊新标准EIP-4907是怎样实现NFT租赁的?

以太坊--2.账户是什么---以太坊的指南针学习记录

Nike推出其首款基于以太坊的NFT运动鞋

以太坊实战-创建并运行一个最简单的NFT合约

以太坊如何发布NFT到opensea