使用铭文思路对智能合约改进

news2024/10/26 5:27:31

铭文现象

铭文在 2023年末的时候大火了一把,这一现象让众多链圈开发者跌破了眼镜。

从技术上来讲,铭文采用了链下计算(indexer)的方式,使得本来智能合约能力有限的比特币可以实现类似 ERC20 的基本功能。由于使用此类技术实现的功能有限,比如 ERC20 和 NFT 中常用的白名单技术,较难实现,所以市场以“公平发射”的名义给铭文技术注入了活力。

从不理解铭文(币圈理解为“公平发射”),到理解比特币铭文(实际上为矿工创造了很多额外的挖矿收入,从而得到了矿工的支持),到其他EVM链甚至Non-EVM链的跟进(理解为蹭热度)。大众对于铭文的理解,更多偏向于短期挣快钱的炒作。

当热度开始消退,当大家在思考铭文还能持续多久的时候,我们从铭文技术思路中,看到了对区块链底层技术发展的可取之处。本文试着给铭文技术做一些变形,探讨使用铭文技术是否可以演化出更有意思的区块链技术?

前置知识

阅读本文需要对区块链和智能合约底层有一定的了解。

我们使用状态机来建模区块链和智能合约。状态机接收一个输入,通过状态转换函数定义的规则,转换为下一个状态。

  • 其中,输入就是被打包进一个区块的所有交易。
  • 状态转换函数可以是区块链的规则,比如转账,也可以通过智能合约自定义规则。铭文的 indexer 也是一种状态转换函数。
  • 状态机的状态,对应着区块链和智能合约的全局状态。如果所有的全局状态都被删除,但是所有历史交易都是被保存的,就可以通过交易和状态转换函数,重建所有状态。

将规则放到链上

诟病铭文技术的主要原因,来自于铭文系统的中心化。Indexer来自于一个第三方为比特币的交易赋予新的规则。如果多个索引器使用不一样的规则解释铭文交易,就会出现不一样的结果。

一个显而易见的方式,就是将 indexer 程序写到链上。这在比特币中是较为昂贵的操作,如果在新设计的区块链上实现,则相对简单。

实现规则上链以后,我们会发现,铭文和区块链合约的差距在缩小。验证铭文交易变的去中心化了,因为规则是一样的。但是,铭文和智能合约剩下的差异是什么呢?

先上链,再验证

智能合约的规则在于,先验证,再上链。如果一个NFT数量有 100 个,那么前 100 个 mint 操作会成功,第 101 个mint则会失败。如果合约被正确的实现,第 101 个 mint 操作不应该收取交易手续费,也不会被打包进区块链。

铭文完全不同,是因为矿工在打包交易的时候,完全不用管 100 个 mint 名额是否耗尽,它只负责把交易打包进区块当中,而不执行交易内容,不去验证交易的合法性。

这对于矿工来说,降低了很大负担 1) 不需要运行虚拟机 2) 不需要保存全局状态。当然,负面影响也很大,用户发出的交易有可能不成功。比如用户只有10U,尝试转出15U,交易也会被矿工打包,手续费也会被收取,但是交易是无效的,用户必须自己验证转账是否成功。

状态的延迟计算

总结上面的铭文模式,先上链,再验证,我们得到了状态的延迟计算。

如果我们将现有区块链改成这样的模式,是不是可以大规模的提高区块链的吞吐量。由于这样的区块链在共识阶段完全不需要考虑状态大小和虚拟机执行效率,它的速度是极快的。

进一步,我们是不是可以在铭文智能合约上进行新的优化?

专注合约计算

大家知道,智能合约有全局状态,所有的节点都需要计算所有的交易输入。那么这个世界计算机的执行速度,是远远满足不了全人类的需求的。但是,有可能大部分的需求,会集中在 ERC20 转账合约,SWAP 以及其他 DeFi 应用。延迟计算是否意味着不需要对所有的共识过的交易进行计算。

我们可以让一个节点专注于 USDT 相关的合约状态计算。比如 SWAP,通常一个 SWAP 需要它合约本身以及依赖的两个 ERC20 合约参与,所以一个节点可以专注于一个 SWAP 池子和它依赖的两个 ERC20 合约的状态计算。对于其他节点,可以做与 USDT 无关的状态计算,比如 USDC,或者 NFT 的状态。

铭文智能合约区块链

由此,我们设计了一个铭文思路驱动的智能合约的区块链。它的核心有两点,1) 把 indexer 程序规则放到链上 2) 先共识交易输入,后计算状态。

在实现和测试之前,我们不知道这个想法会发生什么?我们预期它可以改进智能合约的性能瓶颈,由于不需要在共识过程中运行智能合约,区块链的处理能力会被解放,并且全局状态爆炸问题也可以得到解决。

欢迎大家给一些点评和反馈。

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

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

相关文章

计算机毕业设计Python+大模型租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 用到的技术: 1. python…

【独家:AI编程助手Cursor如何revolutionize Java设计模式学习】

【独家:AI编程助手Cursor如何revolutionize Java设计模式学习】 导语 在Java高级编程的世界里,设计模式是每个开发者必须掌握的利器。但是,如何快速理解并灵活运用这些模式呢?让我们一起探索如何借助AI编程助手Cursor,轻松掌握设计模式,提升Java编程技能! 正文 设计模式:J…

opencv - py_ml - py_kmeans

文章目录 1.理解 K-Means 聚类目标理论T 恤尺码问题它是如何工作的? 其他资源 2.OpenCV 中的 K-Means 聚类目标理解参数输入参数输出参数 1.理解 K-Means 聚类 目标 在本章中,我们将理解 K-Means 聚类的概念、其工作原理等。 理论 我们将通过一个常用…

4.2-6 使用Hadoop WebUI

