【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场

这篇具有很好参考价值的文章主要介绍了【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CryptoPunk 加密朋克不仅是一个顶级蓝筹NFT项目 (地板价为70ETH约15W刀),更是后续ERC721标准协议的灵感来源。

NFT交易市场,是目前整个区块链行业中除了以太坊本身之外最高收入的赛道,而OpenSea,x2y2,LooksRare 是目前Top3平台,其合计交易量占99%以上。

今天咱们将解读CryptoPunk的区区230行源码,其对订单模型与交易流程的实现,探索其内置的专用NFT交易市场的优势缺点,也为后续逐步源码分析3大NFT交易市场合约模型做基础铺垫。

想知道大蛋糕未来鹿死谁手,不妨和我一起源码入手吧。

CryptoPunk内置的交易市场

如果细心的同学可以发现,在OpenSea上如果想购买Punk在其属性页面会发现,对其所用标准的描述并非ERC721或者1155,而是绝无仅有的cryptoPunks,他作为2017年推出堪称史上最早的NFT协议(成为后续以太坊基金会推出的721标准的灵感来源),不仅实现了如今721标准的多数功能甚至还在其中内置了一个完全去中心化的交易服务市场,实现3种交易拍卖模式!

【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场

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

其实对于NFT最底层而言,交易流动是个最最基础的功能了,无非是要求双方都使用tansfer,卖方给买方NFT,买方给卖方ETH,一手交钱一手交货,但是当面交易尚且担忧对方不给钱呢。因此原子性,是达成信任的必备因素,链上成交基于不可更改的特性正是最佳解决方案

1、Punk优美的订单模型

回想一下,咱们在现实中是如何买卖商品的,大概有三类

  1. 卖家报价,买家支付→等于超市选购

  2. 买家报价,卖家同意→等于菜市口砍价

  3. 线下议价,链上成交→等于线下公证拍卖

无论哪种,最终达成成交则需要执行交换,既要防止卖家不给货,也要防止买家不给钱。

区块链技术虽然完美的解决了万一不给钱的问题,但是也带来了议价困难的痛点,毕竟“砍一刀价格”都是要上链的,肯定不能用拼多多那样的砍小数点后6位(- 。-)

Punk的market同时支持这3大类交易形式,既可以卖家报价,也可以买家报价,也可以议价后由合约帮你成交,全程无任何版税扣取,且230行简短的代码也杜绝了后门的可能

他的订单结构非常简单分两种:卖家报价单Offer和买家投标单Bid

1.1、卖家报价单Offer

与标准NFT一样,每个Punk都有一个唯一ID,因此每个punk都有一个独占的Offer订单簿,这个独占指的是,如果我重新报价无论是涨价还是降价,都将会替换掉前一个

这里通过isForSale 标注是否在售,通过onlySellTo 标注指定买家,则是用于链下议价链上执行成交功能


struct Offer {
        bool isForSale;  // 此Punk是否被卖家设置了报价卖出
        uint punkIndex;  // 此Punk的ID
        address seller;  // 此Punk的当前持有者
        uint minValue;          // 卖家设定最小卖价
        address onlySellTo;}    // 是否指定只能由谁购买   

咱们可以显著感受到,订单模型非常的简单,甚至连常见的订单有效期都没有,只要挂单卖家不主动取消的话,就总是有可能被买家以此价格购走

特别说明:这点虽然和opensea长时间的授权卖单类似,但不会出现异常价成交的情况,因为Punk在转移的时候会取消掉历史的报价单记录

1.2、买家投标单Bid

投标单也非常简约,基本等于(我,想买,这个,给多少钱)四元组了。

除了卖家标价等待购买的形式,任何人均可以通过提交投标单,来声明哪个punk我愿意用x的金额购买,这里同样提供了hasBid 变量用于体现当前这个投标单是否有效

买方随时可以取消之前的投标单,但是如果没有更高的价格覆盖的话,则原始的投标价格会保留(虽然已经无效),这是用于辅助其他买家定价出价的信息共享的设计

struct Bid {
        bool hasBid; // 投标是否有效,用于买家不想买取消用
        uint punkIndex; // 指定想投标的PunkID
        address bidder; // 投标者
        uint value;  } // 投标价

