2.4以太坊智能合约

智能合约与Solidity简介

image.png

什么是智能合约? 合约是代码(逻辑描述)和数据(状态表示)的集合,存储在以太坊区块链的特定地址。合约账户能够在彼此之间传递信息,进行图灵完备的运算,编译成EVM字节代码,并且运行在区块链上。换句话说,智能合约是运行在区块链上模块化、可重用、自动执行的脚本。合约部署的时候将编译得到的字节码存储在区块链上,对应会有一个存储地址。当预定的条件发生时,就会发送一笔交易到该合约地址,全网节点都会执行合约脚本编译生成的操作码,最后将执行结果写入区块链。所以,可以把智能合约理解为区块链上执行操作的所有业务逻辑代码。

智能合约一个重要的特点是图灵完备。图灵完备是指一个能计算出每个图灵可计算函数的计算系统。图灵完备使脚本系统有能力解决所有的可计算问题。智能合约是图灵完备的,即可以实现图灵机所能做到的所有事情。通俗来讲,一般编程语言可以做到的所有逻辑操作,在智能合约中都可以实现。

智能合约另一个重要的特点是沙箱隔离。对I/O,网络操作、访问其他进程等进行了限制,实际上是完全隔离的。所以,目前实现的智能合约无法进行文件的读取和写入,也无法实现网络资源的访问或直接提高网路服务。智能合约智能在部署到区块链平台上以后,才能使用区块链平台提供的接口进行合约数据的访问,即访问智能合约中的数据和方法。该特性提高了智能合约执行的安全性.

目前可以使用Solidity、Serpent、LLL、Mutan这些语言来编写智能合约,但是使用最广泛最受欢迎的还是Solity。

Solidity是一种语法类似JavaScript的高级面向对象语言,也是一门静态类型语言,被设计用来编写智能合约,并运行在以太坊虚拟机上。Solidit y支持继承、库以及复杂的自定义类型。文件扩展名为.sol,是一种真正意义上的运行在网络上的去中心化合约。目前Solidity有在线的实时编译器,方便开发者使用。此外还支持多种标准的库函数,并具有以下特性。

****以太坊底层是基于账户的,所以有一个特殊的Address类型,用于定位用户,定位合约,以及定位合约的代码。

****由于合约内嵌框架是支持支付的,所以提供了关键字,如payable,可以在语言层面直接支付。

****使用网络上的区块链存储,数据的每一个状态都可以永久存储,所以需要确定变量使用内存还是区块链。

****一旦出现异常,所有的执行都将被回滚,这主要是为了保证合约执行的原子性,以避免中间状态出现数据不一致。

官方链接:http://solidity.readthedocs.io/en/v0.4.24/

你可能感兴趣的:(2.4以太坊智能合约)