BTC系列-系统学习铭文(一)-比特币上的NFT

Ordinals协议概况

  • 开源项目: https://github.com/ordinals/ord
  • 铭文浏览器: https://Ordinals.com
  • 关于Ordinals的BIP: https://github.com/ordinals/ord/blob/master/bip.mediawiki
  • 序数理论手册: https://docs.ordinals.com/overview.html

所需的技术积累

Ordinals NFTs 是基于以下两项比特币上的技术得以实现的: 2017年的隔离见证 (SegWit) 和 2021年的Taproot。

隔离见证(Segregated Witness)

Segwit 是 2017 年的一次更新,导致了比特币区块链的软分叉。该更新通过添加可以支持任意数据的“见证数据”部分,有效地将比特币交易分为两个部分。从技术意义上来说,隔离见证的实施意味着交易不再需要包含见证数据(通常是发送者的数字签名)。相反,在块末尾为见证数据创建了一个额外的空间作为单独的结构。它支持任意数据传输,并具有折扣的“块权重”,巧妙地将大量数据保留在比特币的块大小限制内,以避免硬分叉的需要。

在这里插入图片描述

这是Ordinals NFTs 的第一个先驱,因为它扩大了交易中可以包含多少任意数据的限制

Taproot

Taproot 于 2021 年 11 月实施,是一项多方面的升级,旨在提高比特币的隐私性、可扩展性和安全性。在此过程中,Taproot 创建了一个更简单的系统来存储任意见证数据,并放宽了对比特币交易中可以放置多少任意数据的限制。此次升级的最初目标是进一步增强基于比特币的智能合约,例如时间锁定合约,这些合约通常在见证数据中概述。

这些变化是Ordinals NFTs的关键推动因素,它将 NFT 数据存储在 Taproot 脚本路径支出脚本中。此次升级使得构建和存储任意见证数据变得更加容易,为“Ordinals”标准奠定了基础。由于数据要求放宽,假设单笔交易可以用其交易和见证数据填充整个区块,最高可达 4MB 的区块大小限制,从而极大地扩展了可以放在链上的媒体类型。

技术原理

序数(Ordinal)

Ordinal相当于常规NFT的TokenID. 分为铸造方案转让方案

在这里插入图片描述

每个聪(Sats) 使用以下算法进行铸造和转让:

# subsidy of block at given height
def subsidy(height):return 50 * 100_000_000 >> height // 210_000# first ordinal of subsidy of block at given height
def first_ordinal(height):start = 0for height in range(height):start += subsidy(height)return start# assign ordinals in given block
def assign_ordinals(block):first = first_ordinal(block.height)last = first + subsidy(block.height)coinbase_ordinals = list(range(first, last))for transaction in block.transactions[1:]:ordinals = []for input in transaction.inputs:ordinals.extend(input.ordinals)for output in transaction.outputs:output.ordinals = ordinals[:output.value]del ordinals[:output.value]coinbase_ordinals.extend(ordinals)for output in block.transaction[0].outputs:output.ordinals = coinbase_ordinals[:output.value]del coinbase_ordinals[:output.value]

元数据

Ordinal NFT 的元数据保存在交易的见证数据中. 以下是比特币铭文的一个例子——被其所有者重新利用的加密朋克图像:

在这里插入图片描述

要将数据写入特定的聪并创建有序的 NFT,用户必须将单个聪的交易发送到 Taproot 兼容的钱包,并附加所需的元数据作为交易的一部分。

比特币Ordinals vs NFTs

OrdinalNFT
元数据的存储位置链上链下,链上只存URL
元数据的大小限制4M(区块大小有限制)无限
交易手续费昂贵(存储内容多)便宜
可以当作普通的币花掉能(作为普通UTXT用掉)不能 (与ERC20不通用)

铭文生态

图像


往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
BTC系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列

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

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

相关文章

Wireshark过滤DNS协议包语法实战

背景 现网DNS服务器发现CPU突增,发现有可能是客户恶意发起的随机子域名扫描,对服务器进行抓包分析,记录下当时的操作。 抓包 执行命令 tcpdump -iany port 53 and host $ip -nnv -w $ip.pcap进行抓包导出到本地,使用Wireshark进…

人工智能|深度学习——基于数字图像处理和深度学习的车牌定位

1.研究背景及研究目的和意义 车牌识别Vehicle License Plate Recognition VLPR) 是从一张或一系列数字图片中自动定位车牌区域并提取车牌信息的图像识别技术。车牌识别 以数字图像处理、模式识别、计算机视觉等技术为基础,是现代智能交通系统的重要组成部分&#xf…

C#知识点-16(计算器插件开发、事件、递归、XML)

