资讯专栏INFORMATION COLUMN

理解以太坊DApp及开发工具

tinna / 2060人阅读

摘要:一理解以太坊工具以太坊有很多工具,随着时间的推移有些会过时,但早期的网络文章会有介绍,从而与目前的工具造成时差上的迷惑,有些工具是随着工程化的需要逐渐流行起来的。可视化的以太坊钱包,可以管理账户发布合约。

一、理解以太坊工具

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

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

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

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

4、Mist:以太坊浏览器,因为它连接的是以太坊区块链网络,可以通过mist访问DApp,当然也能访问管理Ethereum Wallet。

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

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

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

8、web3:以太坊基金会为DApp开发的标准RPC访问接口,也就是以太坊区块链网络与链外网络的连接桥梁。
二、DAPP的工具、开发与原理

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

1、安装truffle(音:车否)

npm i -g truffle

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

3、新建Dapp项目。首先新建一个空目录如dapp,然后进入空目录。

通常可以用truffle初始化工程:

truffle init

也可以从truffle在线应用里拆箱即用一个模板如webpack:

truffle unbox webpack

我们用第二种方式进行下文演示。

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

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

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

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

5、编译工程

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

truffle compile

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

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

在终端里执行

truffle migrate

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

7、打包应用程序并访问

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

1)webpack编译打包应用

npm run build

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

2)本地启用app

npm run dev

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/23979.html

相关文章

  • 以太Dapp相关开发工具介绍

    摘要:邮件列表以太坊上的开发者邮件列表停止使用。开发的移动以太坊浏览器开发阶段由支持的浏览器内。是以太坊的开发环境,测试框架和资产管道。审查随机数以太坊虚拟机是以太坊智能合约的执行环境。 去中心化应用去中心化应用是可以使用户和供应商之间直接互动的服务(例如,连接某些市场上的买方和卖方,文件存储里的持有者和储存者)。以太坊去中心化应用典型地通过HTML/Javascript网络应用与用户互动,...

    FleyX 评论0 收藏0
  • 以太是什么 - 以太开发入门指南

    摘要:以太坊是什么以太坊是一个建立在区块链技术之上,去中心化应用平台。运行环境以太坊虚拟机是以太坊中智能合约的运行环境。是由以太坊客户端提供的是典型的开发以太坊时使用的客户端,基于语言开发。 本文首发于深入浅出区块链社区原文链接:以太坊是什么 - 以太坊开发入门指南原文已更新,请读者前往原文阅读 很多同学已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,本文将基于以太坊平台,以通俗...

    tomlingtm 评论0 收藏0
  • 区块链技术学习指引

    摘要:引言给迷失在如何学习区块链技术的同学一个指引,区块链技术是随比特币诞生,因此要搞明白区块链技术,应该先了解下比特币。但区块链技术不单应用于比特币,还有非常多的现实应用场景,想做区块链应用开发,可进一步阅读以太坊系列。 本文始发于深入浅出区块链社区, 原文:区块链技术学习指引 原文已更新,请读者前往原文阅读 本章的文章越来越多,本文是一个索引帖,方便找到自己感兴趣的文章,你也可以使用左侧...

    Cristic 评论0 收藏0
  • 在区块链上编程:DApp 开发简介

    摘要:目前通常指代基于以太坊或者上的智能合约开发的相关应用。引入以太坊通过的交互流程大致如下总结随着区块链近些年的大红大紫,被推上了风口浪尖,本文从技术的角度大致介绍了一下所涉及的技术要点。 当你开始探索区块链开发,需要了解到这些。 showImg(https://segmentfault.com/img/remote/1460000016608233?w=1370&h=389); 一、DA...

    huangjinnan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<