以太坊如何在10分钟内建立一个完全同步的区块链节点

在接下来的10分钟内,你将:

client/server

我们的座右铭是,在学习理论之前就开始练习。所以让我们直接进入连接到Rinkeby测试网络的完全同步的以太坊测试节点的安装!

Geth

Geth是一个命令行界面(CLI),一个已编译的二进制文件,程序和客户端,用于运行Go中实现的完整以太坊节点。

我们将使用Geth:

  • 运行完全同步的以太坊节点以连接到名为Rinkeby的测试网络
  • 创建一个新帐户,以便能够发送和接收交易
  • 用于阅读EVM状态,例如检查任何账户的余额(想知道你的女朋友,男朋友,妻子,邻居有多少余额?透明度很高!)

安装Geth

我们可以直接从存储库安装它:

Mac

brew tap ethereum/ethereumbrew install ethereum

Linux

sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum

Windows

Good luck :)

验证安装:

which geth> /usr/local/bin/geth
geth version> Geth> Version: 1.8.20-stable

确保你运行相同的版本,以便能够执行Rinkeby网络的完全同步,如下一步所述,因为Rinkeby采取了Geth 1.8.20支持的constantinople硬盘。

运行区块链节点

嗯,魔鬼在细节……但是开始实际上很简单。感谢以太坊开发者。

让我们设置一个新的完全同步的Rinkeby(使用Clique PoA协议的以太坊测试网络)节点。

Rinkeby PoA实施速度更快但安全性显着降低。它更加集中于主网络的共识PoW,它非常适合作为测试网络。Rinkeby设法通过每15秒进行一系列交易来批准一个新的区块。

好的,好的,好的……这些话究竟是什么意思?

  • Rinkeby:权威证明测试网络的名称
  • 节点:基本上是执行以太坊客户端/服务器的传统服务器
  • Concensus:一种算法,用于定义如何在每个节点上的数据库中验证,附加和保留交易
  • 阻止:每15秒在网络的所有节点之间绕线传输的复杂数组中的一堆交易
  • 交易:不要考虑银行交易。区块链交易是一种状态变化。将智能合约的所有者从Alice重命名为Bob?将帐户余额从1ETH更改为5ETH?

在智能合约中将变量“foo”值设置为“foo_value_123”?那是一笔交易。

geth --rinkeby --datadir=~/.gophersland_ethereum_r1 --port=30304 --cache=2048 --rpc --rpcport=8546 --rpcapi=eth,web3,net,personal --syncmode=fast

上面的命令将:

  • 初始化一个新目录,其中所有数据将存储在 ~/.gophersland_ethereum_r1 。默认目录是: ~/.ethereum
  • 开始下载必要的以太坊历史记录,以成为一个新的完全有效,同步的网络节点
  • 通信将通过端口30304进行
  • 缓存,一种缓冲区,将设置为2GB以加速同步过程
  • 将启动额外的RPC API,以便我们可以通过控制台与我们的节点进行通信,稍后在端口8546上进行良好的GUI

等待几个小时,直到区块链完全同步。

截至9月24日的当前区号为:3039786。在我的AMD Ryzen 5 2600,3.4Ghz上,同步过程耗时3小时。哦,是的,我有一台新的游戏PC!

同时你可以在Twitter上关注GophersLand或者准备晚餐,也可以吃早餐,去健身房……让我们说,区块链不是最快的数据库:)

最终打印的消息将是:

