当前位置: 首页 > news >正文

区块链--Ubuntu上搭建以太坊私有链

1、搭建私链所需环境

操作系统:ubuntu16.04,开虚拟机的话要至少4G,否则会影响测试挖矿时的速度

软件:

  geth客户端

  Mist和Ethereum Wallet:Releases · ethereum/mist · GitHub

2、安装geth客户端

sudo apt-get update
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

安装完成后,输入geth -h,如果有列出信息则说明安装成功,可查看列出信息,方便后续的操作

image

3、创建创始块

(1)创建以太坊初始区块文件 genesis.json

作为区块链,链子总要有个头,所以需要创建一个创世块作为头部,才好往下添加,创世文件名称命名为genesis.json,数据目录存放在/home/cll/privateDemo/data1,genesis.json存放在/home/cll/ privateDemo/:

cat > genesis.json

输入:

{"config": {"chainId": 411,"homesteadBlock": 0,"eip155Block": 0,"eip158Block": 0},"nonce": "0x0000000000000033","timestamp": "0x0","parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000","gasLimit": "0x8000000","difficulty": "0x100","mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000","coinbase":"0x0000000000000000000000000000000000000000","alloc": {"0x1C83C95473e1e93A2C8560c73976dAFA9C3f0a79":{"balance":"1000000"}}
}

查看:

cat genesis.json

部分字段解释:

chainId : 以太坊区块链网络Id,ethereum主链是1,私有链只用不要与主链冲突即可。

alloc : 预留账户,如下

coinbase: 旷工账户

difficulty: 挖矿难度

extraData:相当于备注

gasLimit:最小消耗gas

nonce : 64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊黄皮书中的要求

parentHash : 上一个区块的Hash值,因为是创世块,没有在它前面的,所以是0

timestamp : 时间戳

(2)初始化区块节点

geth --datadir data1 init genesis.json

(3)启动geth客户端节点

geth --identity "data1" --rpc --rpcport 8000 --rpccorsdomain "*" --datadir "data1" --port 30303 --rpcapi "db,eth,net,web3" --networkid 999 console 2>>data1/geth.log

geth常用属性:

--Identity : 节点身份标识,起个名字

--datadir : 指定节点存在位置,“data1”

--rpc : 启用http-rpc服务器

--rpcapi : 基于http-rpc提供的api接口。eth,net,web3,db...

--rpcaddr : http-rpc服务器接口地址:默认“127.0.0.1”

--rpcport : http-rpc 端口(多节点时,不要重复)

--port : 节点端口号(多节点时,不要重复)

--networkid : 网络标识符 随便指定一个id(确保多节点是统一网络,保持一致)

clip_image004

(4)geth常用命令

#创建账户
personal.newAccount("123456")#获取账户数组
eth.accounts#解锁账户,转账时可使用
personal.unlockAccount(eth.accounts[0], "123456")#节点主账户
eth.coinbase#查看账户余额
eth.getBalance(eth.accounts[0])#启动,结束挖矿,写区块
miner.start(), miner.stop()#查看区块数量
eth.blockNumber

4、配置多节点服务

(1)再初始化一个节点(与上一个节点使用同一个genesis.json)

(privateDemo目录)

geth --datadir data2 init genesis.json

(2)启动新节点

(privateDemo目录)

geth --identity "data2" --rpc --rpcport 8001 --rpccorsdomain "*" --datadir "data2" --port 30306 --rpcapi "db,eth,net,web3" --networkid 999 console 2>>data2/geth.log

注:如果在同一台电脑上这两个端口号与之前的节点不能相同

(3)查看:新节点enode信息

admin.nodeInfo.enode

(4)主节点添加新节点,使两节点连在同一个私有链上

在data1终端下输入新节点data2的enode信息

例如:

admin.addpeer("enode://d4f64272de882d2e2ccefc6466c6580ddecd253f5c9d87f977ac3881cbea7b141c07681ea605c53af5815cbfc25b5138b9ddb07be61b757850a55b7197939ba4@127.0.0.1:30306")

(5)检查两节点是否已连接

首先使用命令admin.nodeInfo,查看结果是否为空[],或者net.peerCount,查看是否为0(这里有点问题,有时候由于某些原因,可能网络不稳定,添加完后是[]和0,有时候又显示有同伴);另外在其中一个节点启动挖矿命令 miner.start(),看另一个节点是否也同步,可以使用命令行跟踪(data1目录):tail -f geth.log。

clip_image006

clip_image008

4、Mist连接私链

(1)以rpc方式打开访问ipc接口方式打开mist钱包

“(mist应用所在路径)” –rpc “(节点geth.ipc所在目录)”

例如:

“/home/cll/ethereum/mist/mist” –rpc “/home/cll/privateDemo/data1/geth.ipc”

(2)只读的http方式打开钱包。不能转账,不能部署合约

“/home/cll/ethereum/mist/mist” –rpc http://127.0.0.1:8000

5、在Mist上部署智能合约

