对于分叉的再详解

vatten Yellow v2 · 2016-02-07 13:28 · 309 次点击 · 4.33055334

大多数人对分叉是没有明确的概念的,只是听说和想象。其实就算我在比特币行业呆了5年了,也不敢说彻底搞清楚了。看似一个简单的概念,里面涉及的逻辑关系相当复杂,在这里我再重新理一下思路

什么是分叉?

首先重温下比特币的基本工作原理,前一阵那个账簿的例子非常好,借用一下

矿工挖矿就是大家抢着算一道题,谁先算出来谁就获得记账权,并在一页新的记账纸上记入第一笔交易,给自己的地址发25个币,然后把十分钟内网络上传播的其他交易都依次写到这页记账纸(区块)上,然后通过传真发给大家,大家都收到这页纸以后,用规则验证,合格后钉到每个人的账簿上(区块链)成为最新的一页

每一页记账纸必须遵循一定的规则,比如说矿工不能收入超过25个币,总共不能超过一千行等等。这些规则由各人手中的规章制度(客户端)来保证。不符合这些要求的记账纸就被扔掉了,不会被钉到账簿里去,只要大家都运行同样的客户端,有同样的规则,那么所有人手里的账簿就基本都是一样的

为什么说“基本”?因为网络上信息的传输需要被一个个节点不断转发,转发需要时间,在不同的地方就会有不同的“真相”,这就引出了分叉的概念

规则相同时的分叉 – 孤立块

当矿工甲算出了答案,写了一页记账单A,并广播到网络中,几乎同时在离他很远处的另一个矿工乙也算出了符合要求的答案(符合要求的答案不止一个),写了一页记帐单B,向网络中发送。这时因为发送信息需要时间,靠甲近的人,账簿最新的一页就是甲的记账单A,而靠乙近的人的账簿最新一页就是乙的记账单B

这个时候,比特币网络就已经分叉了,因为对两部分人来说,有着不同的账簿,也即不同的真相,分叉就是说网络的各个部分传播着不同的真相。但这种分叉是暂时的,因为大家在钉账簿的时候,有一条规则是只认最多页数的账簿(最长的链),迟早有一个链会变成最长的

如果靠甲近的那一侧的人过一会儿又算出了一道题,并添加了一页新的记账单C,而靠乙近这一侧的人没有同时再解出一道题,那么不到1分钟甲那边两个新的记账单A和C就都发到乙这一侧来了,这时候乙这一侧所有的人就都会认同甲那一侧的记账单(因为比乙这一侧的多),从而把乙这一侧的记账单B从他们原有的账簿上撕掉,而把AC两张记账单装订进账簿,在AC的基础上继续添加记账单。这就是孤立块,乙那道题白算了,他写的记账单B被孤立了而无效,他只能在AC的基础上继续添加记账单

这种分叉偶尔会出现,但最终会以撕掉某张记账单而统一起来,所有人最终仍然持有一样的账簿。这就是说,如果大家的客户端规则都相同,那么分叉仅仅会导致孤立块,最终会消失

通常比特币网络中,经常存在多种不同版本的客户端,当甲和乙使用的客户端不同,也即甲和乙验证账簿的规则不同时,发生的情况就复杂的多了,又根据新规则的不同而产生不同的后果

规则不同时的分叉 – 硬分叉 和 软分叉

硬分叉是指原来的规则被放宽了

继续之前的AC账簿。比方说记账单原来最多可以记录1000笔交易,但现在甲和他的朋友们升级了软件,使用了一套新规则,最多可以记录2000笔交易。这时甲算出了一道题获得记账权,他写了一页新记账单D,里面有1200笔交易,并发送给其他人。甲的朋友们因为都升级了新客户端,都接受这张记账单,并在这个基础上继续添加新的记账单,他们的账簿都是ACD

但乙和他的朋友们仍然运行着老的软件,认为这个记账单记录了超过1000笔交易,是无效的,所以他们就扔掉这张而继续在原来的基础上添加记账单,写了一个记账单E,里面有800笔交易,他的账簿是ACE

