区块链学习笔记–以太坊及solidity编程
常用工具的下载与安装
- Atom/VS Code/Sublime 这些程序语言编辑器都是漂亮的、好用的本地开源编辑器。 强烈推荐Atom。
- Atom的安装方法
- 下载:前往https://atom.io/ 下载最新的版本。
- 插件安装
1)打开插件安装功能:Help>Welcome Guide> Install Package>Open Installer
2)安装插件:autocomplete-solidity代码自动补齐插件, linter-solium,linter-solidity 代码错误检测插件,language-ethereum 代码高亮插件。
- Visual Studio Code 的安装方法
- 下载:前往https://code.visualstudio.com/下载最新的版本。
- 插件安装:安装VS Code之后,点击左侧的(扩展)按钮,搜索“solidity”,安装Juan Blanco的solidity扩展插件。
- Truffle及Ganache的安装
Truffle是目前最流行的以太坊开发框架,采用JavaScript编写,支持智能合约的编译、部署和测试。
Truffle安装:
(1)下载并安装Node.js套件。 Nodejs下载地址:https://nodejs.org/zh-cn/
(2)下载Truffle(下载地址:https://truffleframework.com/truffle),并运行下面的命令行进行安装
npm install truffle -g
Ganache是truffle提供的本地的区块链测试环境。下载地址: https://truffleframework.com/ganache 文件有90M(windows 1.2.1版),所以下载很慢。此处建议使用下载工具,不然很容易下载失败。 Windows 1.2.2对应版本是120M左右。由于是appx安装包, windows8下面安装比较麻烦些,启动powershell ,并执行下面的命令进行安装:
add-appxpackage C:\myapp.appx
如果觉得下载太慢,用搜狗浏览器到下面的地址进行下载。这里还可以直接下载最新版的exe安装文件,建议windows8及以前版本的用户使用下面的链接下载exe进行安装。
https://github.com/trufflesuite/ganache/releases
搜狗浏览器自动支持搜狗高速下载,10多秒就可以下载完成,强烈推荐。而号称全球最多人使用的flashget,居然不支持https协议的文件下载,比较失望。
注意事项
- 编辑好的solidity程序一般放在remix在线编辑器环境下运行。
https://remix.ethereum.org/
不过,有时候这个网站会连接失败。这个时候,需要有些耐心等待恢复正常。 - 文档连接
(1)Web3js官网: https://web3js.readthedocs.io/en/1.0/
(2)truffle-contract,这个可以看作web3js的一个包装,官网:https://github.com/trufflesuite/truffle-contract - constant (view) 这个函数头定义关键字,在合约创建时,会将所有的constant方法都执行一下。这样可能会导致一些问题。
参见下面的例子:
constract person{
uint8 _age;
constructor(){
_age = 10;
}
function setAge(uint8 age) constant returns(uint8){
return _age = age;
}
function age() constant returns(uint8){
return _age;
}
// 析构函数
function kill() constant {
if ( _owner == msg.sender) {
selfdestruct(_owner);
}
}
}
上面的语句执行的时候,会在初始化的时候执行kill函数,这样会导致整个合约被销毁而不能使用的情况。所以,对于一些有特殊功能的函数,需要注意constant关键字的使用方法。
truffle/ganache搭建Dapp及测试流程
- 进入truffle网站box页面(https://truffleframework.com/boxes),找与想做的Aapp类似的box。根据说明安装示范程序,然后填充必要的业务逻辑。
- 测试流程:
(1)编译合约
truffle compile
(2)迁移合约
truffle migrate
(3)启动ganache,并获取地址,及账号信息
(4)从终端启动合约节点 。下面是命令行。dev是配置的ganache地址的ID
npm run dev
(5)将MetaMask切换为私有网络,配置为ganache的地址 通常为http://127.0.0.1:7545
(6)进行测试。