首页 业界 正文

Bitcoin Unlimited 在微信群里的AMA

2016-11-04 09:50:57 来源:巴比特资讯 作者:黄世亮 阅读:5068
   
这是一次在微信群里的关于Bitcoin Unlimited的问答记录 参加者: -安德鲁. 斯托内(thezerg),BU开发组领导 -安德里亚.苏珊尼 (sickpig) -Peter.Tschipper (ptschip)

Spotlight On Question And Answer

这是一次在微信群里的关于Bitcoin Unlimited的问答记录

参加者:

-安德鲁. 斯托内(thezerg),BU开发组领导

-安德里亚.苏珊尼 (sickpig)

-Peter.Tschipper  (ptschip)

Andrea Suisani: 大家好,我是安德里亚 (sickpig), BU dev. 我的主要焦点在于测试, CI 和 doc(译者注:暂时无法确认CI和doc具体含义)。

Peter Tschipper:  你好,我是Peter Tschipper (ptschip) 也是BU开发组成员。

问:你可以说一下BU是如何解决区块大小问题的吗?

答:基本上,BU通过使用自然共识( Emergent Consensus) 来解决区块大小的问题,在矿工和节点运营者的基于投票的方式,我们让自由市场在自然共识下达成区块大小。我们相信更大的区块网络完全有能力处理这些,这样比人为限制区块大小更好。(ptschip)

BU 允许全节点和矿工为他们想要的区块大小限制投票。但是如果网络的其他部分超过了一定数量的客户端“不情愿地”接受过大的区块,就可以拒绝这些更大的区块。这个策略让我们认识到“中本聪共识”是重中之重。通常,如果比特币货币功能的原则无法得到保证,一个完整的节点跟随最长链的共识也会被破坏。 (thezerg)

问:你能详细说明一下和Core的不同?是只有BUIP-001改变了吗?另外,你可以解释一下当分叉发生时具体会发生什么事情吗,以及BIPs(比特币改进协议)是否将不会被BU整合?(译者注:原文有个“13”暂不理解,可能是笔误)

ABU是Core 0.12的分支但除去了RBF功能,加上的功能主要的廋区块(Xthin blocks),Xpedited,自然共识(sickpig)。

我们没必要列举所有的改变,因为这些太多数是漏洞修复和小的改进。例如:你可以运行“getpeerinfo <IP 地址>”去仅向一个节点获取获取数据。但是大的改变是自然共识(emergent consensus), 廋区块(Xthin blocks), Expedited blocks, 流量整形(traffic shaping), 内存池和DOS防御 (thezerg)

问:不同的开发团队如何在这个领域更好地合作? (我知道我们中的一些人已经在内存池同步逻辑(mempool sync logic)进行合作,但是我想知道,你们认为我们该如何改进它以及让它们实现?

A: 就开发团队如何更好地一起工作而言, 我真的希望…..我们能与XT and Classic团队有良好的开放式沟通,并且我们已经在一起工作一段时间了。(ptschip)

补充提问:我不是认为这是单方面的事务,但是考虑到 xt/classic/bu是处于“不在生产环境上运行(而Core是在生产环境中运行)”的项目, 之前缺乏沟通是可以理解的,我问的是我们如何改进它。

至于团队和实现,多多益善 (sickpig)

因为需要周期性地重新基于Core设计(rebasing on Core), Unlimited无法在Core项目中做出出色的工作。但是,我希望在不久的将来,我们不再因为区块大小而对立争论,而是可以更直接合作。你(Core)开发人员和领导层评价说其他开团队没有能力的这种毫无根据的评论,对事情是毫无帮助的。(我想对Adam Back的一条推特进行详细说明,但是已经有太多了)(thezerg)

我们随时欢迎开放式的沟通和对话。 我认为Core 和其他implementations之间的问题集于在区块大小上有明显的理念差异以及对于手续费的担忧上。在我们的理念当中,什么是自由市场,以及手续费该如何发展是相当明确的。这是双方开发组理念上的巨大鸿沟。(ptschip)

问:我们可以在每天使用硬分叉来解决区块大小问题吗?

答:我们的计划是将区块大小的限制从代码中移除,并交给自由市场来决定。所以每天增加区块大小限制并不需要硬分叉。(sickpig)

补充提问:我认为他意思是意外的硬分叉,矿工可能会偶尔分叉离开主链,或者他们总是最终将回到主链?

除非矿工明确选择一个深度接近无限的值(译者注:Bitcoin Unlimited的挖矿设置可以允许矿工设置一个区块链区块深度参数,达到这个深度值就才延续此链),矿工将会在几个块之后回到主链。 (thezerg)

我认为你的意思是在区块链上运行BU逻辑。我不是这个意思,如果你没有通过硬分叉来改变区块大小限制来运行BU,随后也不会发生硬分叉。当然,在实际运行过程中,并没有足够多的交易,矿工在广播整个区块之前是可以通过廋区块(Xthin block)来传播挖矿信息。(thezerg)

问:我从@海洋ViaBTC的博客了解到的信息,我理解是一个运行BU的矿工可以随时接受一个更大的区块,只要该更大的区块连能够延续比特币区块链的深度比小区块的比特币区块链更长。这是否会导致超大的区块可以无视矿工投票声称他们接受的区块大小?例如:如果一个矿工说他将接收2MB区块,但是最长的链是2.1MB的区块,这个矿工是不管怎么样也得接受吗?这是否意味着,这个矿工在切换到最长链之前挖到的任何区块都会被孤立掉?

A:除非矿工明确选择一个深度接近无限的值(译者注:Bitcoin Unlimited的挖矿设置可以允许矿工设置一个区块链区块深度参数,达到这个深度值就才延续此链,这个值叫AD),矿工将会在几个块之后回到主链。 (thezerg)

关于:“不情愿的区块链切换”,当我上次检测到“一旦一条链超过了AD(接收深度),即使有额外的超过EB的区块被添加到该链,代码也会保持在链的顶端,除非在链上24小时内都没有超过EB的区块。如果那样的话,colde 就会返回到原先链挖矿。”@Andrew Stone进一步说明到。(译者注:EB值是矿工设置的将会支持的区块大小值。)

是的,确切的说,除了“24小时周期” 是实际上在块中定义的。(thezerg)

EB?        EB = 超过的区块大小 (sickpig)

所以好像对于我而言,如果矿工希望保持低孤块率, 他们将被迫将AD值设为0?

或者将 超过的区块大小值(EB)设置得更高… (thezerg)

问: 代码审查和部署过程是什么?谁有提交权(commit)?

答: 被选的开发人员具有提交权限。 其他所有人提交PRS,我和其他人会审查后才会合并到主代码库。小错误修复提交到“主”分支,更大的功能在不同的分支提交,然后在大量测试后汇总。 thezerg)

