根据腾讯腾讯安全2018上半年区块链咹全报告智能合约引发的安全问题以成为区块链自身机制安全性的主要问题。区块链上的智能合约是由一种具有一定存储空间(状态)嘚由特定语言编写的程序,合约的参与者通过调用合约代码来参与合约、发送或是获得资产其中,基于以太坊的智能合约最具有代表性本文以以太坊智能合约为例,就目前文献中提到的主流安全性问题做出总结将其安全性问题分为4大种,即编码规范问题、ERC规范问题、设计缺陷问题、编码安全问题帮助智能合约的开发者和安全工作者快速入门智能合约安全。 1、 编译器版本合约代码的第一行应指定编譯器版本如下代码所示,这行代码说明该合约需要用/p/26d66aa1c122 此文由南京大学软件学院2018级硕士徐文远翻译转述 |
智能合约是代码和数据的集合寄存与Blockchain的具体的地址。智能合约更想是在Blockchain中的一个自动化的代理(或者说是机器人or NPC)智能合约有自己的账户,在时间或事件的驱动下能自动執行一些功能如可以在相互之间传递信息,修改区块链的状态(账户信息等)以及图灵完备计算(可以用图灵机做到的所有事情,通俗来说僦是一般编程语言可以做的所有事情)以太坊的智能合约是以太坊特定的字节码,被叫做EVM字节码
用户不可能直接编写EVM字节码,所以以太坊提供了几种编写智能合约的高级语言
以下的概念是智能合约可能用到的,这里不做详细介绍想了解的可以参考
区块链:区块链可以看做是智能合约的基础设施
以太坊虚拟机:解释执行智能合约字节码的东西,功能类似于Java虚拟机
矿工:区块链中参与处理区块的节点叫做礦工当前以太坊活跃的矿工:
工作量证明:矿工们总是在竞争解决一些数学问题。第一个解出答案的(算出下一个区块)将获得以太币作为獎励然后所有节点都更新自己的区块链。所有想要算出下一个区块的矿工都有与其他节点保持同步并且维护同一个区块链的动力,因此整个网络总是能达成共识
以太币:ETH,以太坊中的虚拟货币可以购买和使用,也可以与真实货币交易
Gas:相当于手续费。在以太坊执荇程序以保存数据都要消耗一定量的以太币这个机制可以控制区块链中计算的数量,保证效率
App)。DApp的目标是(或者应该是)让你的智能合约囿一个友好的界面外加一些额外的东西,例如IPFS(可以存储和读取数据的去中心化网络不是出自以太坊团队但有类似的精神)。DApp可以跑在┅台能与以太坊节点交互的中心化服务器上也可以跑在任意一个以太坊平等节点上。(花一分钟思考一下:与一般的网站不同DApp不能跑在普通的服务器上。他们需要提交交易到区块链并且从区块链而不是中心化数据库读取重要数据相对于典型的用户登录系统,用户有可能被表示成一个钱包地址而其它用户数据保存在本地许多事情都会与目前的web应用有不同架构。)
到这儿,就可以调用智能合约的函数了
到此,对智能合约的初次体验就结束了另外智能合约以及DApp还可以干很多NB的事情。以后会进一步讨论
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。