区块链 | OpenSea 相关论文:Toward Achieving Anonymous NFT Trading(三)

news2025/7/13 21:41:32

🥑原文: Toward Achieving Anonymous NFT Trading



VII 讨论:关于匿名性与市场平台的困境

在本文的这一部分,我们将讨论关于隐藏 NFT 所有者地址的困境,以及为什么像 OpenSea 这样的 NFT 市场平台几乎必须得到完全的信任。

原文说的是隐藏 NFT 所有者身份,但我觉得身份本质上就是地址嘛,所有后文全部改为了地址。

目前,由于智能合约的便利性,大量的 NFT 是在以太坊上铸造和交易的。其中,每个「NFT 交易」都被绑定到了一个「an issuer address,所有者地址」上,以便「矿工」可以验证每个「NFT 交易」的签名。由此可见,任何人都可以轻易地获取到给定 NFT 的所有者地址。

一个以太坊地址的生成过程如下:

  1. 生成 256 位随机数作为私钥;
  2. 将私钥转化为 secp256k1 非压缩格式的公钥,即 512 位的公钥;
  3. 使用散列算法 Keccak256 计算公钥的哈希值,转化为十六进制字符串;
  4. 取十六进制字符串的后 40 个字母,开头加上 0x 作为地址。

其他保护隐私的区块链,如「Monero,门罗币」,可能使用像 RingCT 这样的加密技术来隐藏交易发送者和接收者的地址,但缺乏对智能合约的支持,使得在上面铸造和交易 NFT 变得困难。因此,所有者的隐私保护与 NFT 交易的可行性之间产生矛盾。

那是不是给它写个智能合约就行了?

为了同时保护所有者隐私和实现 NFT 交易,必须做出妥协。

我们通过让市场充当信息交换的中介来解决这个问题。交易链路如下:

用户 A → 交易所合约 → 用户 B 用户 A → 交易所合约 → 用户 B 用户A交易所合约用户B

市场通过创建一个「临时地址」来模糊处理这条链路,并且通过引入「假账户」使得从 Alice 到 Bob 的 ETH 流动变得间接。相应地,做出这种妥协的代价是市场知道所有用户的「临时地址」。同时,ETH 转账操作不是由「交易所合约」执行的,而是由市场中的「假账户」来实现的。

由于这一段出现了额外的名词而我又懒得解释了,因此我直接把原文改了😇
注意:「临时地址」是为了模糊 NFT 所有权转移的过程,「假账户」是为了模糊 ETH 转账的过程。

因此,我们的方案需要一个几乎完全可信的市场。

但考虑到现实世界的状况,这个假设是合理的:尽管从理论上讲,市场可能会挪用从 Bob 到 Alice 的 ETH,但这将严重影响到市场的信誉,并导致其市场份额下降。

介于信誉,市场不会私吞交易中的以太币。

此外,区块链上的所有交易都是可追溯的。受害者可以使用这些记录作为仲裁的证据。这意味着,尽管非法行为是可行的,但市场并不愿意这样做,因为证据无法被抹去。

进一步的分析将只讨论一个特殊的情况,即市场没有留下犯罪证据。

虽然但是,区块链上貌似只有 NFT 所有权的转移记录。



VIII 评估

A 安全性分析

我们的方案有三个主要的安全要求:

  1. 匿名所有权:除了市场之外,没有人能够得知任何 NFT 所有者的真实地址;
  2. 资产安全性:对于任何非 NFT 所有者来说,转移 NFT 的所有权是不可能的;
  3. 订单防伪造:市场不能伪造或操纵订单,不能以低价或免费购买任何列出的 NFT 。

以下是从不同攻击角度进行的分析。



1)从 NFT 合约中获取所有者信息

这种攻击可以由区块链中的敌手发起。

直观地说,获取「NFT 所有者地址」的最直接方式是调查「NFT 合约」。由于「NFT 合约」中存储了每个代币及其所有者地址的列表,并且区块链保留了所有 NFT 交易的历史,因此攻击者可以在 NFT 铸造后查询历代所有者的地址。

尽管在我们的方案中「NFT 所有者地址」被编码为一个承诺:

C B o b = G ⋅ a d d r 2 + H ⋅ r 2 C_{Bob} = G \cdot addr_2 + H \cdot r_2 CBob=Gaddr2+Hr2

但承诺值 C B o b C_{Bob} CBob 中仍然包含了 Bob 的区块链地址信息 a d d r 2 addr_2 addr2

