比特人-比特币第一中文社区

 找回密码
 立即注册(register)
查看: 4857|回复: 48

block size,至关比特币生死的一个问题,高手进

  [复制链接]
发表于 2013-5-10 17:25:04 | 显示全部楼层 |阅读模式


上面为blockchain容量趋势图,取至http://blockchain.info/charts/bl ... cale=0&address=。注意这个尺寸比硬盘上实际存储的尺寸小一点,发帖时硬盘上的尺寸已经到8.42G了,因为里面包含了恢复和索引文件。有些人认为比特币数据块容量增长还不如计算机硬盘的增长快,但他们设错了前提。在比特币用户不增加,已有用户的每个人的比特币交易频率不增加的情况下,即每年交易总数增长,增速不增长的情况下,数据增速将不如硬盘增速,但比特币用户数量是爆发性增长的,而现今的硬盘尺寸基本要三到五年才翻倍。

比特币的价值取决于用户的认可度,这个认可度取决于用户总量和每个用户使用比特币的频率。全网平均每10分钟产生一个block,每个block包含了过去10分钟内全网用户的所有交易信息,当前每个block的尺寸为0.16MB左右。所有的block组成了blockchain。通过在blockchain.info查看历史图表可发现,比特币诞生四年来交易数量和比特币价值成正比关系,而交易数量取决于用户数量和每个用户使用比特币的频率。在比特币价格不断翻倍的情况下,每个block的尺寸大体上也会跟着翻倍(并不是比特币涨10倍,block尺寸就涨10倍,但翻倍速率总体上是相似的)。有些人认为,反正现在硬盘都是白菜价,就是涨到几十T,他也买得起硬盘。但比特币要升值,终究要走入民间,软件尺寸必须平民化。当数据总量增加到一定尺寸时,会对比特币的普及造成影响,从而导致比特币的价格增速放缓,比如以前一年翻10倍,当数据块为几十或几百G时,可能一年只能翻一倍了,因为很多人没法用比特币,一是硬盘空间的问题,二是对网速的影响。第一次运行就要下几百G的数据,有人愿意忍受龟速网络等一个月吗?即便下好了,每月的更新量又有几十G,并且下载的同时也在给别人上传,实际网络流量将超过下载量,甚至可能是下载量的几倍。这样一来,入门门槛将非常高,只会在it圈里流行,很难走入民间。比特币的总量是固定的(虽然还没挖完,但1千万和2千万区别并不大),只有用的人多,每个币的价值才高。


解决方案有两种:

维基百科说“中本聪预计,当数据量增大之后,用户会希望这些数据并不是全部储存在本地。为了实现这一目标,就需要采用引入Merkle tree机制。这种机制下,用户的本地客户端将能够主动剔除掉那些自己永远用不到的部分,比方说极为早期的一些比特币交易记录。”

我不知道这个效果怎么样,我看到有英文讨论说比特币客户端在1.0版之前会使用这个方式来解决数据块尺寸的问题。我担忧的问题有三,一是是否能取消第一次运行时的大量下载。二是究竟能瘦身多少,如果数据块10G,它瘦身100倍到100M,其实并未从本质上解决问题,因为以后数据量可能会是几十T。三是是否需要额外引入中心服务器来存储全部的数据块。

另一种方案就是现在已经在用的使用中心化服务器的方式来解决,比如electrum客户端。这已经偏离了比特币的初衷,中心服务器容易受黑客攻击,而p2p网络是难以攻击的。即便黑客不攻击服务器,用户连接服务器的过程其实也是暴露自身的过程。

