【区块链安全 | 第六篇】NFT概念详解

news2025/5/19 4:12:27

文章目录

    • NFT
      • NFT(非同质化代币)
      • FT(可替代代币)
    • 以太坊 NFT 标准
      • ERC-721(单一资产)
      • ERC-1155(多资产)
    • NFT 市场
    • 版税机制
    • NFT 借贷
    • NFT 安全

NFT

NFT(Non-Fungible Token,非同质化代币)是一种独一无二的数字资产,广泛用于艺术品、游戏资产、数字身份、虚拟地产等。

在区块链生态中,代币主要分为两大类:
1.NFT(Non-Fungible Token,非同质化代币)
2.FT(Fungible Token,可替代代币)

它们在同质性、可分割性、存储方式、交易方式等方面存在显著区别。

NFT(非同质化代币)

NFT 代表独一无二的数字资产,每个 NFT 具有不同的 Token ID 和元数据(Metadata)。

核心特点
1.每个 NFT 都是独特的,不可互换,比如一幅数字艺术品、一个游戏装备(你买了一幅 Beeple 的 NFT 画作,编号 #2053,它是独一无二的,不能交换成另一幅不同的 NFT 画作)
2.不能拆分为更小的单位(某些 ERC-1155 例外)。
3.NFT 由 ERC-721 或 ERC-1155 标准(智能合约)定义,确保唯一性和可追溯性。

主要应用
1.艺术品(如 Bored Ape Yacht Club)
2.游戏资产(如 Axie Infinity)
3.门票与会员卡(如 NFT 票务系统)
4.虚拟地产(如 The Sandbox)
5.数字身份(如 ENS 域名)

交易方式
1.去中心化市场(OpenSea、Blur)
2.P2P 交易(用户直接交换)
3.拍卖机制(竞拍最高者得)

FT(可替代代币)

FT 是标准化、可分割、可互换的代币,主要用于支付、治理、流动性交易等场景。

核心特点
1.可互换,同一代币的单位彼此相同,如 1 USDT = 1 USDT(你拥有 1 ETH,你可以把它换成任何其2.他人的 1 ETH,它们的价值和属性完全相同。)
3.可拆分成小数单位(如 0.1 ETH)。
4.由 ERC-20 或 BEP-20 标准(智能合约)管理。

主要应用
1.加密货币(ETH、BTC)
2.稳定币(USDT、DAI)
3.DeFi 代币(UNI、AAVE)
4.治理代币(COMP、MKR)

交易方式
1.中心化交易所(CEX)(如 Binance、Coinbase)
2.去中心化交易所(DEX)(如 Uniswap、Curve)
3.智能合约交互(如借贷协议、收益聚合器)

在这里插入图片描述

以太坊 NFT 标准

以太坊支持多种 NFT 标准,其中ERC-721 和 ERC-1155 是最主要的两种。它们定义了 NFT 如何创建、转移、存储及交互。

ERC-721(单一资产)

ERC-721 是第一个 NFT 标准,每个 NFT 具有唯一 Token ID,代表不可分割、独一无二的资产。

主要特点
1.每个 NFT 独立存在,具有唯一的 Token ID
2.不可分割,无法交易 0.5 个 NFT(必须整件转移)
3.智能合约存储 Token 拥有者,支持交易和授权操作
4.适用于数字艺术、收藏品、门票、虚拟地产等

一个 ERC-721 NFT 代币的基本实现:

pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";

contract MyNFT is ERC721 {
    uint256 private _nextTokenId;
    
    constructor() ERC721("MyNFT", "MNFT") {}

    function mint(address to) external {
        _safeMint(to, _nextTokenId);
        _nextTokenId++;
    }
}

//  _safeMint(to, tokenId): 创建并发送 NFT 到 to 地址
//  tokenId:每个 NFT 的唯一 ID,如 #1001、#1002

ERC-1155(多资产)

ERC-1155 允许同一个合约管理多种类型的代币,可同时包含可替代代币(FT)(如游戏金币、代币)、非同质化代币(NFT)(如游戏道具、皮肤)

主要特点
1.支持同质化 & 非同质化代币(同一合约内)
2.批量转移(一次交易可转移多个 NFT/FT,节省 Gas)
3.多 ID 结构(同一 Token ID 可有多个数量,如 “100 把剑”)
4.适用于游戏资产、收藏品、元宇宙物品等

代码示例

pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";

contract MyGameItems is ERC1155 {
    uint256 public constant SWORD = 1;
    uint256 public constant SHIELD = 2;
    
    constructor() ERC1155("https://mygame.com/metadata/{id}.json") {
        _mint(msg.sender, SWORD, 100, "");  // 100 把剑
        _mint(msg.sender, SHIELD, 50, "");  // 50 个盾
    }
}

// SWORD = 1,代表编号 1 的游戏道具
// SHIELD = 2,代表编号 2 的游戏道具
// _mint(msg.sender, SWORD, 100, ""):铸造100 把剑

在这里插入图片描述

NFT 市场

主要交易平台

在这里插入图片描述

版税机制

NFT 版税(Royalty) 是指 NFT 在二级市场交易时,创作者可以自动获得一部分交易金额作为版税,通常设定在 5% - 10% 之间。

举个例子:艺术家 Alice 创建 NFT,最初售价 1 ETH,她设置 10% 版税。Bob 购买后,以 5 ETH 转售,Alice 将自动收到 0.5 ETH(5 ETH × 10%) 作为版税。

版税的运作方式
1.在 NFT 交易时,智能合约自动执行版税规则
2.买家支付交易金额
3.智能合约自动扣除版税
4.剩余款项支付给卖家
5.版税转入创作者的钱包

目前,Blur 和 OpenSea 的竞争导致版税机制逐渐被绕过。OpenSea 最初强制执行版税,但 Blur 允许 0% 版税。这导致 NFT 交易量流向 Blur,OpenSea 被迫改变政策。最终,版税变为“可选支付”,创作者收益大幅下降。并且,一些买家和卖家私下交易,绕过版税机制。

NFT 借贷

NFT 借贷允许 NFT 持有者抵押 NFT 以借出 ETH、USDT 或其他代币,同时借贷平台设有清算机制来防止风险。

目前,市场上主流的 NFT 借贷协议主要包括 P2P(点对点)借贷和 P2Pool(资金池)借贷。

P2P 模式(点对点)
代表协议:NFTfi
借款人与贷款人直接匹配,双方协商贷款金额、利率、期限等条款。
如果借款人到期未还款,NFT 会自动归贷款人所有。

P2Pool 模式(资金池)
代表协议:BendDAO、X2Y2 Lending
借款人将 NFT 作为抵押品,从资金池直接借款。
贷款人存入 ETH/USDT 赚取利息,智能合约根据预言机价格评估 NFT 价值。
清算机制:当 NFT 价格跌破一定阈值,NFT 会被拍卖。

NFT 安全

NFT 交易涉及智能合约,因此漏洞点经常发生在智能合约上,在【区块链安全 | 第五篇】DeFi概念详解中有介绍。

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

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

相关文章

iOS常见网络框架

URLSession、Alamofire 和 Moya 1. URLSession 1.1 核心概念 URLSession 是 Apple 官方提供的网络请求 API,封装在 Foundation 框架中。它支持 HTTP、HTTPS、FTP 等协议,可用于: ​ • 普通网络请求(GET/POST) ​ …

蓝桥杯备考---->激光炸弹(二维前缀和)

本题我们可以构造二维矩阵&#xff0c;然后根据题意&#xff0c;枚举所有边长为m的正方形&#xff0c;找到消灭价值最多的炸弹 #include <iostream> using namespace std; const int N 1e4; int a[N][N]; int n,m; int f[N][N]; int main() {cin >> n >> m…

数据结构 --树和森林

树和森林 树的存储结构 树的逻辑结构 树是一种递归定义的数据结构 树是n(n≥0)个结点的有限集。当n0时&#xff0c;称为空树。在任意一棵非空树中应满足&#xff1a; 1)有且仅有一个特定的称为根的结点。 2)当n>1时&#xff0c;其余结点可分为m(m>0)个互不相交的有…

QOpenGLWidget视频画面上绘制矩形框

一、QPainter绘制 在QOpenGLWidget中可以绘制&#xff0c;并且和OpenGL的内容叠在一起。paintGL里面绘制完视频后&#xff0c;解锁资源&#xff0c;再用QPainter绘制矩形框。这种方式灵活性最好。 void VideoGLWidget::paintGL() {glClear(GL_COLOR_BUFFER_BIT);m_program.bi…

Linux系统加固笔记

检查口令为空的账户 判断依据&#xff1a;存在则不符合 特殊的shell a./bin/false:将用户的shell设置为/bin/false&#xff0c;用户会无法登录&#xff0c;并且不会有任何提示信息b./sbib/nologin&#xff1a;nologin会礼貌的向用户发送一条消息&#xff0c;并且拒绝用户登录…

【Go万字洗髓经】Golang中sync.Mutex的单机锁:实现原理与底层源码

本章目录 1. sync.Mutex锁的基本用法2. sync.Mutex的核心原理自旋到阻塞的升级过程自旋CAS 饥饿模式 3. sync.Mutex底层源码Mutex结构定义全局常量Mutex.Lock()方法第一次CAS加锁能够成功的前提是&#xff1f;竞态检测 Mutex.lockSlow()lockSlow的局部变量自旋空转state新值构造…

Django REST framework 源码剖析-认证器详解(Authentication)

Django REST framework 源码剖析-认证器详解(Authentication) 身份验证始终在视图的最开始运行&#xff0c;在权限和限制检查发生之前&#xff0c;以及在允许任何其他代码继续之前。request.user属性通常设置为contrib.auth包的user类的实例。request.auth属性用于任何其他身份…

TCP/IP三次握手的过程,为什么要3次?

一&#xff1a;过程 第一次&#xff08;SYN&#xff09;&#xff1a; 客户端发送一个带有SYN标志的TCP报文段给服务器&#xff0c;设置SYN1&#xff0c;并携带初始序列号Seqx&#xff08;随机值&#xff09;&#xff0c;进入SYN_SENT状态。等待服务器相应。 第二次&#xff08…

Centos6安装nerdctl容器运行时

Centos6安装nerdctl容器运行时 前言Centos6安装docker---失败--不可拉取镜像docker配置国内镜像加速 Centos6安装nerdctl-full容器管理工具为Centos6配置containerd服务开机自启动设置nerdctl自动补全 前言 本文写于2025年3月22日,因一些特殊业务需要用到Centos6Docker,但Cent…

登录验证码的接口实习,uuid,code.

UID是唯一标识的字符串,下面是百度百科关于UUID的定义&#xff1a; UUID是由一组32位数的16进制数字所构成&#xff0c;是故UUID理论上的总数为16322128&#xff0c;约等于3.4 x 10^38。也就是说若每纳秒产生1兆个UUID&#xff0c;要花100亿年才会将所有UUID用完。 UUID的标准…

用fofa语法搜索漏洞

FOFA是一款非常强大的搜索引擎 关于对于fofa的描述是&#xff1a;FOFA&#xff08;网络空间资产检索系统&#xff09;是世界上数据覆盖更完整的IT设备搜索引擎&#xff0c;拥有全球联网IT设备更全的DNA信息。 探索全球互联网的资产信息&#xff0c;进行资产及漏洞影响范围分析…

20242817李臻《Linux⾼级编程实践》第6周

20242817李臻《Linux⾼级编程实践》第6周 一、AI对学习内容的总结 Linux进程间通信&#xff08;IPC&#xff09; 1. 进程间通信基本概念 作用: 数据传输&#xff1a;进程间传递数据&#xff08;字节到兆字节级别&#xff09;。共享数据&#xff1a;多个进程操作同一数据&…

深入解析SQL2API平台:数据交互革新者

在数字化转型持续深入的当下&#xff0c;企业对数据的高效利用与管理的需求愈发迫切。SQL2API平台应运而生&#xff0c;成为助力企业突破数据交互困境的有力工具&#xff0c;特别是它由麦聪软件基于DaaS&#xff08;数据即服务&#xff09;产品创新衍生而来&#xff0c;备受业界…

Java 中装饰者模式与策略模式在埋点系统中的应用

前言 在软件开发中&#xff0c;装饰者模式和策略模式是两种常用的设计模式&#xff0c;它们在特定的业务场景下能够发挥巨大的作用。本文将通过一个实际的埋点系统案例&#xff0c;探讨如何在 Java 中运用装饰者模式和策略模式&#xff0c;以及如何结合工厂方法模式来优化代码…

无人设备遥控器之调度自动化技术篇

一、技术原理 信息采集与处理&#xff1a; 通过传感器、仪表等设备采集无人设备的各种数据&#xff0c;如位置、速度、状态等。 将采集到的数据传输到调度自动化系统中进行处理和分析&#xff0c;以获取设备的实时状态。 系统建模与优化&#xff1a; 调度自动化系统会根据…

【AI】Orin Nano+ubuntu22.04上移植YoloV11,并使用DeepStream测试成功

【AI】郭老二博文之:AI学习目录汇总 1、准备工作 使用 sdk-manager 烧写 OrinNano, JetPack版本为6.0 DP,对应操作系统为:Ubuntu22.04 参见博客:【NVIDIA】Jetson Orin Nano系列:烧写Ubuntu22.04 2、安装 PyTorch 2.1 下载依赖 1)安装onnx pip install onnx -i h…

