神刀安全网

关于The DAO智能合约被攻击事件的反思

北京时间昨天下午,运行在以太坊公有链上的 The DAO 智能合约遭遇攻击,该合约筹集的公众款项不断被一个函数的递归调用转向它的子合约,涉及总额三百多万以太币。这是一起严重的智能合约被攻击事件,引起了区块链领域各方人士的高度关切。

一、事件的影响和波及程度

关于事件的影响,可以通过以太坊社区高层发布的一系列官方消息来做一个初步的判断。

1 、事件是 The DAO 智能合约本身脚本的漏洞被利用所引发,没有证 据表 明以太坊公有链的基础协议、基础平台和 EVM 虚拟机的技术实现与事件的发生之间有可以论证的因果联系,可以初步认为与 The DAO 无关的以太坊公有链运作不受事件的影响。

2 、攻击行为是发生在 The DAO 和它的子合约之间的以太币转移,被劫持的资金仍然存留在以太坊体系内,按照合约的技术设定, 27 日之内资金无法被提走,因此所发生的损失是可控的,还有挽回的时间和余地。

3、对事件采取的危机管理措施,带有一定程度的中心化色彩,令坚持去中心化理念的人士心怀疑虑,担心区块链社区秉持的去中心化原则遭到破坏并开启一个危险的先例。但这担心是否会转化为真实的客户和资金流失,有待进一步评估。

二、以太坊社区的应对

事件定位后,以太坊社区采取了如下的危机管理措施:

——首先是号召社区利用垃圾交易等阻断后续的资金转移;

——然后是组织核心开发团队开发补救版本,拟通过“软分叉”方式部署上线,以此来达到事实上废除发生在 The DAO 及其子合同之间的以太币转移交易的目的;

——与此同时,社区会积极研究后续根除类似攻击的技术手段,一旦找到,不排除通过“硬分叉”方式实现全网的版本升级。

对于这些应对措施,参照本人在资本市场技术领域的多年实践,我的看法如下:  

1 、危机管理、应急处置在第一时间优先考虑的必然是隔离风险,而非根除隐患。隔离了风险,就为根除隐患赢得了时间和进一步的运作余地。本次事件中,风险扩散的最危险的敞口是被劫持的资金转出以太坊体系之外,到那个时候就真的“摊上大事儿了”。所以,选择关门打狗,无疑是正确的。

2 、在成熟的资本市场,对于显失公平的交易予以取消、冻结或暂缓交收等措施,在各国立法和具体实践中,也有很多行之有效的做法。在区块链、数字货币这样的创新领域,法律或许还有空白地带,但在危机管理的理念和风险防控的法理精神上,是和成熟资本市场的做法一脉相承的,应予肯定。

3 、对于软分叉,有人指责这是“黑客手法”,有人批评这破坏了区块链社区所秉持的“去中心化”理念,这个口子开不得。个人认为,如果认定事件中与劫持资金相关联的那些交易是“显失公平”的交易,那么根据上面第 2 点,相应做法是内容正义的。至于程序是否正义,这涉及到两个问题,(一)除了软分叉,还有没有更好的、程序更加“正义”的技术手段来达到同样的目的?(二)如果暂时想不出更好的办法是否就应该不作为?显然,社区对像以太坊这么复杂的技术体系的风险应对手段的认知能力是有限度的,暂时还没有能够达成共识的更好方案。而不作为就意味着要面对 27 天后这笔资金可能转出以太坊体系之外的后果,再对其进行处置难度可能不是现在这个量级的,给以太坊特别是 DAO 项目的贡献者带来的损失可能更加将难以估量。

基于以上分析,个人认为以太坊创始人、基金会和核心开发团队实行的危机管理举措是合适的、必要的和及时的。

三、事件的反思

这是区块链问世以来的一次带有标志性的事件。它带给我们的启示和思考涉及到很多方面。本人结合在中国资本市场金融科技领域工作多年的实践经验特别是管理经验,尝试与大家分享一下个人的几点思考。

第一,当“去中心化”的理念遭遇“危机管理”的现实,社区该做什么样的决断?什么才是真正的程序正义?

我认为,作为民间社区开发运作的区块链技术体系,在常态下秉持“去中心化”的理念有其积极意义。但是,“去中心化”不是僵死的教条,不是眼看钱都要被洗劫走了还在那儿争论不休。危机处理的要义就是在第一时间隔离风险,控制风险的蔓延,把损失局限到尽量小的范围,任何违背这个要义的做法都是耍流氓,不管披着技术民主的外衣还是去中心化的光环,都不能改变其耍流氓的本质。危机处理就是当断则断。当断不断,必遭其乱。

