DApp是Decentralized Application的简称,及去中心化应用。
在某种程度上,比特币可以说是出现的第一个DAPP,因为它是完全开源的,为贡献者提供奖励回报,不受一个中央机构的控制,并使用区块链作为支撑技术。区块链,作为一个基础设施,提供了分布式的去中心化可信数据库,人们可以基于此,可以开发各种应用,适用于不同的场景。简单来说,DAPP和普通的App原理一样,除了他们是完全去中心化的,由类似以太坊网络本身自己的节点来运作的DAPP,不依赖于任何中心化的服务器,DAPP是去中心化的,可以完全自动地运行。目前DApp通常指代基于以太坊或者EOS上的智能合约开发的相关应用。
DApp运行原理
DApp底层区块链开发平台就好比手机的iOS和Android系统,是各种DApp的底层生态环境,DApp就是底层区块链平台生态上衍生的各种分布式应用,也是区块链世界中的基础服务提供方,DApp于区块链,就好比APP之于iOS和Android。
智能合约是代码(它的功能)和数据(它的状态)的集合,存在于以太坊区块链的特定地址。智能合约账户能够在彼此之间传递信息,进行图灵完备的运算。智能合约依靠被称作以太坊虚拟机(EVM)字节代码(以太坊特有的二进制格式)上的区块链运行。
智能合约使用诸如Solidity等高级语言写成,然后编译成字节代码上传到区块链上。
智能合约开发流程大概有以下步骤:
编写智能合约(如基于solidity)
测试智能合约,在测试网络或者私有链进行合约的功能测试
编译和发布合约,将合约部署到链上
操作合约,利用诸如web3.js等接口,通过访问智能合约的地址,来调用和操作智能合约。
结构示意图:
Solidity
Solidity是一种语法类似JavaScript的高级语言。它被设计成以编译的方式生成以太坊虚拟机代码。
代码片段:
pragma solidity^0.4.22;
contract helloWorld{
function renderHelloWorld()public pure returns(string){
return'helloWorld';
}
}
ERC-20
最著名的智能合约,想必大家都听过,那就是ERC20。ERC-20是一种代币的标准协议,简单地说,任何ERC-20代币都能立即兼容以太坊钱包(几乎所有支持以太币的钱包,包括MIST、imToken等),由于交易所已经知道这些代币是如何操作的,它们可以很容易地整合这些代币。这就意味着,在很多情况下,这些代币都是可以立即进行交易的。