投标时,钱在哪里??其实已经打到Punk合约里了

买家要提交投标单Bid是通过其Punk合约的enterBidForPunk 方法进入的,要传入punkID参数以及当前交易的Value值,这就意味着,买家报价的时候,就已经将要购买的资金转入到Punk的合约中

1.3、小结

看懂其核心的订单簿结构后就是抓住了老鼠尾巴,其实他对应的各种方法,都是在进行对当前交易是否合理合法的审核,确定合法后,再对订单数据做增删查改

【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场

比如卖家成交后,会执行修改balanceOf中记录的用户累计持有的Punk总量,也会修改最核心punkIndexToAddress这个记录哪个PunkID所有者是哪个的信息

对于标准协议的底层数据意义可拓展阅读

NFT租赁提案EIP-5006步入最后审核!让海外大型游戏的链改成为可能

总之订单是为交易模式服务的,而Punk内置了3种交易方法

2、Punk支持三种交易模式

2.1、卖家先报价,买家再竞标

如果我作为持有Punk的尊贵用户之一,想要卖出Punk,需3步

卖家报价->买家提交买单->卖家提取收益

展开看看

卖家报价:卖家执行offerPunkForSale 设置愿意以某价格卖掉某nft,而后订单簿如下

bool: isForSale true
uint256: punkIndex 3
address: seller 0x5B38Da6a701c568545dCfcB03FcB875f56beddC4
uint256: minValue 100
address: onlySellTo 0x0000000000000000000000000000000000000000
买家购买:执行buyPunk方法在交易的value值传入超过于卖家的minValue即可购买成功。**

卖家需要再次调用 withdraw 提走自己本次收益(即买家buy时存入合约的value)

如果卖家突然不想卖了:则调用punkNoLongerForSale 来报价单

还有什么流程能比这更简单的?

或许只有在买家购买的同时也将收益打入卖家账户了吧。而Punk系统不这么设计的原因或许是激励更高频的场内交易,等需要外部用再提取走吧

2.2、买家先竞标,卖家先确认

如果我并未持有Punk但对某个ID情有独钟,也能先出价分3步:

买家报竞标单Bid->卖家接受->卖家提取收益

展开看看

买家报价:调用enterBidForPunk,并将eth作为value,此时钱存于punk合约内

卖家接受:调用acceptBidForPunk,要明确按买家报价的价格接受此交易,执行后买方已经得到了此朋克NFTID

卖方提取收益:需要再次执行withdraw 提走所有可提额度

如果买家不想买了:则调用 withdrawBidForPunk 取消竞标单,同时提走预存金额

2.3、链下议价链上执行

最后一种更简单了,就是完全已经谈妥了价格,由卖家通过

offerPunkForSaleToAddress 对订单簿不仅设置价格,还设置一个唯一买家地址onlySellTo,只有此地址可以来完成这个订单

这样一来虽然链上依旧是3次交易(卖家报,买家买,卖家提取收益)但是可以实现低价交易的应用场景,例如定向质押,防止被人监听截胡低价单用

3、如何评价Punk的交易市场?

乍一看,是一个很标准的最小NFT交易模型,确实可以准确稳定可靠的实现交易的核心环节,但有得有失,他优势如何,而又少了什么呢

3.1、GAS成本低

由于链上只存储了offerBid两种简约的订单簿,且只保留最新最高价的部分(对存储的新增需要高gas,但对修改则gas低)详情可见下文文末对以太坊黄皮书中定义gas计算的解析:【源码解读】你买的NFT到底是什么?

所以Punk市场的整体gas消耗并不高,笔者核算了下完成买卖提取全环节,大致消耗为30W的gas(含买卖双方合计支出)

按成交GAS排序: Punk < opensea < GEM < Genie < X2Y2 < Looksrare

3.2、无需手续费

目前链上可见Punk累计有21W交易,如果5笔交易可成交一单的话,则以及有4W次转移,对于这样数十亿市值的顶级蓝筹而言,不收版税简直是暴遣天物啊

当然,拿这样内置交易服务对比专职交易市场来比着实有些不公平,但也正是因为punk这样内置完成交易的功能是远远到不了完善的功能体系的,所以才有了各种广泛市场的可乘之机