回顾:本文中 NFT 合约存储的都是「关于所有者地址的承诺」,且采用的是 Pedersen 承诺方案。

从这个角度来看,直接从 C B o b C_{Bob} CBob 中获取 a d d r 2 addr_2 addr2 是一种方法。然而,承诺的「计算隐藏」属性保证了,即使是「概率性多项式时间」攻击者也无法提取承诺中的信息,这得益于其内部构造所依赖的解决「离散对数问题」的困难性。因此,「匿名所有权」得到了保护。



2)查找代理所有者

以太坊的一个显著特性是默认公开,意味着每笔交易都是明文形式的,并且可以在以太坊上查看。

在「NFT 所有权转移」的过程中,卖方的「代理」参与其中,并与特定的 NFT 交易绑定。此外,每个「代理」只被分配给一个唯一的用户。

基于上述分析和前文分析,敌手可能放弃从「承诺」中获取所有者地址,改为通过「代理」来获取「代理所有者」,而「代理所有者」正是某个 NFT 的当前或前任所有者。

简而言之,由于卖方的「代理」需要执行「NFT 所有权转移」这一交易,因此「代理」的地址会被暴露,敌手可能通过「代理」来寻找它背后的所有者。

然而,「代理」只与所有者生成的「临时密钥」相关联,并且「临时密钥」与所有者地址之间没有代数关系。此外,在我们的方案中,「代理」与其所有者之间没有直接交互。授权命令也是通过安全的链下通道发送给市场,然后由市场转发给「代理」的。因此在区块链的记录中,总是市场与「代理」进行交互。因此,攻击者无法找到所有者与「代理」之间的任何关系。因此,「匿名所有权」得到了保护。

一是,「代理」是和「临时密钥」绑定的;二是,「代理」和它的所有者之间没有直接交互。



3)调查以太币流动

这是基于旁信息的敌手攻击之一。

对于支付,ETH 流动从买家开始,流向市场,然后流到卖家,这可能暴露了他们参与 NFT 交易的事实。此外,通过调查被转移的 ETH 金额和最近出售的 NFT,可以确定被交易的 NFT 的价格。这对于高价值的 NFT 尤其有效。

个人感觉:敌手首先对某一 NFT 和若干 ETH 交易进行匹配,基于 NFT 的售价和 ETH 转账交易的额度。只要匹配成功,敌手就能找到参与 ETH 转账交易的买家和卖家,从而获取到他们的地址。

然而「假账户」机制使得追踪买家和卖家之间的联系变得困难。

在支付过程中,Bob 首先向「假账户 A」支付。NFT 所有权转移后,市场平台使用「假账户 B」以相同的金额支付给 Alice 。因此,无法观察到从 Bob 到 Alice 的直接 ETH 流动。

使用「假账户」有两个优势:

  • 一是,市场控制着一大批「假账户」,并且新「假账户」的生成可以很容易地在链下完成。
  • 二是,买家和卖家所使用的「假账户」不同,并且这两个「假账户」之间也没有直接的联系。

又由于所有的「假账户」都由市场控制,因此这个庞大的「假账户」网络可以很容易地实现复杂的 ETH 转移。从攻击者的角度来看,这些交易看起来与其他区块链用户之间的正常交易没有区别。因此,攻击者无法找到 NFT 买家和卖家之间明显的联系。因此,「匿名所有权」得到了保护。



4)恶意更改 NFT 的所有权

敌手的另一种攻击视角是更改他人的 NFT 所有权。

一种方法是攻击以太坊本身并创建一个恶意的区块,这也被称为「50% 攻击」。由于这需要巨大的计算能力,因此在区块链研究中通常被认为是不可能的。

另一种方法是伪造 NFT 的所有权证明,从而使冒充 NFT 所有者并出售 NFT 成为可能。在这种情况下,问题转变为没有打开知识的情况下生成给定承诺的有效证明。

引入的证明方案是 Schnorr 协议的一个常见扩展。

因此,我们提供一个简短的证明思路:设 A 为一个敌手,它说服诚实的验证者在两个挑战 c 1 ,   c 2 c_1,\ c_2 c1, c2 进行回滚。相应的两个证明是 ( x 1 , y 1 ) (x_1, y_1) (x1,y1) ( x 2 , y 2 ) (x_2, y_2) (x2,y2)。然后

