EOS契約開発1-開発環境構築

5771 ワード

前言


EOSの現在の学習資料は公式ポータルを参考にすることができる:https://developers.eos.io/,環境構築や開発で他の問題に遭遇したのはgithub上のIssuesに行って答えを探すことである.

開発環境構築


次の例は、MacOS 10.13.4に基づくテストです.

1.コードのダウンロード

git clone https://github.com/EOSIO/eos --recursive

2.構築スクリプトの実行

cd eos
./eosio_build.sh

スクリプト実行完了後にEOSIOをインストールする
./eosio_install.sh

インストールに成功した後、コンソールのプロンプトが表示され、注意してください.

3.インストール契約開発環境CDT(Contract Development Toolkit)

git clone --recursive https://github.com/eosio/eosio.cdt 
cd eosio.cdt
./build.sh
sudo ./install.sh

1-3ステップでsslエラーが発生した場合、ネットワークを交換したり、ネイティブエージェントかどうかを確認したりするなどの問題があります.当社のネットワークはエージェントとIPv 6をサポートしているため、バージョンを更新する際にSSLの問題がよく発生します.

4.ローカルノードの起動

nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

5.テスト現在のノード情報の取得

$ cleos get info
{
  "server_version": "0f6695cb",
  "chain_id": "cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f",
  "head_block_num": 298255,
  "last_irreversible_block_num": 298254,
  "last_irreversible_block_id": "00048d0ef88c2b6eaae5a978712e8caea6295f1d8b3779d7c2b53d2303b13e87",
  "head_block_id": "00048d0f452a8d6672ec56328d1f7cf1d318860d9609c1d66fefc7a07a836b57",
  "head_block_time": "2018-10-18T06:40:22.500",
  "head_block_producer": "eosio",
  "virtual_block_cpu_limit": 200000000,
  "virtual_block_net_limit": 1048576000,
  "block_cpu_limit": 199900,
  "block_net_limit": 1048576,
  "server_version_string": "v1.3.0"
}

6.ウォレットの作成


財布は秘密鍵が格納されている場所であり、ブロックチェーン上の関連操作を許可します.
デフォルトのウォレットの作成
$ cleos wallet create --to-console
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5JHwXVK4CLQdKBFGWvGXD8Vhz......"

指定した名前のウォレットを作成
$ cleos wallet create -n mywallet --to-console

ウォレットの作成が完了したらパスワードを保存し、後でウォレットをロック解除するには
財布のロック解除とロック
$ cleos wallet unlock
password:

$ cleos wallet lock
Locked: default

プライベート・チェーンの秘密鍵のインポート
上記で起動するプライベートチェーンはconfigを使用する.ini(位置~/Library/APplication Support/eosio/nodeos/config)のkeyなので、このkeyの秘密鍵を財布にインポートする必要があります.
便宜上、defaul財布を直接使います.秘密鍵のインポート:
$ cleos wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
imported private key for: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

7.BIOS Contractの導入


今、eosioアカウントの秘密鍵の財布を持っています.eosioを配置することができます.bios契約.開発の過程でデフォルトのeosioを直接言うことができます.bios、この契約は他のアカウントのリソース割り当てとAPI呼び出しを制御することができます.パブリックチェーンでは、契約の帯域幅、メモリ、CPUを管理するために使用される.
eosio.Bios契約は${EOSIO_SOURCE}/build/contracts/eosioにある.bios.
デフォルトのアカウントeosioを使用して契約を導入します.
$ cleos set contract eosio build/contracts/eosio.bios -p eosio@active
Reading WAST...
Assembling WASM...
Publishing contract...
executed transaction: 414cf0dc7740d22474992779b2416b0eabdbc91522c16521307dd682051af083  4068 bytes  10000 cycles
#         eosio <= eosio::setcode               {"account":"eosio","vmtype":0,"vmversion":0,"code":"0061736d0100000001ab011960037f7e7f0060057f7e7e7e...
#         eosio <= eosio::setabi                {"account":"eosio","abi":{"types":[],"structs":[{"name":"set_account_limits","base":"","fields":[{"n...

導入が完了すると、eosio::setcodeとeosio::setabiの2つの操作が表示されます.
ここでcodeは契約がどのように実行されるかを示し、abiはパラメータがバイナリとjsonの間でどのように変換されるかを記述する.
-p eosio@activeeosioアカウントのactive権限が必要であることを示し、eosioアカウントを使用して財布にインポートされた秘密鍵に署名します.

8.アカウントの作成


基本的なシステム契約を導入した後、独自のアカウントを作成し、2つのアカウントuserとtesterを作成できます.
$ cleos create key --to-console
Private key: 5HwsEkmXSuhqKkZVdF7mitHhKohBs96jCRYqMFkmMunU4NdJnW6
Public key: EOS5ZuvbB2XL5hDZteALbL8xhVjU2v5c6ZwB68xxBXJ2mJJWEYB8K

$ cleos wallet import --private-key 5HwsEkmXSuhqKkZVdF7mitHhKohBs96jCRYqMFkmMunU4NdJnW6
imported private key for: EOS5ZuvbB2XL5hDZteALbL8xhVjU2v5c6ZwB68xxBXJ2mJJWEYB8K

$ cleos create account eosio user EOS5ZuvbB2XL5hDZteALbL8xhVjU2v5c6ZwB68xxBXJ2mJJWEYB8K EOS5ZuvbB2XL5hDZteALbL8xhVjU2v5c6ZwB68xxBXJ2mJJWEYB8K
executed transaction: eba1e88928d468dc3edc4ada71155c05fdd5f054a9482ca4eaf376093b4310 200 bytes  216 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"user","owner":{"threshold":1,"keys":[{"key":"EOS5ZuvbB2XL5hDZteALbL8x...


$ cleos create account eosio tester EOS5ZuvbB2XL5hDZteALbL8xhVjU2v5c6ZwB68xxBXJ2mJJWEYB8K EOS5ZuvbB2XL5hDZteALbL8xhVjU2v5c6ZwB68xxBXJ2mJJWEYB8K
executed transaction: 30fc9b69922885ec1b7f4c2e7dd55ab1461603f4a09d4a51e7a11a8c1bae3dfa  200 bytes  216 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"use22ssr","owner":{"threshold":1,"keys":[{"key":"EOS5ZuvbB2XL5hDZteALbL8x...

作成したユーザーを問い合わせる
$ cleos get accounts EOS5ZuvbB2XL5hDZteALbL8xhVjU2v5c6ZwB68xxBXJ2mJJWEYB8K
{
  "account_names": [
    "tester",
    "user"
  ]
}

上記の手順を経て、ローカルのプライベートチェーンの基本的な構築が完了しました.
プラットフォームはすでにあって、私达が必要とするのはこのプラットフォームに基づいていくつかの中心化の応用を开発して、その中の契约の开発はDAPPの核心で、次に私达はいっしょにEOSの上の契约の开発を学びます.