而按手续费排序:Punk(0%) < X2Y2(0.5%) < Looksrare(2%) < OS(2.5%)

3.3、对机制的缺点评价

结论1:买卖机制不利于流动性池

NFT而言流动性是至关重要的,而每次报价都要上链显然是盆冷水,卖家不缺钱则不乐意动,买家难成交也缺乏动机,所以对报价者即收费且要求锁定资产到Punk此举虽然不会出现扣款失败的情况,但是也导致买家资产的时间的价值的损失

这点,后来Os等平台均采用签名的方式,来链下撮合购买意愿,报价近乎无需gas仅成单的时候需要链上登记订单结果来执行转移

这一击是中心化与去中心化在效率上的争夺,显然现在的市场还是需要效率

结论2:订单模型不利于批量操作

Punk订单模型的简约堪称是交易模型的典范,然而面对批量成交的诉求呢?

  • 卖家:得每个id每个报单,确定成交

  • 买家:得每个id每个竞价,等待成交

虽然收益的资金有可以累计后批量提取的设计,但不是重点

而批量报价成交,是现在NFT市场的必争之地

x2y2和Looksrare都在这点发力作为针对os的包围战,甚至拉上Gem等聚合器打通流量池的局限性,而os最新的SeaPort协议也实现了捆绑交易的新订单模型,从而可以任意资产组合对应任意资产组合直接实现市场交易

然而Punk的源码太过于超前,缺乏了代扣授权的功能,再也无缘批量成交

结论3:单一拍卖流程不利于撮合成交与定价

成交是需要妥协的,而NFT当前的价值也需要通过成交来博弈,如何为NFT定价一直都是巨大的难题

由此常见有四大拍卖机制:

  1. 英式拍卖。公开竞标往上拾价,最高出价者得

  2. 荷式拍卖。价格由高往低降,首个出价者得

  3. 第一价格拍卖。对拍品进行单独密封报价竞品,不知道其他竞买人的出价

  4. 第二价格拍卖。与上类似,不同的是最后出价最高者获胜,但只需按第二高价格支付

而这些拍卖机制(英拍荷拍)是Opensea的基础功能,利于促进成交与定价

英拍:限定时间竞拍,即不占用高价值蓝筹的资金成本,也有时间缓冲来拟合各群体的博弈结果

荷拍:更有效的减少过高报价流动性低而无成交的问题,让价值总要依据市场而变化

【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场

最终

虽然我吐槽了一堆,但是如此精简优美的NFT协议+NFT交易市场,仅仅使用230行代码就在2017年实现,并且演变为目前世界上最有价值的蓝筹NFT之一,是值得研究的产品

未来未必只有交易市场一头独大,更多垂类会在自己NFT内也内置交易功能如StepN、Axie Infinity、NBA Top Shot,而在Seaport开源开放后内置市场就未必是功能浓缩版的代言词了

后续笔者将继续研究OpenSea,X2Y2,Looksrare,Gem等头部NFT市场平台,从合约出发,看其优势与局限性,有兴趣的看官,速速点赞关注,后续跟进吧~

前文回顾

一文讲清-DeFI王者AAVE最新的稳定币GHO提案

【源码解读】火爆的二舅币真的跑路了吗?

NFT租赁提案EIP-5006步入最后审核!让海外大型游戏的链改成为可能

【解读合约审计】Harmony链桥被盗一亿美金分析?

【源码解读】新标准4907是怎样实现NFT租赁的?

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

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

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

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

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

欢迎你从后台提交web3行业问题探讨

点赞关注十四,用技术视角带给你价值文章来源地址https://www.toymoban.com/news/detail-402732.html