a d d r = x 2 − x 1 c 2 − c 1 ,   r = y 2 − y 1 c 2 − c 1 addr = \frac{x_2−x_1}{c_2−c_1},\ r = \frac{y_2−y_1}{c_2−c_1} addr=c2c1x2x1, r=c2c1y2y1

还是看不懂啊,这篇论文根本没有细写承诺方案😇

这与 A 不知道承诺的打开事实相矛盾。因此,生成有效证明的唯一方式是知道所有者的地址和非随机数。因此,攻击者在伪造方面没有优势。

由此「资产安全性」得到了实现。



5)对抗市场平台的安全性

如前所述,在我们的方案中,市场几乎是被完全信任的。「几乎」这个词意味着市场不会泄露 NFT 所有者的地址。但是,当出现一个价格异常高昂的 NFT 时,市场可能会腐败,并希望通过与「交易所协议」的交互来获得这个 NFT 。

前面已经讨论了伪造「承诺证明」的不可行性。虽然市场知道 a d d r addr addr,但由于市场没有对 r r r 的知识,因此市场也是无法生成有效证明的。

然而,市场的另一个优势是能够访问「交易所协议」。如果市场操纵一个卖家提交的「出售订单」到极低的售价,那么市场自己可以创建一个「购买订单」并合法地购买目标 NFT 。

但这也是不可行的,因为每个订单都附有一个由「临时密钥」生成的 ECDSA 签名,从而为「交易所协议」提供身份验证。为了成功地模仿一个「出售订单」,市场必须在不了解相应「临时密钥」的情况下产生一个有效签名。

个人感觉:市场是新建一个「出售订单」并试图对它进行签名,而非直接修改原「出售订单」的售价。

然而,根据 ECDSA 的安全性,市场成功的概率是微乎其微的。这保证了市场不能以一个极低的价格出售高价值的 NFT,并声称它得到了 NFT 卖家的认证。因此,用户在使用市场时不必担心自己的损失。

由此「订单防伪造」得到了实现。



B 性能分析

在「EVM,以太坊虚拟机」中,智能合约的执行可以分为几个基本操作。这些操作由验证者执行,需要计算资源「Gas」。除了代币的价格之外,「交易发起者」还需要向矿工支付相应的「Gas」成本。涉及到的操作或智能合约空间越复杂,交易费用就越高。因此,交易费用是调查区块链应用性能的一个重要因素。

如下图所示,这是我在 OpenSea 网站发起的一次购买操作。里面就提示了,我不仅需要支付购买 NFT 所有权的钱,还要支付相应的 Gas 费用:

在这里插入图片描述
官网:Gas 费用用于补偿被称为「节点运营商」或「网络验证者」的实体,这些实体的作用是验证区块链上的交易。OpenSea 所支持的每个区块链都有不同的 Gas 费用,这些费用根据每个区块链验证交易的方式而有所不同,其中两种主要的验证方法是:权益证明和工作量证明。

另一方面,智能合约的运行时间由以太坊的区块时间决定,这被认为是固定的。对于我们高度依赖的合约方案,与时间成本相关的瓶颈取决于区块链本身的扩展性。提高区块链的扩展性是一个关键问题。然而,区块链的扩展性取决于 NFT 系统所使用的底层区块链,比如以太坊。我们假设使用 OpenSea 所采用的以太坊。因此,这超出了我们的研究范围,我们不会对时间成本进行评估。

虽然看不懂,但应该说的就是没有时间成本这一实验指标。

由于我们的方案是在 OpenSea 所使用的 NFT 交易所系统上的改进,因此现有部分的功能不会受到我们工作的影响。此外,我们只估计了修改部分的额外「Gas」成本。我们方案增加的「Gas」成本越小,它被接受的程度就越高。

实验指标只有 Gas 成本,且只测试了原文方案中新增的功能。

我们在 Rinkeby 测试网上模拟了一个完整的 NFT-to-Ether 匹配交易来估算「Gas」成本。

由于我们方案中应用了椭圆曲线密码学,因此我们在合约中引入了 Elliptic-curve-solidity 库以实现高效的椭圆曲线计算。采用的椭圆曲线是 secp256k1 y 2 = x 3 + 7 y^2 = x^3 + 7 y2=x3+7)。

从下表中可以看出,对于每次 NFT 交易,最消耗「Gas」的操作是「验证证明」:

在这里插入图片描述

「Gas」成本以 ETH 和美元为单位展示。请注意,ETH 价格是在 2022 年 11 月 20 日获得的。

