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の上の契约の开発を学びます.
次の例は、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の上の契约の开発を学びます.