到了这里,关于【合约解读】CryptoPunk 世界上最早的去中心化NFT交易市场的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TikTok区块链实践:数字社交媒体的去中心化未来

    随着区块链技术的日渐成熟,数字社交媒体行业也在探索如何整合区块链,以推动去中心化发展。在这一潮流中,TikTok作为全球领先的短视频平台,积极实践区块链技术,探索数字社交媒体的未来。本文将深入探讨TikTok的区块链实践,以及这一实践对数字社交媒体去中心化发

    2024年02月04日
    浏览(48)
  • 创建一个区块链,是由三个节点组成的去中心化网络。

    目录 一、准备工作: 1、创建三个python文件: 2、创建nodes.json文件 3、transaction.json文件 4、打开三个控制台 二、在三个节点上进行交互。 二、添加交易发布请求(a向b发送10000coin) lancoin_node_5001.py、lancoin_node_5002.py、lancoin_node_5003.py。 它们每个都将连接到不同的端口,一个端

    2024年04月29日
    浏览(55)
  • 基于ERC20代币协议实现的去中心化应用平台

    使用 solidity 实现的基于 ERC20 代币协议的借贷款去中心化应用平台(极简版)。实现存款、取款、贷款、还款以及利息计算的功能。 平台提供ERC20协议代币的相关存取和利息计算工作。部署智能合约时初始化贷款和存款的年利率、代币实现地址。 用户可以将手中的代币存入平台

    2024年02月04日
    浏览(72)
  • 什么是 Web 3.0:面向未来的去中心化互联网

    Web 3.0 可能是基于公共区块链的未来互联网模式,公共区块链是一种用以促进加密货币交易的记录保存系统。 Web 3.0 的最重要的地方在于它是去中心化的,这意味着用户不是通过腾讯、阿里、百度、字节、谷歌、苹果等公司提供的服务访问互联网,而是个人自己拥有和管理互

    2024年01月21日
    浏览(53)
  • 完全免费的基于区块链和 IPFS 的去中心化博客平台

    xLog是一个基于Crossbell区块链的博客解决方案,专注于Web3数据由用户掌控。Crossbell是一个基于Web3技术的去中心化博客平台,用户可以在该平台上发布文章并进行交流和创作。社区提供多种交流平台和有奖创作活动。 xLog是基于 Crossbell 区块链的一个应用产品。底层技术框架是

    2023年04月25日
    浏览(72)
  • Polkadot + DeFi | 透明公平、高效交易的去中心化金融未来可期

    拥有投资理财意愿的人士,对金融领域的关注热度一直居高不下。从传统的金融产品,到去中心化金融产品的体验与尝试,借助区块链技术实现资产存储、资金交易行为范式的变革。无论是股票、期权,还是其他金融资产形式,DeFi(去中心化金融)不断实现对传统中心化金融

    2024年01月25日
    浏览(53)
  • 将 CloudMounter 连接到 4EVERLAND 以实现统一的去中心化文件管理

    CloudMounter 的名字很直观——它是关于将云服务安装为本地磁盘驱动器的。CloudMounter 可以像硬盘一样将 ftp/sftp、Amazon S3、DropBox、OneDrive 等云服务挂载到 macOS 上,让你像管理本地文件一样管理 Finder 中的文件。 CloudMounter官方页面: 这是一篇将 CloudMounter 服务连接到去中心化平台

    2024年01月19日
    浏览(49)
  • 智能资产管理中的区块链应用:资产登记和管理的去中心化

    作者:禅与计算机程序设计艺术 随着互联网金融和大数据技术的快速发展,智能资产管理已经成为一个热门的话题。传统的资产管理主要依赖于传统的金融中介机构,这些机构存在一些无法解决的问题,例如信任问题、安全问题、效率问题等。而区块链技术的出现,为智能资

    2024年02月15日
    浏览(56)
  • CESS 成功申请 IEEE 最新标准 P3233 — — 《基于区块链的去中心化存储协议规范》

    我们很荣幸地向大家宣布,IEEE(电气电子工程师学会,Institute of Electrical and Electronics Engineers)标准组织批准了 CESS 请求的标准号为 P3233,名为《Standard for Blockchain-Based Decentralized Storage Protocol Specification 》(基于区块链的去中心化存储协议规范)的行业标准提案。这一标准的

    2024年03月12日
    浏览(58)
  • 区块链的去中心化账本有和意义?为什么要哈希运算?如何保证数据不可篡改?

    1、中心化账本是什么? 在互联网的世界里,价值是用数字来呈现的。而数字文件是可以无限复制的,在互联网的世界数字具有易错、易改、易拷贝的特性,但是价值是不能复制的。为了解决这一难题发展为由一个中心化的机构(支付宝/微信支付/银联等)负责记账和记录账户余

    2023年04月23日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包