代码开发组管理流程在这篇文章可以找到: https://www.bitcoinunlimited.info/articles。同时更多的功能必须由支持人员投票。(sickpig)

问: 在即将发布的版本中bu是否有隔离见证(SegWit)?或者说你根本是反对它的?另外关于schnorr你们的计划呢?

答: 最后成员将投票决定是否采用隔离见证(SegWit)。 就个人而言,我认为它(隔离见证)是很不优美的,使用硬分叉的办法它可以更加优雅地实现。 我也不喜欢一个区块大小总计为4MB,但只有1.7MB有效交易存储空间。 这会变得非常痛苦,当你增加块大小—-合理的值是增加到2MB,但实际上却莫名其妙地区块要达8MB? 而我很难相信当可扩展性只有一个非常小的增加比例时,会有企业围绕比特币支付系统来设计产品。(thezerg)

问: 我很好奇,因为每个人都谈论sigops攻击是以二次方增长的,并且这会在增加区块大小后变成一个大问题,你认为这需要担心吗? 如果不需要,你们做了什么改变? 如果有的话,你认为你需要从增加的区块大小来面对什么挑战?

答: 我们正在努力且就快完成平行区块(Parallel Block)验证了。 我们可以通过并行线程来同时验证几个区块,这样可以缓解中央处理线程。 这样就无法通过一个超大区块来阻塞一个节点或矿工,超大区块攻击者只会让自己的区块变成孤立块。(ptschip)

关于: sigops攻击,添加比例规则是非常简单的。 – sigops必须是20k每MB或类似的。 这样就解决了二次方增长的问题。 然而,它可能会消除将来的使用案例(如果今天我们认为“奇怪”的脚本突然变得有用),所以我们正在研究并行验证 。(thezerg)

问: 你认为“不情愿链切换”多频繁发生吗? 每天将会发生多次,或不太会发生? 矿工如何防止这种情况发生而不会亏钱; 只是设置较低的接受深度?如果接受深度一般较低,共识机制如何被攻击者攻击以实现操纵块大小?

问: bu团队是否全职编程吗? 或者是除了你的“全日性工作”(也就是兼职)?

答:我知道我们至少有两位全职开发人员。 (ptschip)

问:我想知道如何扩大BU团队的?

问: BU的基金怎么样?我的意思是如何支付工资给两位开发人员?

答:我不能说谁给开发员发工资,但我们近期也收到一个500K的捐款,将用于开发员发奖金。(ptschip)

问: @Peter Tschipper  为什么不尝试在没有共识问题的领域进行合作,并从那里开始工作?

答: 我们愿意合作。只是几个星期以前马特Corallo提醒我们,Core想要只想通过区块头来标识区块。所以我告诉他我们很高兴并且向他们(Core)敞开大门,告诉他我们已经计划这样做。我不认为我们的合作推迟了很多。 (ptschip)

补充问:我不知道 – 这有关于BIP程序的投诉,这就是为什么我会问… … BU开发者继续反对BIP流程吗? 我们如何构建一个鼓励合作的流程,即使它不是BIP流程? (因为相对立的网络行为真的很糟糕)

我认为BIP流程的问题是这是你的流程,而不是我们的流程,我们使用BUIP的。 我们如何跨越这个鸿沟,这个两个流程应该是什么方式进行交流沟通? 通常我们是会联系其他开发组,并和他们进行沟通。我不知道它是否是必须这么复杂,除非你想要一个更正式的流程?(ptschip)

