首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Windows环境下跑通Truffle开发环境

Windows环境下跑通Truffle开发环境

作者头像
申龙斌
发布于 2018-03-06 06:16:31
发布于 2018-03-06 06:16:31
3.3K00
代码可运行
举报
运行总次数:0
代码可运行

最近报名参加了硅谷区块链举办的《智能合约开发课》第二期培训班,根据培训要求,不能透露课程的内容,但我会在steemit上不断地记录我的成长过程。

https://steemit.com/cn/@speeding/smart-contract-development0

Ethereum上的智能合约开发对Windows不太友好,培训课上的所有例子都是运行在老师提前安装好的一个Ubuntu虚拟机上,为了加深对课程的印象,我在Windows上把Truffle等安装过程跑了一遍。

一、几个术语介绍


1、Solidity

Solidity是在进行以太坊智能合约(Smart Contract)开发时最流行的一种语言,Solidity语法与C++和Javascript比较像,通过Solidity编译器,可以把高级语言编译成跑在以太坊虚拟机(EVM)上的低级语言,可以极大地减轻智能合约编程的工作量。

2、Truffle

以太坊上的智能合约要与数字资产进行频繁交互,编程过程中稍微考虑不周,会造成漏洞,很可能造成用户的巨大财产损失,所以Solidity程序都要经过严格的单元测试集成测试,最后才能部署到正式的以太坊网络中。

而Truffle框架是一个非常成熟的框架,可以方便地编译、运行和测试一个合约,整个过程都在一个以太坊的测试网络中搞定,不用等待漫长的挖矿过程就能快速看到测试结果,节省了很多开发成本。

3、TestRPC和Ganache

geth是一个老牌的以太坊钱包客户端,搞程序开发的不能一上来就在geth上测试,每次消耗的gas都让人受不了,更别说还需漫长的挖矿时间等待了。而TestRPC就是一个在本地使用内存模拟的一个以太坊环境,还提供丰富的命令行,可以查询以太坊的状态。

后来TestRPC改名为Ganache CLI,成为truffle中的一个重要成员,而Ganache就专指带图形界面的程序,它需要运行在Windows 10上,不需要记忆一大堆复杂的字符命令。

  • http://truffleframework.com/blog/testrpc-is-now-ganache
  • https://github.com/trufflesuite/ganache-cli

4、vscode

Atom和Sublime Text是非常流行的源代码编辑器,微软也不甘寂寞,推出了VSCode。VSCode是一款轻量编辑器,也支持丰富的插件,安装solidity插件后就可以支持solidity语言。

5、web3.js

web3.js是以太坊提供的一个javascript库,提供了一系列与区块链交互的Javascript对象和函数,可以调用智能合约、查看网络状态、本地账户、交易信息、区块信息等等,写前端程序或测试用例也要用到它。

下面进入安装过程,最好的参考材料仍是Truffle的官方网站。

http://truffleframework.com

二、安装Node.js

想跑起来Truffle,需要安装node.js 5.0以上的开发环境,可直接到https://nodejs.org 下载和安装环境,我安装了8.9.4 LTS(Long Term Support)版本,全部用默认的参数安装即可。

http://truffleframework.com/docs/getting_started/installation

三、安装Truffle


从开始菜单中打开一个node.js command Prompt窗口,用一行命令即可安装好Truffle。

npm install -g truffle

Truffle的版本更新得非常频繁,我用的是4.0.5,用下面命令查看版本。

truffle version

四、创建一个新项目


我在D盘的根目录下建立一个MetaCoin项目。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir MetaCoin
cd MetaCoin
truffle unbox metacoin

老的truffle版本要用 truffle init 命令来新建项目,现在可以直接从网上下载一个现成的项目(称为box),执行完truffle unbox命令后,在d:\MetaCoin文件夹之下就有三个子文件夹和几个文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
D:\MetaCoin
│  truffle-config.js
│  truffle.js
│
├─contracts   
│      ConvertLib.sol
│      MetaCoin.sol
│      Migrations.sol
│
├─migrations
│      1_initial_migration.js
│      2_deploy_contracts.js
│
└─test
        metacoin.js
        TestMetacoin.sol

五、安装vscode


