以太坊Ethereum命令

etheum命令

查询账户

eth.accounts

创建账户

personal.newAccount("password")

查看账户余额

eth.getBalance(eth.accounts[0]) 

或指定具体的账户

eth.getBalance("0x60ea70d3ee0ce68a29f0b427981d781bc503e583")

启动&停止挖矿

miner.start() 或miner.start(1)

其中start的参数表示挖矿使用的线程数。第一次启动挖矿会先生成挖矿所需的DAG文件,这个过程有点慢,等进度达到100%后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。

miner.stop() 

挖到一个区块会奖励5个以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户:

eth.coinbase

现在的coinbase是账户0,要想使挖矿奖励进入其他账户,通过miner.setEtherbase()将其他账户设置成coinbase即可:

miner.setEtherbase(eth.accounts[1]) 

或指定具体的账户

miner.setEtherbase("0x60ea70d3ee0ce68a29f0b427981d781bc503e583")  

 

getBalance()返回值的单位是wei,wei是以太币的最小单位,1个以太币=10的18次方个wei。要查看有多少个以太币,可以用web3.fromWei()将返回值换算成以太币:

web3.fromWei(eth.getBalance("0x60ea70d3ee0ce68a29f0b427981d781bc503e583"),"ether")

 

发送交易

账户解锁,账户每隔一段时间就会被锁住,要发送交易,必须先解锁账户

personal.unlockAccount("0x8261d898e3bc86803a6a2a06d80abd67d6f68c87","123456")

发送交易,并返回交易hash

eth.sendTransaction({from:"0x8261d898e3bc86803a6a2a06d80abd67d6f68c87",to:"0x60ea70d3ee0ce68a29f0b427981d781bc503e583", value: web3.toWei(2, "ether")})

 

此时交易已经提交到区块链,返回了交易的hash,但还未被处理,这可以通过查看txpool来验证:

txpool.status  

txpool中pending的交易数量为0,说明交易已经被处理

要使交易被处理,必须要挖矿

 

通过交易hash查看交易

eth.getTransaction("0x736b00f63e49cfea9065c358c67753fee7cb6304557e57ffcc99b0889866a445")

 

通过区块号查看区块

eth.getBlock(5670)

连接到其他节点

节点二(246)连接到节点一(245)

 

先获取节点一的nodeInfo,

admin.nodeInfo.enode

 

然后在节点二(246)上执行

admin.addPeer("enode://9194db2ebba530e1124ab9a17483a361c7183e93546e160afc44ab895b3fdc8479856162817b74e23a76bec7f0c1172aef2f686a3caf02fe809de261946ead41@192.168.30.245:30303")

 

admin.peers可以查看连接到的其他节点信息,通过net.peerCount可以查看已连接到的节点数量

在节点一上查看

 

gas消耗

1,

账号0x8261d898e3bc86803a6a2a06d80abd67d6f68c87向账号0x60ea70d3ee0ce68a29f0b427981d781bc503e583转让2个ETH。

 

2,

账号0x60ea70d3ee0ce68a29f0b427981d781bc503e583得到2个ETH,

账号0x8261d898e3bc86803a6a2a06d80abd67d6f68c87减少了2个ETH + 0.000378个ETH,

可认为0.000378ether是账号0x8261d898e3bc86803a6a2a06d80abd67d6f68c87为这笔转账交易所支付的额外费用(gas消耗)。

 

http://ethfans.com/topics/66,转帖一下:

在以太坊运行程序需要付费,可以理解成比特币中的交易费用。以太坊的交易费用=gas数量 * gas price ,gas price (gas 单价,以以太币计)可以由开发者设置。不同的计算类型所需的gas也不一样,计算越复杂,需要的gas越多。所以,如果想运行程序,先用以太币购买gas。每个区块提供的gas是有上限的,目前大约是310万个gas。如果你设置的gas price太低,是买不到gas的,这就是一个gas市场。 gas可以翻译为燃料,加了燃料后,以太坊共识引擎才能启动。就像汽车一样,先用人民币去买汽油。

 

本地节点连接开发环境geth

1、下载geth软件,安装到D:\Geth

 

2、将创世区块文件拷贝D:\Geth

genesis.json

{

    "config": {

        "chainId": 15,

        "homesteadBlock": 0,

        "eip155Block": 0,

        "eip158Block": 0

    },

    "coinbase": "0x0000000000000000000000000000000000000000",

    "difficulty": "0x40",

    "extraData": "",

    "gasLimit": "0xffffffff",

    "nonce": "0x0000000000000042",

    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",

    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

    "timestamp": "0x00",

    "alloc": {}

}

 