表面上看起来这个分叉和之前一样,也是两边有着不同的真相,那是否随着甲再次胜出,乙的E记账单会被孤立呢?

假设分叉后甲那边算力强,又算出一笔记账单F,包含500笔交易,于是甲一侧就成了ACDF,然后发到乙这一侧。乙这一侧一看,甲那边的账簿页数多,应该转过去。但仔细一看,里面的D含有1200笔交易,按乙的规则来说是非法的,所以乙仍然拒绝F记账单,在自己ACD的基础上算下一个账单G。自此,甲那一侧的账簿因为包含了一个对乙来说非法的页,此后甲挖的块就永远不会被乙一侧承认了,网络就永远分叉了

假设分叉后乙这边算力强,先算出一笔记账单G,包含500笔交易,于是乙一侧就成了ACEG,然后发到甲那一侧。而甲一侧的账簿此时只有ACD,乙这边的账簿页数多,应该转过去,仔细一看,里面的E和G都是符合自己的新规则的,含有不到2000笔交易,因此甲一侧就撕掉了自己的D记账单,改为在ACEG的基础上挖矿

可见,对于一个规则放宽的变化(也即硬分叉)来说,如果升级方有大多数算力支持,结果就是分为两个互不兼容的链各自延长。而如果升级方没有大多数算力支持,结果就是挖出来的每个不符合原来规则的块都被孤立掉了,不会产生两条链

软分叉则是指原来的规则被收紧了

回到之前的AC账簿。比方说记账单原来最多可以记录1000笔交易,但现在甲和他的朋友们升级了软件,使用了一套新规则,最多只能记录500笔交易。这时乙算出了一道题获得记账权,他写了一页新记账单D,里面有400笔交易,并发送给其他人。甲的朋友们因为都升级了新客户端,都接受这张记账单,并在这个基础上继续添加新的记账单,他们的账簿都是ACD

乙和他的朋友们因为这个记账单里记录了小于1000笔交易,也是有效的,所以他们就装订这张记账单,并在ACD的基础上添加记账单,两侧一致

随后乙一侧成功写了一个800笔交易的记账单E,发送到网络中,这时甲一侧一看,E是不符合自己要求的,就扔掉了,仍然在ACD基础上添加下一个记账单F。网络分叉了,甲一侧是ACDF,乙一侧是ACDE

假设分叉后甲那边算力强,又算出一笔记账单G,包含500笔交易,于是甲一侧就成了ACDFG,然后发到乙这一侧。乙这一侧一看,甲那边的账簿页数多,而且都符合要求,就把自己的记账单E撕掉了,账簿改为ACDFG。

假设分叉后乙这边算力强,先算出一笔记账单H,包含400笔交易,于是乙一侧就成了ACDEH,然后发到甲那一侧。而甲一侧的账簿此时是ACDF,乙这边的账簿页数多,应该转过去,但仔细一看,里面的E是不符合自己的新规则的,含有超过500笔交易,因此甲那侧就拒绝接受记账单H,继续在ACDF的基础上挖矿

可见,对于一个规则收紧的变化(也即软分叉)来说,如果升级方算力强,则算力较少的一方所挖的块会被孤立,而不会导致产生两个链;如果升级方只有少数算力,网络就会分为两个互不兼容的链各自延长

这里只是说了两个最简单的规则放宽和规则收紧的情况,还有其他更复杂的情况暂不分析。因为规则放宽(硬分叉)和规则收紧(软分叉)都可能在某种条件下产生互不兼容的链各自延长,所以还不如不要谈这两个容易引起误解的定义,而直接讨论互不兼容的链在哪些情况下是危险的

