主页 > imtoken安卓官方版 > 以太坊智能合约开发环境及总结
以太坊智能合约开发环境及总结
今年上半年开始接触基于区块链的以太坊智能合约编程。 由于网上已有资料大多采用truffle2.0框架,而较新的truffle3.0在使用习惯上有较大改变,很多教程已经不适合新手。 在此以太坊用什么系统,在吸收了一些网络资源和多次自我尝试后,详细总结了Linux系统下使用truffle3.0+testrpc开发以太坊智能合约+DApps的环境搭建过程,并对开发过程进行总结。 对于一些问题和解决方案,合约编程语言是solidity。
环境搭建
(打开终端:同时按住 Ctrl + Alt + T 键)
1.安装git
sudo apt-get 安装 git
* 如果安装git时出现错误信息E: Package 'git' has no installation candidate以太坊用什么系统,可以使用:sudo apt-get install git-core
* git --version 查看是否安装成功
2.安装nodejs
sudo apt-get 安装卷曲
卷曲-sL | 须藤 -E 庆典 -
sudo apt-get install -y nodejs
* nodejs -v 查看是否安装成功
3.安装solc和solc-cli
sudo npm install -g solc solc-cli --save-dev
* solcjs --help 查看是否安装成功
4.安装solc二进制包(使用geth)
sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get 更新
sudo apt-get 安装 solc
4.1 建立软链接(可选)
5.安装testrpc
sudo npm install -g ethereumjs-testrpc
* testrpc安装失败,找不到脚本,解决方法可以参考
* testrpc 检查是否安装成功
6.安装truffle3.0
须藤 npm 安装 -g 松露
* truffle version 查看是否安装成功
7. 安装 Geth
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get 更新
sudo apt-get 安装以太坊
Truffle3.0使用教程(按顺序)
窗口 1:
mkdir myproject 创建一个新的子目录
光盘我的项目
truffle init webpack 初始化项目
松露编译编译
窗口 2:
testrpc 启动testrpc
窗口 1:
truffle migrate(truffle2.0及以上)部署项目
npm 运行构建
松露服务开始服务
窗口 3:
打开浏览器访问:8080/
* 多次运行可能会报错,将最后两条指令改为npm run dev
项目文件说明
app/:存放前端javascript文件和stylesheets文件,开发Dapps时使用;
contracts/:智能合约文件存放目录;
migrations/:存储部署脚本;
test/: 存放智能合约测试文件
DApp开发总结(truffle3.0)
1. 对于不重写区块链状态的f()函数,使用instance.f.call(); 对于将重写区块链状态的函数 f(),请使用 instance.f()。 底层会使用不同的gas计算方式来实现调用。
2.错误无效地址
原因:未设置默认账户地址
解决方案:
测试。 默认值({
来自:“0x299127d72e28cb92d09f856aaedeb139d1e7e74a”
});
*test为合约初始化变量
3. 合约交互抽象层语法
MyContract.setProvider(someWeb3Provider);
我的合同。 部署()。 然后(函数(实例){
返回实例。 一些功能();
}).then(函数(结果){
});
4. DApp接口读写数据
4.1 整数
var test = parseInt(document.getElementById("test").value);
元写(测试);
meta.read.call().then(函数(值){
var value_element = 文档。 getElementById("值");
值_元素。 innerHTML = 值。 的价值(); });
4.2 字符串
var test = document.getElementById("test").value;
元写(测试);
meta.read.call().then(函数(值){
var value_element = 文档。 getElementById("值");
值_元素。 innerHTML = web3. toAscii(值); });