Utreexo:优化Bitcoin UTXO集合的基于哈希的动态累加器

1. 引言

前序博客:

  • Utreexo:比特币UTXO merkle tree proof以节约节点存储空间

MIT Digital Currency Initiative 的 Thaddeus Dryja 2019年论文 Utreexo: A dynamic hash-based accumulator optimized for the Bitcoin UTXO set。
开源代码实现见:

  • https://github.com/mit-dci/rustreexo(Rust)

比特币最早出现且最持久的问题之一是可扩展性。Bticoin的字面意思是“be your own bank成为你自己的银行”,比特币网络上的每台计算机都存储着系统中拥有资金的每个用户的每个帐户。在比特币中,它被存储为“Unspent transaction outputs未花费的交易输出”或“UTXO”的集合,这有点不直观,但与传统金融中使用的基于“帐户”的替代模型相比,提供了隐私和效率优势。
区分交易历史记录和系统当前状态非常重要。比特币的交易历史记录目前为 200GB,包含自 2009 年初比特币推出以来的每笔交易。该历史记录的大小当然只会随着时间的推移而增加。然而,当前的系统状态要小得多,不到 4GB,并且只处理当前谁拥有什么。随着时间的推移,该状态规模总体上有所增加,但今年实际上有所减少。

尽管历史记录的规模要大得多,但实际上并不是可扩展性问题,因为它不以任何time-critical的方式使用;人们可以在处理后丢弃历史记录,而不会损失安全性。然而,不断增加的状态规模是一个令人担忧的问题——utreexo 解决了这个问题。

Utreexo 是一种新颖的基于哈希的动态累加器,它允许数百万个UTXO以千字节以下的形式表示——小到可以写在一张纸上。不存在可信设置或安全损失;相反,跟踪资金的负担转移到了这些资金的所有者身上。

目前,交易指定了输入和输出,验证输入需要了解系统的整个状态。通过 Utreexo,资金持有者可以维护资金存在的证明,并在花费时间时向其他节点提供该证明。这些证明很紧凑(低于 1KB),但确实代表了 utreexo 模型的主要缺点,它们提供了额外的数据传输开销,从而允许更小的状态。

Utreexo 将维护网络的成本推到了正确的位置:创建数百万笔交易的交易所可能需要维护数百万个proofs,而只有少量未花费输出的个人账户只需要维护几千字节的证明数据。Utreexo 还提供了长期的可扩展性解决方案,因为累加器大小随着底层集合大小的增加而增长非常缓慢(累加器大小与集合大小成对数)。

在比特币共识网络中,所有节点就未花费的交易输出集(“UTXO”集)达成一致。这种共享状态的大小是网络的可扩展性约束,因为随着更多用户加入系统,集合的大小会扩展,从而增加所有节点的资源需求。将网络的状态大小与单个机器的存储要求分离将减少验证节点的硬件要求。Utreexo引入了一个基于哈希的累加器来本地表示 UTXO 集,该集的大小是对数的。节点将包含证明附加并传播到交易的输入,该包含证明与累加器状态一起提供验证交易所需的所有信息。虽然包含证明的大小会导致网络流量增加,但这些证明可以在验证后被丢弃,并且聚合方法可以将其大小减少到可管理的开销水平。对截至 2019 年初的比特币区块链下载进行的模拟中,分配了 500MB RAM 用于缓存,proofs仅比其他下载量增加了约 25%。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考资料

[1] Utreexo: A dynamic hash-based accumulator optimized for the Bitcoin UTXO set
[2] utreexo: a dynamic accumulator for bitcoin state

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

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

相关文章

KubeSphere 核心实战之四【在kubesphere平台上部署Ruoyi-cloud项目】(实操篇 4/4)