从 https://code.visualstudio.com 下载vscode,默认安装即可,我安装的是1.19.2。启动vscode之后,需要安装solidity和Solidity Extended两个插件,安装完成后重启vscode,则可以看到solidity源代码的高亮显示。

六、安装ganache

1、Ganache

图形界面的ganache访问网址: http://truffleframework.com/ganache/

下载的安装包是appx格式,需要Windows 10系统的支持,其默认端口为7545。

2、Truffle develop

另外还有一种客户端可供选择,就是truffle develop,默认端口为9545。

在运行truffle develop命令时,可能会遇到命令无法执行的问题,这是truffle.js的名字冲突造成的,可用以下的一种办法解决:

  • 每次调用truffle的时候,用truffle.cmd
  • 从PATHEXT环境变量中把 .JS 删除掉(我采用的办法)

这个客户端的功能还比较弱,可以用.help看帮助,用.exit退出。

3、Ganache CLI

如果机器是Windows 7,又不喜欢功能较弱的truffle develop,则可以使用Ganache CLI,它其实就是大名鼎鼎的TestRPC,其安装过程非常简单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install -g ganache-cli

使用它的测试网络,我们还需要修改truffle.js文件,配置一下网络参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  networks: {
    development: { //部署在开发网络上
      host: "127.0.0.1",
      port: 8545,
      network_id: "*" // Match any network id
    }
  }
};

带图形界面的Ganache的默认端口是7545,Ganache-cli的默认端口是8545,truffle develop的默认端口是9545。truffle.js中的端口参数要与以太坊客户端的端口保持一致。

启动ganache-cli的测试网络:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ganache-cli

七、编译和部署

此时应该可以成功编译并部署合约了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
truffle compile
truffle migrate

在Ganache的图形界面上可以看到新挖出的区块和各笔交易的详细信息。

八、单元测试

运行下面命令行即可进行单元测试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
truffle test

在test子文件夹下,需要编写相应的单元测试文件,有.js和.sol两种编写方式,各有优缺点。

九、web3交互

写一个程序肯定会遇到各式各样的问题,图形界面的ganache查询区块和交易状态非常方便,如果用程序或命令行来操作,就需要用到强大的web3.js。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
truffle console

在 truffle(development)> 之后可以输入各种web3的指令,最重要的对象是web3.eth,详细的说明见文档:

https://github.com/ethereum/wiki/wiki/JavaScript-API

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MetaCoin.deployed().then(contract => {meta = contract})
meta.getBalance.call('0x24ed8dfbc1457944e27437308a773ba3d38dd66e')

十、boxes

从零构建一个智能合约的难度非常大,truffle中提供了一些boxes,这些boxes包含一些有用的模块、Solidity合约以及前端代码等,在此基础上开发会省不少力气。

http://truffleframework.com/boxes

列在第一位的box是react框架,运行truffle unbox react 即可下载所有的源代码,这里面提供了一个叫做SimpleStorage的合约,可以当作Hello World来使用。运行下面命令之后,会打开浏览器访问http://localhost:3000,获取智能合约中保存的数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
truffle compile
truffle migrate
npm run start

提示:如果你用TestRPC或Ganache-cli,需要修改getWeb3.js中的provider为http://127.0.0.1:8545。

上述过程只是跑通了各种软件在Windows上的安装、部署和测试过程,真正让人捉急的是单元测试无法通过时,不知道如何去定位BUG的位置,我得抓紧去做第五课的作业了。

