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

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

  1. 区块链应用开发入门(转)

    区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种.作为拥有锐利触角的创业家们,是否也想将区块链集成到你们现有的应用中去,而作为IT技术工程师的你,是否也是跃跃欲试,想 ...

  2. 不容错过 | 超干货免费公开课「EOS区块链应用开发入门实战」,文末送书!

    扫码报名,观看直播课 区块链的发展,被认为是新一代互联网WEB 3.0.从原则上讲,要真正借鉴互联网成功发展几十年的经验,而不是简单照搬 web 1.0 的方式各种炒作.今后的正确发展方向是把互联网成 ...

  3. 如何进行区块链的开发?

    2019独角兽企业重金招聘Python工程师标准>>> 区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种.作为拥有锐利触角的创业家们,是否也想将区块 ...

  4. 区块链DAPP开发入门课程(PHP版)

    1.前言及环境部署 1.1 课程说明 为什么有这个课程? 入门区块链开发已有些时日,走过的坑实在是太多了,对于像我这种从事互联网软件开发多事的老兵来说,上手都有些吃力,可想而知对于新手来说就更难了,尤 ...

  5. 以太坊DApp开发入门教程——Node.js和truffle框架打造区块链投票系统

    第一节 课程概述 本课程面向初学者,内容涵盖以太坊开发相关的基本概念,并将手把手地教大家如何构建一个 基于以太坊的完整去中心化应用 -- 区块链投票系统. 通过本课程的学习,你将掌握: 以太坊区块链的 ...

  6. 【区块链技术开发】 Solidity使用Truffle Box工具实现预构建模板、自动化部署、创建智能合约示例代码

    专栏:区块链技术开发 目录 1.介绍Truffle Box 2.Truffle Box功能方法 3.Truffle Box模板案例 truffle Box预构建模板的示例代码 运行构建模板的示例代码 ...

  7. Java、Python 竟成区块链主流开发语言?!

    作者 | Aholiab 出品 | 区块链大本营(blockchain_camp) 如何挑战百万年薪的人工智能! https://edu.csdn.net/topic/ai30?utm_source= ...

  8. EOS区块链常见错误编码代码汇总

    本文集汇总了EOS区块链常见错误代码及其含义,完整错误代码集请查看EOS错误代码集 - 汇智网 EOS错误代码列表如下, 错误代码 错误信息 中文含义 3000000 blockchain excep ...

  9. 区块链编程初学者入门指南

    我有很多问题需要了解区块链Blockchain的工作原理.重要的是"我如何在其上构建应用程序dapp?".花了几个星期的时间挖掘,阅读和试验才最终了解.我找不到简短而全面的指南.现 ...

最新文章

  1. python自动生成测试报告步骤_生成HTMLTestRunner测试报告的操作步骤——Python+selenium自动化...
  2. 【Java后台】Java执行Python代码的3类5种情况测试【Java源码+Python源码举例】
  3. 基于深度学习的CT图像肺结节自动检测(系列放在一起)
  4. highcharts 怎么去掉鼠标悬停效果_练瑜伽减肥没效果什么原因?
  5. 计算机美国学游戏开发,【工程与计算机】一石二鸟:开发游戏为申美国名校加码...
  6. 什么是阻塞和非阻塞?
  7. Ubuntu下OpenResty 搭建高性能服务端
  8. Android Studio:Support Library依赖包的版本号
  9. 当我跑步时我在想什么读后感
  10. 浏览器0x80004005 无法上网
  11. ESP32CAM摄像头图像实时传输
  12. TFT-LCD LVGL与硬件交互
  13. Android 开源交流 QQ 群分享汇总
  14. 如何将Word转化为Markdown文本
  15. Windows 下常用盗版软件的替代免费软件列表
  16. 使用TPC控制UR3机器臂python代码
  17. LabVIEW播放视频文件的方法与例程
  18. 软阈值 (Soft Thresholding)函数解读
  19. S7-1200PLC与MCGS触摸屏实现以太网通信的具体方法示例
  20. sas r python培训

热门文章

  1. 元宇宙NFT最近最火的项目,该如何选择平台呢
  2. 多种方法解决多个div并排显示的问题
  3. 2021年最详细的Android屏幕适配方案汇总
  4. AppOps 命令大全
  5. 怎么彻底处理windows下遇到的广告流氓软件例如:双11天喵、霸业传奇、贪玩蓝约等
  6. 0元永久授权,etl作业批量调度必备软件 Taskctl Free应用版
  7. 最好用的 Base64 在线工具
  8. 实现人rou搜索的10个经典方法
  9. 怎么把分开的pdf放在一起_怎么把连一起的pdf分开
  10. 导出多个sheet的Excel以及在服务器上压缩文件然后再导出(在这里是压缩一个excel后导出)