文档章节

程序员如何切入区块链去中心化应用开发

Tiny熊
 Tiny熊
发布于 2018/09/05 15:52
字数 1620
阅读 19
收藏 0

本文首发于深入浅出区块链社区 原文链接:程序员如何切入区块链去中心化应用开发原文已更新,请读者前往原文阅读

前段时间一个以太坊游戏应用:Fomo3D异常火爆,在短短的几天内就吸引了几万的以太币投入游戏,第一轮游戏一个“黑客”用了一个非常巧妙的利用以太坊规则成为了最终赢家,拿走了1万多以太币奖金。

区块链应用的价值由这个游戏反映的淋漓尽致,Fomo3D游戏能够成功核心所依赖的是以太坊提供的一个可信、不可篡改平台。当游戏的规则确定之后,一切都按规则运行,无人可干预。今天这篇就来介绍一下程序员如何切入去中心化应用开发。

中心化应用

作为对比,先来看看中心化应用,其实就是现有的互联网应用,为什么它是中心化应用,看看它的架构图:

平时我们接触的是应用的前端(或称客户端),前端可以是HTML5的web页面、 小程序、APP, 在前端展现的内容通常发送一个请求到服务器,服务器返回相应的内容给前端。在前端的动作同样也会转化请求发送到服务器,服务器处理之后返回数据到前端。也就是说我们所有看到的内容或者操作都是中心化的服务器控制,因此说是中心化应用。

去中心化应用DAPP

而去中心化应用有什么不同呢? 看看它的架构图: 前端的表现上是一样的, 还是H5页面、 小程序、APP,DAPP和传统App关键是后端部分不同,是后端不再是一个中心化的服务器,而是分布式网络上任意节点,注意可以是 任意一个节点,在应用中给节点发送的请求通常称为 交易,交易和中心化下的请求有几个很大的不同是:交易的数据经过用户个人签名之后发送到节点,节点收到交易请求之后,会把 请求广播到整个网络,交易在网络达成共识之后,才算是真正的执行(真正其作用的执行不一是连接的后端节点,尽管后端也会执行)。以及中心化下的请求大多数都是同步的(及时拿到结果), 而交易大多数是异步的,这也是在开发去中心应用时需要注意的地方,

从节点上获得数据状态(比如交易的结果),一般是通过事件回调来获得。

如何开发

在开发中心化应用最重要两部分是 客户端UI表现后端服务程序, UI表现通过HTTP请求连接到后端服务程序,后端服务程序运行在服务器上,比如Nginx Apached等等。

开发一个去中心化应用最重要也是两部分: 客户端UI表现智能合约,智能合约的作用就像后端服务程序,智能合约是运行在节点的EVM上, 客户端调用智能合约,是通过向节点发起RPC请求完成。

下面是一个对比:

     客户端UI <=> 客户端UI 
        HTTP <=> RPC
  后端服务程序 <=> 智能合约
Nginx/Apache <=> 节点

因此对于去中心化应用来说,程序员可以从两个方面切入:

一个是 去中心化应用的客户端开发, 熟悉已经熟悉客户端软件(如Web\APP等)开发的同学,只需要了解一下客户端跟区块链节点通信的API接口,如果是在当前应用最广泛的区块链平台以太坊上开发去中心化应用,那么需要了解Web3 这个库,Web3对节点暴露出来的JSON-RPC接口进行了封装,比如Web3提供的功能有:获取节点状态,获取账号信息,调用合约、监听合约事件等等。

目前的主流语言都有Web3的实现,列举一些实现给大家参考:

另一个切入点是 智能合约的开发,在以太坊现在推荐的语言是Solidity,有一些同学对新学一门语言有一些畏惧,Solidity的语法其实很简洁,有过一两门其他语言基础(开发经验)的同学三五天就可以学会,我也录制了一个视频课程:深入详解以太坊智能合约语言Solidity

下面用一个Hello合约,体会下Solidity的语法:

contract Hello {
      function hello() public returns(string) {
           return "Hello World"; 
      }
}