这两种方案都是折中方案,当数据块尺寸已经大到要杀死整个比特币网络时,我们只能在安全性、匿名性方面做些妥协。英文论坛上也有关于数据块问题的讨论,但本人水平有限,英文也有限,基本看的云里雾里。要深入理解比特币原理,必须具备密码学、数学和编程知识,本人完全是个门外汉,对两种解决方案的内部实现原理并不了解,同时也许还有其他的方案,欢迎大家讨论。
发表于 2013-5-10 17:51:22 | 显示全部楼层
高手!可以把数据文件通过BT什么的共享后下载
发表于 2013-5-10 18:50:20 | 显示全部楼层
试试Multibit钱包。
发表于 2013-5-10 19:38:35 | 显示全部楼层
约定在未来某个特定block时对blockchain有余额的地址进行一余额统计,生成一个类似创世块之类的特殊块,然后交易记录再在这个块上进行生长。
发表于 2013-5-10 19:38:52 | 显示全部楼层
上面是本人设想的解决方案
发表于 2013-5-10 20:19:08 | 显示全部楼层
首先这个曲线不会一直保持这种角度,到一定时间峰值就会减缓。
其次,你想不出来不代表所有人都想不出来,更简单的方法会在你想象不到地方出现。
第三,也许这个的问题,比特币基金会和核心程序员们已经有了方案也不可知。
发表于 2013-5-11 01:12:14 | 显示全部楼层
各位诸神
比特币客户端:最新版本0.8.1和比特币MultiBit客户端这两个;
bitcoin0.8.1,等同步完毕数据,才可以使用。
multibit的好处就是可以不用等,是轻量级客户端,可以一起使用。建议大金额放在bitcoin0.8.1,然后放点零花钱在multibit上面
 楼主| 发表于 2013-5-11 02:55:30 | 显示全部楼层
icoin 发表于 2013-5-10 19:38
约定在未来某个特定block时对blockchain有余额的地址进行一余额统计,生成一个类似创世块之类的特殊块,然 ...

你说的意思是定期抹除所有交易记录,只留下一个保持所有带余额地址的数据块。这种定期重新制造初始块再生长的方式是一个办法。

计算了下,在最极端的情况下,若干年后,全世界有100亿人使用比特币,每人平均拥有带余额的地址有10个,那么就是1000亿个地址,一个地址长度34字节,比特币估计是64位或128位浮点数即8或16字节,按128位浮点数算,总共就是50字节。大概总共占用50*1000亿容量,即5TB容量,这个数字放在50年后看,硬盘和网络应该基本都可以接受。

其实容量会大于5T,原因有二。一是有人说每发送100个地址要重新备份钱包,因为比特币的找零机制,每发送一笔钱出去,会返回部分到一个钱包里的新地址,所以这些隐藏的地址也有余额。所以实际容量可能是5T的数倍。另外你的方案,这个只带地址和余额,不带交易记录的初始块会定期更新,在下次更新初始块之前,当前初始块会保留期间的交易记录。这个初始块不能更新太频繁,或许几个月或一两年一次,这样的话期间的交易数据量是天文数字,这都会存在用户硬盘上,发布在网络中。当然,或许那时已有更好的方式不存储那么多数据。总体来说这应该不是一个完美的方案,是否可行得读过比特币客户端源代码的高手才知道了。其实这种方式的一个关键问题是,比特币是否支持这种扩展,官方发布一个支持这种模式的客户端很容易,但可能无法融入旧网,或是旧网不支持这样的升级。不仅是比特币的设计上要支持这种扩展,而且需要能在不切断全网运行的情况下过渡。在计算机领域,不管是硬件行业还是软件行业,一个系统的扩展性都是有限的,初期的设计缺陷,后期往往无法升级,只能重做一个替代(其他山寨币的兴起)。
 楼主| 发表于 2013-5-11 03:21:13 | 显示全部楼层
比特币短线高手 发表于 2013-5-10 20:19
首先这个曲线不会一直保持这种角度,到一定时间峰值就会减缓。
其次,你想不出来不代表所有人都想不出来, ...

1. 早在曲线增速放缓时,比特币就会超过电脑和网络的承受力。现在每月增速大概1G,这是不计算比特币进一步流行的情况下的增速。按比特币现在的价钱增长情况,两年内数据块超过100G是绝对的,一年内超过100G也是可能的。这都是远超硬盘和网速增长的。到那时,新人难以加入,旧人觉得使用麻烦。这个问题已是迫在眉睫,官方似乎还没什么意识,若不尽早解决,比特币的自行毁灭也不远了。还有一点我在帖子里忘记说了,比特币客户端在启动时有一个检验数据块完整性的操作,基本要耗费几十秒,我很怀疑这是否和数据块容量有直接有关,如果数据块容量翻十倍,以后启动岂不得几百秒?注意我说的是程序界面载入前的时间,载入后更新数据块的时间还没算。

