《区块链DAPP开发入门、代码实现、场景应用》笔记1——天外飞仙DAPP

Solidity编程语言解决了编写智能合约的不友好的问题,可是当合约编译并部署以后,对与这些接口的访问,对于通常的使用者来讲,门槛有点高, 对普通用户来讲也是很是不友好,为了使广大用户理解并方便快捷的访问区块链,以及区块链上的智能合约系统,开发者必须提供操做界面和结果查看界面,来简化用户访问和操做区块链的方式。所以一套完整的区块链DAPP,除了智能合约这些能够查询和改变区块链状态的代码,还须要用户操做界面以及链接用户操做与智能合约代码的接口。数据库

图1.15展现了一个DAPP的全景图,该系统架构图包含了从用户经过可视化界面发起操做到以太坊状态机发生改变的全流程。首先用户经过Web界面或者手机APP,将操做数据发送到一个传统的业务服务器,该业务服务器是传统互联网中心化的服务器,可是与传统系统不一样的是,该系统没有像传统互联网设计那样将数据放入中心化的数据库存储,而是经过一个Web 3.0接口,将数据传送到了以太坊区公链。编程

 

                              图1.15 DAPP架构图服务器

该接口是一个JSON RPC协议,该协议有不少代码实现。目前最流行的是运行在Web容器中的Web3.js模块。Solidity编程语言通过编译以后,除了交易须要的合约初始化代码以外,还有ABI接口等描述文件,Web3.js经过这些描述文件,能够构建与以太坊智能合约虚拟机进行通信的模块,经过JS(全称JavaScript,下文都简称JS)代码将用户的操做数据传入以太坊公链上的合约地址,智能合约虚拟机会根据函数签名和加载的函数参数,在虚拟机内执行编译成EVM Code的智能合约。在第6章的DAPP案例讲解中,会对Web3.js的设计有详细的讲解。网络

若是涉及到区块链数据的读取,则虚拟机会读取区块链上的区块数据,若是虚拟机的指令代码会修改以太坊公链的状态,那么经过调用相关的状态机指令,并消耗必定的GAS以后,就能够将修改操做提交到以太坊区块链公链网络中,这些操做每每是以交易的方式体现。架构

当虚拟机执行结束,其对区块链状态的修改会被矿工打包,当状态修改被全网共识,那么虚拟机对公链网络的状态修改也相应成功,经过查询相关的执行结果,将执行状态返回给用户交互系统,这样终端用户就能够经过交互系统,查看DAPP操做的执行结果。编程语言

 

2020区块链各类应用都上马了,跟我一块儿学《区块链DAPP开发入门、代码实现、场景应用》吧。函数

相关文章
相关标签/搜索