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

news2024/9/23 13:19:17

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.coloradmin.cn/o/1421116.html

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

相关文章

如何在DBeaver中重命名数据库

前言 DBeaver是一款强大的开源通用数据库管理和开发工具,支持多种数据库类型。在某些数据库系统中,你可以直接通过DBeaver的图形界面来重命名数据库名称。本文将详细介绍如何在DBeaver中进行数据库重命名操作。 重要提示: 对于不同的数据库…

SSD寻址单元IU对寿命的影响有多大?

随着存储技术的不断进步,固态硬盘SSD的容量正以惊人的速度增长,尤其是采用高密度QLC NAND闪存技术的大容量SSD,如30TB及以上级别的产品。QLC NAND由于每个单元能够存储4比特数据,从而显著提高了存储密度,但同时也带来了…

Web服务器之Tomcat

文章目录 Web 服务器软件简介资源分类访问流程常见的Web服务器软件 Tomcat简介使用步骤使用Tomcat注意事项部署项目的方式方式一方式二方式三 问题中文乱码黑窗口一闪而过启动报错 Web 服务器软件 简介 服务器:安装了服务器软件的计算机服务器软件:接收…

ssm跨域方案?

1、过滤器 2、xml配置 <mvc:cors><mvc:mapping path"/**" /> </mvc:cors>3、注解 CrossOrigin(origins “*”) 说明&#xff1a;三种方案&#xff0c;本质都是一样的、只是方式不一样罢了。

实现SERVLET生命周期事件

实现SERVLET生命周期事件 问题陈述 David Wong是Smart Software Developers的管理员,他希望创建一个应用程序在日志中记录请求和上下文对象初始化及向上下文对象添加属性的时间。同时,该应用程序应该还能在日志中记录删除上下文对象的属性及销毁请求和上下文时的时间。 解决方…

二进制部署promethues

1、定义&#xff1a;promethues是一个开源的系统监控以及报警系统&#xff0c;整合zabbix的功能&#xff08;监控系统、网络、设备&#xff09;&#xff0c;promethues可以兼容网络、设备、容器监控、告警系统。因为其与k8s是一个项目基金开发出来的产品&#xff0c;天生匹配k8…

设计模式第2篇|策略模式

&#x1f680; 作者简介&#xff1a;程序员小豪&#xff0c;全栈工程师&#xff0c;热爱编程&#xff0c;曾就职于蔚来、腾讯&#xff0c;现就职于某互联网大厂&#xff0c;技术栈&#xff1a;Vue、React、Python、Java &#x1f388; 本文收录于小豪的前端系列专栏&#xff0c…

Web3技术革新:重新定义在线体验

互联网的不断演进塑造了我们的数字生活&#xff0c;而Web3技术的涌现正带来一场前所未有的变革。本文将深入探讨Web3技术的创新&#xff0c;以及它如何重新定义和提升我们的在线体验。 Web3技术的基本概念 Web3是互联网的第三个时代&#xff0c;它将去中心化、区块链、智能合约…

Mac苹果电脑玩幻兽帕鲁 Crossover玩Windows游戏

​​ 《幻兽帕鲁》&#xff08;英文&#xff1a;Palworld&#xff09;是一款近期在 Steam 爆红的动作冒险生存游戏&#xff0c;游戏设置在一个居住着「帕鲁」的开放世界中&#xff0c;玩家可以战斗并捕捉帕鲁&#xff0c;也能用它们来建造基地、骑乘和战斗。 不过目前《幻兽帕…

MATLAB绘制电磁场

MATLAB绘制电磁场举例: clc;close all;clear all;warning off;%清除变量 rand(seed, 100); randn(seed, 100); format long g; m12 for k1:m for j1:m if k1 V(j,k)1; elseif((j1)|(jm)|(km)) V(j,k)0; else …

强敌环伺:金融业信息安全威胁分析——整体态势

从早期的Zeus和其他以银行为目标的特洛伊木马程序&#xff0c;到现在的大规模分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;再到新颖的钓鱼攻击和勒索软件&#xff0c;金融服务业已成为遭遇网络犯罪威胁最严重的行业之一。金融服务业的重要性不言而喻&#xff0…

暴雨受邀出席太原市人工智能行业协会年度大会

2024年1月26日&#xff0c;太原市人工智能行业协会第二届二次会员大会暨2024年年会成功召开。太原市委、市工商联、市大数据应用中心、市政协经济委员会以及太原市科技局的专家领导&#xff0c;与三百多名来自各行业的人工智能企业家和协会会员一同参加了本次盛会&#xff0c;共…

ARCGIS PRO SDK 数据库属性域设置与获取

一、数据库创建属性域。 sdk3.1 以下的开发版本不支持&#xff0c;不能使用 Pro SDK 向域添加新的编码值&#xff0c;可以使用地理处理工具&#xff1a; 创建属性域 Dim va As IReadOnlyList(Of String) Dim gpResult As ArcGIS.Desktop.Core.Geoprocessing.IGPResult Dim env…

gitee建库并git

箴言&#xff1a;书山有路勤为径 文章目录 前言一、gitee导入ssh二、gitee建库三、克隆到本地四、关联本地工程到远程仓库五、push流程总结 前言 nodejs每天的学习都有代码产出&#xff0c;转念一想不如在码云上面搞个仓库&#xff0c;也经历了些许波折&#xff0c;往常也建了…

论文阅读-MapReduce

论文名称&#xff1a;MapReduce: Simplified Data Processing on Large Clusters 翻译的效果不是很好&#xff0c;有空再看一遍&#xff0c;参照一下别人翻译的。 MapReduce:Simplified Data Processing on Large Clusters 中文翻译版(转) - 阿洒 - 博客园 (cnblogs.com) 概…

Powershell Install telegraf 实现Grafana Windows 图形展示

influxd2前言 influxd2 是 InfluxDB 2.x 版本的后台进程,是一个开源的时序数据库平台,用于存储、查询和可视化时间序列数据。它提供了一个强大的查询语言和 API,可以快速而轻松地处理大量的高性能时序数据。 telegraf 是一个开源的代理程序,它可以收集、处理和传输各种不…

Dragons

题目链接&#xff1a; Problem - 230A - Codeforces 解题思路&#xff1a; 用结构体排序就好&#xff0c;从最小的开始比较&#xff0c;大于就加上奖励&#xff0c;小于输出NO 下面是c代码&#xff1a; #include<iostream> #include<algorithm> using namespac…

React16源码: React中LegacyContext的源码实现

LegacyContext 老的 contextAPI 也就是我们使用 childContextTypes 这种声明方式来从父节点为它的子树提供 context 内容的这么一种方式遗留的contextAPI 在 react 17 被彻底移除了&#xff0c;就无法使用了那么为什么要彻底移除这个contextAPI的使用方式呢&#xff1f;因为它…

什么是Vue Vue入门案例

一、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套 构建用户界面 的 渐进式 框架 Vue2官网&#xff1a;Vue.js 1.什么是构建用户界面 基于数据渲染出用户可以看到的界面 2.什么是渐进式 所谓渐进式就是循序渐进&#xff0c;不一定非得把V…

leetcode hot100分发饼干

在本题中&#xff0c;我们需要采用贪心算法。考虑局部最优解&#xff0c;然后再考虑全局最优解。 比如&#xff0c;在本题中&#xff0c;我们先把胃口和饼干排序&#xff0c;排序之后我们可以采用用大饼干来喂大胃口的孩子&#xff0c;如果此时能满足&#xff0c;那么计数加一…