本教程运行环境为Ubuntu 16.04

环境配置

认识一下以下几个名词:

以太坊:能够在区块链上实现智能合约、开源的底层系统。

testrpc:在本地使用内存模拟的一个以太坊环境,用于开发调试。

geth:全称是go-ethereum,是一个以太坊客户端,用go语言编写,是目前最常用的以太坊客户端,对应真正的以太坊环境。

truffle:以太坊上最受欢迎的开发框架。

solc:solidity编译器。

Node.js:是一个基于 Chrome V8 引擎的JavaScript 运行环境。

web3

安装nodejs与npm(保证nodejs为6.x以上)

curl -sLhttps://deb.nodesource.com/setup_6.x | sudo -E bash –

(若提示curl未安装,先执行sudo apt-get install curl安装curl后再执行上一命令)

sudo apt-get install nodejs

安装solc、solc-cli

sudo npm install -g solc

sudo npm install -g solc-cli

安装truffle

sudo npm install -g truffle

安装testrpc

sudo npm install -g ethereumjs-testrpc

安装geth

如果需要在geth控制台使用solc编译器,前面对solc的安装是不足以使用的,还需要用以下命令安装solc二进制包。

sudo add-apt-repositoryppa:ethereum/ethereum

sudo apt-get update

sudo apt-get install solc

然后安装geth

sudo apt-get installsoftware-properties-common

sudo apt-get install ethereum

入门

1.        查看truffle版本信息

truffle version

2.        测试testrpc环境

testrpc

返回十个可用账户(Available Accounts:0-9)

和十个私钥(Private Keys:0-9)

另有HD Wallet的信息(Mnemonic与Base HD Path)

最后还提示监听本地端口8545。

按Ctrl+C退出testrpc。

3.        创建编程目录,初始化truffle

mkdir ethtest

cd ethtest

truffle init

看提示,给出了三条命令,这在后面都会用到。执行truffle –help查看更多命令:

我们先看一看此时ethtest文件夹下新增的东西:

多出了contracts、migrations、test三个文件夹和truffle-config.js和truffle.js两个文件。作一个说明,contracts是放合约的文件夹,打开会发现已经放了一个合约Migrations.sol;migrations是放迁移操作的文件的,打开会发现名为1_initial_migration.js的文件,具体内容后面作详细说明;test放测试脚本的文件夹;truffle.js是truffle的配置文件,具体内容后面作详细说明;最后,关于truffle-config.js,实际上也是truffle的配置文件,但是它是为了避免windows系统下由于命名引起的冲突而改的名字,在Ubuntu下没有作用,可以删除。

4.        编写合约

cd contracts

nano SimpleStorage.sol

使用官方文档中的SimpleStorage合约,注意文件名和合约名相同,文件扩展名为.sol。

pragmasolidity ^0.4.0;

contractSimpleStorage {

uint storedData;

function set(uint x) {

storedData = x;

}

function get() constant returns (uint) {

return storedData;

}

}

5.        编译合约

truffle compile

该指令只会编译最后一次编译成功之后被修改过的合约文件,以减少不必要的编译。设置"--all"选项,可以强制编译所有文件.

编译完成后ethtest目录下会多出一个build文件夹,在ethtest/build/contracts下有一个编译得到的SimpleStorage.json文件。

6.        迁移(或称部署)合约

注意,打开另一个terminal,在里面执行testrpc,使其监听8545端口,否则后面使用到网络的命令都无法正常执行,出现以下错误:

truffle migrate

出错下面的错误:

这是网络配置的问题。打开truffle.js:

module.exports= {

// See<http://truffleframework.com/docs/advanced/configuration>

// to customize your Truffle configuration!

};

可见并没有配置信息在里面,访问注释里的网站,给出了多种配置供选择,先使用默认的一种配置写入truffle.js即算配置完成:

module.exports= {

networks: {

development: {

host: "localhost",

port: 8545,

network_id: "*" // Match anynetwork id

}

}

};

