前回はスマートコントラクト言語「Solidity」の基礎を学び、イーサリアム上に「ブログ投げ銭」機能をリリースしました。
イーサリアム上では手数料(ガス代)が高すぎて、日常的に使うシステムを配置するのには向いていません。そこで、今回はイーサリアム互換のPolygonネットワーク上にコントラクトを反映し動作確認します。
Polygonとは
Polygonはイーサリアムのセカンドレイヤーソリューションの1つです。
イーサリアムは処理速度が遅く、NFTの流行などにより手数料が高騰しています。これら問題を解決するためにイーサリアムの技術をベースに開発されたのがPolygonネットワークです。イーサリアムと互換性があり「Solidity」言語のコントラクトをPolygon上でも可能です。
Polygon内で使われる独自トークンはMATIC。現在の仮想通貨の時価総額ランキングでは13位となっています。
Polygonの開発環境
Polygonにもイーサリアム同様テストネットワーク(Mumbai)が用意されています。まずはテストネットワークにコントラクトをリリースするために必要な事前準備を行います。
1.MetaMaskにMumbaiネットワークを追加
下記URLを参考に仮想通貨ウォレット「MetaMask」にMumbaiを追加
Add Polygon Network | Polygon Technology | Documentation
2.Mumbaiネットワークで使用するMATICを取得
上記サイトで自分のウォレットアドレスを入力してSubmitすると0.5MATICを受け取れます。
最初は送金に失敗しましたが、時間をおいて再度試すとOKでした。
3.開発者用ドキュメント
▼公式の開発用ドキュメント
Application development on Polygon | Polygon Technology | Documentation
▼Mumbaiネットワークのウォレット
Polygon Bridgeでイーサリアムのテストネットワーク(Goerli)に接続し、トークンの送金・引出が可能です。
Polygonにコントラクトをデプロイ
前回作成した「ソーシャル投げ銭」コントラクトをPolygonのテストネットワークにデプロイします。※Remix IDEを使用し、ソースコードも前回作成したsolファイルをそのまま利用
MetaMaskでMumbaiネットワークに接続し、remix上で「Injected Web3」を選択しデプロイします。
Polygonネットワークの手数料(ガス代)はMATICトークンで支払います。Mumbaiへのデプロイのガス代は0.00206MATIC(≒0.515円)でした。
※現在のメインネットの価格:1MATIC=250円で計算
イーサリアムのテストネットワークではデプロイ処理に日本円換算で1,000円を超えるガス代がかかっていたので、Polygonの方が圧倒的に安いことが分かります。
クライアントの実装
クライアント側javascriptは1か所だけ修正しました。
//ユーザのアドレスを取得(イーサリアム)
ethereum.request({ method: "eth_requestAccounts" })
.then((accounts) => {
const userAccount = accounts[0];
//ユーザのアドレスを取得(Polygon)
web3.eth.getAccounts()
.then((accounts) => {
const userAccount = accounts[0];
後は変更不要でした。
コントラクトのpayable関数を呼び出す箇所も変更せずそのまま利用可能です。(toWei関数の引数も"ether"のままで、MATICが送金されます)
const amt = document.querySelector("#amount").value;
contract.methods.tip().send({ from: userAccount, value: web3.utils.toWei(amt, "ether") })
▼amt=0.00035の場合 0.00035MATICを送金
送金処理自体はイーサリアムテストネットワークより遅く、平均で15秒くらいかかりました。
各処理の手数料(ガス代)
今回のコントラクト実行時の手数料(ガス代)は下記の通りです。
- デプロイ:0.00206MATIC (=0.515円)
- getSecretURI():0.000231MATIC (=0.058円)
- tip():0.000109MATIC (=0.027円)
- withdraw():0.00007611MATIC (=0.019円)
コントラクトに対するトランザクションの履歴は「polygonscan」で確認可能です。
まとめ
Polygonのテストネットワークにスマートコントラクトを作成してみました。イーサリアムと比べて圧倒的に手数料が安く、ちょっとした社内システム等はPolygonの方が向いていそうです。処理速度についてはイーサリアムテストネットワークと比べて遅くなっているケースもありました。(テストネットでの比較結果)
また、中国から接続しているせいかPolygonのテストネットワークはアクセスが不安定です。MetaMaskでログインや送金すると頻繁に失敗します。
最近、日本人のインフルエンサーがこのPolygon上でERC20トークンを作成・配布しDAO(分散型自律組織)を始めたようです。今後も同様の取り組みが広がっていくことが考えられます。