K8S学习之基础四十五:k8s中部署elasticsearch

k8s中部署elasticsearch 安装并启动nfs服务yum install nfs-utils -y systemctl start nfs systemctl enable nfs.service mkdir /data/v1 -p echo /data/v1 *(rw,no_root_squash) >> /etc/exports exports -arv systemctl restart nfs创建运行nfs-provisioner需要的sa账…

如何在 Windows 上安装并使用 Postman?

Postman 是一个功能强大的API测试工具&#xff0c;它可以帮助程序员更轻松地测试和调试 API。在本文中&#xff0c;我们将讨论如何在 Windows 上安装和使用 Postman。 Windows 如何安装和使用 Postman 教程&#xff1f;

Axure RP 9.0教程: 基于动态面板的元件跟随来实现【音量滑块】

文章目录 引言I 音量滑块的实现步骤添加底层边框添加覆盖层基于覆盖层创建动态面板添加滑块按钮设置滑块拖动效果引言 音量滑块在播放器类APP应用场景相对较广,例如调节视频的亮度、声音等等。 I 音量滑块的实现步骤 添加底层边框 在画布中添加一个矩形框:500 x 32,圆…

WPF 与 C# 开发深度剖析

一、引言 在当今的软件开发领域&#xff0c;Windows 平台依旧占据着重要的地位。而 WPF&#xff08;Windows Presentation Foundation&#xff09;作为微软推出的一款强大的用户界面&#xff08;UI&#xff09;框架&#xff0c;为开发者提供了丰富的功能和灵活的设计方式&…