在以太坊系统中,状态是由被称为“账户”的对象和在两个账户之间转移价值和信息的状态转换构成的。以太坊的账户包含四个部分:随机数,用于确定每笔交易只能被处理一次的计数器账户目前的以太币余额账户的合约代码,如果有的话账户的存储简单地说,每一个以太坊账户都有一对公钥和私钥组成。公钥我们可以理解为就是账户地址,任何其他账户都可以访问该地址私钥可以理解为一段加密过的密码,这一对公钥和私钥共同组成一个唯一标示的以太坊账户。例如在上节我们建立的第一个以太坊账户eth.accounts中,地址0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f就是公钥,
而对密码加密而成的,就是私钥。
增加账户
我们可以输入命令personal.newAccount(“123”)来新建一个账户,
当以太坊的私链在挖矿时候,所挖到的以太币都会存入第一个以太坊账户中,即eth.accounts中,而eth.accounts默认是不会有以太币的。这个时候我们可以用下面的命令来查看eth.accounts中的以太币余额。
eth.getBalance("0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f")
如何在两个账户之间进行以太币转换前面说过每个账户的公钥是一切以太坊账户操作的核心,但地址字符串太长,我们用acc0/acc1分别代表accounts和,另外设置要转移0.01个以太币
>acc0=eth.accounts"0xbcf5b841303bc08026ce2d3b8f83498ffe42c12f"
>acc1=eth.accounts"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)
Unlockaccount0xbcf5b841303bc08026ce2d3b8f83498ffe42c12fPassphrase: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(1000Wei)mwei(1000KWei)gwei(1000mwei)szabo(1000gwei)finney(1000szabo)ether(1000finney)
简单地说就是就是1以太币=1000000000000000000Wei如何进行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"
>
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。