区块链 | OpenSea:工作流程

目录

正文

A  创建并上架 NFT

B  授权代理

C  处理订单

总结


🥑原文:Toward Achieving Anonymous NFT Trading

正文

在本节中,我们将展示基于以太坊和 Wyvern 协议的典型 NFT 市场 OpenSea 的工作流程。

下图展示 OpenSea 中 NFT 交易的简要过程:

注意:本文没有介绍 Wyvern 协议,只是提了一句。

A  创建并上架 NFT

NFT 交易始于铸造并上架一个新的 NFT 代币。OpenSea 通过其网站提供创建新 NFT 合约的方法,但它也接受已经部署的 NFT 合约。

🥕NFT 代币 ≠ NFT 合约

Ethereum:代币合约提供了一些功能,例如将代币从一个帐户转移到另一个帐户,获取帐户的当前代币余额,获取代币的所有者,以及整个网络的可用代币总供应量。

下图是 OpenSea 网站 NFT 创建的页面:

拿自己的 Google 邮箱注册了一个 OpenSea 的账号😇

考虑到现实世界的状况,交易可能会有多种形式。NFT 可以通过固定价格出售,也可以通过拍卖出售。由于拍卖主要涉及智能合约的功能设计,因此我们的方案将只讨论价格固定的情况。

如果是拍卖出售的话,竞拍者的最高出价改变,那么 NFT 的最终价格也会跟着改变。

卖家 提交某一 NFT 的 卖出订单 并在 OpenSea 网站上列出。之后,买家 浏览 OpenSea 网站并提交相应的 买入订单

下图是 OpenSea 网站的 NFT 购买页面:

碎碎念:之前看到一篇 NFT + 慈善拍卖的论文,其中就设计了竞拍者们竞价的流程。

B  授权代理

由于某一 NFT 的上架时间通常与被购买的时间不同,因此让卖家一直等待潜在买家提交 买入订单,然后再将 NFT 转让给相应买家的做法并不实用。

个人理解:卖家在 OpenSea 网站把 NFT 上架后就可以离开了,而不需要一直等着别人来买。其中,买卖的过程涉及 NFT 所有权在买家和卖家之间的转让。

为了解决这种不便,每个 OpenSea 用户都需要在以太坊区块链上有一个一对一匹配的 代理通过调用 代理注册 (proxy registry) 合约 来实例化 代理,它能分别为买方或卖方生成交易以帮助完成自动交换。

引用:用户创建钱包时,其实就是调用 OpenSea 上的 [Proxy Registry] 里的一个 [Register Proxy] 方法。这个方法将创建并部署一个新的智能合约,也就是所谓的代理合约。

提交订单后,用户通过调用 代理 (proxy) 函数 授权 TA 的 代理 访问目标 NFT,从而委托这个 代理 处理资产交换。

个人理解:代理是一个智能合约的实例,作为中介来帮助用户买卖数字资产。不过读到论文后面看到,貌似只有卖方需要代理。事实上,代理主要做的事情就是完成 NFT 所有权的转移。然而,买方又没有 NFT 的所有权,那 TA 还要什么代理呢?

C  处理订单

买家或卖家通过 OpenSea 的前端将订单提交到 OpenSea 的 订单簿 中。这些订单包含包括订单创建者、代理注册表 (proxy registry)、目标 NFT、价格、calldata 等信息。

calldata 是一个可配置的谓词,通常由一些关于委托某些行动的段组成,并用于代理的执行。

calldata 关键字用于存储函数参数和返回值,并且是只读的,即在函数内部不能对其进行修改。在函数参数进行声明时,默认情况下是 calldata 类型。

通过可配置性,可以替换掉使用 位掩码 保护的 calldata 数组。这样做的好处是,卖家在创建订单时不需要包含买家的地址,反之亦然。

这个翻译好像有点炸裂😇

位掩码是一个整数,其中每个位代表一种标志或开关。通过使用位掩码,可以在一个整数中同时存储多个布尔值或状态。

提交的订单以 捆绑包 (bundles) 的形式上传到 交易所 (the exchange) 智能合约中。

在前端开发中,捆绑包是指将多个文件合并为单个文件,以便在浏览器中实现更高效的加载和传输。“交易所” 就是这个智能合约的名字,不用产生怀疑😇

交易所协议 负责根据价格等信息来匹配买方和卖方的订单。

如果存在匹配,那么交易所协议将完成 calldata 并调用双方的 代理 进行交换程序。之后,数字资产 —— ETH 和 NFT —— 的所有权将进行交换。

个人理解:这里的 “交易所协议” 就是前面提到的 “交易所” 智能合约。

总结

回顾 OpenSea 的工作流程图:

  1. 买家和卖家创建账户的同时,初始化并授权一个代理来帮助管理资产;
  2. 买家和卖家分别提交买入订单和卖出订单到 OpenSea 的数据库;
  3. 交易所协议会根据价格等信息来匹配买方和卖方的订单;
  4. 若存在匹配的订单,则交易所协议呼唤买方和卖方的代理来交换资产。

这里存疑,在一笔交易中是否需要使用到买方的代理?我觉得图上画的是没有关系的两个用户,而不是一笔交易中的买方和卖方。由于用户既可以当买方又可以当卖方,因此为两个用户都画了代理。

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值