文档章节

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

柯南和由美
 柯南和由美
发布于 10/23 12:00
字数 936
阅读 16
收藏 0

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开发入门、代码实现、场景应用》吧。

© 著作权归作者所有

柯南和由美
粉丝 8
博文 52
码字总数 39665
作品 0
海淀
私信 提问
《区块链DAPP开发入门、代码实现、场景应用》笔记1——天外飞仙DAPP

Solidity编程语言解决了编写智能合约的不友好的问题,但是当合约编译并部署之后,对与这些接口的访问,对于一般的使用者来说,门槛有点高, 对普通用户来说也是非常不友好,为了使广大用户理...

小李子2926
10/23
0
0
python开发以太坊智能合约

Pyethapp是以python为基础的客户端,实现以太坊加密经济状态机。python实现旨在提供一个更容易删节和扩展的代码库。Pyethapp利用两个以太坊核心组成部分来实现客户端: pyethereum —— 核心...

智能合约
2018/05/02
580
0
区块链培训区块链培训区块链培训,重要的事情说三遍

区块链这段时间非常火,可以学习区块链专业开发技术的培训却不多。多数是区块链的基础资料配合其他行业知识做高端培训如某大学培训之类,给高端人士扫盲。真正的能指导开发的IT技术类培训的可...

以太坊智能合约开发
2018/05/03
27
0
DApp是什么,DApp是必然趋势

从2009年中本聪发明了比特币之后,比特币火了后,现在是区块链火了,然后随之而来的是DApp火了。至于什么是比特币什么是区块链,网上一大堆文章资料,这里不多赘述,下面来讲讲要火了的DApp。...

Thehrdertheluck
2018/04/23
0
0
EOS智能合约与DApp开发入门

EOS的是Block.One主导研发的一个区块链底层公链系统,它专门为支撑商业去中心化 应用(Decentralized Application)而设计,其代码开源。 比特币被称为区块链1.0,因为它开辟了数字加密货币的...

笔阁
2018/07/21
269
0

没有更多内容

加载失败,请刷新页面

加载更多

BigDecimal 去后面无用的0的方法

BigDecimal a=new BigDecimal("0.1000"); System.out.println(a.stripTrailingZeros().toPlainString());...

xiaodong16
59分钟前
5
0
JAVA--高级基础开发

[集合版双色球] 十二、双色球规则:双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1—33中选择;蓝色球号码从1—16中选择;请随机生成一注双色球号码。(要求同色号码...

李文杰-yaya
昨天
20
0
聊聊rocketmq broker的CONSUMER_SEND_MSG_BACK

序 本文主要研究一下rocketmq broker的CONSUMER_SEND_MSG_BACK CONSUMER_SEND_MSG_BACK rocketmq/common/src/main/java/org/apache/rocketmq/common/protocol/RequestCode.java public class......

go4it
昨天
4
0
API常见接口(下)

system类 StringBuilder和StringBuffer 包装类 1.System类 (java.lang包中) 提供了大量的静态方法,可以获取与系统相关的信息或系统级操作。 常用方法: public static long currentTimeMi...

Firefly-
昨天
4
0
MySQL系列:一句SQL,MySQL是怎么工作的?

对于MySQL而言,其实分为客户端与服务端。 服务端,就是MySQL应用,当我们使用net start mysql命令启动的服务,其实就是启动了MySQL的服务端。 客户端,负责发送请求到服务端并从服务端获取数...

杨小格子
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部