理解以太坊DApp及开发工具

1、理解以太坊工具

以太坊有不少工具,随着时间的推移有些会过期,但早期的网络文章会有介绍,从而与目前的工具形成时差上的迷惑,有些工具是随着工程化的须要逐渐流行起来的。有必要梳理如下:前端

一、go-ethereum:以太坊Go语言版本的源码(也叫Client,注意区块链网络里没有服务端)。

二、Geth:go-ethereum的命令行终端,能调用go-ethereum的API。能够经过多种方式得到,好比用homebrew安装、下载可执行二进制文件、经过go install/make geth go-ethereum源码等方式获得geth。

三、Ethereum Wallet:可视化的Geth(以太坊钱包),能够管理帐户、发布合约。

四、Mist:以太坊浏览器,由于它链接的是以太坊区块链网络,能够经过mist访问DApp,固然也能访问管理Ethereum Wallet。

五、Solidity:开发智能合约的编程语言,运行在EVM。

六、Remix:开发智能合约的IDE,基于浏览器。适合新手(版本控制、存储等不便)。(Mix中止更新,browser-solidity也中止更新,都使用Remix了)

七、Truffle和Embark是开发DApps的两个经常使用框架,能够写代码-编译-部署-测试-打包DApp(注意不只仅能够开发智能合约)。

八、web3:以太坊基金会为DApp开发的标准RPC访问接口,也就是以太坊区块链网络与链外网络的链接桥梁。

2、DAPP的工具、开发与原理

经过一个Dapp开发例子来理解。webpack

一、安装truffle(音:车否)web

npm i -g truffle

二、安装Ganache(音:搁那师),Ganache是用于以太坊开发的仅为我的使用的区块链,下载可视化安装包。
http://truffleframework.com/g...npm

三、新建Dapp项目。首先新建一个空目录如dapp,而后进入空目录。编程

一般能够用truffle初始化工程:json

truffle init

也能够从truffle在线应用里拆箱即用一个模板如webpack:浏览器

truffle unbox webpack

咱们用第二种方式进行下文演示。服务器

四、我使用的IDE是GoLand(intellij idea系列的IDE均可以),安装插件Intellij-Solidity。打开工程后就能够友好地编写智能合约和DApp了。网络

dapp目录下的几个文件说明:app

truffle.js:默认配置了一个网络,这个网络启动ganache后就自动启用了(每次启动都是全新的初始网络,以前的应用数据会丢失),智能合约就是被部署到这个网络里的。

migrations目录:这里面是合约的部署脚本,注意命名以数字加下划线开头,合约部署时按这个数字序号顺序执行。

五、编译工程

终端cd到dapp目录下执行编译命令

truffle compile

会看到dapp下多了一个build目录,存放编译后的文件。这些文件都是json格式,能够在应用代码文件中经过import或require引用这些编译后的合约文件。

六、部署合约到区块链网络

在终端里执行

truffle migrate

执行结束并成功后能够从ganache界面中看到产生了几个区块和几笔交易,这些交易是从默认的第一个外部拥有帐户到合约帐户(这两个帐户的概念参见以太坊黄皮书说明,此处不大篇赘述)。

七、打包应用程序并访问

在终端里执行(应用程序根目录下)

1)webpack编译打包应用

npm run build

【DApp原理】这个打包的结果就是单页前端应用SPA (Single-Page App)。你能够将它放在本身的云web服务器上,服务器上同时要部署一个以太节点,应用经过节点接入区块链网络。DApp通常都部署在链外,合约是发布到链上的。因特网的用户访问App界面操做功能,这些功能是合约暴露的web3接口。DApp之因此是去中心化的,就在于其核心——合约,分布于链上全部节点。

2)本地启用app

npm run dev

访问 http://localhost:8080,就能够看到dapp的界面,包含可视化的合约功能。

相关文章
相关标签/搜索