区块链技术学习(1 ):搭建以太坊私链
来源:互联网 发布:淘宝售假降权多久恢复 编辑:程序博客网 时间:2024/06/14 20:49
搭建以太坊私链
虽然以太坊是一个公有链系统,但是我们可以通过设置一些参数来运行自己的私有链节点,在自己的私有链上进行开发和测试不需要同步公有链数据,也不需要花钱来买以太币,节省存储空间和成本,而且很灵活很方便。本文介绍使用geth客户端搭建私有链的操作步骤,同时会解释在这个过程中用到的各个命令及选项的含义和作用,最后会介绍geth的Javascript Console中的一些常用功能。
系统环境:macOS
一、安装go-ethereum客户端
1、安装ethereum
首先确保已安装 homebrew,没有安装过的可以在命令行下执行/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 进行安装
brew tap ethereum/ethereum
brew install ethereum
2、安装solc
首先确保安装过npm, 没有安装过的可以访问 npm网站下载安装
npm install -g solc
如果使用npm太慢,可以翻墙,或者使用国内的淘宝镜像cnpm
二、搭建私链
1、准备创世块配置文件
以太坊支持自定义创世区块,要运行私有链,我们就需要定义自己的创世区块,创世区块信息写在一个json格式的配置文件中。
新建文件夹ethereumTest,在此文件夹下创建genesis.json文件和data文件夹
代码块
代码块语法遵循标准markdown代码,例如:
{"config": { "chainId": 123456, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 },"nonce": "0x0000000000000042","difficulty": "0x020000","mixhash":"0x000000000000000000000000000000000000000000 0000000000000000000000","coinbase":"0x000000000000000000000000000000000000000","timestamp": "0x00","parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa","gasLimit": "0x4c4b40","alloc": {}}
2、初始化
在命令行下进入刚才创建的文件夹,输入如下命令:
geth –datadir data init genesis.json
初始化成功后,会在数据目录data中生成geth和keystore两个文件夹:
3、启动节点
geth --datadir data --networkid 123456 --rpc --rpccorsdomain "*" --nodiscover console
各参数代表的含义如下:
networkid 设置当前区块链的网络ID,用于区分不同的网络,1表示公链
rpc 表示启动rpc通信,可以进行智能合约的部署和调试
console 表示启动命令行模式,可以在Geth中执行命令
执行成功后将进入区块链的JavaScript控制台环境
4、 Geth JavaScript控制台环境使用说明
进入以太坊Javascript Console后,就可以使用里面的内置对象做一些操作,这些内置对象提供的功能很丰富,比如查看区块和交易、创建账户、挖矿、发送交易、部署智能合约等。 接下来介绍几个常用功能,下面的操作中,前面带>的表示在Javascript Console中执行的命令。
创建新账号
personal.newAccount()
或者 personal.newAccount(“123456”)
查看节点信息
admin.nodeInfo
挖矿
开始挖矿 miner.start(1)
停止挖矿 miner.stop()
查看当前矿工账号
eth.coinbase 默认为第一个账户
修改矿工账号
miner.setEtherbase(eth.accounts[1])
查看账户信息
eth.accounts[0]
查看账户余额
eth.getBalance(eth.accounts[0])
或者 web3.fromWei(eth.getBalance(eth.accounts[0]), “ether”)
解锁账号
personal.unlockAccount(eth.accounts[0])
使用账户资金前都需要先解锁账号
转账eth.sendTransaction({from:eth.accounts[0],to:”0x587e57a516730381958f86703b1f8e970ff445d9”,value:web3.toWei(3,”ether”)})
使用 txpool.status 可以看到交易状态
查看区块数据
eth.blockNumber
eth.getTransaction(“0x0c59f431068937cbe9e230483bc79f59bd7146edc8ff5ec37fea6710adcab825”)
eth.getBlock(1) //通过区块号查看区块
参考文章
1、https://my.oschina.net/u/2349981/blog/865256
2、http://8btc.com/article-4537-1.html
- 区块链技术学习(1 ):搭建以太坊私链
- Blockchain学习1_区块链-以太坊开发环境搭建介绍
- 区块链-以太坊学习资料汇总
- 【区块链】以太坊源码学习 -- EVM
- 基于以太坊的区块链浏览器搭建
- 基于以太坊的区块链浏览器搭建
- 区块链-以太坊开发环境搭建介绍
- 德国电力公司整合以太坊区块链技术…
- 区块链技术 之 以太坊(ethereum)开发环境安装
- 以太坊学习(3)第一个区块链应用
- 区块链技术学习(0):搭建truffle开发环境
- 以太坊区块链白皮书
- 以太坊学习(1)私有链搭建
- 区块链开发(零)如何开始学习以太坊及区块链
- 区块链开发(零)如何开始学习以太坊及区块链
- 区块链开发(零)如何开始学习以太坊及区块链
- 区块链技术学习笔记
- 区块链相关技术学习总结(1)——区块链以及区块链技术入门详解
- 原生 js 计算时间差
- 【Shiro权限管理】2.Shiro的HelloWorld程序
- CentOS 设置mysql的远程访问
- 【c基础】c语言精髓知识点总结
- 父线程,没有等子线程执行完就退出
- 区块链技术学习(1 ):搭建以太坊私链
- js 将一大段时间均分为很多个小时间段
- ThinkPHP 3.2.3 使用 PHPExcel 处理 Excel 表格
- 编辑距离C++实现(poj3356)
- PTA 数据结构 6-1 循环单链表区间删除
- Linux之shell脚本
- failed to execute prompt script (exit code 1)
- Qt入门-文件读写
- 1008 N的阶乘 mod P ——51Nod(同余定理)