**《KubeSphere 核心实战系列》** KubeSphere 核心实战之一(实操篇 1/4) KubeSphere 核心实战之二(实操篇 2/4) KubeSphere 核心实战之三(实操篇 3/4) KubeSphere 核心实战之四(实操篇 4/4&…

前端颜料盘??

前端颜料盘&#xff1f;&#xff1f; 一、原生颜料盘 <input type"color" placeholder"选择颜色">二、第三方开源库 Pickr&#xff1a; GitHub: https://github.com/Simonwep/pickr官方网站: https://simonwep.github.io/pickr/Pickr 是一个轻量级…

产品说明书怎么做?有模板吗?

产品说明书是一种重要的工具&#xff0c;它向消费者提供有关产品的详细信息和使用指南。一个好的产品说明书不仅可以帮助消费者正确地使用产品&#xff0c;还可以增加产品的销售量和用户满意度。那么&#xff0c;如何制作一份优秀的产品说明书呢&#xff1f;是否有现成的模板可…

ubantu操作hbase

到firefox中按照网站找以下文件进行下载 新建一个窗口启动节点 下载完成则回到下载目录 如果下载慢也可以将文件放在share中&#xff0c;然后拷贝到当前目录 进入到root 然后回到hadoop 解压到/usr/local 进入到local&#xff0c;将hbase改名 修改权限 配置环境变量 执行 回到h…

专业120+总分400+宁波大学912信号与系统考研经验电子信息通信集成电路光电

今年考研顺利上岸&#xff0c;专业课912信号与系统120&#xff0c;总分400&#xff0c;被宁波大学录取&#xff0c;回望这一年的复习有过迷茫和犹豫&#xff0c;也有过坚持和坚强&#xff0c;总结一下自己的复习得失&#xff0c;希望对大家复习有所帮助。专业课&#xff1a; 前…

何为蓝海项目?抖音老隋分享的temu项目算吗?

在当今快速发展的商业环境中&#xff0c;蓝海项目成为了人们关注的焦点。那么&#xff0c;究竟什么是蓝海项目?抖音老隋分享的temu项目又是否算得上一个蓝海项目呢?本文将就此进行探讨。 首先&#xff0c;让我们明确什么是蓝海项目 蓝海项目通常指的是那些市场潜力巨大、竞争…

转盘寿司 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 寿司店周年庆&#xff0c;正在举办优惠活动回馈新老用户。 寿司转盘上总共有 n 盘寿司&#xff0c; prices[i] 是第 i 盘寿司的价格。 如果客户选择了第 i 盘寿…

【游戏服务器部署】幻兽帕鲁服务器一键部署保姆级教程,游戏私服还是自己搭建的香

在帕鲁的世界&#xff0c;你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活&#xff0c;也可以为你在工厂工作。你也可以将它们进行售卖&#xff0c;或肢解后食用。—幻兽帕鲁 想要…

ThinkPHP5.0.0~5.0.23反序列化利用链分析

本次测试环境仍然是ThinkPHP v5.0.22版本&#xff0c;我们将分析其中存在的一条序列化链。 一道CTF题 这次以一道CTF题作为此次漏洞研究的开头。题中涉及PHP的死亡绕过技巧&#xff0c;是真实环境中存在的情况。 $payload; $filename$payload.468bc8d30505000a2d7d24702b2cda…

春季选品策略:如何在Shopee平台上脱颖而出

在Shopee平台上进行春季选品时&#xff0c;卖家需要制定有效的策略来吸引消费者的注意并提高销售业绩。本文将介绍一些关键的选品策略&#xff0c;帮助卖家在春季市场中脱颖而出。 先给大家推荐一款shopee知虾数据运营工具知虾免费体验地址&#xff08;复制浏览器打开&#xf…

MyBatis 源码系列:MyBatis 解析配置文件、二级缓存、SQL

文章目录 解析全局配置文件二级缓存解析解析二级缓存缓存中的调用过程缓存中使用的设计模式 解析SQL 解析全局配置文件 启动流程分析 String resource "mybatis-config.xml"; //将XML配置文件构建为Configuration配置类 reader Resources.getResourceAsReader(re…

探索ESP32 C++ OOP开发:与传统面向过程编程的比较

探索ESP32 OOP开发&#xff1a;与传统面向过程编程的比较 在嵌入式系统开发中&#xff0c;ESP32是一个强大的平台&#xff0c;可以应用于各种项目和应用场景。在编写ESP32代码时&#xff0c;我们可以选择使用面向对象编程&#xff08;OOP&#xff09;的方法&#xff0c;将代码…

数据结构—栈实现前缀表达式的计算

前缀表达式计算 过程分析 中缀表达式&#xff1a;&#xff08;1 5&#xff09;*3 > 前缀表达式&#xff1a;*153 &#xff08;可参考这篇文章&#xff1a;中缀转前缀&#xff09; 第一步&#xff1a;从右至左扫描前缀表达式&#xff08;已存放在字符数组中&#xff09;&a…

termux 玩法(一)

termux基础 termux基础玩法推荐国光写的手册&#xff1a;Termux 高级终端安装使用配置教程 | 国光 (sqlsec.com) termux安装 个人使用F-Droid安装的termux&#xff1a;Termux | F-Droid - Free and Open Source Android App Repository 基础知识 这些基础知识简单了解一下…

自定义模块加载(Python)

加载自定义模块&#xff0c;系统抛出“找不到文件”异常提示信息。 (笔记模板由python脚本于2024年01月28日 12:50:00创建&#xff0c;本篇笔记适合初通Python的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免…

链表——超详细

一、无头单向非循环链表 1.结构&#xff08;两个部分&#xff09;&#xff1a; typedef int SLTDataType; typedef struct SListNode {SLTDataType data;//数据域struct SListNode* next;//指针域 }SLNode; 它只有一个数字域和一个指针域&#xff0c;里面数据域就是所存放的…

万户 ezOFFICE wf_accessory_delete.jsp SQL注入漏洞复现

0x01 产品简介 万户OA ezoffice是万户网络协同办公产品多年来一直将主要精力致力于中高端市场的一款OA协同办公软件产品,统一的基础管理平台,实现用户数据统一管理、权限统一分配、身份统一认证。统一规划门户网站群和协同办公平台,将外网信息维护、客户服务、互动交流和日…

继电器模块详解

继电器&#xff0c;一种常见的电控制装置&#xff0c;其应用几乎无处不在。在家庭生活&#xff0c;继电器被广泛应用于照明系统、电视机、空调等电器设备的控制&#xff1b;在工业领域&#xff0c;它们用于控制电机、泵站、生产线等高功率设备的运行&#xff1b;继电器还在通信…

【论文收集】

Collaborative Diffusion for Multi-Modal Face Generation and Editing https://arxiv.org/abs/2304.10530 code&#xff1a;https://github.com/ziqihuangg/collaborative-diffusion 现有的扩散模型主要集中在单模态控制上&#xff0c;即扩散过程仅由一种状态模态驱动。为…

Docker的使用方式

一、Docker概念 Docker类似于一个轻量的虚拟机。 容器和镜像是Docker中最重要的两个概念&#xff0c;镜像可以保存为tar文件&#xff0c;Dockerfile是配置文件&#xff0c;仓库保存了很多第三方已经做好的镜像。 基本指令 查找镜像 docker search nginx 拉取nginx镜像 do…