目前区块链有两大公认的智能合约公链,一个是以太坊智能合约,另一个则是波场智能合约。以太坊智能合约我们都知道gas费比较高,动辄几十上百的gas费很多用户表示接受不了,而波场智能合约则很便宜,而且转账速度极快,几乎秒到!所以越来越多的DAPP智能合约在波场公链上发行。
智能合约,就是一种运行在区块链上的程序。和普通程序不同的是,智能合约要保证在区块链网络的每一个节点中运行的结果完全相同,这样才能使任何一个节点都可以验证产出节点生成的区块里,智能合约执行的结果对不对。
因此,以太坊提供了一个EVM(Ethereum Virtual Machine)虚拟机来执行智能合约的字节码,并且,和普通程序相比,为了消除程序运行的不确定性,智能合约有很多限制,例如,不支持浮点运算(因为浮点数有不同的表示方法,不同架构的CPU运行的浮点计算精度都不同),不支持随机数,不支持从外部读取输入等等。
类似于Java源码被编译为JVM可执行的字节码,我们也需要一种高级语言来编写智能合约,然后编译成EVM的字节码。最常用的开发智能合约的语言是以太坊专门为其定制的Solidity语言,后续我们会详细介绍Solidity的用法。
一个智能合约被编译后就是一段EVM字节码,将它部署在以太坊的区块链时,会根据部署者的地址和该地址的nonce分配一个合约地址,合约地址和账户地址的格式是没有区别的,但合约地址没有私钥,也就没有人能直接操作该地址的合约数据。要调用合约,唯一的方法是调用合约的公共函数本文由系统开发对接威:lovei130908编辑整理发布。
DApp是通过智能合约构建起来的——智能合约指的是在区块链上以确定性运行的编码逻辑的程序(即如果发生x事件,则自动执行y操作)。我们目前看到的大多数dApp都是由多个智能合约构建而成的,形成了一个个具有特定用例的应用程序。
DApp所需的六个最基本的功能:
1、结算:本质上是整个区块链分类账中的子分类账。它们由一些智能合约组成,这些智能合约用于分配资产所有权并定义存入资产如何在dApp中交互。
2、计算:包含着带有程序逻辑的智能合约,要想对这些逻辑进行处理,必须要在最终状态更改生成前执行。
3、存储:为了方便用户能够在其Web浏览器中与dApp进行交互,它需要选择适合自己的存储解决方案来托管用户界面(UI)。
4、资金:通常拥有原生数字资产和/或通过其他用户存入的数字资产作为其服务的一部分。
5、服务:需要一些链下服务的辅助来完成其链上功能和持续的维护,例如访问外部数据、交易排序、隐私生成、零售银行支付、企业后端系统、其他区块链、管理员机器人、数据索引、传统API、可验证的随机性、储备证明、区块链抽象层或任何类型的在本地区块链无法使用或无实用价值的链下数据或服务。
6、治理:为了可以持续开展开发和维护决策,不同形式的社区治理是有必要存在的。发行治理代币,可以让用户来决定协议的未来方向,用户会因为参与了治理而获得一些奖励的收入。