首页 > 区块链博客 > 【区块链课堂】第33课:以太坊的账户和基本单位

【区块链课堂】第33课:以太坊的账户和基本单位

2018-05-25 19:15:00 阅读量:

全文摘要:

本文由币车HIT(biche.yaofache.com)大V养成计划支持在以太坊系统中,状态是由被称为“账户”(每个账户由一个20字节的地址)的对象和在两个账户之间转移价值和信息的状态转换构成的。我们在命令行输入 eth.accounts 可以看到当前该区块链中共有几个账号,以及每个账号的公钥地址。

本文由币车HIT(biche.yaofache.com)大V养成计划支持

在以太坊系统中,状态是由被称为“账户”(每个账户由一个20字节的地址)的对象和在两个账户之间转移价值和信息的状态转换构成的。

我们在命令行输入 eth.accounts 可以看到当前该区块链中共有几个账号,以及每个账号的公钥地址。

以太坊的账户包含四个部分:

1,随机数,用于确定每笔交易只能被处理一次的计数器

2,账户目前的以太币余额

3,账户的合约代码,如果有的话

4,账户的存储(默认为空)

简单地说,每一个以太坊账户都有一对公钥和私钥组成:

*公钥我们可以理解为就是账户地址,任何其他账户都可以访问该地址

*私钥可以理解为一段加密过的密码,这一对公钥和私钥共同组成一个唯一标示的以太坊账户。

例如在我们建立的以太坊账户 eth.accounts[0] 中,地址 0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f 就是公钥,而对密码加密而成的,就是私钥。

增加账户:

我们可以输入命令 personal.newAccount(“123”) 来新建一个账户,(注意123可以修改为任何别的密码)

当以太坊的私链在挖矿时候,所挖到的以太币都会存入第一个以太坊账户中,即eth.accounts[0] 中,而eth.accounts[1]默认是不会有以太币的。这个时候我们可以用下面的命令来查看eth.accounts[0] 中的以太币余额。

eth.getBalance("0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f")

如何在两个账户之间进行以太币转换

每个账户的公钥(地址)是一切以太坊账户操作的核心,但地址字符串太长,我们用acc0/acc1 分别代表accounts[0]和[1],另外设置要转移0.01个以太币

> acc0 = eth.accounts[0]"0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f"> acc1 = eth.accounts[1]"0xb8b12a801b610176935a15321f77b48dd5c0c448"> amount = web3.toWei(0.01)"10000000000000000"

这个时候我们可以使用eth.sendTransaction来将0.01个以太币从acc0转移到acc1中。

> eth.sendTransaction({from: acc0, to: acc1, value: amount})
  • 以太坊的一个保护机制,每隔一段时间账户就会自动锁定,这个时候任何以太币在账户之间的转换都会被拒绝,除非把该账户解锁.


  • 这个时候我们就需要执行 personal.unlockAccount(acc0) 并输入密码来解锁acc0才可。

> personal.unlockAccount(acc0)Unlock account 0xbcf5b841303bc08026ce2d3b8f83498ffe42c12fPassphrase: true>

这个时候我们重新执行命令eth.sendTransaction({from: acc0, to: acc1, value: amount}), 结果如下:

> eth.sendTransaction({from: acc0, to: acc1, value: amount})"0xeea74dd5ff3f1287614d52ebb674edb93e8c5e51e4296835044d3d858d3d9f10"> eth.getBalance(acc1)10000000000000000>

我们可以看到这个时候acc1有了数值10000000000000000, 而不再是之前的0了。但我们明明要给0.01ether币的,为何数值会如此大呢? 其实是对的,我们只要输入命令web3.fromWei(10000000000000000,”ether”) 就可以知道了。

> web3.fromWei(10000000000000000,"ether")"0.01"

Ether币的基本单位:

Ether币最小的单位是Wei,也是命令行默认的单位, 然后每1000个进一个单位,依次是

kwei (1000 Wei)mwei (1000 KWei)gwei (1000 mwei)szabo (1000 gwei)finney (1000 szabo)ether (1000 finney)

简单地说就是就是1 以太币 = 1000000000000000000 Wei (这就是为何我们转移0.01个以太币,结果却显示很长的原因)

如何进行ether 和 Wei之间的转换

Ether–> Wei:web3.toWei> web3.toWei(1)"1000000000000000000"> web3.toWei(1.3423423)"1342342300000000000"> web3.toWei(0.00034)"340000000000000">Wei –> Ether: web3.fromWei> web3.fromWei(10000000000000000)"0.01"> web3.fromWei(1000000000000000000)"1">

下面推荐一个内容激励平台(正在内测中)

【币车】一个通过发文章点赞就能赚钱的区块链应用!

现在注册即送50000枚HIT,邀请好友还有大额奖励。快来注册,早期红利等你拿!

-------------

链接:https://www.yaofache.com/bus/?i=CWkMW9

-------------

注册邀请码(必填) CWkMW9

来源:币乎


上一篇:【俄罗斯反垄断局:若加密货币出现违规行为将介入处理,但目前并不想干涉该领域监管】
下一篇:爱尔兰澄清数字货币交易的税收

微信

微信

微信

微信