从一行命令了解以太坊

ByteRiderPro
• 阅读 7801

我觉得了解一个新事物最快的手段是上手实践,在实践中不断地发现问题解决问题。今天我们来试图近距离接触一下以太坊(ethereum)这个新事物。

安装geth

几乎每一个接触以太坊的开发者,不可能不碰到gethgeth是用go语言编写的以太坊客户端,所以叫geth。安装方法很简单:

brew tap ethereum/ethereum
brew install ethereum

运行geth:

网络

安装好geth之后,先不要像普通程序一样直接运行geth,这是因为geth缺省会连接到以太坊官方的正式网络上去,这个正式网络里的区块目前已经有多达500多万块,而且里面跑的都是要花真金白银的交易,为了练习起见,我们先连接到以太坊的测试网络上试一下。

除正式网络外,以太坊还有4个测试网络,geth能用的有3个。因为正式网络的编号是1,所以这3个测试网络的编号分别是2, 3, 4。编号为2的测试网络叫做Morden,目前已经废弃不用了;编号为3的叫做Ropsten,编号为4的叫做Rinkeby,这些名字的来源都是伦敦或者瑞典斯德哥尔摩的地铁站的名字,因为它们的主要维护者住在这几个地铁站旁边,也许哪一天会出现『五道口』这样的测试网络呢。

目前在用的测试网络主要就是RopstenRinkeby,区别在于Ropsten用的共识机制是PoW,而Rinkeby用的共识机制是PoA,先不要被这些可怕的名词吓晕,我们只要知道它在用法上的区别就是PoW的话,你如果想获得以太币的话是需要自己挖矿的,而PoA则不需要也不可以挖矿,你需要跟网络管理员讨要几块以太币来做实验。这几个网络的具体区别可以看这篇文章

指定网络的方法很简单,假设我们要使用rinkeby这个网络,那我们就这样写:

geth --rinkeby

数据文件

虽然指定了网络,但我们还不能马上启动geth,这是因为geth缺省的数据文件的路径是~/Library/Ethereum,如果我们直接启动的话,数据文件被放在这个目录下,而这个目录本来是为编号为1的正式网络预留的,如果我们把数据文件放在这里的话,如果以后我们想再启动正式网络,这些数据就会被覆盖,所以我们需要先在这个目录下建立一个子文件夹rinkeby,然后告诉geth我们的数据文件要存放在这个子文件夹里:

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkeby

同步模式

在启动geth之前,我们还需要告诉geth我们想以哪种方式同步数据,geth3种同步数据的方式,分别是full, fastlight。这三种方式中,full全同步是最慢的一种,它要把从创世区块往下的所有区块全部同步并校验一遍,fast快速同步模式相对于full来说要快一些,它只校验最近的1024个区块,而light模式是最快的,因为它只校验最近的一个状态,geth的缺省同步方式是fast,在rinkeby上目前有180多万个区块的情况下,同步的时间大约需要半个小时到2个小时,所以这里还是需要有一点耐心的。指定同步模式的命令如下:

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkeby --syncmode=fast

启动rpc服务器

为了能让我们的应用软件能够连接上geth,还需要在启动geth的同时启动rpc服务器,这个命令很简单:

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkeby --syncmode=fast --rpc

连接到状态服务器

我们费了这么大力气建立起来的geth环境,到底有没有被人认可呢?我们把它连接到rinkeby官方的状态服务器上看一下吧:

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkeby --syncmode=fast --rpc --ethstats='fengerzh:Respect my authoritah!@stats.rinkeby.io'

注意:这里的fengerzh是我给我的机器起的名字,你需要改变成一个不会和别人重复的名字,否则会出错误,而后面的这个Respect my authoritah!是密码,但这个密码必须是这样,否则也会通不过。

好了,我们终于连接好了,运行一下命令看看效果吧:

从一行命令了解以太坊

我们刚刚设置好的结点已经出现在了官方的网站上,说明我们的设置已经成功了!

配置文件

上面这一串命令太长了,记不住怎么办?我们可以把这些配置信息导出到一个配置文件中:

geth --rinkeby --datadir=$HOME/Library/Ethereum/rinkeby --syncmode=fast --rpc --ethstats='fengerzh:Respect my authoritah!@stats.rinkeby.io' dumpconfig > ~/rinkeby.toml

这样以后我们再执行的时候,就直接执行

geth --config ~/rinkeby.toml console

就好了。

账号

建立账号

现在我们的geth环境能运行了,下一步我们就需要在里面建立一个账号,最好再能有几个以太币可以玩一玩,我们可以用一个简单的命令建立一个账号:

geth account new --datadir=~/Library/Ethereum/rinkeby/

这里一定不要忘记添加datadir,否则你的账号就建到正式网络上去,而不是rinkey测试网络了。

索取以太币

正如我们上面所说,由于rinkeby这个网络是基于PoA的,所以你在这里获取以太币的唯一方式是索取,而不是挖矿,所以你需要到这个网站来,点击下面的3个链接之一,把你刚才建好的账号的信息放在twitter里发布出去,然后再把twitter的网址粘回刚才那个网站,过不了一会你就会收到管理者寄给你的3个以太币。

从一行命令了解以太坊

3个以太币太少了吗?你可以到这个网站换算一下3个以太币等于多少wei

从一行命令了解以太坊

