区块链 | NFT 相关论文:Preventing Content Cloning in NFT Collections(一)

🐶原文: Preventing Content Cloning in NFT Collections

🐶写在前面: 这是一篇 2023 年的 CCF-C 类,本博客只记录其中提出的方法。



A Robust NFT Collection Functionality

我们将在本节中提出一个定义。在假设有恶意收藏家/发行商 c o l l e c t o r / i s s u e r \mathsf{collector/issuer} collector/issuer 的情况下,NFT 集合 c o l l e c t i o n \mathsf{collection} collection 应该实现的 F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 功能。该功能的主要目标是,使得每个 NFT 在集合 c o l l e c t i o n \mathsf{collection} collection 中都是独一无二的。

个人认为:在本文中,NFT 集合应该就是指的 NFT 代币合约。通常情况下,一个 NFT 代币合约只会负责管理一个 NFT 集合,因此本文直接说的 NFT 集合吧😇

一个收藏品 c \mathsf{c} c 由一个数字艺术品 c . a r t w o r k \mathsf{c.artwork} c.artwork 和一些相关的元数据 c . m e t a \mathsf{c.meta} c.meta 组成。元数据 c . m e t a \mathsf{c.meta} c.meta 提供关于收藏品的额外信息,比如:艺术作品的创作时间、艺术作品的特有属性。

一个 NFT t \mathsf{t} t 代表一个收藏品 c \mathsf{c} c,NFT t \mathsf{t} t 包含:

  • 一个唯一的标识符 t . i d \mathsf{t.id} t.id,通常是由一个计数器生成的;
  • 关于所有者 t . o w n e r \mathsf{t.owner} t.owner 的信息;
  • 数据 t . d a t a \mathsf{t.data} t.data,包含: c \mathsf{c} c 本身或者指向链下 c \mathsf{c} c 的指针;

在已部署的 NFT 集合 c o l l e c t i o n \mathsf{collection} collection 中,由于通常不便在链上存储 c \mathsf{c} c,因此链下存储是迄今为止最常用的解决方案。同时,链下存储常常采用基于内容的寻址(例如,IPFS)。

说明:如果采用的是链上存储,那么 t . d a t a \mathsf{t.data} t.data 包含的是 c \mathsf{c} c 本身;如果采用的是链下存储,那么 t . d a t a \mathsf{t.data} t.data 包含的是指向链下 c \mathsf{c} c 的指针。

通常,集合 c o l l e c t i o n \mathsf{collection} collection 的创作者 c r e a t o r \mathsf{creator} creator 会授权一系列的发行商 I 1 , . . . , I m \mathsf{I_1, ..., I_m} I1,...,Im 来发行集合中的 T \mathsf{T} T 代币。

有一篇论文说,由于一些创作者 c r e a t o r \mathsf{creator} creator 的技术水平有限,因此需要委托别人来帮助自己发行代币。当然,创作者 c r e a t o r \mathsf{creator} creator 也可以自己发行代币。

为了简化问题,我们考虑一个创作者 c r e a t o r \mathsf{creator} creator 只能生成一个集合,并且 TA 也是该集合唯一的发行商 I \mathsf{I} I 的情况。在这种情况下,一个集合可以仅由一个创作者/发行商 I \mathsf{I} I 标识。

个人理解:作者认为键值对 ( I , T ) \mathsf{(I, T)} (I,T) 是一个 NFT 集合的唯一标识,因此我们把 ( I , T ) \mathsf{(I, T)} (I,T) 理解为一个 NFT 集合即可。其中, I \mathsf{I} I 是创建该 NFT 集合的发行者, T \mathsf{T} T 是代币 t \mathsf{t} t 的集合。




功能 F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 用于管理集合 ( I , T ) \mathsf{(I, T)} (I,T),以下是其中的方法:

  • create():当 I \mathsf{I} I 输入 ( c r e a t e , I ) \mathsf{(create, I)} (create,I) 时,如果集合 ( I , T ) \mathsf{(I, T)} (I,T) 已经存在,则 F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 停止。否则, F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 初始化一个空的 NFT 集合 T = { } \mathsf{T = \{\}} T={},并存储为 ( I , T ) \mathsf{(I, T)} (I,T)
  • mint():当 I \mathsf{I} I 输入 ( m i n t , c , O ) \mathsf{(mint, c, O)} (mint,c,O) 时,如果集合 ( I , T ) \mathsf{(I, T)} (I,T) 不存在或者 c \mathsf{c} c 已经存在于 T \mathsf{T} T 中的某一 t . d a t a \mathsf{t.data} t.data 中,则 F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 停止。否则, F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 更新 ( I , T ) \mathsf{(I, T)} (I,T) 的条目,即在 T \mathsf{T} T 中添加一个新的代币 t \mathsf{t} t,使得 t . i d \mathsf{t.id} t.id T \mathsf{T} T 中所有代币的 i d \mathsf{id} id 都不同,并设置 t . d a t a = c \mathsf{t.data = c} t.data=c t . o w n e r = O \mathsf{t.owner = O} t.owner=O
  • transfer():当某一实体 P \mathsf{P} P 输入 ( t r a n s f e r , i d , I , O ) \mathsf{(transfer, id, I, O)} (transfer,id,I,O) 时,如果集合 ( I , T ) \mathsf{(I, T)} (I,T) 不存在或者 P \mathsf{P} P 不是 ( I , T ) \mathsf{(I, T)} (I,T) 中代币 t \mathsf{t} t 的所有者,即 t . i d ≠ i d \mathsf{t.id \ne id} t.id=id,则 F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 停止。否则, F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 更新 t . o w n e r = O \mathsf{t.owner = O} t.owner=O