点击CONTRACTS->点击DEPLOY NEW CONTRACT->选择账户,编写合约内容->最底下点击DEPLOY。成功提交后,等待挖矿确认,确认的合约会显示在CONTRACTS页面,点击合约即可进行相关操作。

clip_image010

相关文章:

区块链--Ubuntu上搭建以太坊私有链

1、搭建私链所需环境 操作系统:ubuntu16.04,开虚拟机的话要至少4G,否则会影响测试挖矿时的速度 软件: geth客户端 Mist和Ethereum Wallet:Releases ethereum/mist GitHub 2、安装geth客户端 sudo apt-get update …...

菜品信息分页查询——后端SpringBoot

1.分页查询的逻辑: 页面发送ajax请求,将分页查询参数(page,pageSize, name)提交到服务端,获取分页数据; 页面发送请求,请求服务端进行图片下载,用于页面图片展示。 开发菜品信息分页查询功能&a…...

利用GPT和PlantUML快速生成UML图用于设计

在软件开发中,设计阶段可是关键的一步。UML(统一建模语言)图能帮我们更清晰地理解和规划系统结构,但手动画UML图有时会很费时费力。好消息是,通过结合使用ChatGPT和PlantUML,我们可以高效地生成UML图&#…...

web-上传项目文件夹到Git远程仓库

Git初识 概念:一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码 作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容 检验成功 打开bash终端(git专用)命令…...

使用OpenPCDet训练与测试Transformer模型:如何加载自己的数据集

引言 Transformer架构因其强大的序列处理能力和长距离依赖捕捉能力,在自然语言处理领域取得了巨大成功。近年来,这一架构也被引入3D物体检测领域,如Voxel Transformer等,显著提升了模型在复杂场景下的检测性能。OpenPCDet整合了多…...

四舍五入问题

单纯输出四舍五入可以用 printf("%.nf",num); 但是这个方法有时候会出错 代表输出n位四舍五入小数 而将数四舍五入赋值给变量可以用round()函数 a round(num); 表示将num四舍五入赋值给a 但是这么些只能转换位四舍五入的整数 可以改…...

零基础入门学用Arduino 第一部分(三)

重要的内容写在前面: 该系列是以up主太极创客的零基础入门学用Arduino教程为基础制作的学习笔记。个人把这个教程学完之后,整体感觉是很好的,如果有条件的可以先学习一些相关课程,学起来会更加轻松,相关课程有数字电路…...

C++标准库random

random 完整文档看这里 三步走: 选择一种随机数种子选择一个随机数引擎选择一个随机数分布输出 随机数种子 //生成随机数种子,在Linux的实现中,是读取/dev/urandom设备 std::random_device rd; unsigned seed1 rd();// 获取当前时间点作为随机数种子 unsigned seed2 std:…...

电子电气架构——车载诊断DTC一文通

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标…...

Golang | Leetcode Golang题解之第129题求根节点到叶节点数字之和

