マイクロソフト社との投げ銭API開発のための協業に関連するリソースを管理するリポジトリ。
- Microsoft Azureのアカウント
- Azure CLI
- Azure CLIにログイン
az login
<subscriptionId>をAzureのサブスクリプションIDに書き換えてスクリプトを実行。(〜30分程度)
サブスクリプションIDはAzureにログインしていればサブスクリプションの画面で確認できる。
./deploy.sh -i <subscriptionId> -g alispoa -n alispoadeploy -l centralus- パラメータは以下のように対応しているので適宜書き換える
- resourceGroupName:
alispoa - deploymentName:
alispoadeploy - resourceGroupLocation:
centralus
- resourceGroupName:
環境を利用するために必要な情報を取得する。
- ※ jqのインストールが必要
az group deployment show -g alispoa -n alispoadeploy | jq '.properties.outputs'上記スクリプト実行で以下のような情報が取得できる。
- admin_site: 管理用ページのURL
- ethereum_rpc_endpoint: EthereumのRPCリクエストのエンドポイント
- oms_portal_url: Azure Monitor ポータルのURL。ネットワーク統計情報&各ノードの情報を監視。
- ssh_to_first_vl_node_region1: parityノードの一つに接続するためのSSHコマンド
取得した情報の例:
{
"admin_site": {
"type": "String",
"value": "http://ethfoobar-dns-reg1.japaneast.cloudapp.azure.com"
},
"consortium_data_URL": {
"type": "String",
"value": "http://ethfoobar-dns-reg1.japaneast.cloudapp.azure.com"
},
"consortium_member_gateway_id_region1": {
"type": "String",
"value": "NA"
},
"ethereum_rpc_endpoint": {
"type": "String",
"value": "http://ethfoobar-dns-reg1.japaneast.cloudapp.azure.com:8540"
},
"oms_portal_url": {
"type": "String",
"value": "https://eus.mms.microsoft.com/Account?tenant=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx&resource=...ethfoobar-oms"
},
"pair_Gateway_Azure_CLI_Script": {
"type": "String",
"value": "NA"
},
"pair_Gateway_PS_Module": {
"type": "String",
"value": "NA"
},
"regionOneVnet": {
"type": "String",
"value": "ethfoobar-vnet-reg1"
},
"ssh_to_first_vl_node_region1": {
"type": "String",
"value": "ssh -p 4000 parityadmin@ethfoobar-dns-reg1.japaneast.cloudapp.azure.com"
}
}上記の手順で取得した ssh_to_first_vl_node_region1 のコマンドを利用する。
パスワードは ./parameters.json に定義されている。デフォルト:A32a5d04fe39dd5b6cfcdcf7629f61953
コマンドの例:
ssh -p 4000 parityadmin@ethfoobar-dns-reg1.japaneast.cloudapp.azure.com上記の手順で取得した ethereum_rpc_endpoint の値を利用してプライベートチェーンへRPCリクエストを行う。
最新のブロックナンバーを取得するCURLリクエストコマンドの例:
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' -H "Content-Type: application/json" http://ethfoobar-dns-reg1.japaneast.cloudapp.azure.com:8540成功時のレスポンスの例:
{"jsonrpc":"2.0","result":"0x9fb37","id":1}ここでは、例として標準的なERC20トークン MSAToken のコントラクトをプライベートチェーンへデプロイする。
- トークンコントラクト:
contract/MSAToken.sol
必要なリソースのインストール:
ndenv install
yarn
yarn truffle install環境情報の ethereum_rpc_endpoint のURLとポートを、ETHEREUM_RPC_ENDPOINTとして環境変数へ定義する:
# ethereum_rpc_endpointの表示
yarn rpc
# 環境変数の定義
cp -p .envrc.sample .envrc
direnv edittruffleを利用しコントラクトをデプロイ:
yarn truffle deploy --network poaデプロイ時に表示された MSAToken のアドレスを環境変数 POA_CHAIN_MSA_TOKEN_ADDRESS へ反映しておく。
direnv editデプロイが完了していればweb3.jsからERC20トークンの操作が可能。
デフォルトで100MSAが格納される POA_CHAIN_ADMIN_PUBLIC_KEY の残高を確認する例:
yarn babel-node ./misc/balanceOf.jsERC20トークンを、MetaMaskを用いて投げ銭を行うまでの手順を記載する。
- 使用するブラウザにMetaMaskをインストール
yarn dev.envrc にて定義した MNEMONIC を用いて検証用アカウントをインポート。
MetaMaskのネットワークをAzure上に構築したチェーンへ向ける。
RPCエンドポイントの情報が必要。
yarn rpcここまでの設定で、ブラウザのUIに トークン残高: 100 MSA と表示される。
- 投げ銭を行うトークンの量を入力
- トークンを贈る を押下
- MetaMaskの確認画面がポップアップするので 確認 を押下
- ※贈り先は検証なのでスクリプト内にリテラルとして保持されている。
- config.toml: parityの設定ファイル
/home/parityadmin/config/node.toml
- parity
/var/log/parity/parity.log
az group delete -n alispoaweb3.jsを利用したスクリプトを実行。
最新のブロックナンバーを取得する例:
yarn babel-node ./misc/getBlockNumber.js成功時のレスポンスの例:
654130- 検証で利用しているEOAやニーモニックフレーズは本番環境で利用しないでください