注意「验证证明」操作只会占用智能合约的计算能力,而没有利用任何的存储空间。这通常被认为是智能合约中最昂贵的操作。因此,将证明的验证分配给智能合约只增加了很少的额外成本。

什么意思?因为只涉及时间消耗不涉及内存消耗吗?

此外,「Gas」成本之和表明,一个成功的 NFT 交易的「Gas」成本仅增加了 0.00078 ETH 或 0.94 美元。作为比较,我们引入了一个名为 Otherdeed 的 NFT 集合的交易。对于单个代币的销售,交易费用为 0.0044 ETH 或 5.32 美元。因此,为了隐私而产生的额外费用对于当今的区块链用户来说是完全可以接受的。

原文为了实现隐私保护而增加了一些额外的功能,这些功能所产生的「Gas」成本,对于一个 NFT 交易固有的「Gas」成本来说,是可以接受的。

尽管在 RW 一节中比较了各种相关方案,但这些方案没有一个实现了与我们相同的根本隐私属性,即匿名所有权。因此,与它们的「Gas」成本进行比较是没有意义的。只要我们的方案在 OpenSea 的 NFT 交易所系统中取得可接受的结果,它就被证明是合适的。

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

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

相关文章

Redis中的Lua脚本(六)

Lua脚本 清空repl_scriptcache_dict字典 每当主服务器添加一个新的从服务器时,主服务器都会清空自己的repl_scriptcache_dict字典,这是因为随着新从服务器的出现,repl_scriptcache_字典里面记录的脚本已经不再被所有从服务器载入过&#xf…

mongodb 安装问题

1. mongodb启动时显示 Illegal instruction (core dumped) mongodb 5.0之后(包括5.0) 开始使用需要使用 AVX 指令集 2.启动时报错 ERROR: child process failed, exited with 1 通过指令 bin/mongod --repair 或 ./bin/mongod -f configs/mongodb.conf --repair查看报错信息…

电力系统IEC-104报文主要常用详解

文章目录 1️⃣ IEC-1041.1 前言1.2 报文分类1.3 U帧报文1.3.1 常见报文1.3.1 报文解析 1.4 S帧报文1.4.1 说明1.4.2 报文解析 1.5 I帧报文1.5.1 报文解析 1.6 控制域I帧报文S帧报文U帧报文介绍 1.7 ASDU1.7.1 常见类型标识1.7.2 常见结构限定词1.7.3 常见传送原因1.7.4 信息体…

主食冻干哪个国家的好?全网热销款品控好的主食冻干必买

主食冻干哪个国家的好?谈及主食冻干哪款好,进口的主食冻干总是能被提名。不论是在哪个电商平台搜索“主食冻干”,都会发现那些备受推崇是进口主食冻干。从销售数据上看,这些进口冻干在大型促销活动如双11、618中的销量一直居高不下…

ctfshow菜狗杯 web 无算力以及easyPytHon_P

web签到题 error_reporting(0); highlight_file(__FILE__);eval($_REQUEST[$_GET[$_POST[$_COOKIE[CTFshow-QQ群:]]]][6][0][7][5][8][0][9][4][4]);套娃传参 中文要编码 Cookies :CTFshow-QQ%E7%BE%A4:a POST:ab GET:?bc&c[6][0][7][5][8][0][9][4][4]syste…

eNSP学习——静态路由及默认路由基本配置

目录 知识背景 实验目的 实验步骤 实验内容 实验拓扑 实验编址 实验前期准备 实验步骤 1、基本配置(按照实验编址设置好对应的IP地址) 2、是实现主机之间的通信 3、实现全网全通来增强网络的可靠性 4、使用默认路由实现简单的网络优化 需要各…

ROS摄像机标定

文章目录 一、环境准备二、摄像头标定2.1 为什么要标定2.2 标定前准备2.2.1 标定板2.2.2 摄像头调焦 2.3 开始标定2.4 测试标定结果 总结参考资料 一、环境准备 安装usb_cam相机驱动 sudo apt-get install ros-noetic-usb-cam 安装标定功能包 sudo apt-get install ros-noet…

ERP系统直击模切企业痛点,提升企业供应链效率

随着全球化经济的不断发展,供应链管理越来越成为企业经营的核心竞争力之一。因此,越来越多的企业正在积极寻找转型升级之路,对于生产制造模切企业来说,ERP系统尤其关键。 尽管ERP系统解决了企业资源计划的问题,但在模…

