区块链 | 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.mfbz.cn/a/579816.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

交通气象站监测站

TH-GQX8交通运输在人们的日常生活中扮演着越来越重要的角色。然而,气候变化、环境污染等因素对交通安全产生了极大的影响。为了应对这些挑战,交通气象站监测站应运而生,成为守护交通安全的重要利器。 一、交通气象站监测站的功能 交通气象站…

路透社:美国SEC将拒绝以太坊ETF

4月25日,据路透社报道,美国SEC在下个月将拒绝以太坊现货ETF申请。根据4位知情人士表示,在最近几周与美国证券交易委员会(SEC)进行了会议之后,美国发行商和其他公司预计SEC将拒绝他们推出与以太坊价格挂钩的…

OpenMesh 网格高斯曲率计算(二)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 Mesh曲率特征通常指的是在三维几何网格(Mesh)上计算的曲率相关的一系列特征,包括主曲率、高斯曲率、平均曲率等。这些曲率特征提供了对Mesh表面形状的详细描述,对于表面形状分析、形状比较和几何建模等领域非常…

《C++的类型转换》

目录 一、c语言中的类型转换 1、隐式类型转化: 2、强制类型转化: 3、缺点 二、c新的类型转换 1、内置类型转为自定义类型 3、自定义类型转换为内置类型 三、C的规范的强制类型转换 1、C新增四种规范的类型转换的原因 2、static_cast 3、reint…

头歌实践教学平台:CG5-v1.0-简单光照效果

第2关:OpenGL球体镜面反射 一.任务描述 根据提示,在右侧修改代码,并自己绘制出图形。平台会对你编写的代码进行测试。 1.本关任务 为在场景中增加光照,需要执行以下步骤。 (1).设置一个或多个光源,设定它的有关属性…

信息系统项目管理师0074:数据集成(5信息系统工程—5.3系统集成—5.3.3数据集成)

点击查看专栏目录 文章目录 5.3.3数据集成1.数据集成层次2.异构数据集成5.3.3数据集成 数据集成的目的是运用一定的技术手段将系统中的数据按一定的规则组织成为一个整体,使得用户能有效地对数据进行操作。数据集成处理的主要对象是系统中各种异构数据库中的数据。数据仓库技术…

eclipse导入工程提示Project has no explicit encoding set

eclipse导入工程提示Project has no explicit encoding set 文章目录 eclipse导入工程提示Project has no explicit encoding set一、Eclipse的工程导入二、可能的问题1.在工程名下有黄色叹号 一、Eclipse的工程导入 用Eclipse的导入可以将原有工程导入到新环境中 具体方法是&…

1. 房屋租赁管理系统(基于springboot/vue的Java项目)

1.此系统的受众 1.1 在校学习的学生,可用于日常学习使用或是毕业设计使用 1.2 毕业一到两年的开发人员,用于锻炼自己的独立功能模块设计能力,增强代码编写能力。 1.3 亦可以部署为商化项目使用。 2. 技术栈 jdk8springbootvue2mysq5.7&8…

区块链与Web3.0:区块链项目的推广

数字信息时代,一场革命正在酝酿中,那就是区块链与Web3.0的结合。这种结合将会改变我们对于信息传输、存储和使用的方式,并有可能推动媒体行业向新的高度发展。这种转变不仅关系到我们如何获取和使用信息,也涉及到如何用创新的方式…

四、OSPF域间路由

注:区域(area)是以接口进行划分的 描述: R1的g0/0/1接口属于area 0 √ R1属于区域0和区域1 1.设计原则 1、OSPF区域的设计原则: 骨干区域有且只能存在一个 非骨干区域必须和骨干区域相连 多区域时&#…

VulnHub靶机 DC-9 靶机 详细渗透过程

VulnHub靶机 DC-9 打靶实战 详细渗透过程 目录 VulnHub靶机 DC-9 打靶实战 详细渗透过程一、将靶机配置导入到虚拟机当中二、渗透测试主机发现端口扫描Web渗透SQL注入登入后台文件包含SSH爆破提权 一、将靶机配置导入到虚拟机当中 靶机地址: https://www.vulnhub.…

【MHA】MySQL高可用MHA介绍1-功能,架构,优势,案例

目录 一 MHA 介绍 1 MHA功能 自动化主服务器监控和故障转移 交互式(手动启动的)主故障转移 非交互式主故障转移 在线切换主机 2 主服务器故障转移的难点 二 MHA架构 1 MHA组件 2 自定义扩展(脚本) 三 MHA优势 1 MHA可以…

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 锂电池SOH预测完整代码锂电池SOH预测 锂电池的SOH(状态健康度)预测是一项重要的任务,它可以帮助确定电池的健康状况和剩余寿命,从而优化电池的使用和维护策略。 SOH预测可以通过多种方法实现,其中一些常用的方法包括: 容量衰减法:通过监测电池的容量衰减…

jupyter notebook设置代码自动补全

jupyter notebook设置代码自动补全 Anaconda Prompt窗口执行 pip install jupyter_contrib_nbextensionsjupyter contrib nbextensions install --userpip install jupyter_nbextensions_configuratorjupyter nbextensions_configurator enable --user按如下图片设置 卸载jed…

HarmonyOS Next从入门到精通实战精品课

第一阶段:HarmonyOS Next星河版从入门到精通该阶段由HarmonyOS Next星河版本出发,介绍HarmonyOS Next版本应用开发基础概念,辅助学员快速上手新版本开发范式,共计42课时 第一天鸿蒙NEXT Mac版、Windows版【编辑器】和【模拟器】&a…

长度最小的子数组 ---- 滑动窗口

题目链接 题目: 分析: 解法一:暴力解法, 找到所有连续子数组, 保留满足条件的解法二: 利用滑动窗口 找子数组 因为数组中都是正整数, 通过进窗口的操作, 我们找到一组, 如示例一中的2,3,1,2, 判断满足和>7, 那么根据单调性, 我们就不再需要判断加上后面两个数的两个子数组…

记录浏览器打开网站拦截提示不安全解决方法

浏览器可能会因为多种原因显示“不安全”的警告,这通常是由于安全设置不当或配置错误造成的。以下是一些常见的原因和解决方法: 1. HTTPS未启用 原因:如果网站使用HTTP而不是HTTPS,浏览器可能会显示不安全的警告。 解决方法:配置SSL/TLS证书并使用HTTPS来加密数据传输…

鹏哥C语言复习——字符函数与字符串函数

目录 一.字符函数 1.字符分类函数 2.字符转换函数 二.基础字符串函数 1.strlen函数 2.strcpy函数 3.strcat函数 4.strcmp函数 三.基础字符串函数优化 1.strncpy函数 2.strncat函数 3.strncmp函数 四.进阶字符串函数 1.strstr函数 2.strtok函数 3.strerror函数 一…

做大模型产品,如何设计prompt?

做GenAI产品,除了要设计好的AI任务流程,合理的拆分业务以外,最重要的就是写好prompt,管理好prompt,持续迭代prompt。 prompt一般有两种形式:结构化prompt和对话式prompt。 结构化prompt的优点是通过规范的…

vim的IDE进阶之路

一 ctags 1 安装 安装ctags比较简单,我用的是vim-plug,网络上随便一搜应该就有很多教程,而且没有什么坑 2 使用 vim之函数跳转功能_nvim函数跳转-CSDN博客https://blog.csdn.net/ballack_linux/article/details/71036072不过针对cuda程序…
最新文章