主页 > imtoken安卓官方版 > 以太坊智能合约开发环境及总结

以太坊智能合约开发环境及总结

imtoken安卓官方版 2023-02-08 05:47:06

今年上半年开始接触基于区块链的以太坊智能合约编程。 由于网上已有资料大多采用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(值); });