【论文速读】|大语言模型(LLM)智能体可以自主利用1-day漏洞

本次分享论文: LLM Agents can Autonomously Exploit One-day Vulnerabilities 基本信息 原文作者:Richard Fang, Rohan Bindu, Akul Gupta, Daniel Kang 作者单位:无详细信息提供 关键词:大语言模型, 网络安全, 1-day漏洞, …

粤嵌—2024/4/24—删除有序数组中的重复项 ||

代码实现&#xff1a; 方法一&#xff1a;双指针 int removeDuplicates(int *nums, int numsSize) {int l 0, r 0;while (r < numsSize) {if (r > 1 && nums[r] nums[l - 1] && nums[r] nums[l - 2]) {r;} else {nums[l] nums[r];l;r;}}return l; }…

【面试题】java后端开发实习(含答案)

java后端开发实习生-常见面试题 1&#xff09;JDK,JRE,JVM的关系 JDK JRE java开发工具JRE JVM java核心类库 2&#xff09;String类的常用方法 1.关于字符串获取方面 length 获取长度charAt 获取指定索引的字符indexOf 获取字符所在的索引位置lastIndexOf 获取字符所在…

电脑自带dll修复在哪里打开?教你如何快速修复dll丢失问题

MSVCP140.dll文件作为Windows操作系统中不可或缺的一环&#xff0c;对众多基于C编译的应用程序的正常运行起着关键作用。在我深入研究和处理与该文件相关问题的过程中&#xff0c;积累了丰富的认知和实践经验。以下是我对MSVCP140.dll文件的总体介绍以及针对其丢失问题的解决方…

数据结构 - 链表详解(二)—— 带头双向循环链表

链表的介绍 链表的结构一共有八种&#xff1a;带头单向循环链表、带头单向非循环链表、带头双向循环链表、带头双向非循环链表、无头单向循环链表、无头单向非循环链表、无头双向循环链表、无头双向非循环链表。 今天我们来详解带头双向循环链表 带头双向循环链表是一种数据结…

融合公式调权思考

一般在多目标任务任务中有加法公式、乘法公式、混合加法、非线性公式等&#xff0c;通过业务特性和应用场景选择不同方式&#xff0c;线上调参也有很多方案&#xff0c;自动寻参&#xff08;成本较高&#xff0c;比如进化算法、网格搜索、随机搜索、贝叶斯优化、自动调参工具如…

南宁建筑模板供应商:贵港市能强优品木业有限公司

贵港市能强优品木业有限公司&#xff0c;作为南宁地区知名的建筑模板生产厂家&#xff0c;拥有25年的丰富生产经验。该公司生产的建筑覆膜板以其稳定的质量和高周转次数而闻名&#xff0c;多年来参与了国内各地区众多大型建筑项目&#xff0c;并获得广大客户的一致好评。 质量稳…

【前端】vue数组去重的3种方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、数组去重说明二、Vue数组去重的3种方法 前言 随着开发语言及人工智能工具的普及&#xff0c;使得越来越多的人会主动学习使用一些开发工具&#xff0c;本文…

昆明航空x-s3-s4e算法分析

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 这里只是我分析的分析过程,以及一些重要点的记录…

比亚迪海洋网再添实力爆款,海豹06DM-i、OCEAN-M、海狮07EV登陆北京车展

4月25日&#xff0c;比亚迪海洋网携海豹06DM-i、OCEAN-M、海狮07EV一齐亮相北京车展&#xff0c;引发关注热潮。其中&#xff0c;海洋网全新中型轿车海豹06DM-i价格区间12万-15万元&#xff0c;将于今年二季度上市&#xff1b;行业首款两厢后驱纯电钢炮OCEAN-M价格区间15万-20万…

【从浅学到熟知Linux】基础IO第四弹=>动静态库(含第三方动静态的使用、自制动静态库、关于动静态库加载调用原理)

&#x1f3e0;关于专栏&#xff1a;Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 静态库静态库的介绍及使用方法自制静态库使用第三方提供的静态库 动态库动态库的介绍及使用方法自制动态库…

react之初识state

第二章 - 添加交互 State: 组件的记忆 组件通常需要根据交互更改屏幕上显示的内容。输入表单应该更新输入字段&#xff0c;单击轮播图上的“下一个”应该更改显示的图片&#xff0c;单击“购买”应该将商品放入购物车。组件需要“记住”某些东西&#xff1a;当前输入值、当前…