美文网首页
Ether币的基本单位

Ether币的基本单位

作者: juniway | 来源:发表于2017-08-27 11:05 被阅读1494次

    Ether币的基本单位

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

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

    简单地说就是就是 1 eth = 1000 * 1000 * 1000* 1000 * 1000* 1000 Wei = 1000 ^ 6 Wei (这就是在使用 geth 命令行转账时,我们转移 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"
    >
    

    一个以太币各单位之间的转换工具

    http://ether.fund/tool/converter
    使用很简单,输入各种单位,就可以自动得到各种转换结果,例如输入0.01ether 可以得到多少Wei, 多少finney等。

    开始挖矿 & 停止挖矿

    > miner.start()   //开始挖矿
    true
    > miner.stop()   //停止挖矿
    true
    >
    

    部署合约

    注意合约部署的时候,以太坊的私有链必须处在挖矿进行的状态,否则合约部署将不会生效

    在命令行中,首先 unlock(eth.accounts[0]),因为部署合约需要消耗gas,也就是以太币。而之前说过由于保护机制,不解锁账户,是不会允许任何以太币流出的。

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

    然后我们复制黏贴下面代码到 geth 命令行中。

    var a_demotypesContract = web3.eth.contract([{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"f","outputs":[{"name":"b","type":"uint256"}],"payable":false,"type":"function"}]);
    var a_demotypes = a_demotypesContract.new(
       {
         from: web3.eth.accounts[0], 
         data: '0x6060604052341561000c57fe5b5b60ab8061001b6000396000f30060606040526000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063b3de648b14603a575bfe5b3415604157fe5b60556004808035906020019091905050606b565b6040518082815260200191505060405180910390f35b600060006008830290508091505b509190505600a165627a7a7230582010decdc0b0a43b565814fe904eae2544665457d6353c7d906fc2c43c81c867e40029', 
         gas: '4700000'
       }, function (e, contract){
        console.log(e, contract);
        if (typeof contract.address !== 'undefined') {
             console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
        }
     })
    

    结果如下图:


    等待片刻,会发现合约被部署到挖矿挖出来的区块中了, 按下回车代表成功

    此时输入合约部署的实例 a_demotypes, 可以看到a_demotypes的详情。

    > a_demotypes
    {
      abi: [{
          constant: false,
          inputs: [{...}],
          name: "f",
          outputs: [{...}],
          payable: false,
          type: "function"
      }],
      address: "0x54ed7a5f5a63ddada3bfe83b3e632adabaa5fc2f",
      transactionHash: "0x69cde62bcd6458e14f40497f4840f422911d63f5dea2b3a9833e6810db64a1c9",
      allEvents: function(),
      f: function()
    }
    >
    

    也可以调用 a_demotypes 的方法 f , 输入任何数字,会返回 8*n,如输入100,返回800,输入125,返回1000

    > a_demotypes.f.call(100)
    800
    > a_demotypes.f.call(125)
    1000
    

    参考:
    http://www.tk4479.net/ethchinese/article/details/62220921

    相关文章

      网友评论

          本文标题:Ether币的基本单位

          本文链接:https://www.haomeiwen.com/subject/pcybdxtx.html