IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> Ubuntu20.04初步学习区块链、部署简单的智能合约 -> 正文阅读

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

目录

环境准备

1、安装curl、git

2、安装go

3、配置go的环境变量

4、安装以太坊环境

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

搭建私有链

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

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

三、智能合约相关准备

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


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

下载Vmware虚拟机

Ubuntu20.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

Unpack it to the /usr/local (might require sudo)

tar -C /usr/local -xzf go1.13.4.linux-amd64.tar.gz

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

成功后结果应该如下:

三、智能合约相关准备

在这里使用一个简单的输出平方的合约:新建一个文档,命名为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?

所得到的结果如下:

?

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


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

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

geth --networkid 666 --datadir /home/liuyihu/private_eth1/ --identity "TestNode" --rpc --rpcport "8545" ?--port "30303" --rpcaddr "localhost" --nodiscover --allow-insecure-unlock console

启动成功如下:

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

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

记好密码不要忘记!

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

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


3.预估gas费用
eth.estimateGas({data: code})?


4.解锁账号:
personal.unlockAccount("0x37d901f62ea6648ad6fcbbcb8e53383b48f0c19a")

?

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

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

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

出现🔨 mined potential block则停止挖矿


8.停止挖矿
miner.stop()

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

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

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

  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:06:32  更:2021-10-29 13:06:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:27:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码