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

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

相关文章

PRL:新型量子传感方案突破纳米测量极限

朴茨茅斯大学的研究人员近期宣布了一项令人振奋的量子传感方案,该方案在测量两个干涉光子之间的横向位移方面达到了前所未有的量子灵敏度。 这一技术的突破为超分辨率成像技术带来了新的可能性。目前,这些技术通常采用单光子源作为探针,用于在…

LCD驱动IC-抗干扰液晶段码显示屏驱动芯片,液晶显示驱动原厂-VK2C23A/B LQFP64/48

产品品牌:永嘉微电/VINKA 产品型号:VK2C23A/B 封装形式:LQFP64/48 概述 VK2C23是一个点阵式存储映射的LCD驱动器,可支持最大224点(56SEGx4COM) 或者最大416点(52SEGx8COM)的LCD屏。…

电-热耦合市场联合出清!考虑均衡约束的综合能源系统电-热分配方法程序代码!

前言 随着现代城市面临环境问题,原来燃煤的水和空间供暖设备已逐渐被电锅炉和热泵等电气设备所取代。此外,集中生产热能并通过管网分配热能的区域供暖系统,由于其更高的效率,在冬季漫长寒冷的国家和地区越来越受欢迎。供暖设备的…

Windows电脑搭建HarmonyOS NEXTDeveloper Preview2环境详解

Windows电脑搭建HarmonyOS NEXTDeveloper Preview2环境详解: HarmonyOS NEXT Preview系列教程基于Api11讲解-IT营大地老师 1 、电脑要求以及注意事项 操作系统 : Windows10 64 位、 Windows11 64 位 内存 : 8GB 及以上,推荐 16G…

传闻不断!TCL紧急澄清 | 百能云芯

TCL科技5月7日晚间发布澄清公告称,近日关注到有媒体发布《TCL华星年内投630亿元加入8代oled线竞逐!》《TCL华星计划年内投资第八代OLED》等相关报道。公司目前无新建8代或8.6代OLED产线的投资计划,公司不存在通过定增募集资金新建显示产线的计…

启英泰伦“离线自然说”技术,让智能语音芯片更善解人意

“以科技创新推动产业创新,特别是以颠覆性技术和前沿技术催生新产业、新模式、新动能,发展新质生产力”。2023年12月,中央经济工作会议强调了发展新质生产力的路径。“科技创新是发展新质生产力的核心要素,这也是我们一直潜心在做…

spring模块(六)spring监听器(2)@EventListener

一、介绍 监听器的简化写法 二、原理 三、使用 Slf4j Component public class MyTask {EventListenerpublic void onApplicationEvent(ApplicationEvent event) {if (event instanceof ContextRefreshedEvent) {log.info("监听到 ContextRefreshedEvent...");}if…

牛客题-链表内区间反转

链表内区间反转 这是代码 typedef struct ListNode listnode; struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) {if (head NULL) {return NULL;}listnode* findhead head;listnode* findtail head;listnode* prev NULL;int count1 m;int count2…

基于Springboot的校园招聘系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园招聘系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

Unity数据持久化之Json

Json概述 Json是什么? 全称:JavaScript对象简谱(JavaScript Object Notation) Json是国际通用的一种轻量级的数据交换格式 主要在网络通讯中用于传输数据,或本地数据存储和读取 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率 我们一般使用Json文件来…

SF 不消费buffer

1、请求合成请求vsync MessageQueue.cpp 返回nextWakeupTime struct ArmingInfo { nsecs_t mActualWakeupTime; nsecs_t mActualVsyncTime; nsecs_t mActualReadyTime; }; 在schedule 请求vsync 时会根据算法计算出nextVsyncTime时间&#…

企业怎样进行IT外包以及IT外包服务内容

在数字化时代的浪潮中,企业逐渐认识到信息技术的关键作用,特别是制造业基地对于IT外包和运维服务的需求持续增长。然而,在诸多可供选择的IT外包和运维方案中,企业如何推动与IT外包公司的合作?本文将深入介绍IT外包方案…

Python解释器3.8.2版本安装详细教程

Python解释器提取链接链接: https://pan.baidu.com/s/1eDvwYmUJ4l7kIBXewtN4EA?pwd1111 提取码:1111 演示版本为3.6.8,链接安装包为3.8.2版,包中附加pytharm安装包。 1.双击提取好的python-exe安装文件,会…

泛型编程四:容器

文章目录 前言一、序列容器verctor 总结 前言 STL有六大部件,容器、算法、仿函数、迭代器、适配器和分配器。除了算法是函数模板,其他都是类模板。容器可以分为序列容器和关联容器。常见的序列容器有vector、array、deque、list、forward-list&#xff…

Ansible——playbook编写

一、简介 1.什么是playbook Ansible Playbook 是设定自动化任务的一种蓝图,可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。 Ansible Playbook 本质上是一些框架,是一些预先编…

C/C++ 入门(10)list类(STL)

个人主页:仍有未知等待探索-CSDN博客 专题分栏:C 欢迎来指教! 一、标准库中的list 1、了解 list:是一个双向带头循环链表,不支持随机访问(即下标访问),任意位置的插入删除效率高。 …

1.使用uniapp搭建微信小程序项目并引入前端组件资源

文章目录 1. 项目配置1.1. 新建vue3项目1.2. 关联云空间1.3. 运行到微信开发者工具 2. 前端组件2.1. uniCloud的内置组件和扩展组件2.2. uView3.02.3. 在uniapp项目引入uview3 1. 项目配置 1.1. 新建vue3项目 由于我们要使用vue3而不是vue2,所以要选好版本&#x…

1688数据分析实操技巧||1688商品数据采集接口 数据分析

今天,聊一聊B2B平台的数据分析,以1688国内站为例。 1688平台数据接口 1688也属于阿里巴巴的体系,跟淘宝天猫运营很像,因此很多淘宝天猫的玩法调整后也适用于1688。数据分析也是如此。 在1688搞数据分析,搞数据化运营可…

路由策略与路由控制

1.路由控制工具 匹配工具1:访问控制列表 (1)通配符 当进行IP地址匹配的时候,后面会跟着32位掩码位,这32位称为通配符。 通配符,也是点分十进制格式,换算成二进制后,“0”表示“匹配…

(二刷)代码随想录第1天|704. 二分查找 27. 移除元素

704. 二分查找 704. 二分查找 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili 给定一个 n 个元素有序的(升序&#xff09…
最新文章