据了解,除了技术路线和理念不同之外,需要格外关注的还有重放攻击的危险。什么是重放攻击呢?重放攻击(Replay
Attacks)又称重播攻击、回放攻击,不仅仅存在于区块链世界中,在传统网络中也有这种攻击方式。在传统网络中,重放攻击是指攻击者发送一个接收者已接收过的数据包,用于迷惑接收者。
攻击者可以是最初的发送者,也可以是拦截并重发数据的第三者。在区块链网络中,尤其是在两条分叉链上,会容易出现这种问题。当时在以太坊和以太经典分叉时就出现了这样的问题。由于以太坊和以太经典在刚刚分叉时,除了ETH回滚了在The
DAO事件被盗的token之外,没有任何系统差别。因此发布在ETH上的广播可以被拿到ETC网络上立即重播一次。在分叉过程中,同一个私钥对应的地址内既存着ETH,又存着ETC。因此在分叉后,攻击者就可以发出重放攻击了。举个例子,黑客Alice从B交易所提现100个ETH时,交易所B必须先向ETH矿工网络广播交易信息,这条交易信息中有交易所的私钥签名。这时如果Alice想要作恶,她可以立刻将此广播在ETC网络中再广播一次。由于广播中包含交易所B的私钥签名信息,而且交易所地址中既有100个ETH,又有100个ETC,那么黑客Alice可以不经交易所同意(因为ETC矿工也看到了交易所的私钥签名),把交易所B地址中的100个ETC也划给自己。这时虽然Alice只提现了ETH,但是她同时把交易所B的ETH和ETC都取走了。比如当时著名网站云币网就被重放攻击偷走了40000个ETC。但是后期的分叉中,各分叉链和持有者都对重放攻击有所准备,比如客户端有重放攻击保护,交易所暂停重提币等。比如说在比特币和比特币现金分叉时,比特币现金交易广播必须使用SIGHASH_FORKID,这样比特币和比特币现金相互之间就没有重放攻击的干扰了。但是在本次分叉中,和过去分叉不同得是,由于SV版本主动移除了“重放攻击保护”,这就意味着两条链面临着巨大的重放攻击风险。作为持有者,在分叉竞争结束之前,如果担心风险,最好不要使用任何版本的BCH客户端发送交易给其他人,除非收发地址都是自己。不发送交易是没有被盗走的风险的,一旦发送广播就会面临着被恶意攻击者偷走两种资产中的一种的风险。

2018年8月,Bitcoin
ABC提出了一种新的共识变更,以提高BCH节点的速度,并引入外链。该变更将在2018年11月15日上线。但Craig
Wright拒绝这种变更,称其为垃圾,宣称应当坚持中本聪最初的设计(Satoshi’s
Vision),否定了ABC开发组,并在当前客户端版本上发布了自己的版本SV。由于ABC的共识变更会和原有共识不兼容,因此这将是一次硬分叉,而双方都拒绝增加防重放,这次和以往硬分叉生“仔”不同之处在于,以往更多是新的算力来维持一个新链;而本次是现有算力的分裂,与其说是硬分叉生“仔”,不如说成兄弟分家更贴切。

第0章引言

