以太坊私网建立 – 私链建立,合约编译和部署

2018年8月10日 作者 jacky

安装工具和语言

1,brewMaxOs包管理器

2,安装 Go 编译器

3,geth运行以太坊节点 下载地址

可以根据系统下载Mac或者windows版本,也可以下载源码后解压,进入文件执行编译,然后设置到系统的环境变量path即可

4.Solidity以太坊智能合约语言

在控制台输入 solc --version,如果显示版本信息说明安装成功

建立私链

创建一个文件夹来存储私链上的数据

使用geth来初始化区块链

还有一种方法通过创世区块来初始化区块链

私链建立的参数说明如下:

参数名称 参数描述
identity 区块链的标示,随便填写,用于标示目前网络的名字
init 指定创世块文件的位置,并创建初始块
datadir 设置当前区块链网络数据存放的位置
port 指定和其他节点连接所用的端口号(默认为 30303)
rpc 启动rpc通信,可以进行智能合约的部署和调试(默认为 8545)
rpcapi 设置允许连接的rpc的客户端,一般为db,eth,net,web3
networkid 设置当前区块链的网络ID,用于区分不同的网络,是一个数字
console 启动命令行模式,可以在Geth中执行命令

可以看见在data1的数据目录下产生了一些文件:

执行启动私链命令后,在控制台会输出一下信息。

如果你切换到private_data文件夹里面,你会看到geth, geth.ipc, 和 keystore

  • 保持节点的运行,不要关闭终端,重新打开一个终端,使用geth attach连接节点,并且打开geth console

这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符。在这个环境里也内置了一些用来操作以太坊的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:

  • eth:包含一些跟操作区块链相关的方法;
  • net:包含一些查看p2p网络状态的方法;
  • admin:包含一些与管理节点相关的方法;
  • miner:包含启动&停止挖矿的一些方法;
  • personal:主要包含一些管理账户的方法;
  • txpool:包含一些查看交易内存池的方法;
  • web3:包含了以上对象,还包含一些单位换算的方法

相关api命令

查看账户

ps:如果初始化已经存在了一个coinbase账号,密码是为空的

创建账户

PS:里面的jacky是你账户的密码

查看账户

解锁账户

测试转账:

新建另一个账号

转账

开始挖矿

查看当前交易

查看account2的余额

交易成功,余额发送了变化,转账成功。

web3.js的API接口参考

测试部署合约

编写智能合约代码

获取合约的字节码和abi

也可以通过solidity 编译器来编译获取到字节码和abi数据

  • 字节码

  • ABI

通过abi创建合约对象

解锁coinbase账号,我们通过coinbase账号来付费部署合约,其中xxx就是账号密码,如果没有就不传

预估手续费

备注:字节码前面需要添加0x

手续费大概为102483gas,所以部署合约示例需要比这个gas还要高

部署合约,为了方便理解,设置一个回调函数

可以看到地址信息是没有的,待我们开始挖矿后查看当前交易的状态

你的合约等待挖矿,开始挖矿,等一会儿,停止

查看合约的地址,然后根据地址查看字节码,检查合约是否部署成功,合约地址的字节码和我们一开始部署填入的字节码相同,则部署成功

调用合约方法