这样一来,在执行truffle migrate等命令时,将默认使用networks网络配置项下的development的网络,不会再出现上面的错误。

详细说说migration文件,打开1_initial_migration.js:

varMigrations = artifacts.require("./Migrations.sol");

module.exports= function(deployer) {

deployer.deploy(Migrations);

};

这是初始的migration文件,对应由truffle init产生的合约Migrations.sol。

如果我们要部署新的合约,新建一个文件,如SimpleStorage_deploy.js,内容为:

varSimpleStorage = artifacts.require("./SimpleStorage.sol");

module.exports= function(deployer) {

deployer.deploy(SimpleStorage);

};

至于语法问题,请看:http://truffleframework.com/docs/getting_started/migrations。

若要将其部署至live网络,先修改truffle.js为:

module.exports= {

networks: {

development: {

host: "localhost",

port: 8545,

network_id: "*" // Match anynetwork id

},

live: {

host: "localhost",

port: 8545,

network_id: "*",

gas:3000000

}

}

};

再执行:

trufflemigrate --network live

即将合约部署到了live网络上了。

与编译类似,此操作只会部署新增了migration文件或migration文件有改动的合约。

7.        控制台调试

truffle console –network live

就进入了控制台。命令与commands通用,只是这时不用加truffle了。注意指定网络,否则会出未部署合约的错误。

查看一下部署在网络上的合约:

用SS替代合约以简短代码输入,注意语法:

var SS=SimpleStorage.at(“0x1e7e7282e7f1279ddb24c493243ac891d320e59a”)

接下来可以就可以调用合约里的函数了,SimpleStorage里有set和get两个函数:

按Ctrl+C退出控制台。

8.        运行测试脚本

truffle test

出错下面的错误:

这是因为development网络没有设置gas参数。

执行:

truffletest --network live

不再报错,因为live网络是设置了gas参数的。但此时test文件夹下并没有放置测试脚本,所以提示如下:

9.        架设服务器

truffle serve

“Serving staticassets in ./build on port 8080”的意思是“在端口8080上提供./build中的静态资源”。

出现下面的错误:

还未解决。

10.    强制重新编译部署全部合约

truffle migrate --reset--network live

注意指定网络。

11.    清除网络和部署的合约

truffle networks--clean

12.    集成nodejs【参考文献:Truffle3.0集成NodeJS并完全跑通http://www.jianshu.com/p/eac99bb0a9bc】

npm init

初始化过程中有一些用括号提示的,按括号内提示输入即可。

安装Truffle合约抽象层运行环境:

安装web3环境:

以太坊-区块链开发入门相关推荐

  1. 为什么选择Java进行以太坊区块链开发

    当有人说Java时,你会想到什么?如果没有,你可以试试old.虽然,其他人可能会说它坚固,可靠和安全.而对于Oodles Blockchain来说,Java意味着"企业级". 毫无 ...

  2. 以太坊区块链快速入门

    一.基本概念 1.什么是以太坊? 以太坊是由社区驱动的技术,为加密货币以太币(ETH)和成千上万的去中心化应用程序提供动力. 属于所有人的银行服务 现实生活中不是每个人都能使用金融服务.但是只要您有网 ...

  3. 新手怎么学以太坊区块链开发?

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 在学习以太坊应用开发时,除了学习solidity开发智能合约,一个小白还应该补充 哪些知识?文本将给出相关的学习资源和学 ...

  4. 以太坊区块链实现去中心化购物功能

    在当今的中国,网上购物已经成为了我们不可或缺的一部分,通过电商网站查看商品,下单购物,支付,付款到支付宝,买家收货确认后,货款自动打入卖家的账户,这些购物的体验多数人每天都可能发生.大家都知道,淘宝的 ...

  5. 区块链开发入门:基于以太坊智能合约构建 ICO DApp

    写给前端开发者的第一本区块链开发入门指南,通过从 0 到 1 实战开发一个 ICO DApp 项目(基于 V 神的 DAICO 设计思想),深入掌握区块链及以太坊技术. 为什么要选择区块链开发? 未来 ...

  6. 以太坊区块链浏览器(二)开发

    以太坊区块链浏览器开发,包括合约信息及链上信息展示,web3j的对应API. 更多区块链技术与应用分类: 区块链应用    区块链开发 以太坊 | Fabric | BCOS | 密码技术 | 共识算 ...

  7. 以太坊区块链也拥堵_以太坊开发人员:EOS刻意拥堵以太坊网络 推高交易费到1美元...

    金色财经 比特币7月16日讯根据一些DApp开发人员表示,EOS正在攻击以太坊,试图将交易费提高到1美元.据悉,相关开发人员指责EOS通过随机代币"空投"造成以太坊网络堵塞,而且这 ...

  8. 区块链开发(五)搭建以太坊区块链浏览器

    经过前面文章介绍,已经搭建以太坊的区块链环境,但是没有一个界面能查看到区块链的块数等信息,不是很直观,本篇搭建以太坊区块链浏览器. 下载区块链浏览器代码 uiran@cuiran:~/ethereum ...

  9. 谈谈区块链入门技能(二):以太坊区块链浏览器如何使用?

    上一期我们介绍了比特币浏览器如何使用,本期我们来谈一谈什么是以太坊以及以太坊浏览器如何使用. 什么是以太坊? 以太坊是一个合作运行的.全球性的.透明的数据库.通过共同努力,来自世界各地的参与者维护了以 ...

  10. 以太坊区块链同步_以太坊69:如何在10分钟内建立完全同步的区块链节点

    以太坊区块链同步 by Lukas Lukac 卢卡斯·卢卡奇(Lukas Lukac) Ethereu M 69:如何在10分钟内建立完全同步的区块链节点 (Ethereum 69: how to ...

最新文章

  1. BZOJ 4407: 于神之怒加强版
  2. xp 硬盘安装linux双系统,WinXP硬盘安装Ubuntu 11.10双系统全程图解
  3. 计算机软件及应用stata,蒙特卡洛模拟及其Stata应用实现
  4. 番茄日志发布1.0.3版本-增加Kafka支持
  5. 怎么卸载apowerrec_如何删除windows10自带应用
  6. sql server 锁定_如何使用SQL Server 2014托管锁定优先级控制在线索引重建锁定
  7. docker容器使用-图解
  8. 路由算法之距离矢量算法和链路状态算法
  9. Balanced Numbers数位dp
  10. 一体机or复合机?企业文印设备该怎么选
  11. 【Python打卡2019】20190423之52周存钱挑战-for+range()函数使用
  12. 香港大学韩锴课题组招收CV和深度学习方向全奖博士/博后
  13. 迪文串口屏的安装方法之卡扣结构带外壳智能屏
  14. CCNA+NP学习笔记—交换网络篇
  15. 为什么说 HashMap 是无序的
  16. equals()的理解
  17. linux下格式化apfs,下一版 macOS High Sierra 将采用 APFS 文件系统
  18. 数控系统维修:FANUC发那科编程调试操作图解
  19. 【JavaScript闭包】JavaScript何为闭包,浅谈闭包的形成和意义
  20. Apollo2.0自动驾驶quickstart文件夹之apollo_2_0_hardware_system_installation_guide_v1.md

热门文章

  1. 高通蓝牙耳机(QCC3034)Sink开发基础教程一:高通蓝牙方案介绍及开发环境搭建
  2. 智能聊天机器人的技术综述
  3. 二阶矩阵转置怎么求_矩阵的转置怎么求 详情介绍
  4. excel宏的使用图解教程
  5. xbox360fsd更新游戏封面_xbox360自制系统fsd更新封面教程
  6. html 属于mvvm框架,vue.js是mvvm框架吗
  7. 答粉丝问|火狐浏览器插件简介
  8. Netapp 存储文件共享-windows 系统应用
  9. ubuntu出现qt.qpa.plugin报错
  10. mdpi Algorithms 期刊word 模板下载