区块链 | OpenSea:Wyvern protocol

目录

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 内容远不止这些,但我希望这篇文章能让您对每个步骤有更深的理解。如果您想要更加深入地了解,我附上了一些资源供您参考:

  • Wyvern Protocol
  • Proxy Delegate from Solidity Patterns
  • OpenSea: Wyvern Exchange Contract v2
  • Project Wyvern Proxy Registry
  • OpenSea API Reference
  • @javamonnn's Breakdown of The Wyvern Exchange Contract

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何写好代码?

文章目录 前言内容代码应当易于理解命名注释格式循环和逻辑设计函数设计类其它(编程规范、静态检查工具)重构 前言 在软件开发领域,写好代码是至关重要的一环。不论是在学校学习的学生,刚刚毕业的应届生,还是刚步入企…

数据结构-二叉树-链式

一、链式二叉树的结构 typedef int BTNodeDataType; typedef struct BTNode {BTNodeDataType data;struct BTNode* left;struct BTNode* right; }BTNode; 二叉树的前中后序遍历 前序:根左右 中序:左根右 后序:左右根 void PreOrder(BTNo…

spring boot3单模块项目工程搭建-上(个人开发模板)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 目录 写在前面 上文衔接 常规目录创建 common目录 exception.handle目录 result.handle目录 controller目录 service目录 mapper目录 entity目录 test目录 写在最后 写在前面 本文…

uniapp视频播放器(h5+app)

关于uniapp视频播放器遇到的一些问题,mark下。 中途遇到了很多问题,如果有相同的伙伴遇到了类似的,欢迎交流 官方的video播放器在app上不友好,有以下功能不支持。 loadedmetadata、controlstoggle不支持导致只能手写控制层。 不…

Linux实验一:Linux环境及编程工具

目录 一、实验目的二、实验内容三、参考代码四、实验步骤步骤1. 编辑源代码test1.c步骤2. 编译源代码test1.c步骤3. 调试test1步骤4. 重新编译运行test1.c 五、实验结果六、实验总结 一、实验目的 1、掌握Linux C开发过程中的基本概念; 2、掌握如vim,GC…

keepalived检测Nginx高可用

node1 192.168.136.55 node2 192.168.136.56 两台机器都安装dnf install keepalived nginx [rootnode1 ~]# echo "web test page, ip is hostname -I." > /usr/share/nginx/html/index.html [rootnode2 ~]# echo "web test page, ip is hostname -I."…

【ARMv9 DSU-120 系列 4 -- Utility bus 详细介绍 1】

请阅读【Arm DynamIQ™ Shared Unit-120 专栏 】 文章目录 DSU-120 Utility bus事务类型访问大小事务长度安全状态总结缓存控制(ARCACHEU 或 AWCACHEU)突发类型(ARBURSTU 或 AWBURSTU)锁定信号(ARLOCKU 或 AWLOCKU)Utility bus acceptance capabilities

【科学研究】农村出身:一种复杂的情感结构

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

LeetCode 面试题 17.08 —— 马戏团人塔

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 首先,我们对人的身高按照从小到大排序,特别注意,对于身高相等的人,要按照体重从高到低排序。这时候,序列已经满足了在上面的人要比下面的人矮一点&#…

在开发软件以便未来本地化到其他语言时需要考虑的事项

我们准备了一份关于开发软件以便未来本地化到其他语言时需要考虑的事项的简要指南。这非常重要,因为您的软件在其他国家市场上的销售可能会带来比本国市场更多的收入。 在开发软件时考虑到未来本地化到其他语言的一些重要方面包括: 设计多语言支持&…

有什么因素会影响IP稳定性?

IP稳定性指的是IP地址在一段时间内保持不变的能力,对于网络连接的安全性和可靠性至关重要。以下是一些可能影响IP稳定性的主要因素: 网络服务提供商(ISP)的政策:不同的ISP对于IP地址的管理和使用有不同的政策。一些IS…

代码随想录算法训练营第7天 | 454. 四数相加 II | 383. 赎金信 | 15. 三数之和 | 18. 四数之和

454. 四数相加 II 题意 找出四个数组中元素和为0的次数 解 class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map<int, int> map;i…

springboot+thymeleaf实现一个简单的监听在线人数功能

功能步骤&#xff1a; 1. 当用户访问登录页面时&#xff0c;Logincontroller的showLoginForm方法被调用&#xff0c;返回登录页面的视图名字。 2. 用户提交表单&#xff0c;调用LoginController的login方法。 3.login方法 4.登录验证通过&#xff0c;home方法会被调用&#xf…

C++解方程组的库

解决多元多次方程组的问题&#xff0c;你可以考虑以下几个C库&#xff1a; Eigen: Eigen库是一个高性能的C模板库&#xff0c;用于线性代数运算。它提供了强大的矩阵运算功能&#xff0c;可以用来解多元一次方程组。对于多次方程组&#xff0c;你可能需要结合Eigen和一些数值优…

深入解读CSS高级选择器

CSS选择器是网页样式设计的核心组成部分&#xff0c;它们使开发者能够精准定位页面上的元素并施加相应的样式。在众多选择器中&#xff0c;高级选择器因其强大的定位能力和灵活性备受青睐。接下来&#xff0c;我们将逐一详解这些高级选择器&#xff0c;并通过实例代码加深理解。…

VMware 中将 Rocky Linux 设置为图形界面

在 VMware 中将 Rocky Linux 设置为图形界面的步骤如下&#xff1a; 安装 Rocky Linux&#xff1a;首先&#xff0c;在 VMware 中创建一个新的虚拟机&#xff0c;并按照常规步骤安装 Rocky Linux。确保在安装过程中选择安装图形界面的选项。 启动 Rocky Linux&#xff1a;完成…

C++笔试强训day7

目录 1.字符串中找出连续最长的数字串 2.岛屿数量 3.拼三角 1.字符串中找出连续最长的数字串 链接 我的思路很简洁&#xff0c;就是双指针遍历&#xff0c;然后不断更新左位置left和右位置right和长度len。 然后我写代码的时候代码思路没跟上原本思路&#xff0c;直接把所有…

HTTP网络协议,接口请求的内容类型 content-type(2024-04-27)

1、简介 Content-Type&#xff08;内容类型&#xff09;&#xff0c;一般是指网页中存在的 Content-Type&#xff0c;用于定义网络文件的类型和网页的编码&#xff0c;决定浏览器将以什么形式、什么编码读取这个文件&#xff0c;这就是经常看到一些 PHP 网页点击的结果却是下载…

OSI七层模型、TCP/IP五层模型理解(个人解读,如何理解网络模型)

OSI七层模型 七层模型&#xff0c;亦称OSI&#xff08;Open System Interconnection&#xff09;。参考模型是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模…

航片卫星影像局部几何纠偏-道路错位校正

原图道路错位如下图所示&#xff1a; 局部几何纠偏结果如下图所示&#xff1a; 操作视频教程&#xff1a; MCM智拼图软件V8.5-局部位置纠偏-几何校正-PS联动_哔哩哔哩_bilibili