通常情况下,一份智能合约的部署费用大约需要1,400,000gas,具体数字要看你合约的复杂程度而定,举例来说,一次加法操作要花掉你3gas,而一次乘法操作要花掉5gas,创建一个新账号要花32000gas,具体数据可以查这里。而gas还要通过单价换算成以太币,就像汽油一样,部署一份智能合约要花掉140万升油,而一升油的价格不固定,可以由你自己决定,你给的油价高,算的就快,你给的油价低,算的就慢,如果太低的话就没有人算了,正式网络的油价可以在这里查到,而测试网络rinkeby的油价在官网上有显示,目前价格大约是20.687gwei,这样算下来,一份智能合约的费用大约是1400000*20.687=28961800gwei,折合0.0289618个以太币,那我们的3个以太币大约可以部署100份合约。而如果是正式网络的话,汽油单价没那么贵,大约是2或者3gwei,折为0.003以太币,而目前以太币的价格大约为5000元人民币,所以一份智能合约的价格是15元人民币。

如果你觉得这个价格太高的话,可以考虑建立自己的私有网络,我会在另一篇文章里详谈。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
ETH挖矿软件最新评测对比【2021】
以太坊近来高出天际的交易手续费对于DeFi等领域的以太坊开发人员而言并不全是坏消息——如果手头恰好有NVIDIA或AMD显卡,不妨利用这些闲置资源参与ETH挖矿,进而从高昂的gas手续费中获取一些额外的被动收益。在这个教程中,我们将对GMiner、TRex、EthMiner、lolMiner、PhoenixMiner、NBMiner、TeamRed
Wesley13 Wesley13
3年前
ETH以太坊矿机指南
01、显卡市场的格局威:sky86991以太坊挖矿主流机器是显卡矿机,以太坊挖矿的显卡无外乎A卡和N卡。A卡是AMD显卡的俗称,N卡则是英伟达(Nvidia)显卡的的俗称。稍微介绍一下独立显卡的市场格局。目前独立显卡最上游的厂商只有AMD和英伟达两家,其他第三者在这个领域很难插足生存,独立显卡最核心的GUP设计被这两家上游厂商垄断了。
Stella981 Stella981
3年前
EIP712实现无Gas以太坊交易【含源码】
每个人都在讨论无gas以太坊交易,因为没有人喜欢支付gas费用。但是以太坊网络能够精准地运转恰恰是因为交易需要手续费。那么如何实现无gas交易呢?让我们一起学习无gas以太坊交易的魔法!在这篇文章中,我们将学习如何实现无gas交易模式。你会发现虽然在以太坊上没有免费的午餐,但可以用有趣的方式来转移gas成本。利用本文中学到的知识,你的DApp用户就可以省
Wesley13 Wesley13
3年前
37个常见的智能合约安全问题【以太坊】
SWCRegistry是以太坊安全人员和开发人员的必备知识库。它是SmartContractSecurity提供的以太坊智能合约安全漏洞分类及测试用例集,其中包含了37种以太坊Solidity智能合约开发中常见的安全问题的描述及后果,例如重入、溢出等,同时也给出了CWE漏洞分类、解决方案和作为示例的合约程序代码。用自己熟悉的语言学习以太坊DA
Stella981 Stella981
3年前
Fabtoken
HyperledgerFabric2.0(alpha)中有一个新特性:Fabtoken,可以原生支持数字加密货币的发行与管理。我们都知道以太坊的ERC20标准可以用来在以太坊区块链上创建数字加密代币,现在有了Fabtoken,开发者使用HyperledgerFabric也可以轻松实现数字加密货币的发行、转账等功能了!HyperledgerF
Stella981 Stella981
3年前
EthSnarks以太坊混币器【零知识证明】
Miximus是一个用于以太坊区块链的去中心化混币器和匿名转账应用,由EthSnarks作者开发,用于展示零知识证明在以太坊上的实用性。本文介绍Miximus以太坊混币应用的安装使用方法、工作原理和实现细节。用自己熟悉的语言学习以太坊DApp开发:Java(https://www.oschina.net/action/GoToLink?urlh
Stella981 Stella981
3年前
DeFi Compound开发REST API
在这个教程中,我们将学习如何为DeFi协议Compound的智能合约创建一个可以通过HTTP访问的API开发接口,并学习如何使用Infura作为以太坊网络和应用之间的桥梁。Compound是一个基于以太坊的数字资产借贷利率协议。Infura(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%
Stella981 Stella981
3年前
Haskell开发以太坊智能合约
ethereumH,这个程序包提供了写在Haskell上的工具,能使你连接到以太坊区块链。链接:Github:https://github.com/blockapps/ethereumH(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fblockapp
Stella981 Stella981
3年前
Solidity内联汇编简明指南
在用Solidity开发以太坊智能合约时,使用汇编可以直接与EVM交互,降低gas开销成本,更精细的控制智能合约的行为,因此值得Solidity开发者学习并加以利用。本文是Solidity汇编开发的简明教程,旨在帮助你快速熟悉如何在Solidity智能合约代码中嵌入汇编代码。以太坊教程链接:Dapp入门(https://www.oschina.n
Stella981 Stella981
3年前
Optimsim Rollup详解
OptimismRollup是目前最流行的以太坊L2解决方案。本文将解释OptimismRollup每个设计决策背后的动机,剖析Optimism的系统实现,并提供指向每个分析组件的相应代码的链接,适用于希望了解Optimism解决方案的工作原理并评估所提议系统的性能和安全性的开发人员。区块链开发教程链接:以太坊(https://www.osc
冯紫英 冯紫英
1年前
使用 Wagmi 2.0 和 Viem 的教程
Wagmi2.0是一个全新的版本,采用了Viem作为底层库,使得以太坊应用程序开发变得更加高效和便捷。Viem是一个用于与以太坊区块链交互的库,提供了更快、更可靠的操作,并且更好地支持TypeScript。下面的教程将带你一步步了解如何在你的项目中使用Wa