区块链 | OpenSea:Wyvern protocol

本文详细描述了OpenSea交易所通过Wyvern协议进行NFT交易的过程,包括卖家创建代理、授权、发布订单,以及买家支付、匹配、所有权转移等步骤。还介绍了关键组件如WyvernProxyRegistry、OwnableDelegateProxy和NFTContract的作用。
摘要由CSDN通过智能技术生成

目录

Wyvern on the OpenSea

1  交易流程

1.1  卖家

1.2  买家

2  组成部分

2.1  WyvernProxyRegistry

2.2  OwnableDelegateProxy

2.3  NFT Contract

2.4  OpenSea Order Book

2.5  Wyvern Exchange Contract

3  总结


🥑原文:Wyvern on the OpenSea

🥑警告:自 2022 年 5 月 25 日起,OpenSea 就把 Wyvern 协议替换为 Seaport 协议了。

Wyvern on the OpenSea

OpenSea 交易所是如何运作的

双足翼龙「Wyvern」如下图所示,是一种神话中的有两条腿和有倒钩尾巴的龙,它也是 OpenSea 用来促进 NFT 去中心化交易的协议的名称。

本文将为您概述买家和卖家在 OpenSea 进行交易的所有步骤以及其技术。

1  交易流程

1.1  卖家

卖家的交易流程如下图所示:

  • 卖家创建「代理」并进行注册;
  • 卖家对「代理」进行授权;
  • 卖家将「卖出订单」及其签名发送给 OpenSea 订单簿。

1.2  买家

买家的交易流程如下图所示:

  • 买家支付 ETH 以请求交易所合约执行 atomicMatch_ 方法;
  • 交易所合约将 ETH 费用支付给 OpenSea;
  • 交易所合约将 ETH 支付给卖家;
  • 交易所合约呼唤卖家代理;
  • 卖家代理执行 NFT 合约的 transferFrom 方法;
  • NFT 合约转移卖家的 NFT 所有权。

2  组成部分

上述流程中有许多组成部分,让我们来逐个进行介绍。

2.1  WyvernProxyRegistry

当一个卖家首次在 OpenSea 上进行出售时,WyvernProxyRegistry 将为其创建一个名为 OwnableDelegateProxy 的智能合约。

WyvernProxyRegistry 是代理注册合约,OwnableDelegateProxy 是代理合约。

卖家拥有此合约,合约的地址存储在「proxy registry,代理注册表」中:

contract ProxyRegistry is Ownable {

    /* Authenticated proxies by user. */
    mapping(address => OwnableDelegateProxy) public proxies;

}

即,存储了代理所有者和代理之间的映射关系。

点击查看 WyvernProxyRegistry 的完整代码

首先是「Initialize your wallet」的步骤:

To get set up for selling on OpenSea for the first time, you must initialize your wallet, which requires a one-time gas fee. 为了第一次在 OpenSea 上出售商品,你必须先初始化你的钱包,这需要支付一次性的 Gas 费。

具体的交易过程如下图所示:

简而言之,每个 OpenSea 账户都会有一个「代理」合约与之对应。因此,如果是一个全新的账户,那么必须要经过「Initialize your wallet」的步骤,在该过程中进行代理合约的部署。但如果已经拥有了「代理」合约,那么下次上架 NFT 就不需要再次部署了。

由于这个操作需要改写区块链的数据,因此需要支付矿工费。另外因为需要进行合约部署,所以矿工费用也会相较其他操作更贵。

2.2  OwnableDelegateProxy

在 2.1 节中谈到,每个卖家都会创建一个 OwnableDelegateProxy 合约。

Wyvern「exchange contract,交易所合约」将使用这个「代理」合约来代表卖家采取行动。「代理」合约可以调用其他合约的方法,而无需存储有关这些合约的任何信息。

这个过程称为「proxy delegation,代理委派」。关于它是如何工作的,超出了本文的范围,但你可以 点击这里 了解更多。

也就是代理合约可以调用 NFT 合约中的各种方法,但是不需要存储 NFT 合约中的数据?

2.3  NFT Contract

这是卖家试图上架的 NFT「collection,收藏」的合约。卖家第一次在该「收藏」中上架任何物品时,他们会给予其 OwnableDelegateProxy 合约转移代币的权限。

只有在第一次上架的时候需要进行授权,之后就不需要了。

然后是「Approve this item for sale」的步骤:

具体的交易过程如下图所示:

上图中的 Set Approval For All 就是 NFT 合约中的授权方法。

2.4  OpenSea Order Book

OpenSea 要求卖家签署一个包含其「listing,列表」详细信息的消息,包括售价和到期日期。这个消息被称为「sell order,卖出订单」。签名的作用是验证卖家请求了该订单,并且没有人修改过它。OpenSea 将在一个称为「order book,订单簿」的「集中式数据库」中存储所有「卖出订单」和「卖家签名」。

这些「卖出订单」可以通过 OpenSea API 获取。这使得市场聚合器如 Genie 等能够展示 OpenSea 上的有效「listing,列表」。尽管订单是在链下存储的,但市场可以在链上履行任何有效订单。这就是为什么上架商品的过程是免费的,但是取消订单的过程是需要消耗燃料费的。

所有订单在被链上取消或过期之前都是有效的。

个人理解:上架商品不涉及区块链上的操作,取消订单会涉及区块链上的操作。

最后是「Confirm listing」的步骤,「卖出订单」在该步骤中被创建并被签名:

Accept the signature request in your wallet and wait for your listing to process. 在您的钱包中接受签名请求并等待您的上架处理完成。

具体的交易过程如下图所示:

GPT 说上图中的 maker 是指卖家地址,exchange 是指交易所合约地址,taker 是指买家地址。

2.5  Wyvern Exchange Contract

Wyvern「交易所合约负责执行订单。您可以 点击链接 查看此合约的代码。

买家需要支付足够的 ETH 以执行交易所合约atomicMatch_ 方法。

atomicMatch_ 方法接收卖出订单、卖家签名、买入订单和买家签名。它将检查卖出订单买入订单是否匹配且仍然有效。然后它会向 OpenSea 发送费用,向卖家发送付款,并使用卖家的 OwnableDelegateProxy 合约将 NFT 的所有权从卖家转移到买家。完成这些步骤后,买卖订单在合约中被标记为已最终化。

对于买家的交易看起来是这样的:

以上便是交易流程中的最后一步。如果一切顺利,那么买家将拥有 NFT 的所有权,而卖家将收到 ETH 付款。

3  总结

本文涵盖的 Wyvern Protocol 内容远不止这些,但我希望这篇文章能让您对每个步骤有更深的理解。如果您想要更加深入地了解,我附上了一些资源供您参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值