Azure Blockchain Serviceを試してみる2(コントラクトデプロイ編)
まえおき
前回の記事では、Azure Blockchain Serviceを使ってブロックチェーンを構築するところまで行いました。
今回の記事では、構築したブロックチェーンに対して、コントラクト(今回はERC20のトークンコントラクト)のデプロイを行います。
トランザクションノードとの通信
まずは構築したブロックチェーンと通信するところから始めます。
Azure Blockchain Serviceではチェーンとのやりとりは、トランザクションノードが提供するエンドポイントを経由して行います。
メニューから「Settings > Transaction nodes」を開き、トランザクションノードを選択、さらに「Setting > Connection strings」を開くと、エンドポイントが表示されます。
※ 黒塗りの部分がアクセスキーになります。
それでは、ターミナルからJSON RPCのリクエストを送信してみます。
$ curl -X POST -H 'Content-Type:application/json' --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' 'https://member12345.blockchain.azure.com:3200/アクセスキー'
{"jsonrpc":"2.0","id":1,"result":"0xc059"}
正常に結果が返ってきたことが確認出来ます。
トランザクションノードのセキュリティ設定
トランザクションノードに対する接続の許可設定として、IAMによるアクセスコントロール、またはFirewall rulesによるIPアドレス範囲の制限が可能です。
コントラクトのデプロイ
今回デプロイするコントラクトには、オープンソースとして公開されているALISのトークンコントラクトを使います。
デプロイはEthereumの開発ツールのTruffleを使って行います。Azure Blockchain Serviceで使われているQuorumブロックチェーンが、Ethereumのエコシステムをそのまま利用出来るという点は、大きなメリットです。
デプロイの流れは基本的にEthereumにコントラクトをデプロイする時と同様ですので、詳細はここでは割愛します
デプロイにあたり、truffle-config.js
を編集します。
var Web3 = require("web3");
module.exports = {
networks: {
development: {
provider: new Web3.providers.HttpProvider("https://member12345.blockchain.azure.com:3200/アクセスキー"),
network_id: "*",
gas: 5000000,
gasPrice: 0,
}
}
};
メンバーアカウントのアンロック
コントラクトをデプロイする前に、メンバーアカウントをアンロックする必要があります。アンロックは以下のJSON RPCリクエストで行えます。
$ curl -X POST -H "Content-Type:application/json" --data '{"jsonrpc":"2.0","method":"personal_unlockAccount","params":["メンバーアカウントのアドレス", "メンバーアカウントに設定したパスワード", アンロックする秒数],"id":1}' "https://member12345.blockchain.azure.com:3200/アクセスキー"
{"jsonrpc":"2.0","id":1,"result":true}
デプロイ
$ truffle deploy
Using network 'development'.
Running migration: 1_initial_migration.js
Deploying Migrations...
... 0x86fd31820ca0e43c79a72ef6b3d2a686461b42142e611de7e1b060084152de64
Migrations: 0x132364b78fb0a7108fd2868dd362a67a9e6a48a8
Saving successful migration to network...
... 0xdcd24af063d07a4be577ddd69cfb563980d5fae8e1afec7d0ed35fa15860860d
Saving artifacts...
Running migration: 2_deploy_contracts.js
Deploying AlisToken...
... 0xcaf88f603e8ac96188484e33b3f1f8d3fc5e47d05cf74b3d455f0b0c137777ca
AlisToken: 0xdbf7355b30598f24107c05076eed0aa69f028048
Saving successful migration to network...
... 0x2e77575f898c78938d32a3b57bf5b8d23226a1ad184c0313276e6925cad41055
Saving artifacts...
✨ Done in 25.06s.
(使っているTruffleのバージョンが古いですね)
かなり割愛してしまいましたが、以上でコントラクトのデプロイが完了です。
コントラクトのメソッド呼出し
デプロイしたコントラクトに対して、web3.jsを使ってやりとりを行います。試しに、トークンのシンボルを取得してみます。
const Web3 = require("web3");
const provider = new Web3.providers.HttpProvider("https://member12345.blockchain.azure.com:3200/アクセスキー");
const web3 = new Web3(provider);
const jsonInterface = [{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [{
"name": "",
"type": "string"
}],
"payable": false,
"stateMutability": "view",
"type": "function"
}];
const tokenContract = new web3.eth.Contract(jsonInterface, "0xdbf7355b30598f24107c05076eed0aa69f028048");
tokenContract.methods.symbol().call().then(console.log);
実行
$ node get_symbol.js
ALIS
以上、簡単にですがweb3.js経由でコントラクトとやりとり出来ることが確認出来ました。
おわりに
Azure Blockchain Serviceで構築したブロックチェーンに対して、Truffleを使ってコントラクトをデプロイし、web3.js経由でコントラクトとやりとりを行いました。
QuorumブロックチェーンがEthereumベースで、Ethereumのエコシステムをそのまま利用出来るため、Ethereumでの開発経験あれば学習コストはほぼ掛からないかと思います。
さて、次回の記事ではAzure Blockchain Serviceのメトリクス周りや、ブロックチェーンのエクスプローラーについて説明していきます
Author And Source
この問題について(Azure Blockchain Serviceを試してみる2(コントラクトデプロイ編)), 我々は、より多くの情報をここで見つけました https://qiita.com/hayago/items/ba4ca93bcd5d99735b9e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .