ubuntu20.04初步学习区块链部署简单的智能合约(代码片段)

liuyh19980 liuyh19980     2023-01-20     174

关键词:

目录

环境准备

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+区块链学习计划

该文转自bilibilihttps://www.bilibili.com/read/cv18404166制定的web3学习计划是这样的:WEEK1:学习区块链的基础知识密码学基础区块链基础学习以太坊原理WEEK2:学习智能合约学习常见的智能合约标准,ERC20学习Solidity语言学习部署和开... 查看详情

xuperchain百度区块链简易学习帖(代码片段)

百度XuperChain基于Ubuntu系统从零开始到部署简单合约环境配置go语言安装git安装客户端安装启动私链基本操作命令1.创建普通用户2.创建合约账号3.查询余额4.转账5.查询交易信息6.查询block信息网络部署(选择性阅读)1.创建... 查看详情

使用browser-solidity在go-ethereum上进行简单的智能合约部署(代码片段)

...基本概念。1.1、什么是智能合约?  智能合约是存储在区块链上的一段代码,它们可以被区块链上的交易所触发,触发后,这段代码可以从区块链上读取数据或者向区块链上写入数据。  1.2、什么是Solidity?  Solidity是Ethereu... 查看详情

解读区块链智能合约!

...合约定义的分类,以及各自的缺陷,呼吁两类参与者互相学习,达成一个合理的定义。  智能合约没有清晰确定的定义。  这个创意以下一代区块链平台核心的地位出现在公众视野,同时被视为企业实际应用的关键特性。 ... 查看详情

区块链技术开发智能合约与图像存储在外部存储器ipfs(interplanetaryfilesystem)

专栏:【区块链技术开发】前期文章:【区块链技术开发】十个比较流行的以太坊智能合约开发框架【区块链技术开发】剖析区块链Ganache模拟器工具及其智能合约部署区块链的查询方式【区块链技术开发】基于Web3.js以太坊网络... 查看详情

linux环境下搭建区块链私有链+部署智能合约(代码片段)

文章目录一、前期准备二、安装goland环境三、安装go版本的以太坊源码,并编译四、私有链搭建五、私有链节点加入六、部署智能合约七、参考链接一、前期准备安装更新相关组件sudoyumupdate-y&&yuminstallgitwgetbzip2vimgcc-c+... 查看详情

区块链之部署和调用以太坊智能合约(代码片段)

区块链之部署和调用以太坊智能合约作者:邹祁峰邮箱:Qifeng.zou.job@hotmail.com博客:http://blog.csdn.net/qifengzou日期:2018.03.0401:18转载请注明来自”祁峰”的CSDN博客1引言智能合约就像我们业务的后台逻辑,其运行在... 查看详情

区块链之智能合约solidity踩坑--上篇

...遇到一些坑,做一下总结;介绍主要分一下三个方面:对区块链的简单描述结合业务场景,编写简单智能合约,时遇到的坑(上篇)assembly的使用说明(下篇)正文进入正题之前,我稍微简单介绍一下什么是区块链,区块链干嘛用的(... 查看详情

当红炸子鸡区块链,如何实现企业级部署?

...念到落地的发展趋势,从2017年开始区块链技术已经有了初步的与现实商业场景结合的可能,这个热度在2018年升到顶端,区块链技术在全球开始部署应用。而2018年的中国,舆论和资本在区块链领域双管齐下,各行业掀起了一场区... 查看详情

手把手教你区块链java开发智能合约nft-第五篇(铸造第一个nft)(代码片段)

文章目录手把手教你区块链java开发智能合约nft-第五篇(铸造第一个NFT)回顾部署NFT721铸造NFT根据tokenId查看NFT链上数据完整代码[NFT721相关智能合约源码下载](https://download.csdn.net/download/huangxuanheng/86260438)手把手教你区块链j... 查看详情

学习区块链开发是学习go语言、hyperledgerfabric比较好、还是以太坊智能合约比较好或者公链开发?

...是应该改学以太坊智能合约开发或者公链开发,还是继续学习fabric?Fabric区块链开发详解,本课程面向初学者,内容即包含HyperledgerFabric的身份证书与MSP服务、权限策略、通道配置与启动、链码通信接口等核心概念,也包含Fabric... 查看详情

区块链(代码片段)

...行并通知用户。以太坊目前最大的区块链开发者平台视频学习:尚硅谷_区块链以太坊核心技术geth搭建以太坊私链private-network搭建以太坊私有链笔记以太坊私有链搭建一台电脑上部署多个节点。安装go-ethereum#下载代码gitclonehttps://... 查看详情

区块链本地部署智能合约环境(代码片段)

文章目录安装MetaMask钱包安装remix-ide安装Node.js下载remix-ide本地部署私有链Demo-链接钱包、私有链、合约安装MetaMask钱包https://metamask.io/download.html右上角选择测试网络Repsten点击购买-测试水管获取Eth参考《使用metamask获得测试网ETH》... 查看详情

深论人工智能与区块链

...       例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。最近随着人工智能和区块链各自的热度都膨胀了起来,人工智... 查看详情

区块链的小细分领域

...如庞氏骗局)3、区块链相关的智能决策人工智能机器学习博弈论4、与计算/通信网络的融合云计算边缘 查看详情

区块链区块链技术学习总结

文章目录一、区块链技术简介1.1区块链概念1.2区块链应用1.2.1区块链1.0技术:比特币1.2.2区块链2.0技术:以太坊1.2.3区块链3.0技术:价值互联网二、区块链1.0技术比特币2.1比特币2.1.1比特币概念2.1.2比特币性质2.1.3比特币... 查看详情

区块链入门truffle创建项目,编译,及项目部署

上一章的结尾说这一次要讲编写一个智能合约部署到测试网络集群中,并进行交易,但我自己越看越觉得内容挺多的.先讲下truffle的项目创建,编译和部署的问题,然后再做上面说的事情吧.truffle是一套以太坊的开发测试框架,使用solidi... 查看详情

flow区块链nft开发及部署教程cadence合约(代码片段)

...得到NBA、UFC等多个大牌厂商的支持。在这个教程中我们将学习如何创建Cadence智能合约并在Flow区块链上发行NFT。区块链开发教程链接:以太坊|比特币|EOS|Tendermint|HyperledgerFabric|Omn 查看详情