看了这个分析就会明白7月4号那次互不兼容的链正是通过软分叉触发的,因为软分叉升级方以为自己有多数算力,但实际上因为SPV挖矿导致只有少数算力,结果占有大多数算力的未升级方产生了互不兼容的链。但那次事故并没产生很大危险,因为网络的共识是在升级一方的。发现事故后,算力主动切换到升级一方去就让那个不兼容的链自己死掉了(没有足够算力支持的链能挖出一个块的时间恐怕要以年计)

可见最关键的还是在于共识,只要网络有共识,就算出现互不兼容的链,也不会有什么大问题。其实算上其他各种情形,网络上会突然出现不兼容的两条链的可能太多了,在这种情况下都是依靠多数人的共识来决定矿池算力会最终支持哪个链,而不是软分叉或硬分叉之类定义,归根到底是人在做决策

cndx medium avatar
1

cndx Yellow v    25 天前   via Android

楼主辛苦了

请详细科普一下SPV挖矿分叉那件事可以吗?我觉得会很有参考价值。

另外这个分叉很快解决,应该和超90%的算力共识有关。进入错误分叉的算力,估计不会超10%。假设有25%甚至50%的算力进入分叉,那将会有分裂风险。

其实自然情况下同时发布各占一半而孤立区块的情况是较常见的,极其小只有一两个区块的小分叉,差不多一两会有一两次。

这种是系统的正常现像,也是让重要交易6确认的原因。
应该不要归为分叉,给其个单独的新定义较好。以免新人担心,“什么比特币每天都有分叉?!”
会吓到新人的。
比如新名叫:微分叉,小碰撞,链刺。……

比特币感谢地址: 1DogeKd9JrUNzFaLEyWAVxCVXSvWxe6sAm
vatten medium avatar
2

vatten Yellow v    25 天前

@cndx

7月4号分叉的全文通报
https://bitcoin.org/en/alert/2015-07-04-spv-mining

没太多时间,试着译几段


概述

如果你收到的比特币是在2015年7月15日12点之前确认的,它们是安全的
但是,一次计划中的升级出现了问题。在这个时间点之后接收到的比特币,建议再等待30个确认

什么时候才能恢复正常?
问题出在矿工在创建无效的区块。有些版本的软件可以探测到这些区块是无效的并拒绝它们,但另一些版本的软件认为它们是有效的,所以它们所显示的交易确认是不真实的

到底发生了什么事儿?

概述:一些矿工目前在产生一些无效的区块。几乎所有的客户端软件都会在某些条件下接受这些无效的区块

到目前为止,有两次超过两个区块以上的分叉

七月四号凌晨2点到3:50,6个区块
七月五号晚21:50到23:40,3个区块

接下来详细说明到底是怎么回事

几个月以来,越来越多的算力已经表示支持实现BIP66的DER签名格式。BIP66的规则之一是,当过去1000个块里有950个块是版本3的区块(也即包含DER签名格式的区块)时,所有升级的矿工将拒绝版本2的区块

2015年七月四日凌晨,这个950/1000的条件被触发了。此后,一个小矿工(没有更新的5%矿工之一)挖出了一个版本2的区块,这是可以预料的。不幸的是,此时几乎网络中百分之五十的算力正在用SPV模式挖矿(即只验证区块头),并且在这个不合要求的区块上添加了新区块

注意这些做SPV模式挖矿的矿工之前已经明确表示会执行BIP66规则。但他们没有这么做,导致几个大矿工迄今损失超过5万美元

所有认为区块是有效的软件将有风险:显示交易已经确认但实际上并没有确认。这尤其影响到轻量级客户端,而旧版的全节点也都因为BIP66的实施而降级到了轻量级客户端的安全性

建议的修复方法,是让所有矿工停止SPV挖矿并回到全验证的方式(起码暂时这么做)。如果他们这样做了,Bitcoin.org将把目前建议的等待30个确认改为小一些的数值


这篇文章反复读来,措辞上仍有很多模糊的地方,有些数字我怀疑是不对的因为逻辑上说不通。甚至7月4日分叉这件事本身都在社区内没有被广泛提及,可见信息的透明度较2013年分叉时已经有大幅度下降,核心程序员们都试图把事情掩盖起来

