前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一步一步搭建自己的区块链(以太坊私有链)

一步一步搭建自己的区块链(以太坊私有链)

作者头像
Yunjie Ge
发布2022-04-24 09:23:21
5.7K0
发布2022-04-24 09:23:21
举报
文章被收录于专栏:数据库与编程数据库与编程

一、什么是区块链

区块链(Blockchain)的概念于 2008 年在中本聪的论文《比特币:一种点对点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)》中首次提出。区块链可以理解为一种公共记账的机制(技术方案),它并不是一款具体的产品。其基本思想是:通过建立一组互联网上的公共账本,由网络中所有的用户共同在账本上记账与核账,来保证信息的真实性和不可篡改性。而之所以名字叫做‚区块‛链,顾名思义,是因为区块链存储数据的结构是由网络上一个个“存储区块”组成一根链条,每个区块中包含了一定时间内网络中全部的信息交流数据。随着时间推移,这条链会不断增长。

区块链按照访问和管理权限可以分为:公有链(Public Blockchain)、私有链(Private Blockchain)、联盟链(Consortium blockchain)。

以下是三种区块链的介绍:

1、公有链(Public blockchains) 公共区块链是指全世界任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链——共识过程决定哪个区块可被添加到区块链中和明确当前状态。作为中心化或者准中心化信任的替代物,公共区块链的安全由“加密数字经济”维护——“加密数字经济”采取工作量证明机制或权益证明机制等方式,将经济奖励和加密数字验证结合了起来,并遵循着一般原则:每个人从中可获得的经济奖励,与对共识过程作出的贡献成正比。这些区块链通常被认为是“完全去中心化”的。 2、联盟链(Consortium blockchains) 联盟区块链是指其共识过程受到预选节点控制的区块链;例如,不妨想象一个有15个金融机构组成的共同体,每个机构都运行着一个节点,而且为了使每个区块生效需要获得其中10个机构的确认(2/3确认)。区块链或许允许每个人都可读取,或者只受限于参与者,或走混合型路线,例如区块的根哈希及其API(应用程序接口)对外公开,API可允许外界用来作有限次数的查询和获取区块链状态的信息。这些区块链可视为“部分去中心化”。 3、私有链(Private blockchains) 完全私有的区块链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被任意程度地进行了限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。

二、动手搭建自己的私有区块链

本次将介绍如何在CentOS 6上搭建以太坊私有链。

1

操作系统准备

我使用的操作系统是CentOS 6.5。

[root@localhost ~]# cat /etc/redhat-release CentOS release 6.5 (Final)

2

golang安装

1)安装yum源:

[root@localhost ~]# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

2)安装golang:

[root@localhost ~]# yum install golang

3

下载以太坊源代码

[root@localhost ~]# mkdir /opt/software

[root@localhost ~]# cd /opt/software

[root@localhost software]# wget https://github.com/Jackge1979/go-ethereum/archive/v1.7.3.zip

4

安装以太坊

[root@localhost software]# unzip v1.7.3.zip

[root@localhost software]# ls

go-ethereum-1.7.3 v1.7.3.zip

[root@localhost software]# cd go-ethereum-1.7.3

[root@localhost go-ethereum-1.7.3]# pwd

/opt/software/go-ethereum-1.7.3

输入make进行编译

[root@localhost go-ethereum-1.7.3]# make

编译成功。

进入go-ethereum-1.7.3/build/bin子目录。

可以看到在该子目录下生成的 geth 这可执行文件。

这样,我们的以太坊就安装完成了。

5

创世区块文件的准备

在go-ethereum-1.7.3/build/bin目录下,创建init.json的文本文件:

[root@localhost bin]# vi init.json

{ "config": { "chainId": 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc": {}, "coinbase": "0x0000000000000000000000000000000000000000", "difficulty": "0x02000000", "extraData": "", "gasLimit": "0x2fefd8", "nonce": "0x0000000000000042", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" }

6

创世区块初始化

在go-ethereum-1.7.3/build/bin目录下,执行以下命令以完成创世区块的创建:

[root@localhost bin]# ./geth --datadir "/opt/chain" init init.json

这样,创世区块就初始化完成了。

7

启动以太坊

执行的以下命令启动以太坊:

[root@localhost bin]# ./geth --rpc --rpccorsdomain "*" --datadir "/opt/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 100000 console

一直到出现Welcome to the Geth JavaScript console! 句话,并自动进入geth的命令行则说明以太坊私有链安装成功了。

到目前为止,我们的私有链就搭建成功了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 山东Oracle用户组 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档