INFO [

恭喜,你现在不到10分钟即成为区块链革命的一部分!

创建你的第一个区块链帐户

密钥库

所有以太坊帐户及其密钥都存储在名为“密钥库”的目录中。默认情况下该目录为空,因为我们尚未创建自己的帐户!

enchanter@lukas-gaming :~$ ls -la ~/.gophersland_ethereum_r1/ 
drwx------ 4 enchanter enchanter 4096 sep 24 15:26 .drwxr-xr-x 18 enchanter enchanter 4096 sep 24 11:51 ..drwx------ 4 enchanter enchanter 4096 sep 24 15:26 gethsrw------- 1 enchanter enchanter 0 sep 24 15:26 geth.ipcdrwx------ 2 enchanter enchanter 4096 sep 23 09:54 keystore 
enchanter@lukas-gaming :~$ ls -la ~/.gophersland_ethereum_r1/keystore/ 
drwx------ 2 enchanter enchanter 4096 sep 23 09:54 .drwx------ 4 enchanter enchanter 4096 sep 24 15:26 .. 
``` 

#### 帐户

要创建新帐户,请执行以下已熟悉的geth cmd。

geth –datadir=~/.gophersland_ethereum_r1 account new

系统将提示你输入密码(这是你的SUPER SECRET PASSWORD)。这是解密与你的新以太网地址关联的新生成的私钥所必需的,因为它允许你稍后使用它来对区块链上的交易进行签名。请注意它,因为我们稍后会需要它。 但是不要担心,如果你忘了它,无论如何这只是一个测试网络。

enchanter@lukas-gaming :~$ ls -la ~/.gophersland_ethereum_r1/keystore/ drwx—— 2 enchanter enchanter 4096 sep 23 09:54 .drwx—— 4 enchanter enchanter 4096 sep 24 15:26 .. enchanter@lukas-gaming :~$ geth –datadir=~/.gophersland_ethereum_r1 account new INFO [09-24|15:36:33.566] Maximum peer count ETH=25 LES=0 total=25 Your new account is locked with a password. Please give a password. Do not forget this password. Passphrase: Repeat passphrase: Address: {ceee57f2b700c2f37d1476a7974965e149fce2d4} enchanter@lukas-gaming :~$ ls -la ~/.gophersland_ethereum_r1/keystore/ drwx—— 2 enchanter enchanter 4096 sep 24 15:36 .drwx—— 4 enchanter enchanter 4096 sep 24 15:26 ..-rw——- 1 enchanter enchanter 491 sep 24 15:36 UTC–2018-09-24T13-36-43.069452577Z–ceee57f2b700c2f37d1476a7974965e149fce2d4

哇噢! 我新的以太坊地址还活着:`ceee57f2b700c2f37d1476a7974965e149fce2d4`。

你通常会遇到前缀为“0x”的地址,以指示地址编码,HEX 。

密钥文件的最新格式为:`UTC--<created_at UTC ISO8601>-<your address in hex`编码。列出时的帐户顺序是词典,但作为timepamp格式的结果,它实际上是按照创建的顺序。

如果你对文件内部的内容感到好奇,请随意打开它!你会看见:

- 地址:你的新十六进制地址
- 加密:一堆数学变量负责以加密形式表示你的私钥,现在不用担心这个魔法

有趣的说明:帐户生成在离线模式下进行,不需要同步的区块链节点。 好奇如何从技术角度在离线模式下生成唯一地址? 

Spoiler:这是因为地址是你公钥的哈希值,它基于你的唯一私钥。

好吧,我有一个新的灵魂以太坊帐户,我的余额是什么,我如何存放一些测试以太 ?

说到以太......实际上是什么?

#### Ether

以太是为以太坊网络提供动力的加密货币。它被用作一个价值单位,用于支付矿工验证,附加和持久化交易到集体数据库。但主要是它是一种防止垃圾邮件的技术,因为每个成功开采的区块矿工都会获得5(自上个月“仅”3)ETH奖励。是的,9月24日,每15秒,当前价格为600美元。这不是一件坏事。

### 如何从以太坊基金会免费获得8ETH的交易

#### 检查帐户余额

让我们先确保我们的账户余额为0,除非有人已经设法从他们的善良中发送一些以太。

Geth提供了一个JavaScript控制台,可以附加到可执行二进制文件,以方便地与区块链交互。我们可以通过指定Geth启动后公开的套接字文件来连接它。套接字文件对于“同一台机器上的进程间通信”非常有用,即IPC。

在Geth程序运行时,你可以在默认数据目录中找到此文件:

enchanter@lukas-gaming :~$ ls -la ~/.gophersland_ethereum_r1/ drwx—— 4 enchanter enchanter 4096 Sep 24 15:44 .drwxr-xr-x 18 enchanter enchanter 4096 Sep 24 15:47 ..drwx—— 4 enchanter enchanter 4096 Sep 24 15:44 gethsrw——- 1 enchanter enchanter 0 Sep 24 15:44 geth.ipcdrwx—— 2 enchanter enchanter 4096 Sep 24 15:47 keystore

当你的区块链节点仍在运行时,让我们使用另一个终端中的“geth attach”命令与Rinkeby网络进行交互。确保将绝对路径传递给IPC文件,否则会出错。

enchanter@lukas-gaming :~$ geth attach ipc:/home/enchanter/.gophersland_ethereum_r1/geth.ipc Welcome to the Geth JavaScript console! instance: Geth/v1.8.15-stable-89451f7c/linux-amd64/go1.10.1coinbase: 0xceee57f2b700c2f37d1476a7974965e149fce2d4at block: 3044891 (Mon, 24 Sep 2018 16:42:36 CEST) datadir: /home/enchanter/.gophersland_ethereum_r1modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0 > eth.accounts[“0xceee57f2b700c2f37d1476a7974965e149fce2d4”] > eth.syncingfalse > eth.getBalance(“0xceee57f2b700c2f37d1476a7974965e149fce2d4”)0 `

查询区块链:

  • eth.accounts:检查你当前可用的帐户
  • eth.syncing:为了确保我们的状态,DB与网络的其余部分完全一致,以确保getBalance响应将基于最新状态
  • eth.getBalance(“<your address& gt;”):查询数据库。

从以太坊基金会免费获得8ETH的交易

以太坊基金会有一个非常简洁的程序,称为“Faucet”在线提供,用于将以太网分配给实时请求它的帐户。

请求以太网:

  • 1.在其中一个公共社交网络上发布你的帐户地址
  • 2.例如,在推文中的任何地方发布包含你的以太坊地址的推文,如https://twitter.com/EnchanterIO/status/1044238559224483841 ,请确保标记@BlocksByLukas和@freeCodeCamp并告诉我们你是否喜欢该教程!
  • 3.打开https://www.rinkeby.io/#faucet并粘贴推文网址
  • 4.点击“给我以太”,选择3,7.5或18.75以太
  • 5.等几秒钟
  • 6.再次查询你的帐户余额

你很有钱……不过只是在测试网络中。

======================================================================

分享一些比特币、以太坊、EOS、Fabric等区块链相关的交互式在线编程实战教程:

  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • c#比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在C#代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是C#工程师不可多得的比特币开发学习课程。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • ERC721以太坊通证实战,课程以一个数字艺术品创作与分享DApp的实战开发为主线,深入讲解以太坊非同质化通证的概念、标准与开发方案。内容包含ERC-721标准的自主实现,讲解OpenZeppelin合约代码库二次开发,实战项目采用Truffle,IPFS,实现了通证以及去中心化的通证交易所。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
  • 深入浅出玩转EOS钱包开发 ,本课程以手机EOS钱包的完整开发过程为主线,深入学习EOS区块链应用开发,课程内容即涵盖账户、计算资源、智能合约、动作与交易等EOS区块链的核心概念,同时也讲解如何使用eosjs和eosjs-ecc开发包访问EOS区块链,以及如何在React前端应用中集成对EOS区块链的支持。课程内容深入浅出,非常适合前端工程师深入学习EOS区块链应用开发。
  • Hyperledger Fabric 区块链开发详解 ,本课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、nodejs链码与应用开发的操作实践,是Nodejs工程师学习Fabric区块链开发的最佳选择。
  • Hyperledger Fabric java 区块链开发详解 ,课程面向初学者,内容即包含Hyperledger Fabric的身份证书与MSP服务、权限策略、信道配置与启动、链码通信接口等核心概念,也包含Fabric网络设计、java链码与应用开发的操作实践,是java工程师学习Fabric区块链开发的最佳选择。
  • tendermint区块链开发详解 ,本课程适合希望使用tendermint进行区块链开发的工程师,课程内容即包括tendermint应用开发模型中的核心概念,例如ABCI接口、默克尔树、多版本状态库等,也包括代币发行等丰富的实操代码,是go语言工程师快速入门区块链开发的最佳选择。

汇智网原创翻译,转载请标明出处。这里是 以太坊如何在10分钟内建立一个完全同步的区块链节点

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章