比如说对于未升级的矿工挖出来的那些区块,文中普遍采用Invalid(无效的)区块的说法。但根据软件工程原则的向后兼容性,旧版软件所产生的区块应该始终是有效的,只能说不兼容新版软件,不能说无效

另外就是SPV挖矿的问题,因为SPV挖矿节点不对区块做详细验证,因此这些旧版格式的区块都被SPV节点认为是有效的,这就导致SPV挖矿的节点即使升级到新软件,其算力仍可以既站在升级前节点的一边,也站在升级后节点的一边,导致网络中真正属于升级节点的算力远小于表面上看起来的那样。比如说SPV算力占50%,而旧节点算力占5%,新节点算力占45%,那么SPV算力加旧节点算力就占了55%,从而可以保证把旧矿工挖的旧版的区块写入区块链并在其上延长。当然了SPV算力加新节点算力会达到95%,但这是意料之中的,问题都是出在意想不到的地方

但SPV挖矿又是很难杜绝的,这是因为挖矿节点验证区块需要时间,少的几秒,多的十多秒,这个时间导致了算力的浪费,因此必然有些矿工会在简单验证区块头正确后就开始挖下一个块

cndx medium avatar
3

cndx Yellow v    24 天前   via Android

@vatten 太感谢了。新年快乐!
您需要设个感谢地址,知道您币多,但是那是大家的感谢您翻译心意。

经过您这么说,我好像有点印象了。
当时好像是说有分叉,我当时还去区块链上查询了下。是有6个区块被孤立了。

其实看了下被孤立的块,很久才出一个且没有什么交易。那是我没有深入了解,以为是某些矿池配置错误了。原来还有这么一岀。

几个点:
1,其是95%占比才启动分叉规则
即这个是满足90%2MB共识的思想的。正是在此共识下才确保了分叉时没有分裂为两种币。想一想,假设是75%就匆匆软分叉,加上SPV,那很可能两方算力接近,那就惨了。完全可能分裂为两种币。

2,国内矿池技术层面的落后
首先,采用SPV区块头不验证区块就去挖新矿,虽然结省了一点点时间,但是对币圈有害,且增加了在错识链上去挖矿的风险。即出来混早晚要还的。总是采用SPV比其他矿工多挖币,那么自然可能会有个挖到孤立块的报应。
其次,平时SPV可以,但面临分叉时,应该切换到普通验证挖矿,然而国外矿池几乎都切换了,而国内矿池几乎没有,才出现损失。
最后,遇到问题时的应急能力差。按道理说在软分叉接近95%面临分叉时,应该高度集中,提前做好各种可能的应急方案。若出现问题立即修复。然而国内矿池,估计都没有做,而是等出问题了才应急开始解决,结果消耗了好几个小时时间才修复回到正常挖矿。

这损失的5万美元,不知是怎么计算出来的。但是不能完全去怪软分叉方案本身。其它矿池为何没有损失?可以理解成自己挖矿技术不行的学费。

国内矿池只重视算力量的累积,技术上只重视怎么挖更快。根本就不重视系统安全。应该现在国内矿池还多在用SPV吧。那么呼吁吃一堑长一智,在接近90%临界时,暂时不要使用SPV,其实只区块头,和验证整个区块再打包是节省时间但也节省不了太多。竞争是相对的,看占比,大家若都SPV和大家都验证,占比是一样的。分叉附近不要用SPV利于币圈也利于降低你自己风险。

比特币感谢地址: 1DogeKd9JrUNzFaLEyWAVxCVXSvWxe6sAm
cndx medium avatar
4

cndx Yellow v    24 天前   via Android

注意这些做SPV模式挖矿的矿工之前已经明确表示会执行BIP66规则。但他们没有这么做,导致几个大矿工迄今损失超过5万美元

发现个问题矿工“诚信”问题。

