在接下来的10分钟内,你将:
- 在没有任何必要的生态系统知识的情况下学习第一个区块链词汇表。
- 在10分钟内设置完全同步的测试节点(
client/server
)。 - 创建你的帐户并从以太坊基金会免费获得8ETH的交易。
我们的座右铭是,在学习理论之前就开始练习。所以让我们直接进入连接到Rinkeby测试网络的完全同步的以太坊测试节点的安装!
Geth
Geth是一个命令行界面(CLI),一个已编译的二进制文件,程序和客户端,用于运行Go中实现的完整以太坊节点。
我们将使用Geth:
- 运行完全同步的以太坊节点以连接到名为Rinkeby的测试网络
- 创建一个新帐户,以便能够发送和接收交易
- 用于阅读EVM状态,例如检查任何账户的余额(想知道你的女朋友,男朋友,妻子,邻居有多少余额?透明度很高!)
安装Geth
我们可以直接从存储库安装它:
Mac
1 | brew tap ethereum/ethereumbrew install ethereum |
Linux
1 | sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum |
Windows
1 | Good luck :) |
验证安装:
1 | which geth> /usr/local/bin/geth |
1 | 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”?那是一笔交易。
1 | 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分钟即成为区块链革命的一部分!
创建你的第一个区块链帐户
密钥库
所有以太坊帐户及其密钥都存储在名为“密钥库”的目录中。默认情况下该目录为空,因为我们尚未创建自己的帐户!
1 | enchanter@lukas-gaming :~$ ls -la ~/.gophersland_ethereum_r1/ |
geth –datadir=~/.gophersland_ethereum_r1 account new
1
2
系统将提示你输入密码(这是你的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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
哇噢! 我新的以太坊地址还活着:`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
1
当你的区块链节点仍在运行时,让我们使用另一个终端中的“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分钟内建立一个完全同步的区块链节点