智能合约与DApp的关系与区别

简介: 以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App,简称DApp)。

以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App,简称DApp)。DApp的目标是(或者应该是)让智能合约有一个友好的界面,外加一些额外的东西,例如IPFS(可以存储和读取数据的去中心化网络,不是出自以太坊团队,但有类似的精神)。DApp可以在一台与以太坊节点交互的中心化服务器上运行,也可以在任意一个以太坊平等节点上运行。

提示:与一般的网站不同,DApp不能在普通的服务器上运行。它需要提交交易到区块链并且从区块链而不是中心化数据库读取重要数据。相对于典型的用户登录系统,用户有可能被表示成一个“钱包”地址而其他用户数据保存在本地。许多事情都会与目前的Web应用有着不同的架构。

DApp流程如下。

1)用Solidity(或其他语言)编写智能合约(后缀为.sol)。

2)用sole编译器将.sol合约编译成EVM字节码。

3)编译好的字节码回送给DApp前端。

4)前端将编译好的智能合约部署到区块链中。

5)区块链返回智能合约地址+ABI(合约接口的二进制表示。合约接口用JS0N表示,包括变量、事件和可以调用的方法)。

6)前端通过Address+ABI+nonce,调用智能合约。

7)智能合约开始处理。

智能合约技术的产生对互联网变革非常重要,但是不能直接用于支撑DApp应用生态环境。侧链、VM也撑不起应用生态,因为我们知道应用运行于0S之上,而不是直接运行在裸机之上。一定程度上讲,VM、侧链可以类比图灵等价的裸机。

Elastos Carrier作为去中心化的互联网支撑平台,需要Elastos Chain区块链的可信服务以及Elastos Runtime虚拟运行环境来承载DApp应用。Elastos Chain并不直接暴露给DApp开发SDK。也就是说,对于Serverless App或说Decentrallized App,除了用户ID、微网站(没有互联网固定ID地址的网站)ID、数字资产(游戏、应用、多媒体内容等)ID不能作假,点对点可以交易之外,DApp根本看不到什么是智能合约技术。

相关文章
|
Java 区块链
Java工程师入门区块链的7个开源项目
如果你是一个对区块链感兴趣的Java工程师,那么除了阅读书籍或博客之外,更好的学习方法是亲自动手,深入了解以下7个最流行的Java区块链项目。 1、Corda Corda可能是Java开发人员进入区块链世界的最自然的出发点。
6553 0
|
网络协议
免费的几款内网穿透工具
免费的几款内网穿透工具
12905 1
|
区块链 算法 数据安全/隐私保护
带你读《区块链开发实战: 基于JavaScript的公链与DApp开发》之一:自己动手实现一个区块链系统
本书用三个部分讲解了区块链技术以及Asch的相关实践,第一部分讲解了区块链技术的基本概念,并用300行代码实现了一个最小的、可运行的区块链;第二部分分析Asch的源码,讲解Asch的实现原理;第三部分介绍了基于Asch的侧链技术的DApp开发实战。
成功解决百度网盘下载文件时遇到 下载总进度一直处于99.9%,显示一直下载不下来的问题
成功解决百度网盘下载文件时遇到 下载总进度一直处于99.9%,显示一直下载不下来的问题
成功解决百度网盘下载文件时遇到 下载总进度一直处于99.9%,显示一直下载不下来的问题
|
11月前
|
Web App开发 开发者
|
11月前
|
存储 编解码 API
分享一个 Python 处理音频的库
分享一个 Python 处理音频的库
201 2
|
测试技术 Python
|
安全 Linux 程序员
「技术干货」一文搞懂C语言内存模型与栈
「技术干货」一文搞懂C语言内存模型与栈