其实这些矿工虽然打包支持3版本的区块的投票,但是其采用SPV模式挖矿,即其实质支持的是2版本。
即其不诚信。
明明口头说投票给蔡英文,背地实际投票时却投票给朱立伦,或反之。

这5万美元也可以看作是对这些“不诚实”矿工的惩罚。
当然不是说矿工的人品不诚实,而是其SPV没有技术不懂如何去投票,即文盲,投错了。因此这5万美元的学费下要好好学习提高素质了。

一一一一一一一一一一一一一一一一

难怪Mark前期说比特币失败的原因理由之一,就是说被我们中国掌握大多数算力。其实不是针对我们国家的攻击,而是对我们国内矿工素质的担心。就像假设国家的大选投票大权掌握在一批文盲手中,你会放心吗?

其实Classic的75%就强行硬分叉,就可以看作是测试中国矿工素质出的一道题。

国内矿池大家拥护90%2MB共识避免分叉,就算通过考试了,说明我们在提高,继续由我们国矿池维护。否则这么明显75%分叉分裂币圈都看不懂,都去支持。那么加文和Core会重新联合起来呼吁POW转POS。那时POW很少粉忠和应用只有算力和炒作者,那POW版BTC就可能成为山寨币,而POS版BTC有众多持币者和比特应用支持而成为主比特币,矿机成为币圈历史。

别以为加文和Core真那么水火不容,说不定这一切,都是提前商量策划好的一次考验矿工是否容易被媒体忽悠,而是否能做出正确判断的联合考验。

我们早期提出90%2MB共识已经获得加分了,望矿业和中文币圈继续坚持90%2MB共识,别去支持任何有分裂可能的Classic版本。否则因分裂担忧,大家共识到Core+POS2MB了,到时整个矿业归零,后悔都来不及了。

不是威胁,只是基于客观事实的警示。真到分裂边缘时你怎么能确保币圈没有共识到POS的可能。本来矿工是天然空军,抛币交电费做空,就已经很令币圈的有些人很不满了,因此矿工要老老实实低调挖矿赚钱,别去搞分裂,好好做好自己投票职责(别SPV伪投票),因自己不诚信SPV而损失了5万美元那也要自己为自己负责,而不是去黑人家高达95%的安全升级方案。错不在他们,假设其若设75%就分叉才错在他们。

对正常的95%设定的合理分叉有很多怨言,而对75%就分叉分裂的Classic假设却反而去大力支持,一个简单的BlockStream控制Core的阴谋论和扩容迫切论即能误导让矿工相信,如此地善恶不分,只看权威人不看代码,如何放心将整个币圈的投票权交给我们中国矿工。

上面这些只要我们自己知道即可,不要翻译给国外人看了,万一我说对了漏题了不好,国内矿确实需要考验。SPV的好处,难道国外矿池不知不会吗?但人家素质高而觉得消耗那几十秒验证区块是他们的责任。且矿工人人都验证那么大家都延后几十秒再竞争,即不会有不公平。而部分用SPV的矿池是对其它矿池的不义。
靠5万美元给其它矿池,算是补偿吧。可是就像国内交易平台免手续费对交易引起的损害一样,矿业会依旧去用SPV,一切只向利益看齐的中国币圈希望在2016年能有所改变。

注意:算力越大,责任越大,而不是权力越大。
呼吁反对75%分叉分裂的Classic版本
http://BitQT.com

比特币感谢地址: 1DogeKd9JrUNzFaLEyWAVxCVXSvWxe6sAm
vatten medium avatar
5

vatten Yellow v    24 天前

@cndx

你说的矿工应该为分叉负责的逻辑很奇怪:银行升级软件,出了安全漏洞搞丢了刷卡终端商户的钱,是因为商户自己没读懂银行的说明书,而不是银行的责任?

