以太坊系统帐户

链客,专为开发者而生,有问必答!web

此文章来自区块链技术社区,未经容许拒绝转载。svg

在这里插入图片描述

在以太坊系统中,状态是由被称为“帐户”(每一个帐户由一个20字节的地址)的对象和在两个帐户之间转移价值和信息的状态转换构成的。以太坊的帐户包含四个部分:随机数,用于肯定每笔交易只能被处理一次的计数器帐户目前的以太币余额帐户的合约代码,若是有的话帐户的存储(默认为空)简单地说,每个以太坊帐户都有一对公钥和私钥组成。公钥咱们能够理解为就是帐户地址,任何其余帐户均可以访问该地址私钥能够理解为一段加密过的密码,这一对公钥和私钥共同组成一个惟一标示的以太坊帐户。例如在上节咱们创建的第一个以太坊帐户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个以太币3d

acc0= eth.accounts[0]“0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f”xml

acc1= 1eth.accounts[1]“0xb8b12a801b610176935a15321f77b48dd5c0c448”对象

amount = web3.toWei(0.01)“10000000000000000”blog

这个时候咱们可使用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”