LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 从比特儿NXT事件浅谈电子币的回滚(rollback)

从比特儿NXT事件浅谈电子币的回滚(rollback)

2014-08-17 鹏凌三千 来源:贴吧
属于电子币技术科普性质,稍微有点复杂,小弟尽量简单,希望大家将就着看。

  ——————————————————

  首先大家需要明确的是,rollback(回滚)本身是个数据库操作概念,只是延伸到电子币领域来使用,通常来说,传统数据库领域的rollback只能在commit(提交)前才会起作用,它的执行将意味着在rollback之前的某个或全部的操作无效,在正式commit数据之后则应无法rollback。但是,针对电子币领域的回滚,则无时无刻都可以发挥效果。

  可能有些朋友会奇怪了,甚至会震惊了,为什么在去中心化的电子币领域中,会发生这种看上去好像非常“中心化”的数据回滚现象呢 其实,这长期以来都是“外行人”的一种误区,因为根本上讲,绝对的“去中心”,无论在技术上或现实中,都是不存在的——根本就没那么一码子事。

  没错,不管是P2P也好,C2C也罢,其实无论如何,“去中心”都是一个相对概念,而无法成为绝对概念。就像声音需要空气传播,电需要导体传播一样,无论任何东西想要传播出去,都需要一个相对固定的“渠道”,而这个渠道,无论怎么样,也都会成为一个相对的“中心”般存在。

  比如我们大家常说电子币是基于P2P(Peer to Peer)的,好像有了这种技术,我们的电子币网络就可以不受约束,随心所欲的任意传输,并且彻底去中心化了。然而,事实上真的是这样吗 显然不是的。

  事实上,P2P化的电子币数据要想传送出去,也必须要利用必要的“渠道”才能做到,而这“渠道”,通常分为两种:

  一种是向邻近地址发送广播请求,查看有无可用的电子币数据进行同步。具体来说,这种方式近似于有个人拿喇叭喊话,听到喊声的人再传给下一个,但是大家也都知道,声音的传播距离非常有限,而过用户不够密集的话,这种广播式数据同步是传不了多远的。最典型例子,比如你的电子币仅限于局域网环境中,假设你的IP地址是192.168.0.1,那么尝试请求的地址就是192.168.0.2,192.168.0.3之类一直到192.168.0.255,如果都找不到数据进行同步,这个币就同任何人都没有连接,连接的条数就始终是0,也就是将使用处于不可用状态。典型案例的是在国内联通环境下使用美卡币,因为该币中心服务器地址被墙(至少联通连不通),而用户量也非常少,所以在不“翻阅”的前提下,根本无法同步其网络数据。

  二是通过中心服务器获得数据(或可用的固定数据同步地址),再进行计算机之间的随机同步。具体来说,这就像是开了个固定位置的劳务市场,然后各种各样的人都到这里来早工作,由劳务市场来分配给不同的人(不同IP)不同的任务(数据包)进行同步。事实上,目前所有的电子币都有这一步骤,差异仅仅在验证过程的严谨性,以及是否存在纠错判定上面。

  而电子币的rollback(回滚)是怎么一回事呢 很简单,就是这个中心服务器地址突然告诉你的电子币,只有这样一种数据才是对的,其它的都是错误的。一旦你的电子币客户端接受了这样一类信息,那么,无论服务器发送给你的数据包结果正确与否,就都会按照这种数据来执行了。

  具体到NXT的情况,目前NXT开发团队给出的解决方案是:

  This release disables all outgoing transactions from the BTER account:10715382765594435905 after block height 209885.

  也就是说,他们修改了NXT的数据库文件(nxt.h2.db),进行了“靶向攻击”,只把由10715382765594435905(Bter的NXT账号)发出的,经由209985这个block中转的所有交易无效化,而其它交易则不受影响。根本上讲,是开发团队启动“非常手段”,强制把NXT归还给Bter了。

  而NXT为什么能够做到这点呢 非常简单,我们翻看DbVersion.java代码,就能发现其数据库中已经硬性规定了允许用户访问的“中心服务器”列表,只要这些列表中超过51%的地址接受了NXT官方团队的修改后数据,并且同步到自己的服务器端,那么,其它的用户无论是否接受他们的修改,一旦联网,你们的数据也就自然变成了他们修改后的结果了。(另外,对POW币来说,各大矿池全部反水的后果也是这样,或者Bitcoin-qt客户端故意给你们同步错误数据,并且超过51%用户下载了这个客户端的结果也差不多)

  但是,就正常运作的情况而言,黑客盗币并不是回滚的理由,blockchain任何情况下都应该是不能回滚的。最关键的问题在于,按照常识来说,回滚区块意味着开发团队在向整个世界宣布,区块链系统完全受到个了开发者的彻底控制,他们能回滚区块,也能修改区块。这样的系统根本无法保护你的财产,更谈不上去中心化。

  比如Bitcoin或Ripple之类,已经运行了很长时间,并且承载着上千万上亿美金交易任务的币种,除非是遇到严重技术BUG,否则无论任何情况下也不会出现rollback(回滚)的情况(尤其是Ripple,它作为金融协议复杂性远超Bitcoin之类的一般电子币,根本不可能也不敢进行任何人为干预,前一阵Jed闹的那么厉害,也没见RL敢上手段动他的币,当然,更主要的是Rippled不止一个,而且大多掌握在其它商业机构手中,官方也无法保障别人跟他们一起同步),因为但凡程序出身的人就会明白,对一套成熟的金融系统而言,你rollback付出的代价,远远超出被盗币本身所将付出的代价。

—-

文章来源:http://tieba.baidu.com/p/3236382346

原文链接:无

原文作者:无

编译者/作者:鹏凌三千

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...