你可以去看talk论坛,多数共识决策,也就是类似于90%这个概念在9月份加拿大会议后就有不少人呼吁了,结果期盼了几个月,到了香港会议上,那批与会者除了Jeff,都是一个字都不谈共识而各谈各的高技术发明,显然都是各有各的算盘,根本就不把共识当回事

MIKE更清楚情况,在那次会议还没开之前他就预言了那个会根本不可能达成任何共识。在那次会议之后我才开始注意到core内部的分歧已经很大了,然后才有点明白为什么一年前Gavin突然发疯一样搞了个XT让社区大骂他分裂。可想而知,当时在core内部的分歧已经是难以调和的了,估计Gavin看到分歧是很难长久避免下去的,不如先早作准备,就出了个20M方案,知道不会被大多数不明真相的群众接受,但由此可以给另外两个不主张扩容的程序员施加压力,希望他们在竞争压力之下能同意core代码在目前的基础上扩容

但即使core这一次扩容到2MB,从长期来看,理念的差异仍然存在,blockstream是希望最好个个区块都满,然后大多数交易都走他们的侧链和光速网络,而Gavin则是希望按照中本聪的白皮书,实现点对点的电子现金功能

vatten medium avatar
6

vatten Yellow v    24 天前

@cndx

看到你谴责矿工,我明白你的意思,是说核心程序员是更值得信任的,出了问题肯定是因为自己不懂。但比特币的精神可是不信任任何人的,只信任自己,最好还是增加自己的知识搞清楚情况

之前我解释的仅仅是最简单的两类分叉,即规则放宽和规则收紧,其实有很多其他情况

继续之前的AC账簿。比方说记账单原来最多可以记录1000笔交易,但现在甲和他的朋友们升级了软件,最多可以记录2000笔交易,然后甲算出了一道题获得记账权,他写了一页新记账单D,里面有1200笔交易,并发送给其他人。甲的朋友们因为都升级了新客户端,都接受这张记账单,并在这个基础上继续添加新的记账单,他们的账簿都是ACD

乙和他的朋友们仍然运行着老的软件,要求每张记账单只能最多1000笔交易,看起来这张记账单非被乙拒绝不可了。。。可奇怪的是,当乙和他的朋友们收到了甲发过来的D记账单后,怎么数里面都只有600笔交易,所以他们认为是有效的,装订在AC基础上,也成了ACD

最多1000笔变成最多2000笔,属于规则放宽,按之前的分析,如果甲算力占优,甲的块都不会被乙接受,是会产生不兼容链的。但此时却被乙接受而不产生分叉,为什么?

因为乙收到的记账单其实是双层纸,乙只看到了上面的交易,另外600笔交易是写在夹层里的,必须用刀切开才能看见

随后乙一侧成功写了一个800笔交易的记账单E,发送到网络中,这时甲一侧一看,是单层的纸,不符合双层纸的新记账单格式,这时候甲就把乙的记账单扔掉而继续算自己的记账单(旧节点挖得块被孤立)

这就是SEGWIT软分叉的思路实现规则的放宽。可以看到,这种修改虽然是以软分叉的方式实现,但实际上需要修改整个系统架构,重新定义记账单格式,以便使旧节点看不出有什么异样却又能容纳更多交易

你可能会立刻想到,用这种办法的时候,如果甲依然接受乙旧格式的记账单,那岂不是双方互相兼容,就成为你所说的那种完美软分叉方案了?我觉得从软件工程的角度来看,应该是可以实现的,比如说可以在新链的架构设计中允许旧区块的存在。不过这要涉及的架构和编程量就更为庞大了。而且升级的目的本来就是为了所有节点都升级到新架构,为了实现这种兼容性专门构建了一个架构,而全升级完了以后又完全用不到,谁会去做这么吃力不讨好的事呢,只需简单争取共识让大家全部升级即可

如果基于共识是前提的考虑,我认为这种方法比起简单的在有共识的情况下用硬分叉实现大的记账单要差。因为所需变动太大,而得到的好处只不过是多了个夹层,有了这个复杂结构以后,未来的扩容都会变得更加困难

