随着区块链技术的发展,越来越多的个人及企业也开始关注区块链,而和区块链联系最为紧密的,大抵是就是金融行业了。 然而虽然比特币区块链大受热捧,但毕竟比特币区块链是属于公有区块链,公有区块链有着其不可编辑,不可篡改的特点,这就使得公有链并不适合企业使用,毕竟如果某金融企业开发出一个区块链,无法受其主观控制,那对于它的意义就不大。因此私有链就应运而生,但私有链虽然能够解决以上的问题,如果仅仅只是各个企业自己单独建立,那么还将是一个个孤岛。如果能够联合起来开发私有区块链,最好不过,联盟链应运而生。
去中心化是区块链技术的天然属性。而一旦区块链技术大量应用到各种社会场景中去,又不可避免地会涉及投资人、参与者、普通消费者与国家等多方利益,带来许多安全问题对区块链技术的监管,应该分为两个层面:一是结合区块链技术的具体应用场景,分行业进行监管;另一是针对区块链,制定专门的技术标准,以实现区块链技术的规范、统一。
?
去中心化(Decentralization)是区块链的根本特征,其基本含义区块链系统是“点对点”(Peer to Peer)的,每一个节点都是平等的,并没有任何中心化的系统控制者。区块链作为一种共识机制,去中心化的意义就是没有一个组织或个人对全链信息的真实性与完整性承担责任。也正因为如此,所有参与者基于对技术与规则的信任达成共识,相信没有任何一个人可以控制区块链,会对链上的信息进行篡改。如果区块链是中心化的,其基本特征和价值将不复存在。
对区块链技术的监管,应该分为两个层面:一是结合区块链技术的具体应用场景,分行业进行监管;另一是针对区块链,制定专门的技术标准,以实现区块链技术的规范、统一。
联盟链作为区块链技术的主要技术实践方向,目标在于提升效率,支持更加友好的设计,在智能合约上各种联盟链出现了不同的发展方向。本文主要分析联盟链技术上的智能合约安全性,除了代码语言本身的问题,也存在系统机制安全,运行时安全,业务逻辑安全等问题。
链码类型分为用户链码和系统链码,系统链码用来实现系统层面的功能,用户链码实现用户的应用功能。链码被编译成一个独立的应用程序,运行于隔离的容器中。 和以太坊相比,它的底层账本是分开的,升级链码时并不需要迁移账本数据到新链码当中,真正实现了逻辑与数据的分离。
在编写智能合约时,开发者需要对每个函数参数进行合法性,预期性检查,即需要保证每个参数符合合约的实际应用场景,对输入参数检查不到位往往会导致非预期的结果。对于一些敏感操作的内部函数,应尽量保证方法名采用首字母小写开头,防止被外部恶意调用。在某些业务场景中,智能合约代码可能引入其他智能合约,这些未经安全检查的合约代码可能存在一些未预期的安全隐患,进而影响链码业务本身的逻辑。
?
联盟链的发展目前还处于项目落地初期阶段,对于联盟链平台上的智能合约开发,项目方应该强化对智能合约开发者的安全培训,简化智能合约的设计,做到功能与安全的平衡,严格执行智能合约代码安全审计(自评/项目组review/三方审计)
比特安安全审计中心在此总结,在联盟链应用落地上,需要逐步推进,从简单到复杂,在项目开始阶段,需要设置适当的权限以防发生黑天鹅事件。区块链技术之所以甫一问世,即受到各界的广泛关注和热捧,主要原因在于其通过技术手段解决现实社会中最大的难题——信任和信用。区块链去中心化的特点,不仅仅意味着可以在金融领域得到充分利用,更是对社会各个方面带来极大的冲击和挑战。
|