如果把上面的contract关键字更改为class,就和其他语言定义一个类一样。

有兴趣的同学可以进一步学习一下这个DApp开发案例Web3与智能合约交互实战

在DAPP的开发过程中,一些开发工具可以帮助我们事半功倍,如:Truffle开发框架以及Ganache工具来模拟节点等,这篇文章一步步教你开发、部署第一个去中心化应用

补充

对于想切入到去中心化应用开发的同学,对区块链运行的原理了解肯定会是加分项,尤其是各类共识机制(POW,POS,DPOS等)的理解,P2P网络的理解,以及各类加密和Hash算法的运用。有一些同学想做区块链底层开发,对区块链运行的原理则是必须项。

欢迎来知识星球提问,星球内已经聚集了300多位区块链技术爱好者。 深入浅出区块链 - 系统学习区块链,打造最好的区块链技术博客。

© 著作权归作者所有

Tiny熊
粉丝 7
博文 73
码字总数 155850
作品 0
珠海
私信 提问
程序员如何切入区块链去中心化应用开发

前段时间一个以太坊游戏应用:Fomo3D异常火爆,在短短的几天内就吸引了几万的以太币投入游戏,第一轮游戏一个“黑客”用了一个非常巧妙的利用以太坊规则成为了最终赢家,拿走了1万多以太币奖...

深入浅出区块链
2018/08/31
0
0
Uchain(优链)与国家技术转移东部中心区块链产业中心达成共识,共同推动区块链健康发展

昨日下午,Uchain(优链)受邀参加了由BIC加速课堂举办的线下讲座活动。 本次活动的主办方——国家技术转移东部中心区块链产业中心——重点专注于区块产品研发和行业应用需求,立足上海、辐射...

Uchain
2018/07/19
0
0
区块链游戏开发调研:34%从业者不知如何盈利

区块链游戏开发调研:34%从业者不知如何盈利 2018-12-20 16:58编辑: 游星啊分类:区块链来源:Cocos-Bcx 区块链区块链游戏Cocos-BCX 招聘信息: 图像处理及模式识别工程师 C/C++工程师 Coco...

游星啊
2018/12/20
0
0
用Visual Studio和C#开发以太坊应用程序

最近区块链技术引起了我的注意。我刚开始了解它,就看到了区块链去中心化架构的巨大潜力,并且它能够简化各种现有繁琐的流程,通过各种形式的。 作为一名.NET开发人员,我主要使用的是一些提...

geek12345
2018/09/14
77
0
八仙过海各显神通 BATJ开打区块链“圈地”大战

八仙过海各显神通 BATJ开打区块链“圈地”大战 2018-08-01 14:22编辑: garace分类:区块链来源:巴比特 百度腾讯阿里 招聘信息: iOS开发 iOS开发 iOS开发 app开发上架H5技术 app开发技术 ...

garace
2018/08/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Knowage 6.2安装部署

注意:需要正确配置JAVA_HOME和JRE_HOME还有catalina_home,否则启动的时候tomcat一闪而过,想要获得报错信息,可以打开cmd,在dos命令行运行开始命令 官网:https://www.knowage-suite.com/s...

阿伦哥-
23分钟前
5
0
c++11 左值引用和右值引用

#include <iostream>using namespace std;void Print(string& s){ cout << s;}int main(){ string s="abc"; Print(s); // OK Print("abc"); // parse error......

SibylY
24分钟前
5
0
浅谈Facade外观模式

一、前言 外观模式是一种非常简单的模式,简单到我们经常都会使用,比如对于类A和B,如果两者需要交互,经过一定的处理过程才能实现某一个具体的功能,那么我们可以将这个处理的过程定义为一...

青衣霓裳
25分钟前
5
0
AnalyticDB for PostgreSQL 6.0 新特性介绍

阿里云 AnalyticDB for PostgreSQL 为采用MPP架构的分布式集群数据库,完备支持SQL 2003,部分兼容Oracle语法,支持PL/SQL存储过程,触发器,支持标准数据库事务ACID。ADB PG通过行存储、列存...

Mr_zebra
27分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部