背景故事

  1. 普京娱乐 ,Bitcoin
    ABC团队和NChain团队都是BCH社区比较重要的技术开发团队,NChain在2018年8月16日发布了Bitcoin
    SV (Satoshi’s
    Vision)客户端,这就是当前一直提到的BCH的ABC和BSV;其实还有一个大的开发组Bitcoin
    Unlimited,这位则保持中立。

  2. BCH的技术升级一年两次,基本以ABC团队主导,本次计划定于网络中最近11个区块的中值时间大于或等于UNIX时间戳1542300000,即北京时间的2018年11月16日0:40。国外时间为11月15日,对我们而言是16日凌晨的事情。

  3. BCH这次的分歧主要来自于两套技术方案,Nchain在之前就表达了自己的意见,打算回归到BCH最早的0.1版本,所以针对这次ABC既定的更新,BSV(Bitcoin
    SV)走的是回归路线,并移除了自动重放攻击保护;这样,在技术层面上,一旦更新完成就出现了两条有差异的ABC链和BSV链。

  4. 虽然ABC和BSV有差异,但是在最底层的交易格式上并无差别,而且BSV还主动移除了自动重放攻击保护,这就造成同样一笔交易能在两条链里进行有效广播;通俗一点就是,只要我们花了BCH,对方就可以伪造支取BSV,反之亦然,相当于BCH生的“仔”压根儿与你无关。

  5. 前面四条都是技术上的分歧,技术的背后也是需要矿工支持的,于是两技术的支持主人公吴忌寒和澳本聪Craig
    S Wright 就出场了,吴忌寒代表着比特大陆支持着Bitcoin
    ABC团队,CSW背后的Coingeek支持着NChain团队BSV;如此,一场技术的分裂造成了矿工的分裂,也就是算力的分裂;由于两大矿场及主人公都太出名了,所以该次事件才受到众多关注。

  6. 当前,ABC方在BCH链上约持有30%左右的算力,而SV方约持有50%算力(
    但是双方在BCH上的算力均非主力,大部分的算力其实在BTC链上随时可能来支援,尤其是比特大陆控制着全球最大的比特币算力,在潜在算力上具有绝对优势,且据说吴忌寒已经奔赴新疆调整矿场部署。因此,胜负的结果并不是现在能预测的。

以太坊硬分叉后出现了大量的“重放攻击”,有交易所声称丢了币,用户丢币的事更多。那到底啥是重放攻击呢?

分歧点

战争爆发于ABC在BCH官网
发布0.18版升级之后,CSW提出强烈批评,并且发布BSV版本,提出取消ABC的0.18版本升级,全网采纳BSV版本。此举遭到ABC团队和比特大陆等方面的反对,并对BSV版本提出反对。这次事件的主要矛盾点在于客户端采用的共识机制不同,两个版本的主要差别在于:

Bitcoin ABC方案

  1. 对区块内交易使用CTOR交易排序规则替代了原有的TTOR交易排序规则。
  2. 设置了最小的交易大小防止对SPV的攻击。
  3. 增加了两个操作码OP_CHECKDATASIG和OP_CHECKDATASIGVERIFY,以便引入外链。
  4. push-only规则。

Bitcoin SV方则十分简单:

  1. 区块大小上限从32M扩展到128M
  2. 启用加减乘除的操作码以便在未来支持链上智能合约
  3. 恢复中本聪早期版本设计了但被禁用的4个操作码

CSW对ABC 0.18版本的两个更新都提出反对,认为:

  1. OP_CHECKDATASIG和OP_CHECKDATASIGVERIFY能够被用来设计赌博应用,因此会导致BCH主链被政府封杀。此逻辑因为两个原因在争论中淡出:[1]
    没有这两个操作码,BCH也可以设计赌博应用,只不过更复杂一些;[2]
    法律上缺乏对公共基础设施被用于犯罪用途而遭封禁的依据。

  2. CTOR对BCH不是必要的改进,还会增加基础协议的复杂性。这一点争议较大,Rawpool研究报告支持上述反对CTOR的意见,而Markblundeberg提交在Reddit上的文章分析认为CTOR本身近期对BCH系统的改进不明显,长期也不确定,但目前升级能够为后续的石墨烯升级提供便利,后者有助于实现更大区块容量。ABC发布的BCH路线图也说明CTOR是后续石墨烯和大区块升级的先导升级。Jonald
    Fyookball则综合分析了CTOR的作用、优势和升级的必要性。

而Bitcoin ABC反对BSV的主要是将区块大小上限扩展到128M,主要理由为:
目前BCH每块实际容量在200k左右,现有32M区块上限是实际容量的160倍,没有扩容的市场需求。对此,CSW一方强调他们向大的银行和百货公司推荐使用BCH时,这些大公司强调BCH容量限制太小,无法满足它们的需求。因此,先升级128M然后取消区块容量上限是吸引大公司应用BCH的先决条件。
此外,BSV的128M扩容并不成熟,缺乏相应的测试数据。对此,CSW没有提供必要的测试数据。2018年9月初BCH对现有32M上限进行了一轮压力测试,测试中最大区块为21M,有一些节点掉线,目前没看到权威的测试报告。在8月曼谷会议上,ABC、比特大陆和Roger
Ver等各方表示,在11月升级完成后,将投入力量测试128M扩容的可行性,如果通过,考虑在2019年5月的升级中部署。

根据以上梳理,实际上最终存在分歧的是ABC0.18版本的CTOR和新增的操作码(OP_CHECKDATASIG,OP_CHECKDATASIGVERIFY)

关于CTOR和TTOR的区别:TTOR的交易排序规则仅要求任意一个交易必须排在它所引用的交易后面,而不要求具体顺序。CTOR则在TTOR基础上要求按照交易ID的顺序来打包请求,这样区块链就会形成一张依据ID排序的顺序表,从而可以支持分片存储,让交易查找可以在一次查找中完成而不必翻找整个链。

关于操作码的争论:OP_CHECKDATASIG/OP_CHECKDATASIGVERIFY让区块链可以验证链外数据,从而提供了外链的接口。Bitcoin
ABC认为比特币二层网络应该建立在链外,Craig
Wright则反对这种做法,认为比特币的二层网络也应该在比特币的链内。有了这两个操作码,其实,不用再修改共识就能接入反洗钱系统了,直接来个公民身份核验的二层网络,对交易进行签名就好了,谁合法谁不合法立显。

其他的变化则并不是太重要,ABC也并不是死守32M,在BCH链中,区块大小其实是可配置的,只要节点改一个设置就行了,128M仅仅是一种象征意义。加减乘除也只是象征意义。

第1章计算机术语里的“重放攻击”

交易所如何站队

目前站队的交易所为数不多,三大交易所中
OKEx、币安倾向于中立态度,火币的态度尤不明朗。分叉事件后
OKEx交易所则宣布,由于Bitcoin Cash的分叉已经完成,原BCH已不存在。故
OKEx已 将原有的 BCH 兑换为 BCHABC 和 BCHSV,兑换比例为1 BCH=1 BCHABC+1
BCHSV;今日,OKEx 先后开放 BCHABC 和 BCHSV 提取和相关交易对交易。
币安也采取了类似操作,但目前仅开放了 BCH
分发和交易。等区块网络稳定后再开放充值提现,安全第一;目前没有计划时间。
而火币则基于最长链原则,将 BCH 币种的所指含义明确为“Bitcoin
ABC”,不过这种定义是有问题的,因为随后Bitcoin SV 的区块高度也一度超过
Bitcoin ABC。所以火币又出了一则BCH充值延迟的公告

以太坊硬分叉后发生的“重放攻击”和传统计算机术语不是一回事。

矿工如何看待这次纷争

整个故事的要点就在上面介绍完了,不难发现,本次BCH事件是技术分裂在矿工社区治理上的一次很好的尝试,不管分裂前矿工各大派系炒得如何凶残,人性都是逐利的,这将演变成一场博弈——金钱与面子之争,而不在漩涡之中的矿工会采用POS的nothing
at stake的操作模式,要么两边都挖,要么我都不挖;
当然也可以有鹬蚌相争,渔人得利的操作模式出现,这就是最近热门的重放攻击,它的最大伤害是对交易所而不是我们吃瓜群众,只要我们不做任何操作便不会有啥影响,因为重放攻击只能是你操作了其中一个针对你没有操作的那个兄弟币进行窃取。所以显而易见,风险较大的会是交易所,只要有人提取BCH,交易所在重放攻击下会被窃取等额的BSV,所以所有交易所都会停止BCH的提现操作,直至其中一条链增加重放保护。目前,ABC的重放保护升级拟定计划在2019年5月15日。所以算力战如果真的一旦开启,BCH社区将进入内耗,不相关的矿工最后只会支持胜者链,而它也将成为真正的BCH,另一条链也不会死,但是价值将沦为子嗣链。
如此可以发现,炒得如此火热的BCH算力之争,本质上与99%的人没有太大关系;但是它确是一个很好的矿工社区治理和技术社区治理的实验,也暗示着在区块链的世界即使像BTC这样的老大哥,也可以出现技术造成的算力分裂,以往一直宣扬矿工不会以危害利益而去作恶,但是矿工却可以坚持自己不同的信仰而造成内耗,这样的信仰分裂一旦造成头部矿场分裂,后果还是挺严重的,还好BTC硬升级的改动一般不大,不会出现诸如BCH如此之大的意见分歧,不过这将会成为一个很好的Lesson
learn。

传统术语“重放攻击”:指的是身份欺诈。在维基百科上定义很清晰,如下,

这次事件的结局如何

2018年11月16日凌晨2点16分,BCH硬分叉算力战落下帷幕,以BCH
ABC的算力胜利告终。在SVpool挖出分叉前最后一个区块后,BCH就此分裂成BCH
ABC和BSV两条链,随后吴忌寒便转发了一条Twitter称:“
祝贺!在这个新的区块之后,BCH社区中将不会再有捣乱分子了!”澳本聪则放话表示游戏仍在继续。
BCH的“分叉战”虽然结束,但此次分叉带来的影响并未结束,BCH的“保卫战”也才刚刚开始。在BCH成功分出两条链的几个小时后,有圈内人士对BCH
ABC的稳定性提出了质疑。他表示:BCH分裂后,BSV出块稳定,一个小时保证在6个块;BCH
ABC则出现了区块“抽风”,一个小时有7-17个块,论链的稳定性,BSV胜。
而在分叉后,PeckShield态势感知平台安全人员也发现:ABC和SV两个链上均存在一些容量为几千笔交易的异常区块。这样的情况被称为粉尘攻击,而这种攻击极有可能造成BCH网络阻塞,进而拉高交易费用。除粉尘攻击外,ABC还遭受了在相同地址间重复发送交易的垃圾交易攻击,在一段时间内,这种垃圾交易攻击可能会填充ABC的全部节点,从而影响ABC链的空间可用性。
徐明星也发布朋友圈表示:“BCH‘算力大战’的重点是看ABC和BSV能否稳定出块,以及两条链是否出现区块大量回撤,标志着两条链是否成功。”而初生的两条链目前都处于不稳定的状态,因此,两条链最后的结局一切都尚未能随意下定论。
在此次硬分叉之前,加密货币市场整体的行情在11月15日起出现大幅波动,比特币等主流币的暴跌引起了整个加密货币市场的恐慌,市值前百币种有90余个币种应声下跌。BCH投资人受到的影响或许更大。

假设Alice向Bob认证自己。Bob要求她提供密码作为身份信息。同时,Eve窃听两人的通讯,并记录密码。在Alice和Bob完成通讯后,Eve联系Bob,假装自己为Alice,当Bob要求密码时,Eve将Alice的密码发出,Bob认可和自己通讯的人是Alice。

题外话:这可能并不是一场简单的算力大战

这次分叉可能不会像当年BCH从BTC的分叉那样干脆。BCH从BTC分叉之所以干脆,是因为部署了重放保护,两条链直接产生了隔离。而这次则不然,双方都会以自己的方式在同一条链上处理交易,争夺主链的控制权,这必将伴随着大量惨烈的孤块与孤链,是一场成百上千万的美元的消耗战。
不过事情的发展可能和大家预期的不同。这场战争并不是公平对等的,并不是谁能够控制51%以上的算力谁就能胜利。
为什么这么说?主要是双方在共识上的主要不同点。我们可以看到,ABC方实际上是缩减了共识的范围,除了增加了新的操作码(一时半会也不会真有人用)。而SV方实际上未对原有共识做实质上的变更。换句话说,正如CTOR是TTOR的子集一样,ABC共识是SV共识的子集。这导致了一个有趣的情况,即:ABC链即是SV链,但SV链不是ABC链。这几乎让SV方成为了这场大战中打不死的小强,因为ABC方算力再强链再长,也不能在实质上孤立SV共识,因为ABC的最长链就是SV的最长链。ABC块对于SV共识来说只是长得奇怪了点。

但是对于ABC共识来说,劣势就会很明显。
对于ABC共识,在任何情况下,会存在两个情况。情况一,ABC链更长,但SV随时可能在下一个块后面重新接上SV链。情况二,SV链更长,此时ABC链被孤立,必须付出更大的算力来扭转情况使ABC链超过SV链。
然而,这也并不代表ABC方一定会输。只要ABC方持续用算力否定SV块,SV方就得不到任何的挖矿奖励,这可能会导致SV方矿工的逐步分化瓦解,最终放弃SV共识而采用ABC共识。
当然的当然,ABC方要做到这一点必须持续付出比SV方多得多的算力。换成我们喜闻乐见的语言就是:用钱砸死你。
我们相信比特大陆有足够的算力也有足够的钱,不过我们也相信Craig
Wright代表的理想主义并不会太廉价(主要是也不用花很多钱)。

以太坊硬分叉后产生的“重放攻击”并不是身份欺诈,是一条链上的交易在另一条链也往往是合法的,交易可以重新在另一链上广播,所以才被称为“重放攻击”,但这本质上并不是一种“攻击”。

补充

1、什么是重放攻击
除了技术路线和理念不同之外,需要格外关注的还有重放攻击的危险。什么是重放攻击呢?重放攻击(Replay
Attacks)又称重播攻击、回放攻击,不仅仅存在于区块链世界中,在传统网络中也有这种攻击方式。在传统网络中,重放攻击是指攻击者发送一个接收者已接收过的数据包,用于迷惑接收者。
攻击者可以是最初的发送者,也可以是拦截并重发数据的第三者。在区块链网络中,尤其是在两条分叉链上,会容易出现这种问题。当时在以太坊和以太经典分叉时就出现了这样的问题。
由于以太坊和以太经典在刚刚分叉时,除了ETH回滚了在The
DAO事件被盗的Token之外,没有任何系统差别。因此发布在ETH上的广播可以被拿到ETC网络上立即重播一次。在分叉过程中,同一个私钥对应的地址内既存着ETH,又存着ETC。因此在分叉后,攻击者就可以发出重放攻击了。举个例子,黑客Alice从B交易所提现100个ETH时,交易所B必须先向ETH矿工网络广播交易信息,这条交易信息中有交易所的私钥签名。这时如果Alice想要作恶,她可以立刻将此广播在ETC网络中再广播一次。由于广播中包含交易所B的私钥签名信息,而且交易所地址中既有100个ETH,又有100个ETC,那么黑客Alice可以不经交易所同意(因为ETC矿工也看到了交易所的私钥签名),把交易所B地址中的100个ETC也划给自己。这时虽然Alice只提现了ETH,但是她同时把交易所B的ETH和ETC都取走了。比如当时著名网站云币网就被重放攻击偷走了40000个ETC
[20-22]。
但是后期的分叉中,各分叉链和持有者都对重放攻击有所准备,比如客户端有重放攻击保护,交易所暂停重提币等。比如说在比特币和比特币现金分叉时,比特币现金交易广播必须使用SIGHASH_FORKID,这样比特币和比特币现金相互之间就没有重放攻击的干扰了。
但是在本次分叉中,和过去分叉不同得是,由于SV版本主动移除了“重放攻击保护”,这就意味着两条链面临着巨大的重放攻击风险。作为持有者,在分叉竞争结束之前,如果担心风险,最好不要使用任何版本的BCH客户端发送交易给其他人,除非收发地址都是自己。不发送交易是没有被盗走的风险的,一旦发送广播就会面临着被恶意攻击者偷走两种资产中的一种的风险。

2、为什么会引发算力大战?
由于重放攻击的存在,持有者发送任何交易都有风险,交易需求会大大减少,因此两边系统都会出现半停滞的状态。因此和过去不同,两条链会保持强烈竞争的关系,而不是相对独立的关系,难以“共存”,直到一方先主动硬分叉,加入新的重放攻击保护机制。但是如果一方先行硬分叉,可能会被部分持有者认为是不成功的表现,而且开发需要一定时间,因此有可能短时间内两条链都不会再次主动进行硬分叉。
我们都知道比特币系的区块链系统有难度调整机制,比如说比特币是每2016个区块调整一次难度,以确保出块时间是10分钟左右。如果算力增长过快,就加大难度。如果算力降低过快,就减小难度。但是如果一个分叉币诞生后,算力相比比特币骤减,短时间内(因为难度调整必须等待完成2016个区块周期才行)会导致出块时间大大延长,减少矿工收益。矿工收益减少,矿工就会流失;矿工流失,算力就会减少;算力再次减少,则出块时间再次延长,于是就变成了恶性循环。最终分叉链就会因为难以算出下一个区块都消亡。这也正是比特币白皮书中所强调了最长链原则,算力低的链极难追上最长链[23]。
为了解决这一问题,比特币现金最开始引入了EDA机制,每当出块时间增长,就会降低挖矿的难度,最多执行6次。但是这种机制也带来了问题,比如说算力暴击。由于算力可以在比特币和比特币现金中自由切换,因此算力会等待BCH在EDA调整机制下,难度降低到最低点后集中切换到比特币现金上,来快速出块(因为难度很低,算力很高),从而获得超额收益。算力暴击造成了BCH的出块不稳定问题。因此在后期的更新中,Bitcoin
ABC主导了一次DAA难度调整硬分叉升级,并移除了EDA。在DAA机制下,BCH难度动态调整,每144个区块调整一次,平均约1天[2]。但是目前双方版本的算力旗鼓相当,如果没有更多变化的话,那么双方出块速度都会大大降低,这也会加剧了两条链的竞争关系。
目前社区内也有关于两条链“共存”问题的讨论。正常来说,在比特币现金或者比特币区块链上,由于通讯不及时或同时挖出新区块等原因,有时也会产生意外分叉。这时会有算力竞争,然后由最长链原则决定哪条链是合法的链。得到算力认可较少的链,会因无法挖出新区块而真正消亡。换句话说两条链不能共存。在本次分叉之争中,ABC版本和SV版确实有也有算力竞争,但是考虑到BCH整体算力并不高,并且双方算力上没有数量级的差距,而且可以借力于BTC等sha256系的算力,那么短时间内双方不太会出现由于算力不足无法出块进而消亡的情况。然而,重放攻击会严重影响交易的收发,用户在很多场景下无法使用,实际上短期内两条链是不能“共存”的。这意味着必须有一方再主动硬分叉一次,加入新的重放攻击保护机制,然后BCH才能变成真正的互不干扰的两条链。

除此之外,本次算力大战还有两个点需要格外注意:
矿池的份额不一定代表算力持有者的真正的态度。比如说某矿池虽然支持某个版本的路线图,但这不代表在该矿池挖矿的所有矿工都支持这一路线图。但也有旗帜鲜明支持某一个路线图的矿池,比如SVpool,就是为了SV版本而建立的矿池。
比特币算力可能影响最终的结果。由于BCH和BTC都是属于双sha-256挖矿算法,那么比特币庞大的算力也可以随时切换过来。目前BTC算力约47.3
EH/s,BCH算力约4.65
EH/s,BTC是BCH的10倍之多(数据统计来源BTC.com,统计时间2018-11-12 12:00
UTC+8)。而且有很多网站都提供比特币算力的租借服务,因此比特币算力可能是影响这场算力大战的重要因素。

普京娱乐 1欢迎订阅「K叔区块链」

  • 专注于区块链技术学习
    博客地址:

第2章以太坊硬分叉后发重的“重放攻击”

以太坊在192万区块高度发生了硬分叉,产生了两条链,分别称为ETH chain和ETH
Classic
chain,上面的代币分别称为ETH和ETHc。这两条链上的地址和私钥生产算法相同,交易格式也完全相同,导致在其中一条链上的交易在另一条链上很可能是完全合法的。所以你在其中一条链上发起的交易,就可以到另一条链上去重新广播,可能也会得到确认。这就是“重放攻击”。

我们使用例子来说,这次以太坊硬分叉后发生的“重放攻击”是这样的:

1.以太坊在第1920000区块高度上硬分叉出来两条链,分别称为ETH chain和ETH
Classic chain,上面的代币分别称为ETH和ETHc。

2.在硬分叉高度前的所有ETH都在分叉后的两条链上有用,即持有分叉前的ETH都自动被赠送等额ETHc。

3.某个用户持有在硬分叉高度前的ETH,该用户将自己的硬分叉高度前的ETH通过自己控制私钥的本地钱包(这个无论是ETH
chain还是ETH Classic
chain钱包都是一样的)发一笔交易到交易所充值到其账户的ETH。但ETH
chain和ETH Classic
chain都能够识别这一次交易,都是合法的交易,都会打包交易。也就是本来用户是在一条链上广播交易,但可以在另一条链上被“重放”广播了。(你可以自己用钱包去广播,也可能会有人或程序找到你的交易信息帮你去广播)

4.因为用户充值账户是交易所的,对用户来说是一个offchain钱包。如果交易所不给你,那你就丢掉了本来应该属于你的ETHc。

5.如果用户在硬分叉高度前是将ETH存放在交易所,原则上交易所应该是给用户两种币。当用户从交易所提取ETH到本地钱包时,刚好交易被提取的币是在硬分叉高度前的币。而且你又在你自己的电脑上装了两个钱包,分别是ETH
chain钱包和ETH Classic chain钱包,而且提币地址在ETH
chain钱包上生成,然后通过导入私钥的形式钱地址导进ETH Classic
chain钱包上。那你提币的同时,可以在两条链上都广播你的提币交易,这样你的两个本地钱包都能收到等额的币。

6.步骤5里,如果用户只装了一个钱包比如ETH
chain钱包,那另一份ETHc就会收不到,但并不会丢,因为你的收币私钥是和你的ETH
chain一样的,只要你提取出来这个私钥,然后导入ETH Classic
chain钱包就可以了。

7.步骤5里,如果用户提走ETH,是充值到了另一个交易所,比如从yunbi提ETH到P网。这时候P网又只给用户一种币即ETH,那用户就会丢失掉ETHc,丢掉的在谁手上呢,在P网手上。如果用户又回去问yunbi交易所要一份ETHc,yunbi很人品好有担当,真给了,那云币就相当于赔了一份ETHc币。

8.任何持有920万区块高度后的币,情况要更复杂。比如有一笔币从硬分叉前发到硬分叉后的一个地址1上,这个地址1同时在ETH和ETHc都是有效的。那你在ETH
chain上收到的币从地址1再次发送到地址2,我们记这笔交易为交易2。这笔交易在ETH
Classic
chain也是有效的,也是可以被重放的,我们记被重放的这笔交易为交易2’。但如果有办法让交易2发送有效,但让交易2’无效,即ETH
chain上的币从地址1成功发送到了地址2,但在ETH Classic
chain上从地址1发送到地址2失败了。这种情况下,ETH
chain的地址2的币再次交易时就无法被重放到ETH Classic chain上了。

9.步骤8里,什么情况下能让交易2’发送失败呢?也就是怎么样才能解决掉重放攻击呢?其中一个办法就是在交易2’发送后,但0确认前,对交易2’发起双花攻击,即使用相当的私钥再签一次名发起交易2”,将币发到另外一个地址3,如果交易2”成功了,而交易2’失败了,从此ETH
chain上的地址2的币和ETH Classic chain上的地址3的币都无法被重放了。

能不能将交易2’在ETH Classic
chain上不广播呢?不能,你不广播,会有人帮你广播的,交易信息不是加密的。谁知道哪个狗日的坏人找到你的交易信息后给你广播一下,你的这条分支的币就被发到了这条链的地址2了。

但要想把所有ETH地址和ETHc地址(这两种地址是完全一样的,ETH地址也就是ETHc地址)做到你有币我就没有,那几乎是不可能做到的,地址太多了。也就是想用这个办法彻底解决掉重放问题是不可能的了。

但对于用户来说,你可以使用这个办法分离你的ETH和ETHc,使这两者分另处在不同的地址上,这样你以后就不需要想着在一条链上做了交易我是否需要重放到另一条链了。不过问题又来了,谁会发起双花攻击0确认的交易呢?好像很难啊,所以我认为普通用户基本上是做不到的。交易所应该会。

10.还有一种办法,对其中一条链展开51%攻击,直接消灭掉其中一条链就可以了,让其算力跌到零,从此高度不再上涨,也就是这种链死了。这样问题就彻底解决掉了。

或者让其中一条链的价格跌到很低很低,大家都不关心了,也就懒去理重放交易了。

第3章以太坊经济生态圈各节点受重放攻击的影响

对用户来说以太坊目前的问题很大了,因为ETH和ETHc都有很好的经济量,而用户如果无法解决掉自己的币被重放的可能,他想卖其中一个币的同时保留另一个币,就很难实现了。要么就只能在良心交易所的协助下才能完成。如果长期两种币存在下去,用户就会很困惑,是个正常人都会问:“他妈的肿么会这样!”用户是最终赋与以太坊价值的人,如果用户离开了,还玩个毛线啊。

如果用户可以无视其中一种币,只钟情另一种币。比如只用ETH,不用ETHc,那对该用户来说,重放攻击就想不存在一样。但有几个人能做到呢,明知道通过重放交易还可以多卖一份钱,谁能不在意!

如果是新用户到没什么困惑的了,新用户去买其中一笔币,那他很难有机会通过重放交易的方式搞到另一种币,除非交易所是傻逼。

本来用户是免费得到一份ETHc的,现在他们不得不小心处理自己的币,免得被重放丢失。这是个最好的时代,这是个最坏的时代啊。

目前ETH和ETHc的经济活动基本上还是保留在交易所内的,从新闻报道来看,现在交易所基本上有能力解决重放交易了。之前损失的也和用户做好赔偿和责任划分了。任何ETH和ETHc只要经过了交易所后,对用户来说就是只有一种币了。但问题是交易所如何解决重放交易的,可以有不作恶和作恶两种解决方式。可怕的是作恶也是合法(合以太坊区块链的法)。

好的交易所会在收到用户的ETH或ETHc时尝试将交易重放到另一条链,如果重放成功,就给用户充值两种币,如果不成功就给用户充值一种币。然后在交易所内部将币彻底分离到只存在其中一条链。坏的交易所是,用户充值什么币就只入账什么币,并且将交易去重放,如果成功了就私吞。

交易所还会分聪明的和笨的,聪明的交易所会将用户充值的两种币彻底分离。当用户买入其中一种币并且提币时,交易无法被重放到另一条链。而笨的交易所不会分离两种币,用户提一种币时,将交易重放到另一条链,如果成功就白得一笔钱。

而矿工和矿池呢?无所谓哦,他们挖了ETH就不能挖ETHc,对他们来说重放攻击问题不大,新挖到的币也没法重放。通过难度和价格一合算,哪个更挣钱挖哪个,无所谓。

以太坊经济生态圈里还有开发者,目前以太坊基金会态度竟然是包容ETH
Classic,好大度啊。不理解。

就以上分析,在以太坊经济生态圈里,因为重放攻击的存在,用户麻烦最大;交易所要受到良心和技术上的考验;而矿工和开发者好像影响不大。

我认为这种混乱情况下所有人信心会受到打击。大家要想继续在这条链上掘金,就得想办法搞死其中之一。

第4章 结束语

一开始大家都以为自己是免费得到一份ETHc的,现在他们不得不小心处理自己的币,免得被重放丢失。这真是个最好的时代,这真是个最坏的时代啊。

(感谢云币网CEO邱亮答疑)

(想第一时间阅读我的比特币科普文章,请关注我的公众号:闪电HSL)

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

CopyRight © 2015-2020 普京集团娱乐网 All Rights Reserved.
网站地图xml地图