断,就要有相应的机制,包括预案、授权、尽责基础上的免责以及相应的技术手段。预案是事先对危机场景及其应对措施的设定。即使是按照去中心化的机制攒出来的预案,也比没有预案要好得多。授权是提高危机管理效率特别是时间效率的保障。七嘴八舌争论不休的局面无法进行有效的危机管理。涉及到对复杂技术系统、复杂利益关系和复杂影响链条理解的危机管理,更需要专业化的团队和专业上有突出能力的精神领袖在危机场景中冲在第一线。因此事先做好对专业化危机管理团队和精神领袖的授权,是标榜技术民主的民间社区必须补的一堂课。接下来,如果你认可预案,认可对执行预案的团队和领袖的授权,而他们在危机中也确实忠实执行了预案、履行了被授权的义务,在此基础上仍然无法挽回的损失就不应再归咎于他们。最后,技术手段对于高效率执行预案是非常关键的。在传统交易所里,在危机场景下,一个交易产品或板块如果不适合继续交易,交易所可以对之采取临时紧急停牌等措施;如果整个市场不适合继续交易,交易所可以对之采取临时紧急停市的措施。这两类措施最后都会落实到技术系统中,体现为既用户友好又有充分操作风险警示的危机管理操作界面。把这类被传统金融领域证明为行之有效的危机管理机制借鉴到民间区块链的运营中来,有非常积极的意义。

第二,智能合约需不需要有一个可追责的业务 owner ?智能合约和平台之间是否应建立明晰的责任边界?

智能合约是金融科技史上的一项伟大的创新,对其正面意义怎么评价都不会过高。但是,智能合约一旦有漏洞,谁对这个智能合约负责呢?比照一下成熟资本市场和传统交易所,任何一个金融创新产品的推出上线,都是有业务 owner 的。如果属于业务逻辑的设计错误导致利用这个错误的人不当得利而另外一些人遭受损失,这个业务 owner 难辞其咎。智能合约的运行实践中,似乎出现了一种令人不安的倾向,即越是找不到可以追责的人,这个智能合约就被视为越有创意和反叛精神,越被市场追捧。这是不正常的。所以,民间数字货币的现状,绝不是一个合理的和理想的利益平衡点。理想的利益平衡点必须在考虑最坏后果的前提下实现正常的追责逻辑,可以是实现质押一笔追责保证金,可以签署一份法律上责权清晰的(不同于标的智能合约的)书面协议。

智能合约的业务 owner 不清晰带来的一个严重的后果,就是合约感冒,平台吃药。就这次事件来说,平台本来是没有过错的,但是却必须为合约的错误承担后果,处理善后,蒙受名誉损失甚至经济损失。正确明晰地界定智能合约和平台的法律责任边界,已经提上日程。平台所承载的金融内涵越厚越重,界定责任边界的工作就越迫在眉睫。

当然,鉴于合约和平台间在技术实现上千丝万缕的联系,就算确定了智能合约的业务 owner ,危机处理的过程也不可能仅由业务 owner 独家完成,平台方面的配合和支持一定是不可缺少的,但这是在明确责任边界基础之上的配合和支持,而不是业务 owner 挖坑,平台往里跳的关系。

第三,如果区块链技术引入金融主战场,如何避免类似事件的发生?

将区块链技术引入金融主战场,哪怕只是金融主战场的边缘地带,都不是一个小的动作,从这次事件中充分吸取的教训,有助于相应工作的有序健康推进。

首先,各类法律、法规、业务规则和监管规章都要第一时间跟进到目标业务的区块链实现上。没有对一个技术动作的业务内涵及其法律后果的深入理解,就无法评估这个技术动作背后应该施加什么、施加多少风险防控措施。这就是为什么以正规金融应用为目标的区块链或分布式账本技术联盟当中,都必须有法律和合规方面的工作内容的原因所在。

其次,进军金融领域的区块链技术社区要尊重成熟资本市场在多年的运行实践中积累下来的运行经验特别是危机管理、应急处置经验,从其大量的案例中汲取营养和教训,不要重犯已有历史记载的错误。比如某电子商务平台的光缆被挖断事件,如果在他们的数据中心建设之初就到在多地容灾方面已有成熟解决方案的金融科技领域取经,是绝不至于发生的。面向金融领域的区块链或分布式账本技术体系的建设,也要本着以史为镜的精神,少谈颠覆,多做融合。

还有,智能合约是一个全新的事务,它既是业务逻辑的载体,同时又扎扎实实地落在了技术实现的层面。对智能合约的评审、风控,就不单单是传统金融机构的“业务部门”可以独家搞定的东西,而是同时具有了业务属性和技术属性。随着智能合约向传统金融机构的渗透,传统金融机构与之对接的业务 owner 部门必须配备大量技术业务复合型人才,这对于准备引进区块链技术的传统金融机构来说,也是一个前所未有的全新挑战。​

====================================================

附注 1 :“软分叉”指新协议比旧协议约束从严,因此旧节点承认新节点生成的所有区块而新节点不承认旧节点生成的某些区块的协议版本升级安排。在这种安排下,只要新节点算力超过全网算力的 51% ,就可以在全网新旧节点达成共识,实现新旧协议间的平稳切换。

附注 2 :“硬分叉”指新协议比旧协议约束从宽,因此新节点承认旧节点生成的所有区块而旧节点有可能不承认新节点生成的某些区块的协议版本升级安全。在这种安排下,除非新节点完全取代旧节点,否则仍旧在线的旧节点就有可能无法与新节点达成共识,从而影响新旧协议间的平稳切换。

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 关于The DAO智能合约被攻击事件的反思

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址