区块链开发之路--CentOS

安装以太坊环境

0.更新源

yum update -y

1.安装geth所需要的环境

安装geth所需要git vim wget gcc-c++

yum install -y git vim wget gcc-c++

2.安装go

如果换源了之后可以先seach一下

yum search golang

如果有的话直接安装

yum install -y golang

更改goproxy

export GOPROXY=https:goproxy.cn

3.安装geth

通过github下载go-ethereum源码编译安装(有时候可能要科学上网)

git clone https://github.com/ethereum/go-ethereum.git

4.编译并且配置环境变量

make all

export “PATH=$PATH:geth的bin >> /etc/profile”

source /etc/profile

5.检验是否安装成功

geth version

启动私链

1.创建创世区块genesis.json

在一个合适的地方编辑传世区块文件genesis.json

genesis.json

{
    "config":{
        "chainId":2333,
        "homesteadBlock": 0,
        "eip150Block": 0,
        "eip155Block": 0,
        "eip158Block": 0,
        "byzantiumBlock": 0,
        "constantinopleBlock": 0,
        "petersburgBlock": 0
    },
    "alloc":{},
    "coinbase":"0x0000000000000000000000000000000000000000",
    "difficulty":"0x20000",
    "extraData":"",
    "gasLimit":"0xffffffff",
    "nonce":"0x0000000000000042",
    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp":"0x00"
}

config里的内容表示接受哪些协议标准

alloc:预先分配的账户。因为难度很低,私链挖坑很快,所以不用预先分配

coinbase:矿工账户,随便

parentHash:创世区块,父hash为0

其他字段都是比较随意的

2.初始化创世区块

geth --datadir [目录] init […/genesis.json]

3.启动节点

下面指令可以写在.sh文件里方便快速启动

geth --networkid [chainId] --datadir [节点目录] --rpc --rpccorsdomain “*” --rpcaddr “0.0.0.0” – rpcport [rpc连接端口] --rpcapi [可以使用的api库] --allow-insecure-unlock console 2>>[log文件]

//下面是我启动第一个节点的指令:(node1_start.sh文件里)

geth --networkid 2333 --port 30303 --nodiscover --datadir ~/ethereum/bootnode1 --rpc --rpcaddr “0.0.0.0” --rpcport 8546 --rpcapi “eth,net,web3,personal,admin,shh,txpool,debug,miner” --rpccorsdomain “*” --allow-insecure-unlock console 2>~/ethereum/log/bootnode1.log

这里有几个注意的点:

–networkid 是你的genesis.json里面设置的chainId,要一致

–rpc 开启HTTP-RPC服务

–rpcaddr 指定HTTP-RPC服务的地址,默认是localhost

–rpcport 指定rpc服务提供的端口,默认8545

–rpcapi 设定开放给HTTP-RPC的接口,默认只开放eth、net、web3,但是一般常用的还有personal,shh,txpool,debug,miner

–allow-insecure-unlock 可以在geth里面用personal.unlockAccount(addr,passwd)解锁账户

–nodiscover 关闭节点自动发现机制,只能自己手动添加

–port 通信端口

后面可以在metamask里导入账户,在remix里编写智能合约,remix里选web3Provide即可

4.多节点部署

下面部署第二个节点

//新建节点目录(当前目录为~/ethereum)

mkdir bootnode2

//初始化,节点2和节点1共用一个genesis.json

geth --datadir ~/ethereum/bootnode2 init ~/ethereum/genesis.json

//启动第二个节点(node2_start.sh)

geth --networkid 2333 --port 30304 --nodiscover --datadir ~/ethereum/bootnode1 --ipcdisabled --rpc --rpcaddr “0.0.0.0” --rpcport 8547 --rpcapi “eth,net,web3,personal,admin,shh,txpool,debug,miner” --rpccorsdomain “*” --allow-insecure-unlock console 2>~/ethereum/log/bootnode2.log

注意到和上面节点1不同的地方有:

port 不能是同一个

rpcport 也不能是同一个

log文件输出的地方不同

加入了–ipcdisabled 多节点最好只用一个ipc接口

接下来连接两个节点

//在节点2中

admin.nodeInfo.enode //将信息复制

//在节点1中

admin.addPeer(“节点2的enode”)

//验证

admin.peers

//或者

net.peerCount

多节点很吃内存!!

如果是不同主机的多节点部署,则在admin.addPeer(…)这里把@后面的ip和端口改成新节点的ip和端口

geth常用指令

1.eth类

eth.accounts —— 列出所有账户,是一个list

eth.getBalance(addr) —— 获取指定账户的余额

eth.coinbase —— 获取挖矿账户

eth.blockNumber —— 获取最新区块高度

eth.sendTransaction({from:addr1,to:addr2,value:v}) ——转账,单位是wei

…待补充

2.personal类

personal.newAccount() —— 创建新账户,在keystore里

personal.unlockAccount() —— 解锁用户,解锁后才可以发送交易

3.miner类

miner.start() —— 开始挖矿

miner.stop() —— 停止挖矿

miner.setEtherbase() —— 设置挖坑账户

4.txpool类

txpool.status —— 查看交易池状态

5.admin类

admin.peers —— 查看连接的节点状态

admin.addPeers(enode) —— 添加新节点

admin.nodeInfo —— 查看当前节点详细信息

6.net类

net.peerCount —— 查看连接的节点数

以太坊开发——智能合约

1.solidity语法

参考->https://solidity-cn.readthedocs.io/zh/develop/layout-of-source-files.html

里面介绍了solidity的语法以及代码规范

2.合约的部署与调用

介绍下我Github的项目Github,是一个基于web3j的以太坊开发工具库的封装,里面有一整套合约部署到调用的流程

有时间再慢慢更

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值