计算器插件开发 1、Calculator.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Calculator_DLL {//用来明确所有插件开发人员的开发规范public abstract class Calculator{public int N…

设计模式浅析(六) ·命令模式

设计模式浅析(六) 命令模式 日常叨逼叨 java设计模式浅析,如果觉得对你有帮助,记得一键三连,谢谢各位观众老爷😁😁 命令模式 概念 命令模式(Command Pattern)是一种行为设计模式&#xff0c…

YOLOv5代码解读[02] models/yolov5l.yaml文件解析

文章目录 YOLOv5代码解读[02] models/yolov5l.yaml文件解析yolov5l.yaml文件检测头1--->耦合头检测头2--->解耦头检测头3--->ASFF检测头Model类解析parse_model函数 YOLOv5代码解读[02] models/yolov5l.yaml文件解析 yolov5l.yaml文件 # YOLOv5 🚀 by Ult…

社区分享|中华保险基于MeterSphere开展接口自动化测试

中华联合保险集团股份有限公司(以下简称为“中华保险”)始创于1986年,是全国唯一一家以“中华”冠名的国有控股保险公司。截至2022年12月底,中华保险总资产为1006.06亿元,在全国拥有超过2900个营业网点,员工…

Servlet中的请求与响应

Request和Response 1.Request和Response的概述2.Request对象2.1 Request继承体系2.2 Request获取请求数据2.3 解决post请求乱码问题 *2.4 Request请求转发(-,*)2.5 request的生命周期 3.HTTP响应详解(理解)1.使用抓包查看响应报文协议内容2.HTTP响应报文协议介绍 4.…

人工智能讲师AI讲师大模型讲师叶梓介绍及大语言模型技术原理与实践提纲

叶梓,上海交通大学计算机专业博士毕业,高级工程师。主研方向:数据挖掘、机器学习、人工智能。历任国内知名上市IT企业的AI技术总监、资深技术专家,市级行业大数据平台技术负责人。 长期负责城市信息化智能平台的建设工作&#xff…

angular-引用本地json文件

angular-引用json文件,本地模拟数据时使用 在assets目录下存放json文件 大佬们的说法是:angular配置限定了资源文件的所在地(就是assets的路径),放在其他文件夹中,angular在编译过程中会忽略,会…

Docker之查看并获取最新Ubuntu镜像(十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

基于springboot+vue的教学资源库系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

Nginx配置组成与性能调优

目录 一、Nginx配置介绍 1. 模块组成 2. 图示 3. 相关框架 二. 配置调优 1. 全局配置 1.1 关闭版本和修改版本 1.2 修改启动的进程数 1.3 cpu与work进程绑定 1.4 pid路径 1.5 nginx进程的优先级(work进程的优先级) 1.6 调试work进程打开的文…

问题:Spark SQL 读不到 Flink 写入 Hudi 表的新数据,打开新 Session 才可见

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

Predis Multi-Zone

A Data Flow Framework with High Throughput and Low Latency for Permissioned Blockchains 联盟链的吞吐瓶颈由共识层和网络层的数据分发过程共同决定。 Predis 协议利用了共识节点的空闲带宽,提前分发区块中的内容即bundle,减少了共识区块中的内容&…

在vue3中使用canvas实现雨滴效果

在vue3中使用canvas实现雨滴效果 这是封装的一个组件DotAndRain&#xff08; &#xff09; <script setup> import { ref, onMounted } from "vue"; import { onUnmounted } from "vue";let animationFrameId null;const el ref(null); let canv…

5 原型模式 Prototype

1.模式定义: 指原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象 2.应用场景&#xff1a; 当代码不应该依赖于需要复制的对象的具体类时&#xff0c;请使用Prototype模式。 Spring源码中的应用 org.springframework.beans.factory.support.AbstractB…

蓝桥杯嵌入式第12届真题(完成) STM32G431

蓝桥杯嵌入式第12届真题(完成) STM32G431 题目 程序 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body**************************…

Linux常见的指令

目录 01. ls 指令02. pwd命令03. cd 指令04. touch指令05.mkdir指令&#xff08;重要&#xff09;&#xff1a;06.rmdir指令 && rm 指令&#xff08;重要&#xff09;&#xff1a;07.man指令&#xff08;重要&#xff09;&#xff1a;08.cp指令&#xff08;重要&#x…

浅谈maven的生命周期

正文: 在Maven中,生命周期定义了项目构建过程的不同阶段以及在每个阶段中执行的插件目标。Maven的生命周期是由一系列阶段组成的,每个阶段都有一个唯一的标识符。 Clean生命周期:用于清理项目的构建目录。它包含以下阶段: pre-clean:执行在清理操作之前的任何操作。clea…

【Vuforia+Unity】AR05-实物3D模型识别功能实现

对于3D物体的识别&#xff0c;可以是虚拟的也可以是实物的&#xff0c;但是对于虚拟的三维模型意义不大&#xff0c;我们完全可以把三维模型放在屏幕上截一张图&#xff0c;以图片识别的方式召唤数字内容&#xff0c;不过在虚拟现实中或许有用。 因此本文探讨的技术路线主要是…