2. 解决方案肯定有,但都不太完美,这多少都会影响比特币的普及。我就是因为想不出来,所以发帖看看有没有高手提供线索。

3. 中文的比特币资料的中文比特币论坛的水平与英文的相比实在是不在一个层次,可惜本人英语不好,希望有高手去爬点英文网站,把官方的最新消息带回来。
 楼主| 发表于 2013-5-11 03:37:27 | 显示全部楼层
前面有人提道的MultiBit,也是解决方案之一。hy1hy2提到的零钱放MultiBit的想法不错。MultiBit和electrum的原理是一样的,由服务器提供数据块。

从我前面的分析看出,官方的客户端如果不修正的话,在不久的将来,最快一两年,最多三五年时间,就会因为巨额的硬盘和网络开销,变成基本无法使用的状态。到时第三方的,即使用中心服务器方式的客户端可能会是唯一选择。那时大钱放官方客户端,小钱放轻量级客户端的方式也不管用了,因为官方的客户端根本用不了了,硬盘已经装不下官方客户端了,数据块永远也同步不完。
发表于 2013-5-11 08:32:58 | 显示全部楼层
关于数据块大小的问题,前些天比特币开发小组一直在讨论这问题,还为此事分了两派,估计现在还没有好的解决方法
发表于 2013-5-11 11:12:52 | 显示全部楼层
可以把交易记录删除一些,比如只保持近两年的最新交易记录.

做一个支付宝一样的工具,或者干脆就直接用现在已存在的,财富通,百付宝之类的.

直接用这个工具交易,担保交易.

这样的话,速度快,不用时间等待,产生交易数据也非常少,只是充值或提现的时候有条数据.

而且可以把各种山寨币容纳进来,不管几种,几十种都可.只这一个工具就可以了.

这样就解决了,速度,安全,数据问题.
发表于 2013-5-11 11:33:10 | 显示全部楼层
有了这个工具,比特币的交易平台也没什么必要存在了,大家直接交易就可以了.只是换了个思维.

法币成了商品,比特币成了货币.
发表于 2013-5-11 12:58:48 | 显示全部楼层
比特币并不会成为信用货币,而最终会发展成为类似黄金之类的储备品,其现货交易不会很大,而越大多数情况都是作为保证金存在,以其作为保证金来使用类似于ripple之类的信用货币,所以当大多数人都持有比特币后,其交易记录的自然增长曲线就会呈现出对数特征。
发表于 2013-5-11 13:07:43 | 显示全部楼层
以其作为保证金来使用类似于ripple之类的信用货币
-----------------------------------
以后的趋势应该差不多就是如此.比特币只是作为一个数据存在数据库中.个人保存钱包.

绝大多数的交易及交易数据都在相应的支付工具(类似支付宝或者ripple)上完成.
发表于 2013-5-11 13:40:37 | 显示全部楼层
假设交易量还是现在这样的话。推测
block count = 24*60 = 1440
24 hour block size = 144mb
1 year block size = 144MB*365=52560MB=51GB
2140-2009=31 year = 1581GB=1.5 TB
发表于 2013-5-11 13:41:43 | 显示全部楼层
另外,关于下载更新这事因为国内外情况不一样,日本美国网速跟国内不能比,而且数据做种的基本也是国外IP,能快就奇怪了
发表于 2013-5-11 13:42:33 | 显示全部楼层
算错。
2140-2009=131 year = 7598GB=7.4 TB
发表于 2013-5-11 15:59:07 | 显示全部楼层
有没有可能比特币网络中的每个节点只记录自己地址的交易数据,然后在记录一部分其它人的数据;做一个索引表,网络保证一个钱包的数据至少有10个以上的备份,这样每个节点的数据量就会大幅度的下降,而且加入的人越多每个客户端的数据量就越小。
 楼主| 发表于 2013-5-11 16:03:16 | 显示全部楼层
icoin 发表于 2013-5-11 12:58
比特币并不会成为信用货币,而最终会发展成为类似黄金之类的储备品,其现货交易不会很大,而越大多数情况都 ...

