EOS開発入門のHelloWorld

4615 ワード

EOS開発入門のHelloWorld
EOSのスマート契約はC++言語に基づいており、本編ではスマート契約の開発段階に入り、HelloWorldのような契約を書く.あまり話さないで、叩き始めた.
「hello_eos」フォルダを新規作成し、「hello_eos.cpp」ファイルを作成します.フォルダはファイル名と同じです.内容は次のとおりです.
1、知能契約書の作成
#include 
#include 

using namespace eosio;

class hello_eos : public eosio::contract {

  public:
      using contract::contract;

      /// @abi action
      void test(account_name user) {
         print("Hello ,", name{user});
      }
};
EOSIO_ABI(hello_eos, (test))


2、インテリジェント契約のコンパイル
wenzildeiMac:hello_eos wenzil$ pwd
/Users/wenzil/Desktop/study/hello_eos
wenzildeiMac:hello_eos wenzil$ eosiocpp -o hello_eos.wast hello_eos.cpp
-bash: eosiocpp: command not found

インテリジェント契約コンパイルツールeosiocppが見つかりません.穴ですね.
EOSソースの「build」ディレクトリに入り、次のコマンドを実行してeosiocppツールを生成します.
wenzildeiMac:build wenzil$ pwd
/Users/wenzil/Documents/Study/eos/build
wenzildeiMac:build wenzil$ sudo make install
Password:
[  0%] Built target binaryen
[  0%] Built target wasm
##########          ##########
-- Installing: /usr/local/bin/eosio-abigen
-- Installing: /usr/local/bin/eosiocpp

失敗した場合は、再コンパイルすればいいです.コンパイルに成功した後、2つのファイルが複数見つかりました.
wenzildeiMac:hello_eos wenzil$ ls
hello_eos.cpp   hello_eos.wasm  hello_eos.wast

3、abiファイルの生成
wenzildeiMac:hello_eos wenzil$ eosiocpp -g hello_eos.abi hello_eos.cpp 
3376922ms thread-0   abi_generator.hpp:68          ricardian_contracts  ] Warning, no ricardian clauses found for hello_eos

3376922ms thread-0   abi_generator.hpp:75          ricardian_contracts  ] Warning, no ricardian contract found for test

Generated hello_eos.abi ...

もう一度確認すると、abiファイルが1つ増えています.
wenzildeiMac:hello_eos wenzil$ ls
hello_eos.abi   hello_eos.cpp   hello_eos.wasm  hello_eos.wast

4、スマート契約のために新しいアカウントを作成するスマート契約がアカウントに付着しているため、契約のためにアカウントを用意する必要がある.
そこで、まずkeyを作成します
wenzildeiMac:study wenzil$ cleos create key
Private key: 5KcUM9PkRLqRq6KtrGT4ek8dy9mLfPh4cTGR6Pt8fU5tH6Q7y4c
Public key: EOS7caVJ2iDpM7edncLbTGtQqXtTZqyMYxhUP8e1xPzv3mVyL7Gxu

次に、ウォレットにインポート
wenzildeiMac:study wenzil$ cleos wallet import 5KcUM9PkRLqRq6KtrGT4ek8dy9mLfPh4cTGR6Pt8fU5tH6Q7y4c
imported private key for: EOS7caVJ2iDpM7edncLbTGtQqXtTZqyMYxhUP8e1xPzv3mVyL7Gxu

アカウントの作成
wenzildeiMac:study wenzil$ cleos create account eosio hello.eos EOS7caVJ2iDpM7edncLbTGtQqXtTZqyMYxhUP8e1xPzv3mVyL7Gxu EOS7caVJ2iDpM7edncLbTGtQqXtTZqyMYxhUP8e1xPzv3mVyL7Gxu
executed transaction: f9f0317694b27749c7eed78a27babe0ea0d92987213f2f6f561c3237ce8e100b  200 bytes  265 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"hello.eos","owner":{"threshold":1,"keys":[{"key":"EOS7caVJ2iDpM7edncLbTGt...
warning: transaction executed locally, but may not be confirmed by the network yet

5、スマート契約の配置
インテリジェント契約の導入には、契約をアカウントにバインドし、前のディレクトリに戻る必要があります.
wenzildeiMac:hello_eos wenzil$ pwd
/Users/wenzil/Desktop/study/hello_eos
wenzildeiMac:hello_eos wenzil$ cd ..
wenzildeiMac:study wenzil$ pwd
/Users/wenzil/Desktop/study
wenzildeiMac:study wenzil$ cleos set contract hello.eos ./hello_eos -p hello.eos
Reading WAST/WASM from ./hello_eos/hello_eos.wasm...
Using already assembled WASM...
Publishing contract...
executed transaction: 2820024b8513f5c05c82a12444765aaf70f2c9fa717c68993a93a7739f108a8c  1808 bytes  439 us
#         eosio <= eosio::setcode               {"account":"hello.eos","vmtype":0,"vmversion":0,"code":"0061736d01000000013b0c60027f7e006000017e6002...
#         eosio <= eosio::setabi                {"account":"hello.eos","abi":"0e656f73696f3a3a6162692f312e300001047465737400010475736572046e616d6501...
warning: transaction executed locally, but may not be confirmed by the network yet

6、スマート契約の呼び出し
wenzildeiMac:study wenzil$ cleos push action hello.eos test '{"user":"hello.eos"}' -p hello.eos 
executed transaction: 23ba97ec481f4b14e533c164fe044aa4d539b413f29d6d608644f862a5414c7c  104 bytes  242 us
#     hello.eos <= hello.eos::test              {"user":"hello.eos"}
warning: transaction executed locally, but may not be confirmed by the network yet

不思議なことに、testメソッドのprintの内容が印刷されていません.
PS:穴に入ったばかりの白さん、分からないことがたくさんあります.皆さん、教えてください.ありがとうございます.