3、初始化创世纪节点,并设置data目录:

geth --datadir ./data/00 init genesis.json

 

在geth安装目录打开终端输入

 

4、启动节点, 加上console 表示启动后,启用命令行:

geth --identity "fish dev" --datadir ./data/00 --networkid 128 --nodiscover --rpc --rpcapi "db,eth,net,web3" --port 30303 --rpcport 8545 console

 

5、连接开发服务器247节点上

admin.addPeer("enode://e851a146f7a1f98e08989ea761ebe3d646251be52831d53015716fb1aaed7d8b188cbbbad2c50c0af7ee8cb4ee8c37e937f49593d64ce971bf85164f4de493eb@192.168.30.247:30303")

 

查看连接信息

admin.peers

 

6、在247查询连接信息

amin.peers

 

7、转账验证

在本机新建账户进行转账验证

personal.newAccount("123456")

247:

eth.getBalance("0x8261d898e3bc86803a6a2a06d80abd67d6f68c87")

personal.unlockAccount("0x8261d898e3bc86803a6a2a06d80abd67d6f68c87", "123456")

eth.sendTransaction({from:"0x8261d898e3bc86803a6a2a06d80abd67d6f68c87",to:"0x9ad0a2dc1f7809cc2f50a4f294b3893515b4467c", value: web3.toWei(2, "ether")})

本机:

eth.getBalance("0x9ad0a2dc1f7809cc2f50a4f294b3893515b4467c")

 

挖矿难度值设置

接下来是难度值的更改:

十六进制 “0x99999” 对应的十进制 629145还是挺快的,半分钟大概30个,就是一秒一个

DDDDDDDD 3722304989 挖不到 放大了近四万倍 等了三分钟没挖到

176ffe890 6291450000 放大一万倍,五分钟没挖到

 

好吧,我放弃了,设置的小一点

    5ffffa 6291450 放大十倍 一分钟五个

    2ffffd 3145725 五倍 一分钟五到十个之间个

    bffff4 12582900 二十倍 六分钟挖了八个

    3bfffc4 62914500 一百倍 六分钟两个

    12bffed4 314572500 五百倍 15分钟没有一个

    77fff88 125829000 两百倍 十分钟两个

四五分钟一个区块是不是差不多了呢? 挖矿速度是可以通过算法自动调整,让速度保持与我们设置的难度值保持相当,但是后面区块的难度值都是跟初始块设置的难度值相关,所以只是由初始块的难度值决定整个链的速度.

这个是黄皮书关于难度值设定的算法

 

连接geth节点

 

另外一个启动geth的方法是连接到一个geth节点:

$ geth attach ipc:/some/custom/path

$ geth attach http://191.168.1.1:8545

$ geth attach ws://191.168.1.1:8546

 

如连接刚刚打开的开发模式节点使用:

geth attach ipc:testNet/geth.ipc

 

查询geth启动进程

ps -ef | grep 'geth --identity'

 

合约部署

truffle migrate

truffle migrate --reset

由于合约移植是懒编译的,如果发现已经发布过,且发布的版本号没有变化就不会再发布,所以使用–reset。使用truffle migrate –reset来强制重编译并发布所有合约。

 

Block

参数说明:

参数

描述

difficulty

挖矿难度,这里转化为 10 进制,等于”0x400”,后面区块难度会随着区块高度升高而提高

extraData

当前区块附加信息,若创世区块该值为空,在第二个区块中会保存,创建该私有链时的 geth,go,及操作系统版本,保存信息为第一个挖到该区块的矿工信息

gasLimit

十进制的 gasLimit 值,会随之区块高度提高而提高

gasUsed

gas 花费,在以太坊中交易和部署智能合约会消耗 gas,暂时可以理解为以太币

hash

当前区块hash值

logsBloom

保存当前区块日志

miner

挖到该区块的矿工地址

mixHash

与 nonce 配合用于挖矿,由上一个区块的一部分生成的 hash

nonce

工作量证明

number

当前区块高度

parentHash

上一个区块 hash 值

receiptsRoot

块的收益树根结果

sha3Uncles

对叔区块进行 hash 运算的结果

size

区块大小,以字节为单位

stateRoot

块的状态树根结果

timestamp

时间戳

totalDifficulty

达到该区块的难度总数

transactions

以数组的形式保存交易的 tx 值

transactionsRoot

交易的默克尔树根

uncles

以数组表示数区块的哈希

 

猜你喜欢

转载自blog.csdn.net/yuch_hong/article/details/107364192