文章目录 1. 查看HDFS集群状态1.1 端口号说明1.2 用主机名访问1.3 主节点状态1.4 用IP地址访问1.5 查看数据节点 2. 操作HDFS文件系统2.1 查看HDFS文件系统2.2 在HDFS上创建目录2.3 上传文件到HDFS2.4 删除HDFS文件和目录 3. 查看YARN集群状态4. 实战总结 1. 查看HDFS集群状态 …

JVM 实战篇(一万字)

此笔记来至于 黑马程序员 内存调优 内存溢出和内存泄漏 内存泄漏(memory leak):在Java中如果不再使用一个对象,但是该对象依然在 GC ROOT 的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内…

matlab中,close和close all的区别、clc和clear的区别、

文章目录 1. clear vs. clear all2. clc vs. clear3. hold on vs. hold off4. subplot vs. subplot(221)5. axis tight vs. axis equal6. save vs. saveas总结 在 MATLAB 中,有许多命令和函数在功能上相似,但其用法和效果却有所不同。以下是一些常见的例…

基于SSM+小程序的垃圾分类管理系统(垃圾2)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的垃圾分类管理系统实现了管理员及用户。 1、管理员功能结构图,管理员功能有个人中心,管理员管理,基础数据管理、论坛管理、垃圾信息管理…

logback 如何将日志输出到文件

如何作 将日志输出到文件需要使用 RollingFileAppender&#xff0c;该 Appender 必须定义 rollingPolicy &#xff0c;另外 rollingPollicy 下必须定义 fileNamePattern 和 encoder <appender name"fileAppender" class"ch.qos.logback.core.rolling.Rollin…

Zabbix企业级分布式监控环境部署

“运筹帷幄之中&#xff0c;决胜千里之外”。在IT运维中&#xff0c;监控占据着重要的地位&#xff0c;按比例来算&#xff0c;说占30%一点也不为过。对IT运维工程师来说&#xff0c;构建一个真正可用的监控告警系统是一项艰巨的任务。在监控系统的开源软件中&#xff0c;可供选…

论文阅读:华为的LiMAC

《LIGHTWEIGHT NEURAL APP CONTROL》 用于app控制的轻量级神经网络 摘要 输入是一个文本目标和一系列过去的移动感知&#xff0c;比如截图和相应的UI树&#xff0c;来生成精确的动作。 针对智能手机固有的计算限制&#xff0c;我们在LiMAC中引入了一个小型Action Transforme…

【安全解决方案】深入解析:如何通过CDN获取用户真实IP地址

一、业务场景 某大型互联网以及电商公司为了防止客户端获取到真实的ip地址&#xff0c;以及达到保护后端业务服务器不被网站攻击&#xff0c;同时又可以让公安要求留存网站日志和排查违法行为&#xff0c;以及打击犯罪的时候&#xff0c;获取不到真实的ip地址&#xff0c;发现…

元数据 - ​媒体管理

媒体管理 Media Management元数据遵循 XMP&#xff08;可扩展元数据平台&#xff09;规范&#xff0c;特别是 xmpMM&#xff08;XMP Media Management&#xff09;命名空间。通过理解和利用这些元数据&#xff0c;可以更好地管理媒体文件的版本、历史记录、派生关系和管理信息&…

Flutter Image和Text图文组件实战案例

In this section, we’ll go through the process of building a user interface that showcases a product using the Text and Image widgets. We’ll follow Flutter’s best practices to ensure a clean and effective UI structure. 在本节中&#xff0c;我们将使用“Te…

ue5实现数字滚动增长

方法1 https://www.bilibili.com/video/BV1h14y197D1/?spm_id_from333.999.0.0 b站教程 重写loop节点 方法二 写在eventtick里

合并数组的两种常用方法比较

在 JavaScript 中&#xff0c;合并数组的两种常用方法是使用扩展运算符 (...) 和使用 push 方法。 使用扩展运算符 this.items [...this.items, ...data.items]; 优点&#xff1a; 易于理解&#xff1a;使用扩展运算符的语法非常直观&#xff0c;表达了“将两个数组合并成一个…

最新版本jdbcutils集成log4j做详细sql日志、自动释放连接...等

maven坐标 <!-- MySQL 8 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency><!-- Druid连接池 --><dependency><groupId&…

记一次AWS服务器扩容

1、首先通过下列命令列出设备详情&#xff0c;可以看到红色框起来的部分有160G&#xff0c;需要把新增的20G扩容到根目录(139.9)上 lsblk查看文件系统 df -h2.执行sudo growpart /dev/xvda 1即可把20G的空间扩容到根目录上 扩容成功 但是可以看到并未生效 3.列出文件系统格…

菜叶子芯酸笔记2:服务器、互联技术和AI芯片参数解读

服务器相关知识 服务器是一种高性能计算机&#xff0c;作为网络的节点&#xff0c;存储、处理网络上80%的数据、信息&#xff0c;因此也被称为网络的灵魂。 服务器的分类 种类 描述 塔式服务器(tower server) 正面似PC机&#xff0c;但侧面长度长很多&#xff0c;无统一标准…

pair类型应用举例

在main.cpp里输入程序如下&#xff1a; #include <iostream> //使能cin(),cout(); #include <utility> //使能pair数据类型; #include <string> //使能string字符串; #include <stdlib.h> //使能exit(); //pair类型可以将两个相同的或不同类…

2024年10月-2025年5月 Oracle 19c OCM 考试安排

2024年10月-2025年5月 Oracle 19c OCM 考试安排&#xff1a; 北京考场&#xff1a; 上海考场&#xff1a; 更新时间&#xff1a;2024年10月25日 Oracle 19c OCM往期学员成绩展示&#xff1a; Oracle 19c OCM认证证书&#xff08;电子版&#xff09;