11月23日,邀请到了BCH社区哥白尼项目核心开发者姜和平、BTC.com CEO 庄重、iBitcome钱包联合创始人赵恒,围绕“BCH算力大战——硬分叉之后如何保证资产安全?”这一主题展开了讨论。在直播中,三位嘉宾不仅给用户提供了不少资产安全保护的建议,还对BCH算力大战中的诸多质疑做出了回应,可谓是干货满满。
因此,现将此次直播的文字内容整理出来,方便大家阅读,直播视频亦可点击链接回顾。
科普篇 | 交易规范排序、重放保护、空块攻击到底是什么鬼?
:三位老师分别来自BCH开发者社区、矿池和钱包,请问在此次分叉前后,你们主要做了哪些事情?
BCH核心开发者姜和平:这次分叉和之前相比,有一个不太一样的地方,以往的分叉社区聊得很清楚,大家理念不同,各自该往何处发展,两条链应当是互不影响的。这次分叉是大家互不妥协且只想要一条链,因此引发了算力大战,这给交易所、钱包、用户都带来了很多困扰。尽管在过程之中,两方的算力并没有在一条链上斗争,给人感觉没打起来,但他们确实也有秀肌肉。作为开发者,我们除了提前预警可能出现的风险外,还在实时监控分叉的进程,但最后并没有意料之外的事情发生。
iBitcome钱包联合创始人赵恒:对于用户来讲,资产安全至关重要。我们在分叉前就写了一些文章,给用户介绍“重放攻击”的简单原理。作为一个去中心化的钱包,我们主要是维护账户的余额,一旦发生回滚的话,这里可能会出现一些问题,我们提前做好了演练,就是在分叉前做了一个快照,当然最终并没有出现所担心的这些攻击。
BTC.com CEO 庄重:首先我们也是做了用户教育,以及资产快照的相关工作。其次对于我们矿池中的BCH用户,开放了BSV领取的页面。在分叉前,我们考虑了很多种攻击的可能性,做了相应的预案。我们还有一个工具一直在监控有没有不太正常的矿池,如果发生异常行为,就会发出报警。一整天大家都很紧张,在第六个块产生时就有收到报警,但事实上是孤块导致的,并不是攻击。虽然最终也没有攻击发生,但不能说算力大战就真正结束了。只要两方仍然以亏本的方式进行挖矿,那其实仍然是一个“战争”的状态。应该说,目前就还是处于谁都不敢把算力轻易撤走的状态。
:虽然BCH分叉搞得风风火火,但很多人其实并不清楚两方的分歧到底是什么?比如这个CTOR(交易规范排序)替换现有的TTOR(交易按拓扑排序),姜老师能否给我们科普下,这到底是什么原理,意味着什么,对BCH的未来发展有何影响?
姜和平:CTOR和TTOR排序在数理上不太好理解。给大家举个例子,TTOR(交易按拓扑排序)对于交易的依赖,类似于家族的结构,先有爷爷这一辈,然后是父母,再往下是孩子,它们的关系是这样串起来的。CTOR(交易规范排序)是把整个交易ID按照统一规则排序。BCH最早采用的是TTOR(交易按拓扑排序),尽管复杂一些,但也稳定运行了十年。CTOR(交易规范排序)所做的改进在于所有块的交易可以按照确定的规范排好后,它可以做不存在证明,这个功能对于轻钱包来讲有很大的价值。另外,对于未来的扩容,它也做了伏笔,如果以后的区块再增大,可能有另外一种技术继续扩容,在区块的块头就把所有的交易ID都列上,这样块头可以优先被全网广播,整个传输的时间、尺寸来讲都会有益处,对于构建一个更大的块、提高交易容量都会有帮助。
:我们都知道bsv没有做重放保护,能否请赵老师普及一下,这意味着什么?现在用户可能面临哪些威胁资产安全的问题?作为钱包方,你们是如何帮助用户处理这一问题的呢?
赵恒:既然讲重放保护,肯定首先要解释下重放本身是什么,你拥有了两个币种的时候,给其他账户打钱,本来是想转ABC的,可能BSV也同时转给了对方,这就意味着他们的交易可以互相在对方的链上进行重放的。之前在ETH分叉为ETC的时候,很多黑客用这种方式攻击了一些中心化交易所,通过反复进行充提。重放攻击主要是针对交易所,他们吃过这样的亏,所以现在他们会把充提的时间拉很长。对于用户来讲主要是通过资产分离的方式进行重放保护。资产分离的核心逻辑就是说我在一条链上的操作被另外一条链所认可,那就可以把两边的资产进行分离。我们选择的是一个可能对用户更友好的方式,就是空投一点点糖果。
:庄老师能否普及下空块攻击,粉尘攻击,以及其他大家可能不熟悉的攻击方式,矿池在其中需要做哪些工作预防?
庄重:对于矿池来讲,我们很少会认为空块是一种攻击,因为如果其他矿池去打包空块,就意味着我可以打包网络中的交易,没有人跟我抢。为什么这次算力大战中会提到这个问题呢?因为如果一方想去另一方那边捣乱的话,只能用挖空块的方式保证在最高那条链未得到时能够被接受,这也是为什么这次所谓的算力大战中,大家都很关注有没有空块,但是目前我们还没有看到,至少大家还没有采用这种方式去攻击。粉尘攻击也是社区大家讨论的一个问题,是不是粉尘攻击取决于大家怎样定义。本质上来讲,它只是一堆手续费非常低、Output金额非常小的交易。有的人认为既然区块链允许别人这么用,这就是一个普通功能,至于为什么这么做无需关心;也有人认为这样做会挤占正常用户的交易,造成拥堵,也就构成所谓的粉尘攻击。算力大战中大家关注的点在于SV上面做了一个压力测试,这些交易也不可避免地会传导到ABC的链上,所以ABC也会承载一个非常大的交易量。
当天非常有意思的事情是这样的,我们去观测BSV上压力测试的交易地址,构造了一个防重放的交易给他,他们的交易在ABC链上无法被接受,之后他们的压力测试也没有传到ABC链上。实际上是我们在BSV打了一笔钱,因为这笔交易在两边都可以重放,因此在ABC链上的这笔钱就永远消失了。
质疑篇 | 数据造假、价格操控、最长链原则丧失,这些都是真的吗?
:现在ABC方似乎有通过“超过10个块不予确认”的技术手段来避免游击战中突如其来的攻击,姜老师,有这回事吗?
姜和平:我看到社区里有这样代码的版本放出来,但目前没有看到哪些交易所、钱包使用。从开发者的角度来讲,可能会觉得有一些合适的做法,从社区生态的角度来讲,可能也有一些别的想法,大家的观点、角度和业务都不太一样。总体来讲,我们还是认为在这样一个敏感时期还是尽量少动为好,现在验证没有什么问题的话,就尽量先不要动,或者等有些版本经过更多的检验或者测试之后,大家再去做统一的行动。
:想请教一下各位老师,在分叉前,ABC和BSV的价格是如何产生的?那时候应该大部分交易所都暂停交易了吧?没有交易哪里来的价格?
庄重:价格的形成是通过期货,可以理解成大家对于两个币初期的判断吧。当然因为提供分叉币交易的交易所比较少,所以也不一定能真实反映出市场的情绪。
赵恒:按照比较平稳的状况,像是BTC和BCH的分叉,价格和算力应该是成正比的,里面还是有一个期货合约的概念。
:没错,但是我们注意到,在分叉前,ABC尚未把算力切换过来时,BSV算力占优,但是ABC的价格已经是BSV的四倍了。能不能阴谋论的认为,当时的价格是可以被操控的?
姜和平:我记得只有一个交易所开着期货,分叉一开始大家都不敢去充值了,那这样的话,双方的筹码只能是由交易所里面已经存在的BCH产生出来的,本身它又不能流动,在这样一个比较封闭的交易环境下,价格有可能是被操纵的。但我们没有数据,也不知道具体是什么样的,你说的这种可能性还是有的,所以也能看到价格的曲线波动的特别厉害。但这也许是由于一些投机性交易,可能跟两边社区都没什么关系。
:分叉之后,ABC方在很长一段时间算力占优,完全可以对BSV方发动51%攻击,但却什么都没有做,是否矿工内部已经提前达成共识,允许分叉?
庄重:任何一个理智的人都应该不会去做这个事情,因为一旦你真的对另一条链发动算力攻击,基本意味着你在整个社区里就是一个全民公敌,至少我们肯定不会去参与。当然现实中也存在过一些51%攻击,但本质原因还是这些币种算力太低,可能个人你从网站上买一些算力就可以轻易发动攻击,也不需要什么成本。但是对于ABC和BSV来说,发动51%的成本很高,两边都很忌惮于对方真的发动攻击,所以目前双方算力还是保持着比较接近的状态。
:下面这个问题比较犀利,请庄重老师正面回应,有质疑称BTC.com的区块浏览器在算力排行表的数据上存在造假嫌疑,对此您能否直接回应下,有没有造假?
庄重:这个问题确实让我们感到区块浏览器的责任和对社区的参考性还是非常重要的。我们确实没有与Coingeek,Mempool以及SVpool这三家矿池取得联系,在此之间我们也一直没有办法从他们矿池抓取到实时算力,因为像Mempool网站上是没有算力显示、Coingeek是没有网站,SVPool和Bmgpool也有类似的情况。我们是根据这些矿池的出块和当前难度来反推矿池算力,这个算法在数量级和一定周期下是可以估算出较准确的算力数据,但算力战期间矿池算力波动很快的情况下推算数据就会出现滞后。反观ABC这边的矿池,我们之前就已经互有联络关系了,大家很早之前就有这样一个接口 ,有的是公共接口,有的是专门开发的接口。要我们去证明没有造假,这点确实很难。但一些文字游戏,那种描述特别容易把大家带到坑里去。比如说这个算力是我们前端显示的,这一句话就会引发很多遐想,大家也不要轻易被带节奏。 我们之后也对产品形态进行了讨论,因为我们意识到,如果对方的接口存在问题,确实会导致我们的前端显示出问题,所以接下来产品上也会做一些改动,比如同时显示估算算力和实时算力,之后也会在实时算力显示的基础上给大家提供关于挖矿的更有深度的分析页面。
:现在想请姜和平老师回应一个质疑,网上有一种说法是,尽管bsv算力不及abc,但区块高度仍然能追上,是因为:“BCH在2017年分叉时通过EDA(紧密难度调整),使得BCH整体出块速度加快,后来将算法改为DAA,但这个算法的缺陷时分叉链容易存活,最长链原则荡然无存。” 这种说法对吗?
姜和平:我不太同意这种说法,大家直观去看的话,区块高度差不多,但是POW的原则不是谁的块出得多来看谁的块高,而是哪条链的累计难度大来看谁的块多。比如说我们两条链,你的高度是100,我的高度是90,但是我的这条链上的累计难度可能是你的好几倍,那么按照POW的原则,我还是最长链,所以重要的是累积难度。
未来篇 | 分叉是不是好的机制?持币用户和矿工到底谁说了算?
:BCH分叉大战虽然告一段落,但警报实际上并未完全解除,除了刚刚赵恒老师提到的安全问题之外,其他两位老师还有什么补充吗?现在还有可能出现的黑天鹅事件是什么?对于矿池、交易所、钱包和用户,需要注意什么风险?
姜和平:因为现在还是没有加重放。这对已经有所准备的交易所、钱包、用户来讲,没什么大问题。但总会有人不知道。希望能够通过一种方式,帮大家彻底解决这个问题,双方按照各自的发展理念去走,不管怎么样,都不应该损伤用户的利益。
赵恒:首先作为钱包,帮用户完成资产分离仍然是最关键、最主要的解决手段。另外大家依旧比较担心的是,会不会真出现游击战,尽管现在看起来双方都烧了挺高成本的,再用之前臆想的那些方式去攻击,对双方都没有好处,而且对整体的币价也都是有挺大影响的,我们也是希望这个事情能够尽快结束。
庄重:现在全网收益都在下降,有种很小概率的可能性就是还有一些未知的算力还在试图攻击ABC或者BSV,这仍然是一个隐患。另外就是两条链仍然存在重放风险,所以这段时间交易所通常会增加充值的确认数,但这样也会导致用户体验受到影响。
:可能对于很多人来说,这次分叉大战过后,并没有真正意义上的胜者。至少从价格上来看,两方总市值不及原BCH的市值,对于用户来讲,就是资产缩水了,所以我想请三位老师谈一下,怎么看待未来社区继续通过分叉这个行为决定发展路线的方式?持币用户在这个过程中究竟能做什么?还是说在区块链的法则中,真正的用户就是算力持有方,而不是币的持有方?BCH,以及其他数字货币如何保持活力、长久发展?
姜和平:我个人的看法是分叉作为社区治理的一种方式,是否合适呢,还需要看社区内的里面矛盾到底是个什么程度,如果大家不可调和,并且彼此认可分开会更好一点,那么理性分叉不失为一种解决办法,对市场和用户也没有什么伤害。但如果分叉让市场和生态去承担分歧带来的伤害,这就不是一个特别好的处理方式。
赵恒:我觉得这可能跟当时的行情有关系,去年那个时候是牛市,你不管做什么,分个叉都是锦上添花。现在是在熊市,你做什么都是雪上加霜。所以很难说分叉对币价的直接影响是怎样的。但核心还是归结到一点,肯定要认同普通持币而不仅是矿工主导的,可以反过来想这个问题,分叉期间价格波动的很剧烈,价格会影响矿工算力的调整,这就是说用户决定价格,价格也会去影响算力,这是一个反向循环,用户肯定还是最关键的。
庄重:“算力即权利”其实是区块链早期的一个朴素愿望,现在早就不是CPU挖矿了,这句话在现在看来是有一些问题的,矿工并不能决定一切,更多的是经济上的大多数决定这条链到底是什么。矿工肯定是这个生态中很重要的一员,他们的观点是需要被社区来考虑的,但需要开发者、交易所、钱包、矿池整个生态的人们共同达成共识才能决定。至于分叉这种机制,在社区不可调和的时候,可以带来一种解决方案,让两方都按照各自的路径发展。但是我们可以发现,在这个过程中,需要技术专家深度参与其中,去解释技术路线应该是怎样的,希望社区可以形成通过讨论进行决策的机制,用户用脚来投票,投入更多的生态性。