这里要稍微介绍一下Ethereum Node(节点)。Etherum Node就是Ethereum Blockchain P2P网络中的节点。在Ethereum网络中每个节点互相沟通和同步区块资料。常听到的Geth就是Ethereum Protocol的一种实作,而Geth Node就是Ethereum Node。对Ehtereum Node有基本认识有助于Geth操作及功能上的理解。
Ethereum网络
Ethereum是一个分散式的网络架构,由一个到多个节点组成Ethereum网络。我们称这些节点为Ehtereum Node或Ethereum Client。Ethereum Node在整个Ethereum网络扮演着很重要的角色,他们维持了整个Ethereum网络的运行。在Ethereum网络中随时可以加入新的节点,也可以随时将节点从Ethereum网络中移除。
Ethereum网络由Ehtereum Node组成
Ethereum Node的工作
Etherum是去中心化架构。在Ethereum网络中每一个节点地位都是相等。每个Ethereum Node所作的事也差不多。Ethereum Node要作的工作很多,譬如Mining(挖矿)、 Recevies Transactions(接收交易)、 Receive/Send Blocks(同步区块)…等工作。下图显示了Ethereum Node主要的工作和与其互动的对象。
Ethereum Node主要工作
Ethereum Node主要工作:
稳定币和你有什么关系?稳定币可以解决的四种状况。
稳定币简单地说就是相较其他加密货币(数字货币)下稳定许多的币,称为稳定币。跟美金挂勾直接用美金就好为什么要用稳定币呢? 不知道大家有没有跨国汇款的经验,或是所处的国家
- Receives Blocks: 从其他的Ethtereum node接收block资料同步blocks。
- Validate: 验证该block是否正确,若正确就保存在本地端的Database。
- Transactions: 接收其他帐户或Dapp所发起的交易。
- Mining: 挖矿来获得奖励的ether并把交易纪录写入blocks。
- Sends Blocks: 把block资料传送给其他Ethereum Node来达到同步blocks。
- Deploy & Execute Contract: Smart Contract的布署也是由Ethereum Node来负责。Ehtereum Node也负责Smart Contract执行。
- Explore History: 外面的网站可以与Ethereum Node沟通来取得blocks相关的历史纪录。
Ethereum Node的沟通
Ethereum Node沟通方式
- Ethereum Node相互沟通所使用的是ÐΞVp2p Wire Protocol,而预设的Port是30303。
- 本地端所采用的local database是LevelDB。LevelDB是Google所提出的Fast key-value storage,提供了简易的Put/Get/Delete操作。
- 我们可以使用JOSN-RPC协议跟Ethereum Node互动。最常见的两种方式分别是Console使用pipe或file来沟通的JSON-RPC over IPC(Inter-Process-Communication) 机制,以及Browser所使用URL(http://localhost:8545)来沟通的JSON-RPC over HTTP机制。
- 使用Browser/Console皆可经由JSON-RPC协议,针对Ethereum网络执行某些操作。例如建立一个帐户(Create Account)、查询某个帐户的余额(Get Balance)…等。其互动的方式非常类似与Mysql Server的互动方式。
Mysql Server相当于Ethereum Node,Console相当于Mysql Client而Mysql Database相当于LevelDB
JSON-RPC和Web3.js
Web3.js是一个专门用来跟Ethereum Node互动的Javascript library,利用JSON-RPC over HTTP的方式跟Ehtereum Node沟通。前端可以提供人性化界面操作网页给一般使用者,后端则使用Web3.js与Ethereum网络沟通,来简化对于Ethereum BlockChain操作。
前端使用者利用网页进行操作,后端则使用Web3.js与Ethereum Nodes沟通
结尾
目前已经有许多人根据Ethereum黄皮书( Ethtereum Yellow Paper)上的SPEC,在各种不同的语言上实作Ethereum Protocol。比较著名的有由C++实作的cpp-ethereum,Python实作的pyethapp和最多人使用由Golang实作的Geth(go-ethereum)。其他还有一些像是ethereumjs-vm、ruby-ethereum…等不同语言的实作,大家都可以从网络上找到。
这一篇主要是希望在介绍Geth(go-ethereum)之前,简介一下Ethereum Node的主要工作,后面介绍Geth时能更清楚Geth在Ethereum中的角色。以上是我对于Ethereum Node的一些理解。若观念或理解有误,也拜托各位大大不吝啬给于纠正。若
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
稳定币(Stablecoins)是什么?
什么是稳定币(Stablecoins)? 目前市场上有许多数字货币,像是比特币、以太币、莱特币等,都是涨幅很大,一天的涨幅可以高达正负10% 甚至更高,所以有了「稳定币」的诞生。它必须
原创文章,作者:掘金K,如若转载,请注明出处:https://www.20on.com/120010.html