--- END ---

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 申龙斌的程序人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
只需一行代码,就能导入所有的Python库?
如此,反复编写同一条import语句,就算是复制粘贴,也会感觉到麻烦,这时Pyforest库就可以上场了。
秃头程序员
2021/12/21
6780
Python3:我低调的只用一行代码,就导入Python所有库!
今天我们来分享一个懒人库:Pyforest。小屌丝:鱼哥,今天啥情况,你突然分享这个库?小鱼:这不是因为我准备换吃饭的家伙 电脑,为了能省事,少敲几次pip install xxx 的动作… 小屌丝:嗯??你的意思,安装这个库,就不需要安装别的库了?小鱼:必须的~像我这种节约时间的男人… 小屌丝:你能不能好好说话!!!小鱼:…好吧…
润森
2022/09/22
7650
Python3:我低调的只用一行代码,就导入Python所有库!
牛逼!这个Python库竟然可以偷懒,和import说再见!
还记得入门Python数据分析时经常会import几个库,下面这几个可谓是入门学习时的四大护法,Python数据处理和可视化常会用的工具。
Python数据科学
2019/12/05
7750
你能体会那种写 Python 时不用 import 的幸福吗?
我们有时候写着写着发现需要引入新的库,就又得回到前面,再 import 一波,如果你用的是类似 jupyter 的编辑器,你添加完 import 语句之后还得再运行一下代码块。
小小詹同学
2021/03/29
5930
你能体会那种写 Python 时不用 import 的幸福吗?
如何让 Jupyter Notebook 自动导入代码?
作为使用 Python 工作的数据科学家。每天我们都会启动多个新的Jupyter笔记本,并且在会用到多个不同的库,例如pandas、matplotlib等。
刘早起
2022/09/21
1.6K0
收藏!盘点最实用的数据科学Python库
数据科学是一门研究数据并从中挖掘信息的学科。它不要求自创或学习新的算法,只需要知道怎么样研究数据并解决问题。这一过程的关键点之一就在于使用合适的库。本文概述了数据科学中常用的、并且有一定重要性的库。在进入正题之前,本文先介绍了解决数据科学问题的5个基本步骤。这些步骤是笔者自己总结撰写的,并无对错之分。步骤的正确与否取决于数据的研究方法。
昱良
2019/11/07
7780
收藏!盘点最实用的数据科学Python库
小白入门Python数据科学全教程<一>
先说一段题外话。我是一名数据科学家,在用SAS做分析超过5年后,我决定走出舒适区,寻找其它有效的数据分析工具,很快我发现了Python!
派大星的数据屋
2022/04/02
1.3K0
小白入门Python数据科学全教程<一>
机器学习进阶必备-10 个高效 Python 工具包完全指南
这些Python工具的组合使用不仅能提高个人工作效率,还能促进团队协作和项目质量。随着数据科学领域的快速发展,这些工具也在不断进化,建议持续关注它们的更新和新功能,以便更好地应用到实际工作中。选择合适的工具组合,建立高效的工作流程,将极大地提升数据科学项目的开发效率和质量。
Ai学习的老章
2024/11/11
3020
机器学习进阶必备-10 个高效 Python 工具包完全指南
Jupyter 进阶教程
原题 | Tutorial: Advanced Jupyter Notebooks
Python数据科学
2019/08/12
1.5K0
手把手教你搭建一个学习Python好看的 Jupyter 环境
又到摆脱重复工作,换个心情,然而并没有软用的时间了。这次,教大家如何搭建一个好看的jupyter环境。 安装Jupyter 先来展示一下我的环境 python: 3.5.* macos: 10.12.4 安装Jupyter的过程只需安装Anaconda即可。 测试一下初始设置: jupyter notebook 配置ipython 首先,如果每次你打开一个nb(notebook)时,如果都需要载入一些模块,一个很好地方法就是配置ipython的配置文件,可以直接使用以下命令创建配置文件: ipytho
小小科
2018/05/03
1.5K0
手把手教你搭建一个学习Python好看的 Jupyter 环境
Modin,只需一行代码加速你的Pandas
Modin是一个Python第三方库,可以通过并行来处理大数据集。它的语法和pandas非常相似,因其出色的性能,能弥补Pandas在处理大数据上的缺陷。
派大星的数据屋
2022/04/03
2.5K0
Modin,只需一行代码加速你的Pandas
python数据分析入门
在工作中,不免进行一些数据的整理分析,从而来定位问题并解决,提高工作或者业务效率。发现新的机会点,保持持续的竞争优势。那么就来研究一下如何利用合适的工具,提升数据分析的效率。
希里安
2023/10/30
2270
python数据分析入门
【知识】使用Python来学习数据科学的完整教程
编者按:Python学习和实践数据科学,Python和Python库能够方便地完成数据获取,数据探索,数据处理,数据建模和模型应用与部署的工作,对于数据科学工作中各个环节都有合适的解决方案。对于新手,建议按着本教程学习与实践。 我在SAS工作了5年多之后,决定走出舒适区。作为一名数据科学家,我在寻找其他好用的工具,幸运的是,没过多久,我发现了Python。 一直以来,我喜欢敲代码。事实证明,有了Python,敲代码变得更为容易。 我花了一周时间来学习Python的基础知识,从那时起,我不仅深入钻研Pytho
陆勤_数据人网
2018/02/26
1.8K0
【知识】使用Python来学习数据科学的完整教程
用一行Python代码创建高级财务图表
今天带大家一起学习一个小众,但很厉害的可视化库mplfinance,一起掌握最灵活的python库来创建漂亮的金融可视化。
数据STUDIO
2021/12/15
1.6K0
用一行Python代码创建高级财务图表
用4种回归方法绘制预测结果图表:向量回归、随机森林回归、线性回归、K-最近邻回归
链接: https://pan.baidu.com/s/1qa99ntHsozgqB2xliVYd7A 提取码: sp9h –来自百度网盘超级会员v6的分享
全栈若城
2024/02/29
5550
用4种回归方法绘制预测结果图表:向量回归、随机森林回归、线性回归、K-最近邻回归
只需10分钟,开启你的机器学习之路
随着行业内机器学习的崛起,能够帮用户快速迭代整个过程的工具变得至关重要。Python,机器学习技术领域冉冉升起的一颗新星,往往是带你走向成功的首选。因此,用 Python 实现机器学习的指南是非常必要的。
墨明棋妙27
2022/08/24
2360
只需10分钟,开启你的机器学习之路
Python使用心得:从脚本小子到高效开发者的进化之旅
记得第一次接触Python是在大学的数据结构课上。当时教授说:"这门语言能让你们专注于算法逻辑而非语法细节",我半信半疑。然而当我在10分钟内完成了一个二叉树的实现,而C++组的同学还在调试指针时,我知道自己遇到了特别的工具。十年后的今天,Python已成为我工作中不可或缺的伙伴,这段旅程充满了惊喜和成长。
熊猫钓鱼
2025/08/01
1010
18 个 Jupyter Notebook 小技巧,帮助你快速腾飞
Jupyter Notebook 是干嘛的就不再过多介绍了,这篇文章收集了一些顶级的 Jupyter Notebook 技巧,可以让你迅速成为一个 Jupyter 超级使用者!
周萝卜
2021/03/16
1.5K0
【生物信息学】使用HSIC LASSO方法进行特征选择
本实验实现了HSIC LASSO(Hilbert-Schmidt independence criterion LASSO)方法进行特征选择,并使用随机森林分类器对选择的特征子集进行分类。
Qomolangma
2024/07/30
3820
【生物信息学】使用HSIC LASSO方法进行特征选择
Python编程神器Jupyter Notebook使用的28个秘诀(附代码)
[ 导读 ]最近做实验一直是用Jupyter Notebook编程,有一种打草稿的便捷感,在dataquest上看到一篇博客总结了28种Jupyter Notebook的使用技巧。为了方便大家理解,对原文一个简略的地方进行了适当的解释和扩充。希望大家在用Jupyter Notebook编程时可以更加爽快。
数据派THU
2019/12/31
4.9K0
Python编程神器Jupyter Notebook使用的28个秘诀(附代码)
推荐阅读
相关推荐
只需一行代码,就能导入所有的Python库?
更多 >
LV.1
微软工程师
目录
  • Atom和Sublime Text是非常流行的源代码编辑器,微软也不甘寂寞,推出了VSCode。VSCode是一款轻量编辑器,也支持丰富的插件,安装solidity插件后就可以支持solidity语言。
  • 想跑起来Truffle,需要安装node.js 5.0以上的开发环境,可直接到https://nodejs.org 下载和安装环境,我安装了8.9.4 LTS(Long Term Support)版本,全部用默认的参数安装即可。
  • http://truffleframework.com/docs/getting_started/installation
  • 从开始菜单中打开一个node.js command Prompt窗口,用一行命令即可安装好Truffle。
  • Truffle的版本更新得非常频繁,我用的是4.0.5,用下面命令查看版本。
  • truffle version
  • 我在D盘的根目录下建立一个MetaCoin项目。
  • 从 https://code.visualstudio.com 下载vscode,默认安装即可,我安装的是1.19.2。启动vscode之后,需要安装solidity和Solidity Extended两个插件,安装完成后重启vscode,则可以看到solidity源代码的高亮显示。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档