个人理解:感觉输入中的 c r e a t e \mathsf{create} create m i n t \mathsf{mint} mint t r a n s f e r \mathsf{transfer} transfer 只是为了指明自己要调用的方法。

任何一个实体 I \mathsf{I} I 都可以通过调用 create 方法来初始化自己的 NFT 集合。 I \mathsf{I} I 可以调用 mint 方法来发行一个与收藏品 c \mathsf{c} c 关联的新代币。如果 c \mathsf{c} c 已经与集合中的另一个代币相关联,则铸币过程会中止。只有集合中代币的所有者才能调用 transfer 方法将所有权转让给另一方。

通过审查机制,功能 F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 强制实现以下属性:

  • P 1 \mathbf{P1} P1 只有发行者 i s s u e r \mathsf{issuer} issuer 能够在自己的集合中成功创建新的 NFT;
  • P 2 \mathbf{P2} P2 只有代币的所有者 o w n e r \mathsf{owner} owner 才能成功地转让它;
  • P 3 \mathbf{P3} P3 代币关联的收藏品 c \mathsf{c} c 在代币集合中都是独一无二的。

我们定义了 F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT,其主要目标是避免集合中的克隆,我们故意没有考虑诸如代币销毁、修改等的相关细节。在以下章节中,我们分析了当前 NFT 的标准,并讨论了它们是如何在实现 F C o l l N F T \mathsf{F_{CollNFT}} FCollNFT 方面失败的。



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

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

相关文章

06-beanFactoryPostProcessor的执行

