Geth在ubuntu上配置和一些通用操作介绍及配置安装以太坊开发环境

本文同步发布于我的博客

一、更换镜像源
如果你使用的镜像源是可用或者和我所用镜像一样的话就不用再更改,不过还是建议在后面加上我的镜像。

指令:sudo gedit /etc/apt/sources.list

打开镜像配置⽂件后,在你的镜像后面加上下面内容并保存退出


#deb http://mirrors.tuna.tsinghua.edu.cn/debian/ stable main
deb http://mirrors.ustc.edu.cn/ubuntu/ focal main universe restricted multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ focal main universe restricted multiverse #Added by software-properties
#默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
#deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
#deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
#deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
#deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
#预发布软件源,不建议启用
#deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
#deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse

输⼊命令更新apt软件包 sudo apt-get update

二、环境搭建
1.安装aptitude
使用aptitude安装软件包可以方便解决一些依赖性等问题。
在下面的安装过程中如果遇到apt-get无法安装的情况建议使用aptitude代替apt-get安装。

sudo apt-get install aptitude

2.安装Go
参考链接中说明安装即可:
https://www.jianshu.com/p/f35f07ce7a22
安装完成截图:
在这里插入图片描述

3.搭建以太坊
命令:

sudo apt-get update
sudo apt-get install ethereum

使用如下命令查看以太坊版本:

geth version
在这里插入图片描述

4.安装Nodejs

sudo apt-get install -y nodejs
安装成功查看版本:nodejs -v

在这里插入图片描述

5.安装Solidity

sudo apt-get install npm #报错的话使用sudo aptitude install npm
sudo snap install solc
solc --version

出现如下图所示的内容则说明安装成功:
在这里插入图片描述

6.安装Truffle
参考链接:

https://segmentfault.com/a/1190000013950908
https://liyuechun.com/162.html

sudo npm install -g truffle

安装过程比较长,需要等待

成功标志:truffle --version
在这里插入图片描述

三、以太坊开发
1.私链部署
ubuntu环境下的私链部署与win10环境下基本无异,同样是建立创世区块,初始化私链
参考win10搭建ETH私链这篇文章即可
https://blog.csdn.net/Tree_sea/article/details/121990419

也可参考这篇文章:https://blog.csdn.net/qq_39869387/article/details/115432897
注:上面这篇文章启动私链的命令有问题,新版的geth已经没有rpc相关指令所以要用http指令来代替

创世区块:
genesis.json

{
  "config": {
    "chainId": 8434,
    "homesteadBlock": 1,
    "eip150Block": 2,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 3,
    "eip158Block": 3,
    "byzantiumBlock": 4,
    "alien": {
      "period": 2,
      "epoch": 300,
      "maxSignersCount": 5,
      "minVoterBalance": 100000000000000000000,
      "genesisTimestamp": 1536136198,
      "signers": [
            "0x393faea80893ba357db03c03ee73ad3e31257469",
            "0x30d342865deef24ac6b3ec2f3f8dba5109351571",
            "0xd410f95ede1d2da66b1870ac671cc18b66a97778"
      ]
    }
  },
  "nonce": "0x0",
  "timestamp": "0x5b8f92c2",
  "extraData": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x47b760",
  "difficulty": "0x1",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "alloc": {
  },
  "number": "0x0",
  "gasUsed": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}

初始化:

geth --datadir ./私链文件夹名 init genesis.json

启动指令:

geth --http --http.api db,eth,net,web3,personal --datadir ./私链文件夹名
–networkid 1997 console 2>> log2020526.log
在这里插入图片描述

2.连接第二个geth终端
路径切换到私链文件夹中

geth attach geth.ipc
在这里插入图片描述

3.挖矿和交易
建议连接可视化钱包如小狐狸来查看余额
新建两个账户
在这里插入图片描述

personal.newAccount(“1234”);
personal.newAccount(“12345”);

挖矿
挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户,如下图所示:
在这里插入图片描述

设置挖矿地址指令:

miner.setEtherbase(填地址或者地址数组)

下图为设置用户2地址为挖矿地址(数组从0开始)
在这里插入图片描述

输入指令开始挖矿miner.start(1)
停止挖矿指令miner.stop()
在我们私链的文件夹外面的日志文件可以查看到挖矿信息
在这里插入图片描述

停止挖矿后查看余额
eth.getBalance(地址)默认返回的单位:wei
在这里插入图片描述

帐户转账
我们打算从eth.accounts[1]向eth.accounts[0]转账,转账之前需要先解锁eth.accounts[1]:
解锁账户:

personal.unlockAccount(eth.accounts[1],“12345”,0)

参考文章https://blog.csdn.net/YM_1111/article/details/112753262
报错
在这里插入图片描述

原因是新版本geth,出于安全考虑,默认禁止了HTTP通道解锁账户。我们在启动私有链那个地方加部分代码:

–allow-insecure-unlock

退出原来的控制台指令exit(直接关闭原来挖出的区块会回滚,余额也会清零!)

整体指令:geth --http --http.api db,eth,net,web3,personal --datadir
./myblockchain --networkid 1997 console 2>> log2020526.log
–allow-insecure-unlock

重新解锁并转帐:
eth.sendTransaction({from:eth.accounts[1],to:eth.accounts[0],value:web3.toWei(1,‘ether’)})

在这里插入图片描述

查看余额发现账号[0]的余额仍旧为0,这是因为我们虽然发起了交易,但并没有矿工挖矿打包交易。
查看等待打包的交易

txpool.status:查看交易池中等待被打包的交易
txpool.inspect.pending:查看已提交但还未被处理的交易,pending表示已提交但还未被处理的交易
eth.getBlock(“pending”, true).transactions:查看当前待确认交易

在这里插入图片描述

打包(挖矿)
启动挖矿:

miner.start()

查看账号余额:

eth.getBalance(eth.accounts[0])

查看交易池:

txpool.status
在这里插入图片描述

推荐查阅文档及链接
https://geth.ethereum.org/docs/rpc/server 官方文档
http://cw.hubwiz.com/card/c/geth-rpc-api/ 中文API文档
https://ethereumdocch.readthedocs.io/zh/latest/account-management.html 中文文档
参考链接
https://blog.csdn.net/YM_1111/article/details/112753262
https://blog.csdn.net/qq_39869387/article/details/115432897
大佬的一个专栏(智能合约): https://blog.csdn.net/ym_1111/category_10740923.html
https://blog.csdn.net/ambtious_/article/details/105184779

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值