cndx medium avatar
7

cndx Yellow v    23 天前   via Android

@vatten

你说的矿工应该为分叉负责的逻辑很奇怪:银行升级软件,出了安全漏洞搞丢了刷卡终端商户的钱,是因为商户自己没读懂银行的说明书,而不是银行的责任?

【答】1,首先不是出了安全漏洞,其它大多矿池都没有出问题,仅仅是SPV的一些只区块头,不验证区块的投机矿池出了问题。
2,不是银行给用户说明书,而是让用户自己去学习了解,若用户自己投票95%同意支持升级再升级。而一些用户根本没看明白直接就投票同意了,达成95%分叉升级后,才发现自己投的是假票,明明自己不能支持新版本,而自己强行投了支持。那么不应该用户自己为自己乱投票自己为自己负责吗?
3,核心开发与矿工的关系,不是银行与储户的关系。核心开发没有为矿工负责的责任。核心开发只为整个币圈负责,其不是只为矿工服务。你没有准备好升级,完全可以6%的算力投票不支持,来延后升级,而你投票说支持了,却实际不能支持,那是矿工自己的失误。

MIKE更清楚情况,在那次会议还没开之前他就预言了那个会根本不可能达成任何共识。

只是没有达成扩容的共识而已,却成功达成了先不着急扩容,等等看隔离验证软分叉的共识。

币开发者各持己见,没有问题,这不是分裂。而是百家争鸣。是好事。真有大家都认同的事时,有必要时,是会达到90%共识的。

而一些人出来搞XT,搞75%分叉的Classic甚至暗地支持51攻击,那才是分裂币圈。那才是对币圈有害。

比特币感谢地址: 1DogeKd9JrUNzFaLEyWAVxCVXSvWxe6sAm
vatten medium avatar
8

vatten Yellow v    23 天前

@cndx

经济损失主要是看合同怎么写而不是辩论,目前矿工和程序员没有签合同属于合作关系,那么导致的损失如果程序员担,说明程序员是负责的值得信任的,如果是矿工自担,下次矿工就要考虑雇佣自己的程序员了

cndx medium avatar
9

cndx Yellow v    23 天前   via Android

楼上说的好像矿工和程序员之间有合同似的,有吗?没有。为何其他大多矿工没损失,部分矿工因自己SPV错误引起的损失,就要勇于承认自己错误,自己承担。

说的好像程序员是为矿工服务似的,是吗?不是,程序员为整个币圈服务,而非矿工。

说的好像矿工会给程序员发工资似的,发吗?不发,正是因不发,人家也要生活,才成立BlockStream等公司。假设矿工大量捐赠,他们衣食无忧,有必要不全职做开发者么?

比特币感谢地址: 1DogeKd9JrUNzFaLEyWAVxCVXSvWxe6sAm
vatten medium avatar
10

vatten Yellow v    23 天前

@cndx

归根到底,没有这些程序员在这里瞎搞,是不会出现7月4号这种事故的。作为一个矿工,我听那些程序员的,反而还丢了钱,也没得到任何好处(BIP66仅仅是为了Blockstream自己的产品在做铺垫,对一般比特币用户毫无帮助),我要继续听这些程序员的,我不是得精神病了吗

社区的一个很大问题就是在于有关软件的盲目升级上。在起初,比特币是中本聪和Gavin一批人在带着搞的,大家都认同他们的带领,可自2012年以后,新的比特币版本的开发主要都移到了Blockstream那几个程序员那里了,而Gavin去做其他一些更重要的事情了,比如和监管部门沟通。而那些程序员到底开发了什么,有哪些是真正对比特币有好处的,你能给列个单子么?事实上大多数人仍然延续中本聪时代的习惯,有新版本出来就升级,以为都是为了比特币好的,可实际上他们根本就不知道自己到底升级了啥东西,0.8的硬分叉和去年七月的硬分叉都是教训。估计等大家都明白过来以后,就会改掉乱升级软件的坏习惯了