题目: 题解: type pair struct {node *TreeNodenum int }func sumNumbers(root *TreeNode) (sum int) {if root nil {return}queue : []pair{{root, root.Val}}for len(queue) > 0 {p : queue[0]queue queue[1:]left, right, num : p.node.Left, …...

工业信息化SCI期刊,中科院1区TOP,IF=12.3,收稿范围广泛

一、期刊名称 IEEE Transactions on Industrial Informatics 二、期刊简介概况 期刊类型:SCI 学科领域:工程工业 影响因子:12.3 中科院分区:1区TOP 三、期刊征稿范围 IEEE工业信息学汇刊是一本多学科期刊,发表技…...

Spring Boot整合Redis

Spring Boot整合Redis Spring Boot 整合 Redis 是一种常见的做法,用于在 Spring Boot 应用程序中添加缓存、会话管理分布式锁等功能。 浅谈Redis Redis用于存储数据,且在内存当中进行存储。 但是在日常编写代码时,定义一个变量也就是属于在内…...

kafka的leader和follower

leader和follower kafka的leader和follower是相对于分区有意义的,不是相对于broker。 因为每个分区都有leader和follower, leader负责读写数据。 follower负责复制leader的数据保存到自己的日志数据中,并在leader挂掉后重新选举出leader。 kafka会再…...

git 空仓库笔记

标识身份,建议先完成 Git 全局设置 git config --global user.name “账号” git config --global user.email “email” 方式一:克隆仓库 git clone https://url/your.git cd your_path touch README.md git add README.md git commit -m "add …...

字母异位词分组(charyw)

字母异位词分组 题目描述 给定一个字符串数组&#xff0c;将字母异位词组合在一起。字母异位词指字母相同&#xff0c;但排列不同的字符串。 输入格式 第一行正整数n&#xff0c;表示有n个字符串(1<n<1000) 第二行n个字符串&#xff0c;空格隔开 输出格式 多组字母…...

力扣 41.缺少的第一个正整数

题目描述&#xff1a; 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff1a;范围 …...

Git从入门到放弃

由于我的Git学的不太好&#xff0c;所以为了能够将以后我的学习笔记能够整理的更好&#xff0c;我先要系统的学习一下git&#xff0c;文章由此产生。 文章笔记源自尚硅谷Git入门到精通全套教程视频内容 1 进入官网 学习新技术的第一步需要熟悉官网&#xff0c;Git也不例外。ht…...

003.数据分析_PandasSeries对象

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…...

【介绍下什么是Kubernetes编排系统】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…...

linux防止nmap扫描

1、首先关闭Centos7自带的firewalld [rootnode ~]# systemctl disable firewalld.service && systemctl stop firewalld.service 2、安装iptables服务 [rootnode ~]# yum install iptables-services iptables-devel -y [rootnode ~]# systemctl enable iptables …...

先被日本汽车打败,再被中国汽车冲击,欧洲车面临崩盘,已累计裁员50万人!

大众汽车在公布2025年的利润腰斩之后&#xff0c;发布了进一步裁员计划&#xff0c;到2030年将削减5万个工作岗位&#xff0c;占它当下员工总人数的比例大约7.5%&#xff0c;由此业界人士统计了近几年来欧洲诸多车企以及汽车供应链企业宣布的裁员人数&#xff0c;发现欧洲汽车行…...

新手福音:在快马平台用一句话描述,AI帮你生成专属技能展示网页代码

作为一个刚入门编程的新手&#xff0c;想要展示自己的技能却无从下手&#xff1f;最近我发现了一个超级友好的工具&#xff0c;完全是为我们这种小白量身定做的。只需要简单描述需求&#xff0c;就能自动生成一个完整的个人技能展示网页项目&#xff0c;而且所有代码都带着详细…...

装机:WIN10家庭版升级专业版

https://ubuntu.com/download/desktop/thank-you?version24.04.4&architectureamd64&ltstrue 装机&#xff1a;WIN10家庭版升级专业版Win10、Win11不重装系统情况下怎么使用一条命令实现家庭版升级为专业版或企业版&#xff1f;https://mp.weixin.qq.com/s/bIcRu6A_cl…...

哈佛医学院做了5679次组学分析:大模型能力没差别,关键在验证

哈佛医学院Zitnik团队的MEDEA 给出了一条明确的技术路线&#xff1a;与其追求更强的骨干大模型&#xff0c;不如在分析流程的每一步嵌入验证机制。在理解 MEDEA 的设计逻辑之前&#xff0c;先看一组来自消融实验的数据。在细胞类型特异性靶点发现任务中&#xff0c;研究团队将M…...

企业做智能问数,最容易被低估的不是模型,而是人工预置工作量

在当前企业数据智能平台选型中&#xff0c;“大模型能力”常被视为决定成败的关键。然而&#xff0c;越来越多的实践表明&#xff1a;真正制约智能问数从 POC&#xff08;概念验证&#xff09;走向规模化落地的瓶颈&#xff0c;并非模型本身&#xff0c;而是隐藏在技术方案背后…...

OpenClaw怎么部署?阿里云一键部署,轻松养龙虾!

还在羡慕别人的AI助手能写代码、查资料、干杂活&#xff1f;现在&#xff0c;通过阿里云OpenClaw快速部署方案&#xff0c;官方镜像一键部署&#xff0c;无需代码、只需两步&#xff0c;新手小白也能轻松“养龙虾”&#xff01; 一、OpenClaw是什么&#xff1f;为什么叫“养龙虾…...

Flowable6.4实战:如何优雅处理并行网关驳回与多实例加减签(附完整代码)

Flowable 6.4实战&#xff1a;并行网关驳回与多实例加减签的工程化解决方案 在企业级流程审批系统中&#xff0c;并行任务处理和多实例任务动态调整是高频需求场景。当某部门采购申请需要同时经过财务审核、法务审核和业务负责人审核时&#xff0c;传统串行审批模式会导致效率…...

linux——消息队列发送和读取函数

int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); //读取消息&#xff0c;成功返回消息数据的长度&#xff0c;失败返回‐1 参数&#xff1a; msgid:消息队列的ID msgp:指向消息的指针&#xff0c;常用结构体msgbuf如下&#xff1a; struct msgbuf { lon…...

【Python学习】海龟绘图(Turtle)

目录 一、教程概述 二、环境准备 2.1 安装Python&#xff08;已安装可跳过&#xff09; 2.2 启动海龟绘图环境 方式1&#xff1a;使用Python IDLE&#xff08;自带编辑器&#xff09; 方式2&#xff1a;使用命令行运行 三、海龟绘图核心概念 四、基础操作&#xff08;必…...

AVME-115A印刷电路板

AVME-115A 印刷电路板&#xff08;PCB&#xff09;**是一款用于工业控制或嵌入式系统的核心电子模块&#xff0c;负责信号传输、数据处理和系统接口连接。一、基本概述型号&#xff1a;AVME-115A类型&#xff1a;印刷电路板&#xff08;PCB&#xff09;用途&#xff1a;作为控制…...