乙醚

华为手机怎么安装imtoken 2023-06-11 07:07:46

#### 1 Geth 虽然以太坊是一个公链系统,但是我们可以通过设置一些参数来运行自己的私有链节点。 在自己的私有链上开发测试,不需要同步公链数据,也不需要花钱购买以太币,节省存储空间和成本,非常灵活方便。 Go Ethereum 是以太坊协议的三个原始实现之一(以及 C++ 和 Python)。 它是用 Go 编写的,完全开源,并在 GNU LGPL v3 下获得许可。 ##### 1.1 go-ethereum安装 我的本地是Mac,运行以下命令安装,比较费时间,稍等一下。 ```brew tap ethereum/ethereumbrew install ethereum```输入以下命令,如果正常,说明安装成功。 ```geth --help //如果能成功显示帮助说明安装成功```##### 1.2 搭建私有链 1.准备创世块配置文件 以太坊支持自定义创世blocks ,要运行私有链,我们需要定义自己的创世块,创世块信息以json格式写在配置文件中。 - 创建根文件夹geth - 在根目录创建文件genesis.json,配置创世块 - 创建数据文件夹data0,保存生成的数据genesis.json```{"config": {"chainId": 10 ,“homesteadBlock”:0,“eip150Block”:0,“eip155Block”:0,“eip158Block”:0},“alloc”:{},“coinbase”:“0x0000000000000000000000000000000000000000”,“extraData”:“”,“难度" : "0x40000","gasLimit": "0x2fefd8","nonce": "0x0000000000000042","mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000","parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000","timestamp": "0x00"}```2 . 初始化命令的主体是geth init,意思是初始化区块链。 该命令可以有选项和参数,其中--datadir选项后跟一个目录名,这里是data0,表示指定的数据存储目录为data0,genesis.json是init命令的参数。

```geth --datadir data0 init genesis.json```初始化成功后会在数据目录data0下生成geth和keystore两个文件夹,其中geth/chaindata存放的是块数据,keystore存放的是account数据。 ![]()3。 私有链的运行和使用 初始化完成后,你就拥有了自己的私有链,接下来就可以启动自己的私有链节点,进行一些操作了。 在终端中输入以下命令启动节点。 ```geth --datadir data0 --networkid 1100 console``` 上面命令的主体是geth console,意思是启动节点,进入交互式控制台。 --datadir选项指定使用data0作为数据目录,后面是--networkid选项后面跟着一个数字,这里是1100,表示指定这条私链的network id是1100,这个network id会在当连接到其他节点。 以太坊公网network id为1,为了不和公链网络冲突以太坊2.0收益,运行私链节点时必须指定自己的network id。 这是一个交互式 Javascript 执行环境,可以在其中执行 Javascript 代码,其中 > 是命令提示符。 在这个环境中,还内置了一些操作以太坊的Javascript对象以太坊2.0收益,可以直接使用这些对象。

这些对象主要包括: - eth:包含一些操作区块链相关的方法 - net:包含以下查看p2p网络状态的方法 - admin:包含一些管理节点相关的方法 - miner:包含启动和停止挖矿的一些方法 - personal: 主要包括一些管理账户的方法 - txpool: 包括一些查看交易内存池的方法 - web3: 包括以上对象,还包括一些单位换算的方法 ##### 1.3 操作私有链 1. 查看所有账户信息```eth.accounts```2. 创建一个新帐户```personal.newAccount()```3. 开始和停止挖矿```miner.start(1)``` 其中start参数表示用于挖矿的线程数。 第一次开始挖矿,首先会生成挖矿所需的DAG文件。 这个过程有点慢。 进度达到100%后开始挖矿,屏幕上会刷新挖矿信息。 ```miner.stop()```停止挖矿4.查看账户余额```eth.getBalance(eth.accounts[0])```getBalance()返回值的单位是wei,wei是ether货币 最小单位,1 以太 = 10 的 18 次方 wei。 要查看您有多少以太币,您可以使用 web3.fromWei() 将返回值转换为以太币。

```web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')```![]() 会奖励挖一个区块5个以太币,挖矿奖励进入矿工账户,这个账户叫做coinbase,默认coinbase是本地账户中的第一个账户,我们也可以将其他账户设置为矿工。 ```eth.coinbase//查看矿工账户 miner.setEtherbase(eth.accounts[1])//设置矿工账户```##### 1.4 发送刚刚挖矿的交易,0号账户已经获得某个以太币,现在我们从账户0转10个以太币到账户1。 accounts[1],value:amount})```这个时候可能会报错,因为账户每隔一段时间就会被锁一次。 要发送交易,必须先解锁帐户。 由于我们要从账户0发送交易,所以我们必须解锁账户0```personal.unlockAccount(eth.accounts[0])```输入账户0的密码解锁,然后发送交易![]( )成功,得到交易哈希地址(可以通过该地址查看交易明细)。

注意此时以太币还没有转出,必须有矿工进行挖矿同步交易信息。 因此,我们打开挖矿并关闭挖矿操作。 ``` miner.start(1);miner.stop();```通过txpool.status,发现已经同步了![]() 然后查看账户1的余额,已经有10个以太币了``` web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')```##### 1.5 查看交易查看区块总数```eth.blockNumber``` 查看transactions by transaction hash` ``eth.getTransaction("0x158c2e2651c9bdf8cf91b59cef6a92a5a055d568880e6110c020420f414bb22d")```![]() 至此,我们的第一条以太坊私链搭建完成,我们也完成了私链上的交易和审计操作。