好物优选点击查看详情 京东购买

暂无内容

Ubuntu20.04初步学习区块链、部署简单的智能合约

目录

环境准备

1、安装curl、git

2、安装go

3、配置go的环境变量

4、安装以太坊环境

5、安装solc(solidity编译环境)

搭建私有链

一、准备创世区块配置文件

二、初始化:写入创世区块

三、智能合约相关准备

四、启动以太坊私有链节点


首先要安装VMware workstations虚拟机,并安装好ubuntu系统。下载地址:

下载Vmware虚拟机

https://releases.ubuntu.com/20.04/


环境准备

1、安装curl、git

apt-get update apt-get install git apt-get install curl

2、安装go

curl -O https://storage.googleapis.com/golang/go1.13.4.linux-amd64.tar.gz tar -C /usr/local -xzf go1.13.4.linux-amd64.tar.gz

(might require sudo)

3、配置go的环境变量

mkdir -p ~/go; echo "export GOPATH=$HOME/go" >> ~/.bashrc echo "export PATH=$PATH:$HOME/go/bin:/usr/local/go/bin" >> ~/.bashrc source ~/.bashrc

验证go :

go version

4、安装以太坊环境

sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:ethereum/ethereum sudo add-apt-repository -y ppa:ethereum/ethereum-dev sudo apt-get update sudo apt-get install ethereum

5、安装solc(solidity编译环境)

sudo add-apt-repository ppa:ethereum/ethereum sudo apt-get update sudo apt-get install solc

搭建私有链

首先创建私有链专门的data目录并进入:

mkdir /home/private_eth1 cd private_eth1

一、准备创世区块配置文件

以太坊支持自定义创世区块,要运行私有链,我们就需要定义自己的创世区块,创世区块信息写在一个json格式的配置文件中。首先将下面的内容保存到一个json文件中,例如genesis.json。

{ "config": { "chainId": 666, "homesteadBlock": 0, "eip150Block": 0, "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "ethash": {} }, "nonce": "0x0", "timestamp": "0x5ddf8f3e", "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", "gasLimit": "0x47b760", "difficulty": "0x00002", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x0000000000000000000000000000000000000000", "alloc": { "0x1e82968C4624880FD1E8e818421841E6DB8D1Fa4" : {"balance" : "30000000000000000000"} }, "number": "0x0", "gasUsed": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000" }

二、初始化:写入创世区块

使用以下命令初始化创世区块,指定私有链数据的存放目录、创世区块文件genesis.json目录.

/* * --datadir:指定私链数据的存放目录.当要在同一计算机中创建其他私链节点时,可创建另外的文件夹,例如data2。 * 然后通过--datadir data2区分不同的私链节点,如果未设置--datadir,则会读取以太坊主网的数据, * 默认位置在/root/.ethereum中。 * */ $ geth --datadir /home/private_eth1/ init genesis.json

成功后结果应该如下:Ubuntu20.04初步学习区块链、部署简单的智能合约插图

三、智能合约相关准备

在这里使用一个简单的输出平方的合约:新建一个文档,命名为test.sol,内容如下:

 // SPDX-License-Identifier: SimPL-2.0 pragma solidity ^0.8.6; contract test{ function multiply(uint256 input) public pure returns(uint256 res){ return input * input; } }

然后在这个sol所在的目录进行编译(要用到solc,前面已经安装过)

1. 利用solc工具获取合约的二进制编码,保存 solc --bin test.sol 2.获取合约的abi,保存 solc --abi test.sol 

所得到的结果如下:

Ubuntu20.04初步学习区块链、部署简单的智能合约插图1

Ubuntu20.04初步学习区块链、部署简单的智能合约插图2

需要把这两个结果找个地方存一下,可以存在记事本里,或者下一步重新开启一个终端,这个终端暂时不要动。

四、启动以太坊私有链节点

初始化完成后,就有了一条自己的私有链,之后就可以启动自己的私有链节点并做一些操作,在终端中输入以下命令即可启动节点,此处私有链不用同步全部区块数据(注意修改路径)

geth --networkid 666 --datadir /home/liuyihu/private_eth1/ --identity "TestNode" --port "30303" --nodiscover --allow-insecure-unlock console

启动成功如下:

Ubuntu20.04初步学习区块链、部署简单的智能合约插图3

创建新账户,创建成功将返回账户地址

personal.newAccount("123456") # “123456”是账户密码

记好密码不要忘记!

1.定义code和abi,注意code就是刚刚的bin,要用0x开头,加引号;

Ubuntu20.04初步学习区块链、部署简单的智能合约插图4

2.创建合约对象
contract = eth.contract(abi)

Ubuntu20.04初步学习区块链、部署简单的智能合约插图5
3.预估gas费用
eth.estimateGas({data: code})

Ubuntu20.04初步学习区块链、部署简单的智能合约插图6
4.解锁账号:
personal.unlockAccount("0x37d901f62ea6648ad6fcbbcb8e53383b48f0c19a")

Ubuntu20.04初步学习区块链、部署简单的智能合约插图7

此处括号里的地址是前面自己创建的账户地址,记得修改。
输入密码返回true成功。
5.部署合约
initializer = {from: web3.eth.accounts[0], data: code, gas:300000};

Ubuntu20.04初步学习区块链、部署简单的智能合约插图8

6.定义token
token = contract.new(initializer)

Ubuntu20.04初步学习区块链、部署简单的智能合约插图9

7.开启挖矿,此处需要等待一会
miner.start()

出现🔨 mined potential block则停止挖矿

Ubuntu20.04初步学习区块链、部署简单的智能合约插图10

8.停止挖矿
miner.stop()

此处返回null。
9获取挖矿地址
token.address
10.部署合约在刚刚的地址
myContract = contract.at("")
11.调用合约方法
myContract.multiply.call(9)

注意,multiply是合约里的方法,call是调用。此处调用这个方法计算9的平方,返回值应该为81。最后三步的运行结果如下:

Ubuntu20.04初步学习区块链、部署简单的智能合约插图11

以上,就是在ubuntu20.04上搭建一个私有链并部署一个简单的智能合约的全部步骤 。

原文链接:https://blog.csdn.net/liuyh19980/article/details/120960387

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享