问: 我认为BIP是朝着正确方向迈出的一步。至少从大局势来看是这样的。你提出的改变已经足够大到对干扰市场。 从这方面来说,我很感兴趣为什么BU认为他们可以比Core更符合市场需求。你们如何在认为你们可以为市场提供需要的东西? @Andrew Stone

答: 我们有一个正式的流程来提出和接受BUIPs。我不能阻止会员否决我的决定。 请阅读我们的文章,然后加入Bitcoin Unlimited开发组,您可以投票。(thezerg)

你可以从此处找到文章: https://www.bitcoinunlimited.info/articles (sickpig)

例如,我是BU的提交者,但我不能控制代码库,也不能劫持它。总统(译者注:应该指开发组的管理者)控制谁获得代码提交权。但是我控制DNS解析,所以如果总统劫持了代码库,然后我可以指向网站远离它 – 等等…相互制衡。(thezerg)

问: BU会员(membership)是否开放给任何人,还是只有代码贡献者参加? 在这之前你们中有人当过代码贡献者吗?

答: 任何人都可以参与, 是的,在我参入进来之前,我是一名代码贡献者。(ptschip)

问: 这有关于BIP流程的投诉,这就是为什么我要求…做——BU开发组继续反对BIP流程? 我们如何建立一个鼓励的协作的流程,即使它不是BIP过程?

答: 部分BU成员的离开是为了摆脱某种存在于Core论坛的“兄弟-程序员”文化。 并远离论坛的审查制度。 几个月前,我试过发出BIP以使用从未被分配过数字的特征位,因为在Core上它确实是没有完全解释和证明Xthin。但是BIP程序需要明白仅为了协调活动我不应该被迫进入他们的流程,他们的文化,以及审查的沟通渠道。 我们没有办法提交另一个…也许事情已经发生改变。 但我认为我们正在寻找一个更有效的变化信号,并做一些像重新实现Xthin的东西,发现真正有意义反对信号。(thezerg)

问: 你能解释一下Xthin吗? 如果块大小增加,xthin性能会改变吗?

答: 我认为Xthin区块(平均95%带宽减少)将会改善大区块的运行,因为需要较小的内存池。 (sickpig)

补充提问:较小的内存池大小? 你的意思是要更大?

反问:为什么要更大的? (sickpig)

补充提问:我很困惑,麻烦你解释一下内存池的表现 :)

补充回答:我认为一个拥堵的网络无法满足txs的打包需求,这会导致大的内存池(sickpig)

随着块大小的增加,性能的保持取决于内存池同步情况。 我会希望有一些降级,例如如果我们谈论1MB区块和10MB区块和更高的tx增长速率,内存池就的恒通就可能已略有分歧了。(ptschip)

xthin tl;dr (译者注:暂时不明白这两个字符是什么意思)  在一个块和下一个块之间的时间段期间只发送一次交易。(sickpig)

一个很酷的事情是,如果一个矿工玩“游戏”,不间断地将交易添加到区块里,然后Xthin的性能会更糟。 所以理论上一个矿工向区块填充假交易进一个区块,目的是为了制造一个巨大的区块,这样的攻击很难成功,因为这样的区块无法很好地广播。这些的“攻击块”的孤块率会很高,因此,这些“攻击块”将有一个高得多的孤儿率,而随后潜在的空块就会破坏这个大的“攻击块”… (thezerg)

问: @Andrew Stone你相信单个提交的架构会比多个的好么?

问:  如果一个概念被认可了,你如何控制代码的质量?

答:当有人提交了一份性能要求代码,我(和其他人)在会审查和测试。 我会读每一行代码,这就是为什么更大的性能要求代码需要更多的时间。 在未来,如果我的时间成为瓶颈,我将委托第一次审查的责任给其他开发者。我们运行和扩展正常的测试“make check”和python qa。 我们还有一个我们用于在多个区块链上测试的全球运行的节点的专用网络(mainchain,testnet,nol chain)。 我在这些节点上运行有个人矿工和矿池软件,以用于操作测试,我有Windows,Linux 32/64,MAC和4 ARM我运行BU的机器。所以我们有很多能力在现实世界的情况下测试这个软件 (thezerg)

我认为我们的程序并不是都与Core的不同。 我们有代码审查,我们也有单位和回归测试。 我们目前正在使用Travis测试自动化回归,因此我们知道当性能要求代码提交时,所有的测试已经通过了。(ptschip)

对于大的性能改进,我们会有适当的审查、测试、CI和BUIP,这些是我们正在做,并且会持续做的工作(CI=持续集成)。(sickpig)

译者注:因为是在微信群里的问答节目,语法和单词有几处不是特别的严谨,导致翻译的时候也非常困难,若翻译有误,请各位原谅,并指出。谢谢。

原文暂时没有被搬到网页上,我上传到了百度网盘,供有兴趣的朋友各位下载阅读。

链接: https://pan.baidu.com/s/1eSHTW10 密码: 6vii

原文档是由@jake 卢睿 整理提供。


声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

更多 矿机信息