文章目录 invokeBeanFactoryPostProcessors(beanFactory)invokeBeanFactoryPostProcessors(beanFactory, getBeanFactoryPostProcessors())invokeBeanDefinitionRegistryPostProcessors(currentRegistryProcessors, registry);invokeBeanFactoryPostProcessors(regularPostProc…

将ESP工作为AP路由模式并当成服务器

将ESP8266模块通过usb转串口接入电脑 ATCWMODE3 //1.配置成双模ATCIPMUX1 //2.使能多链接ATCIPSERVER1 //3.建立TCPServerATCIPSEND0,4 //4.发送4个字节在链接0通道上 >ATCIPCLOSE0 //5.断开连接通过wifi找到安信可的wifi信号并连接 连接后查看自己的ip地址变为192.168.4.…

Java中next()与nextLine()的区别[不废话,直接讲例子]

在使用牛客进行刷题时,我们很多时候会遇到这样的情况: 区别很简单,如果你要输入用空格或者回车分开的数据如: abc_def_ghi 这三组数据( _ 是空格) 用hasNext: 执行结果: 如果只用换行符号进行…

6层板学习笔记1

说明:笔记基于6层全志H3消费电子0.65MM间距BGA 目的:掌握各类接口的布局思路和布线,掌握DDR高速存储设计 1、网表的导入是原理图的元件电气连接关系,位号,封装,名称等参数信息的总和 2、原理图文件包含(历史版本记录,功能总框图,电源树,GPIO分配,DDR功能,CPU,US…

Mysql:Before start of result set

解决方法:使用resultSet.getString()之前一定要调用resultSet.next() ResultSet resultSet statement1.executeQuery();while (resultSet.next()){String username1 resultSet.getString("username");int id1 resultSet.getInt…

pytorch基础: torch.unbind()

1. torch.unbind 作用 说明:移除指定维后,返回一个元组,包含了沿着指定维切片后的各个切片。 参数: tensor(Tensor) – 输入张量dim(int) – 删除的维度 2. 案例 案例1 x torch.rand(1,80,3,360,360)y x.unbind(dim2)print(&…

数据结构-线性表-链表-2.3-2

在带头节点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一, 是编写算法实现上述操作。 双指针,用p从头至尾扫描单链表,pre指向*p结点的前驱,若p所指结点的值为x&#x…

大模型培训老师叶梓 AI编程的未来:GitHub Copilot的创新之旅与实践智慧

GitHub Copilot 是一个由 GitHub 开发的先进工具,它利用大语言模型(LLM)来辅助开发者编写代码。这个工具的开发和成功部署为其他希望构建企业级 LLM 应用的团队提供了宝贵的经验。以下是根据提供的文献,对 GitHub Copilot 实践之路…

案例分享:BACnet转Modbus提升暖通系统互操作性

现代智能建筑中系统的集成与互操作性是决定其智能化程度的关键因素。随着技术的发展,不同标准下的设备共存成为常态,而BACnet与Modbus作为楼宇自动化领域广泛采用的通讯协议,它们之间的无缝对接显得尤为重要。本文将通过一个实际案例&#xf…

全面的Partisia Blockchain 生态 4 月市场进展解读

Partisia Blockchain 是一个以高迸发、隐私、高度可互操作性、可拓展为特性的 Layer1 网络。通过将 MPC 技术方案引入到区块链系统中,以零知识证明(ZK)技术和多方计算(MPC)为基础,共同保障在不影响网络完整…

哈夫曼树的构造和求带权路径

问题 B: 简单哈夫曼树 时间限制: 1 Sec 内存限制: 128 MB 提交: 543 解决: 343 [提交][状态] 题目描述 给出n个结点的描述,构造一棵哈夫曼树。 输入 第一行是一个正整数t。 接下来有t组数据,每组数据有两行。 第一行是一个正整数n,表示…

如何在matlab时间序列中X轴标注月-日

一般我们使用的时间序列都是以年为单位,比如下图: 而如果要绘制月尺度的时间变化图,则需要调整X轴的标注。下面代码展示了如何绘制小时尺度的降水数据。 [sname2,lon2,lat2] kml2xy(GZ_.kml); nc_bound2 [lon2,lat2]; area_ind2inpolygon(e…

WSL介绍(Windows10内置的Linux子系统)

最近发现在Windows10下不用安装虚拟机也可以使用Linux,然后发现原来2016年就已经有这个功能了,下面来介绍下如何使用。 首先我的win10版本信息如下,以免部分版本不支持,可以做个参考。 需要进到控制面板里将Linux子系统功能打开&a…

Linux学习笔记1

1.背景认知 可能很多人还没有接触Linux,会有点畏惧,我们可以把Linux类比成Windows, 下面是Windows和Linux的启动对比 Windows:上电后一开始屏幕是黑黑的---bios在启动Windows----Windows之后找到c盘启动各种应用程序 Linux&am…

可视化大屏比例

<!-- 数据大屏展示内容区域 --><div class"screen" ref"screen"></div> screen.value.style.transform scale(${getScale()}) translate(-50%,-50%) //获取数据大屏展示内容盒子的DOM元素 let screen ref() onMounted(() > {scr…

Web前端三大主流框架是什么?

Web前端开发领域的三大主流框架分别是Angular、React和Vue.js。它们在Web开发领域中占据着重要的地位&#xff0c;各自拥有独特的特点和优势。 Angular Angular是一个由Google开发的前端框架&#xff0c;最初版本称为AngularJS&#xff0c;后来升级为Angular。它是一个完整的…

Apple强大功能:在新款 iPad Pro 和 iPad Air 中释放 M4 芯片潜力

Apple 的最新强大功能&#xff1a;在新款 iPad Pro 和 iPad Air 中释放 M4 芯片的潜力 概述 Apple 推出配备强大 M4 芯片的最新 iPad Pro 和 iPad Air 型号&#xff0c;再次突破创新界限。新一代 iPad 有望彻底改变我们的工作、创造和娱乐方式。凭借无与伦比的处理能力、令人惊…

模糊的图片文字,OCR能否正确识别?

拍照手抖、光线不足等复杂的环境下形成的图片都有可能会造成文字模糊&#xff0c;那这些图片文字对于OCR软件来说&#xff0c;是否能否准确识别呢&#xff1f; 这其中的奥秘&#xff0c;与文字的模糊程度紧密相连。想象一下&#xff0c;如果那些文字对于我们的双眼来说&#x…

智能家居4 -- 添加接收消息的初步处理

这一模块的思路和前面的语言控制模块很相似&#xff0c;差别只是调用TCP 去控制 废话少说&#xff0c;放码过来 增添/修改代码 receive_interface.c #include <pthread.h> #include <mqueue.h> #include <string.h> #include <errno.h> #include <…

解放双手,利用自动点赞软件提高曝光度

在数字时代&#xff0c;社交媒体如同一片繁茂的森林&#xff0c;每一条动态、每一张照片都是树上挂着的果实&#xff0c;而点赞则仿佛是那些吸引眼球的色彩。在这个以流量为王的网络世界里&#xff0c;点赞数往往与内容的可见度直接相关&#xff0c;它不仅能够增加帖子的权重&a…