随着智能合约飞速发展,越来越多的项目基于以太坊发行Token,链上资产的类别和规模呈指数级增长,“虚拟世界”中的数字资产也点燃了黑客们的“热情”。以太坊区块链被认为是区块链的2.0时代,各种各样新的数字资产都基于以太坊发行早期代币甚至实现部分功能,虽然国外区块链社区甚至认为以太坊体量变得太大,已经不可轻易战胜,但以太坊也是数字货币历史上产生最多安全问题的币种。 从2016年的The DAO事件,到BEC,EDU,SMT的安全漏洞,到Defi代币失窃事件,以太坊的智能合约可以说充满安全漏洞。大多数的代币都在自己主网上线前使用以太坊代币,作为投资者,为了自身资产的安全着想,熟悉智能合约的漏洞概念变得尤为重要。 黑客利刃砍出的ETH和ETC TheDAO作为世界上最大的众筹项目,一度被寄予了厚望,所谓“成也萧何,败也萧何”,智能合约一度被捧上了天,但在TheDAO事件当中,其递归调用(recursivecalling)的漏洞却成为了黑客入侵的大门。此后出现“黑客”现身谈攻击合法性的戏幕,更是让人大跌眼镜,这第一次引出了智能合约代码监管的问题。 2016年6月17日发生了在区块链历史上留下沉重一笔的攻击事件。由于其编写的智能合约存在着重大缺陷,区块链业界最大的众筹项目TheDAO(被攻击前拥有1亿美元左右资产)遭到攻击,导致300多万以太币资产被分离出TheDAO资产池TheDAO编写的智能合约中有一个splitDAO函数,攻击者通过此函数中的漏洞重复利用自己的DAO资产来不断从TheDAO项目的资产池中分离DAO资产给自己。 被攻击后,Vitalik个人支持分叉的提议,也支持软分叉的开发工作,支持矿工升级客户端来进行分叉。然而Vitalik也认识到大家对这个提议有激烈的争论,无论哪一方的观点都有强力的反对。因为分叉不需要回滚交易,不会对用户和交易所造成不便,这更使Vitalik倾向于采取行动的一方。也有许多人,包括在基金会内部,倾向于另外一方反对分叉。Vitalik不会阻止也不会反对另一方在公开场合宣传他们的观点,甚至是游说矿工来抵制这个分叉。在这件事情上Vitalik会坚决的不与任何站在相对他的另一方的人争辩。 简而言之,他们所做的是更改以太坊区块链来修正DAO,但只有当大部分运行以太坊区块链网络的计算机同意,软件才能进行更新,摆脱掉漏洞,就好像攻击从来没有发生过。这一过程被称为硬分叉(hardfork),从此以太坊创造了一个平行世界,现在的以太坊其实是分叉出来的“以太坊”并在一年后狂飙突进的涨到了几百美元,而原来不愿意分叉的包含The DAO漏洞的以太坊则成了以太坊经典(ETC)。这一决定引发了强烈的反应,一年后仍然存在争议,无论是在以太坊社区还是比特币用户都坚持区块链的历史不能被篡改,有些比特币用户认为硬分叉在某些方面违反了最基本的价值观。 Binance黑客VIA事件 2018年在 3月7日深夜(北京时间),有不少用户发现自己币安账户中持有的各种各样的代币、数字货币被市价即时币币交易成了BTC。据网友反馈,被盗的账号不在少数,不少人还以为是币安系统错误导致的,还试图从币安客服那里得到解释。当他们还没有反应过来的时候,黑客已经开始了他们有组织、有预谋的行动。 黑客启动了所有盗窃的账户的买卖引擎,买卖规则就是卖掉所有山寨币,用市场价全仓购买VIA。而恰好黑客手里持有大量VIA,这样就相当于高价购买了黑客手里的VIA。于是,VIA的K线出现了惊人的振幅:2分钟内爆拉了110倍。从交易量和拉升价格来看,有大约1000个BTC的买单,把VIA的价格从0.000225btc拉到0.025,价格上涨大约110倍。 但是黑客的行动触发了币安的预警系统,黑客没能直接提出高价卖出所得的比特币。于是他们转而以超低价格爆砸比特币现货的订单列表,引起其他交易所期货价格的连锁反应。于是黑客预先埋伏的巨量空单获得巨大收益。黑客的攻击,已经去中心化了。 LGC的安全设计 由于货币需要一个稳定的系统,智能合约设计的越复杂出错的可能性就越高,所以在早期中本聪认为货币系统是不需要图灵完备的语言的,比特币之所以不支持智能合约也是觉得货币需要极高的稳定性。那么,如何运行区块链里保持货币稳定的同时又可以开发Dapp呢? 在LGC中Token链是一个并行多链的结构,共享用户基础。作为一个DAPP开发者最关心的肯定是三件事:1开发难度2用户体验3社区生态。那么Token链的设计就是针对不想自己重新开发一条公链,但想要发行token和链的开发人员。 LGC生态主要面向的对象是开发者,所以在设计Token链的时候最大的想法是设计一个可以吸引大家都来发币的平台(之所以大家过来发币是因为TPS高,手续费低,可以选择发链用自己的Token做交易费,还可以和其他的链共享用户),这样可以让在LGC上开发DAPP的开发者可以获得更多的用户资源。 LGC的中心思想是设计一个社区的机制,让开发者可以轻易的开发一个DAPP,其他的交给LGC来处理,安全问题当然也是LGC在设计之初考虑的重点。 比如近期对很多项目发起攻击的“transferFrom“函数,LGC就在require(balances[_from]>=_value);下一行增加了require(allowance[_from][msg.sender]>=_value);?判断,确保了合约转账不会出现可供黑客利用的漏洞。 Token不应该是一个智能合约,而应该是一个预先定义好事件的一个“对象”,这个“对象”可以有自己的参数(比如总量、共识机制等等),接受Token的地址可以有两种:普通的用户地址和合约地址,合约地址收到Token之后可以执行非图灵完备的合约语言,进行简单的状态计算和Token转移。 公链是区块链发展的前提基础,也是区块链行业未来发展的核心保障。而目前区块链的发展现状是,底层公链的性能尚未发展起来,在其上构建的各类DAPP严重受限于性能,各种共识算法都有不完美之处,安全问题也令人堪忧。由于智能合约一旦上传,即公开且不可更改,因此大多“区块链2.0”项目有安全性验证的需求。一些团体也开始致力于应用形式化验证技术,为智能合约和区块链生态提供安全保护。将智能合约转化为数学模型,通过逻辑上的推理演算来验证模型,从而证明智能合约的安全性。 但由于智能合约是“不可变更的”。一旦部署,它们的代码是不能更改的,导致无法修复任何发现的bug。在潜在的未来里,整个组织都由智能合约代码管控,对于适当的安全性需求巨大。过去的黑客如TheDAO或BEC,SMT,EDU,BAI等漏洞事件提高了开发者们的警惕,可我们还有很长的路要走。 各个公链在可扩展性,应用性,共识哲学以及安全建设上的角逐将持续很长一段时间。我们认为既然没有完美的防止漏洞的方法,那我们不妨学习LGC,让Token这个“对象”尽可能的简洁,是现阶段区块链行业里比较好的解决方案。 —- 编译者/作者:云飞说币 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
安全为心浅谈LGC公链是如何应对黑客攻击的
2020-11-02 云飞说币 来源:区块链网络
LOADING...
相关阅读:
- Status 社区名人堂:马利克2020-11-02
- 尽管从20美元的高位下跌了50%,Chainlink Whales仍然看涨2020-11-02
- 加密分析师指定四个山寨币精选以增强挣扎中的投资组合2020-11-02
- 币上皇:与盘俱进与你同在新的征程谱写新的篇章2020-11-02
- 11/2凌晨以太坊行情分析及操作建议2020-11-02