只要解决比特币自身的技术缺陷,比特币就可以直接做为信用货币。ripple这东西中心化性质比较强,发行权和控制权似乎都在OpenCoin公司手上,而且公司自占25%股份,还美名说是用于调节网络,真是恶心死人,比起某些山寨币有过之无不及,就好比印钞厂自己留25%的钞票,说是以后调节经济用。比特币脱离了比特币基金会,脱了了交易所,也一样可以运行。谁都可以做个比特币的客户端软件,只要里面用的传输、校验协议符合全网的规范就能加入网络。如果ripple能完全脱离OpenCoin运行,你说的储备货币、信用货币的方案或许可以,不过25%的大庄永远是达摩克利斯之剑,如果OpenCoin使坏或是被政府控制,整个市场就会被搅乱。ripper的那些兑换功能,比特币都可以通过交易所实现,实时支付功能也可以通过第三方实现。
 楼主| 发表于 2013-5-11 16:03:39 | 显示全部楼层
refeng 发表于 2013-5-11 11:12
可以把交易记录删除一些,比如只保持近两年的最新交易记录.

做一个支付宝一样的工具,或者干脆就直接用现在 ...

交易记录是无法删的,因为是采用链式存储,后面的交易基于前面的交易,没有前面的,后面的交易就计算不出来。不过我觉得是有办法删的,这要懂原理的高手才知道了。

支付宝之类的方案可行,以后可能会成为一种辅助手段,用于一部分特殊的交易,但不是全面的解决办法,因为存在中心化的问题。比特币的主要优势在于避免了货币发行方滥发货币以及无通货膨胀,第二重要的优势是去中心化,只有去中心化才能匿名,只有匿名才能用于黑市交易、洗钱、逃税、贪腐用途。至于实现全球交易、无手续费什么的,这种p2p模式并不比基于中心化的银行、visa、paypal、lr之类的东西强。
发表于 2013-5-11 23:13:36 | 显示全部楼层
前几天在另一帖我提过类似的问题。我认为没什么能保全比特币全部特性(货币功能、无通胀、去中心化、保密、普遍使用等)的办法。只能等着比特币2.0、3.0.。。出现。那时现在的比特币未来看会象个玩具。倒不是说玩具就一无是处。我挖了一点当玩具。
 楼主| 发表于 2013-5-12 00:35:34 | 显示全部楼层
jb9802 发表于 2013-5-11 15:59
有没有可能比特币网络中的每个节点只记录自己地址的交易数据,然后在记录一部分其它人的数据;做一个索引表 ...

我感觉似乎挖矿、交易、软件启动等很多种活动,都需要访问那份总表,如果总表分散存储,访问总表的时间就会很长,比特币网络和客户机将瘫痪。当然,是否可行需要懂原理的高手才知道。
 楼主| 发表于 2013-5-12 00:59:58 | 显示全部楼层
挖煤矿工 发表于 2013-5-11 08:32
关于数据块大小的问题,前些天比特币开发小组一直在讨论这问题,还为此事分了两派,估计现在还没有好的解决 ...

能提供更多详情或相关链接吗?我都急了官方还不紧不慢的。从增长的图表来看,数据块太大的问题,起码存在有1年了。比特币的客户端总共也没多少行代码,修改这样一个功能,最多几天就搞定的事。

我觉得还有一种情况可能是,官方已经从软件源代码上看出,这是无法解决的问题,或者是能解决,但效果很不理想,比特币普及无望。然后基金会那帮人就打算把这消息捂着,等实在不得不公布的时候再公布,公布前那帮人自己先出货,完了消息一发布,比特币崩盘回到解放前。
发表于 2013-5-12 01:29:37 | 显示全部楼层
其实楼主的担心根本没有必要,不要说用我们一般人不懂的高深的结构升级技术了,即使采用我们现在人所共知现成技术,也可以在不花钱的基础上基本解决你所有大容量的担心,比如,我随便一想;
1.采用现成的高压缩比的压缩解压方法,把几个t变成几个g。

本版积分规则

小黑屋|Archiver|手机版|比特人-比特币第一中文社区

GMT+8, 2019-11-12 18:30 , Processed in 0.022237 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表