程序员的激励确实是个问题,所以被风投抓住了这个机会猛投资Blockstream,但那些风投都是想靠着比特币来发财的,早年比特币一钱不值的时候那些人都在哪儿呢?所以最终应该是矿工负责给程序员资助,这也符合矿工自身的利益。其实原来挖矿的都主动把一部分收入捐给挖矿软硬件生产者,只要同样赞助部分给程序员,就可以解决问题

BITMAIN笛笛 medium avatar
11

BITMAIN笛笛 Yellow v    23 天前   via iPhone

@vatten 言论点赞!
能加下微信吗?

比特币感谢地址: 1PiN5as2g3T1bFaekXpVcYrsrWsNDionUJ
vatten medium avatar
12

vatten Yellow v    23 天前

@BITMAIN笛笛 多谢支持,我微信只是私用,有关比特币的事论坛留言即可

BITMAIN笛笛 medium avatar
13

BITMAIN笛笛 Yellow v    23 天前   via iPhone

@vatten QQ和电话呢?有些事情想联系你聊一下。我的QQ:1239911824 感谢!

比特币感谢地址: 1PiN5as2g3T1bFaekXpVcYrsrWsNDionUJ
币科技熊小二 medium avatar
14

币科技熊小二 Yellow v    22 天前   via iPhone

@BITMAIN笛笛 论坛有私信哈

比特币感谢地址: 1MpN7nQa49ZLehNcY9GVy8iGi3uZa5GRrN
cndx medium avatar
15

cndx Yellow v    22 天前   via Android

@BITMAIN笛笛 你不懂,但凡币圈技术牛人或大神,都有想学中本聪的匿名情结。

你这样要微信,要Q号,甚至要手机号是要不到的。你给的Q看位数也是小号,没诚意。

我早期也是很注重匿名的。弄了很多个大小号,cndx,idgui.com,玛雅,狗狗币等等ID。现在主推“玛雅”这个号了。且部分信息已经公开,也加后来入了大量微信群和QQ群,不再以前那么匿名了。

比特币感谢地址: 1DogeKd9JrUNzFaLEyWAVxCVXSvWxe6sAm
vatten medium avatar
16

vatten Yellow v    21 天前

再继续解释一下SEGWIT(隔离见证)

SEGWIT本身是对于记账的格式做了一个变化,本来一笔账目里有付款方、收款方、金额和签名,但付款方的签名是写在中间的,而SEGWIT把签名部分分开了,也就是上述例子中,把签名给写到纸的夹层里去了。那页纸上是一笔交易占一行,把签名移走了以后,空白的地方就可以用来填写交易。于是,本来只能填1000笔交易的纸,就最多可以填2000笔交易

如果SEGWIT用软分叉实现,就是上述的把纸从单层改为双层,并把签名记到第二层里的情况,以便骗过旧节点,让他们觉得啥也没变

但如果SEGWIT用硬分叉实现,那就简单的多,仅仅是记账单的格式发生变化,中间加了一个竖线,签名和备注都记到右边去,而付款方和收款方金额都在左边。这样的好处是纸仍然是单层,不需要对账簿的结构做任何变动,但也因此SEGWIT就不会增加一张纸上能记的总的交易数量,好处就是交易看起来整齐一些,备注那栏可以加入更多的内容。但这样格式的记账单是无法被旧客户端支持的,因此旧客户端都需要升级才能使用新的客户端,否则就不认新的交易

其实我估计中本聪设计的时候,将付款方地址和签名写在一起的原因是沿袭传统金融合同中签名人的名字和签名是写在一起的,更加符合人的逻辑。而Pieter认为这个签名不应该放在付款方地址处,纯粹是从数据处理的角度来考虑,这也可以看出中本聪当初是按照金融系统的规范来设计比特币交易的(比太公开课上有问过这个问题:签名为什么要放在中间,有什么好处?)

Advertisements
对于分叉的再详解

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s