美文网首页666区块链程序员
84/666 EOS 执行智能合约

84/666 EOS 执行智能合约

作者: 红叔笔记 | 来源:发表于2018-11-25 12:25 被阅读77次

    这是666计划的第84篇笔记

    参考这篇 Learn about Keys, Wallets and Accounts with cleos

    创建钱包

    alias cleos

    alias cleos='docker exec -it keosd /opt/eosio/bin/cleos --url http://172.18.0.2:8888 --wallet-url http://127.0.0.1:9876'
    
    

    cleos wallet create -n alex-wallet --to-console

    Creating wallet: alex-wallet
    Save password to use in the future to unlock this wallet.
    Without password imported keys will not be retrievable.
    "PW5JqZNx7rcfDncbvFZG5MK7Q9J5aQDPEbRJ4KnqarES2eAT2LyHt"
    

    创建密钥对

    ➜  ~ cleos create key --to-console
    Private key: 5JywyoJd2Rcp7iK25Eo8tfW948Z2MALLZVHrs8y3eqpLuQN6c61
    Public key: EOS5a6853arFA45voyGqBdzB4fmcLh1GXuknN7tpdkLgZrVbc8TYC
    ➜  ~
    ➜  ~ cleos create key --to-console
    Private key: 5K2pVCChktdFBHLsXPd8saxWsLp4acybi2WfPjv8NErXEG8rtNE
    Public key: EOS7z641AZEiThbBMGUDx1uH3457npKyW5s7VWAXNf48YW6eaw7sb
    ➜  ~
    
    

    将密钥导入wallet:

    cleos wallet import -n alex-wallet --private-key
    private key: imported private key for: EOS5a6853arFA45voyGqBdzB4fmcLh1GXuknN7tpdkLgZrVbc8TYC
    
    cleos wallet import -n alex-wallet --private-key
    private key: imported private key for: EOS7z641AZEiThbBMGUDx1uH3457npKyW5s7VWAXNf48YW6eaw7sb
    
    
    

    创建账户

    先查看下钱包里的公钥

    ➜  ~ cleos wallet keys
    [
      "EOS5a6853arFA45voyGqBdzB4fmcLh1GXuknN7tpdkLgZrVbc8TYC",
      "EOS7z641AZEiThbBMGUDx1uH3457npKyW5s7VWAXNf48YW6eaw7sb"
    ]
    
    

    创建账户:

    cleos create account eosio alex EOS5a6853arFA45voyGqBdzB4fmcLh1GXuknN7tpdkLgZrVbc8TYC EOS7z641AZEiThbBMGUDx1uH3457npKyW5s7VWAXNf48YW6eaw7sb
    
    

    报错:
    Error 3090003: Provided keys, permissions, and delays do not satisfy declared authorizations
    Ensure that you have the related private keys inside your wallet and your wallet is unlocked.

    解决:

    cleos wallet import -n alex-wallet --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    
    private key: imported private key for: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
    

    重新创建账户:

    cleos create account eosio alex EOS5a6853arFA45voyGqBdzB4fmcLh1GXuknN7tpdkLgZrVbc8TYC EOS7z641AZEiThbBMGUDx1uH3457npKyW5s7VWAXNf48YW6eaw7sb
    
    executed transaction: 264389c10aa973ce8b2935c1428de86f96f355f8eef3bd591ce36bb1043d0b35  200 bytes  555 us
    #         eosio <= eosio::newaccount            {"creator":"eosio","name":"alex","owner":{"threshold":1,"keys":[{"key":"EOS5a6853arFA45voyGqBdzB4fmc...
    warning: transaction executed locally, but may not be confirmed by the network yet         ]
    

    通过公钥查询账户信息:

    cleos get accounts EOS5a6853arFA45voyGqBdzB4fmcLh1GXuknN7tpdkLgZrVbc8TYC
    
    {
      "account_names": [
        "alex"
      ]
    }
    
    

    根据账户名查询账户:

    cleos get account alex
    created: 2018-11-25T03:27:08.500
    permissions:
         owner     1:    1 EOS5a6853arFA45voyGqBdzB4fmcLh1GXuknN7tpdkLgZrVbc8TYC
            active     1:    1 EOS7z641AZEiThbBMGUDx1uH3457npKyW5s7VWAXNf48YW6eaw7sb
    memory:
         quota:       unlimited  used:      2.66 KiB
    
    net bandwidth:
         used:               unlimited
         available:          unlimited
         limit:              unlimited
    
    cpu bandwidth:
         used:               unlimited
         available:          unlimited
         limit:              unlimited
    
    
    ➜  ~ cleos get account eosio
    created: 2018-06-01T12:00:00.000
    privileged: true
    permissions:
         owner     1:    1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
            active     1:    1 EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
    memory:
         quota:       unlimited  used:      2.66 KiB
    
    net bandwidth:
         used:               unlimited
         available:          unlimited
         limit:              unlimited
    
    cpu bandwidth:
         used:               unlimited
         available:          unlimited
         limit:              unlimited
    
    

    创建智能合约

    eosiocpp -n hello
    eosiocpp -g /hello/hello.abi /hello/hello.cpp 
    eosiocpp -o /hello/hello.wast /hello/hello.cpp 
    
    
    

    部署智能合约:

    cleos set contract alex /hello hello.wast hello.abi -p alex@active
    
    Reading WASM from /hello/hello.wast...
    WARNING: /hello/hello.wast doesn't look like a binary WASM file. Is it something else, like WAST? Trying anyways...
    Publishing contract...
    Error 3070003: Serialization Error Processing WASM
    
    

    报错, 将wasm换成wast

    ➜  ~ cleos set contract alex /hello hello.wasm hello.abi -p alex@active
    Reading WASM from /hello/hello.wasm...
    Publishing contract...
    executed transaction: 294cb95f3fa53d236449400888401d56e1bef971c988f5de831fc52c7bcdadd0  1792 bytes  32431 us
    #         eosio <= eosio::setcode               {"account":"alex","vmtype":0,"vmversion":0,"code":"0061736d01000000013b0c60027f7e006000017e60027e7e0...
    #         eosio <= eosio::setabi                {"account":"alex","abi":"0e656f73696f3a3a6162692f312e30000102686900010475736572046e616d6501000000000...
    warning: transaction executed locally, but may not be confirmed by the network yet
    
    

    调用合约

    cleos push action alex hi '["jack"]' -p alex@active
    executed transaction: 3406ae3e0ac2c15da5257bad415ea16167e690023bcbc1d94ffd3ec530e82886  104 bytes  288 us
    #          alex <= alex::hi                     {"user":"jack"}
    >> Hello, jack
    
    

    相关文章

      网友评论

        本文标题:84/666 EOS 执行智能合约

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