🥑原文: Toward Achieving Anonymous NFT Trading
🥑吐槽: 这论文怎么老有描述不清、前后不一致的地方😇
正文
在本节中,我们将具体展示我们方案的构建。我们将基于一个示例来描述我们方案的工作流程,该示例中的 Alice 是 NFT 的所有者,而 Bob 想要购买它。交易是通过采用我们提出的方案的市场进行的。
该论文的创新点就是对 NFT 市场的交易细节进行了修改。
我们还假设所有链下的通信都是通过端到端的安全通道进行的,以抵御监听攻击。此外,市场选择了一个有限椭圆曲线域上的群 G G G,该域的阶为 q q q,两个生成元 G G G 和 H H H,以及一个抗碰撞的哈希函数 h ( ) h() h(),并将这些作为公共参数发布。
下图展示了我们方案的框架:
其中,NFT 所有权的转移是通过「Exchange Protocol,交易所协议」这一智能合约执行的,而 ETH 的支付则是通过市场控制的「Decoy Account,假账户」进行的。
本文中提到的加密货币、以太币都指的是 ETH😇
下图展示了我们方案是如何工作的:
图中名词的含义:
- server 是指市场的服务器,后文简称市场
- decoy 是指假账户
- proxy 是指代理注册合约,或称注册表
- smart contract 是指交易所协议
注意:只有卖家需要使用「代理」提供的 NFT 所有权转移服务,因为只有卖方拥有 NFT 的所有权。值得强调的是,卖家与「代理」之间不存在直接交互,而是依靠市场这一中介进行交互的。
A 代理的注册
异同之处
在我们的方案中,区块链上部署的「Proxy Registry Contract,代理注册合约」负责新「代理」的注册,它还记录了「代理」及其所有者之间的映射关系,这点与 Wyvern 协议相同。
个人理解:「代理」本质上就是一个智能合约的实例,它也是有地址的。
区别在于,在 Wyvern 协议中,用户通过与「Registry,注册表」的直接交互来注册「代理」。而在我们的方案中,用户借助市场和「注册表」的交互来注册「代理」。
代理注册合约和注册表应该就是同一个东西😇
注意:每个 OpenSea 的用户都会注册一个「代理」,因为每个用户都有可能成为卖家。只是在一笔交易中,只有卖家会使用到「代理」的 NFT 所有权转移服务罢了。
具体流程
接下来,我们将具体介绍注册一个「代理」的流程。
首先,每个用户通过以太坊的密钥生成算法生成一个新的密钥对 ( p k t , s k t ) (pk_t,sk_t) (pkt,skt),称为 临时密钥。 s k t sk_t skt 是需要保密的私钥,而公钥 p k t pk_t pkt 用于生成临时地址 a d d r t addr_t addrt。到时候,市场将使用临时地址为用户创建一个新的「代理」。注意:临时密钥的格式与区块链密钥对的相同。但是,用户只应该在 NFT 交易中使用它,而不应该用于其他场合。
公钥 p k t pk_t pkt 用于生成临时地址 a d d r t addr_t addrt?
假设 U U U 代表所有的区块链用户, T T T 代表所有的临时地址 a d d r t addr_t addrt,那么市场记录了用户和临时地址之间的映射关系 U T ⊆ U × T UT ⊆ U × T UT⊆U×T。关系 U T UT