Astar WASM Meetup

Astar Networkが世界でも日本でも頑張っているし、そもそもAstarのイベントは結構すぐに埋まってしまうので、内容見ずに参加申し込みをしてみたら、ガッツリテクニカルなイベントだった。

結果的には、web3界隈の若者エンジニアに刺激を受けながら、web3とどう向き合っていくか、Astar Netowrkとどう絡んでいくかを考えられたので非常に有意義だった。

WASM Meetup (2/10-2/11, 2 Days)

イベントの概要Astar NetworkメインネットでのWASMの本格サポートが目前に迫っており、今年はWASMスマートコントラクトの元年になりそうです。 そこで日本コミュニティに… powered by Peatix : More than a ticket.

オンライン環境構築サポート会

Meetupの前にオンライン環境構築サポート会なるものがあって、せっかくなので聞くだけでもいいし、出てみようと思ったら、運営側以外でまさかの1名だったのはびっくりした・・・(その後2名来たけど、、、)

とりあえず、言われるがままに、substrateや”ink!”やswankyをインストールしていったのだけど、マシンのローカルが汚れるのが嫌いな自分は、Cloud9で環境構築を進めたのだが、Node v18が入らないことがわかり、最終的にはEC2(Ubuntu)を立てて、自分で環境構築をすることになった。

別に隠していたわけではないが、このイベントに参加するために、

復習ということで、

を記載してみたのです。

あ、よく見たら、swankyについては記載していなかった・・・

軽くswankyについて書いておこう。。。

Swanky Suite | Astar Docs

Swanky Suite aims to be a “all-in-one” tool for Wasm smart contract developers. It is based on existing tools like cargo contract CLI and polkadot.js but extending with many additional features such as generating a new smart contract environment based on example projects and providing an instant finality node (Swanky node) which will shorten the contract development lifecycle.

Swanky Suite aims to be a “all-in-one” tool for Wasm smart contract developers. It is based on existing tools like cargo contract CLI and polkadot.js but extending with many additional features such as generating a new smart contract environment based on example projects and providing an instant finality node (Swanky node) which will shorten the contract development lifecycle. Swanky Suite is the tool that enables all existing (and future) Web3 developers to have an equal experience compared to EVM dev tooling.

Swanky SuiteはWasmスマートコントラクト開発者のためのオールインワンツール。

cargo contractpolkadot.jsのようなツールをベースとしていて、多くの機能で拡張しているとのこと。

Day 1

今年いちばんの寒さ???というか、都内でも雪が降る中、

  • Astarについて
  • WASMについて

を聞いて帰ってきました。

正直、Astarは薄っぺらくしか知らなかったし、聞いただけではあんまり深められなかったけど、Astar Japan Labに入れたらいいなとか、dApp StakingでBasic Income的にRewardを受けられるまでになれればいいなとか思った次第。

Day 2

前日とは打って変わって良い天気。

本日はハンズオン。

AstarのdApp開発は、ink! + next.jsがベースっぽい。

SolidityのOpenZeppelinのようなOpenBrushなるものもある。

事前準備もしていたし、当日のコンパイルやらテストやらも問題なくできて、ノードも立ち上げられたんだけど、、、

このサイトとのローカル接続でハマった・・・

そもそも問題が3つあった。

  • ローカルで別のサンプルアプリケーションが動いていて、開発インスタンスの9944ポートにめっちゃアクセスしていた
  • ノードがlocalhostではない場合(今回は開発インタスタンス)、ws://ではなく、wss://で接続してくれと、polkadot.js.org/apps/に怒られていた
  • Braveブラウザだとデフォルトで9944ポートのアウトバウンドを許可してくれていなかった

ローカルで別のサンプルアプリケーションが動いていて、開発インスタンスの9944ポートにめっちゃアクセスしていた

立ち上げたノードへのアクセスログがやたらあるなぁと思っていたら、別ウィンドウ別タブでサンプルアプリケーションが動いていて、デバッグが非常にやりにくくしていた・・・

WebSocketって、別ウィンドウ別タブでも勝手に動いてることを知った・・・止まってくれるものと思っていた。

ノードがlocalhostではない場合(今回は開発インタスタンス)、ws://ではなく、wss://で接続してくれと、polkadot.js.org/apps/に怒られていた

できれば、開発インスタンスのIPのままでやりたかったけど、残念ながらwssにしないといけない・・・NLBかぁと思って、お金も設定に時間もかかりそうだったので、断念。

サポートもあり、結果、ポートフォワーディングでやることに。

ssh -NL 9944:[IP]:9944 [connect_name]

Braveブラウザだとデフォルトで9944ポートのアウトバウンドを許可してくれていなかった

上記までやってできなかったので、、、結果ローカルへのデプロイはあきらめ、Shibuyaテストネットにアップすることにしたんだけど、どうにも諦めきれずににらめっこしていたら、ふと、Braveってセキュリティとかうるさかったようなと思い、Chromeで試したら繋がった・・・

IP指定もいけるかもと思って、やってみたが、それはさすがにwssでやれと言われた・・・

やっぱり、インターネット越しにやる場合はしっかり暗号化しろということなのだろう。

ここでハマっていたため、カスタマイズは全くできなかったが、資料が共有されたのでちょっとそれみながらちょこちょこと修正していこうかなと。

まとめ

環境構築がいちばん腹が立つというのは数十年変わっていないことがわかった。。。

本当にどこに行っても何年やってもそう。

新しい言語、フレームワーク、マシンが出るたびに、環境構築しないとダメで、そこでエラーが発生して無駄な(大事なデバッグになってるんだろうけど・・・)時間が過ぎていく。

この課題を解決することができたら、「開発の神」と崇められる気がしている。

全部Dockerとか用意して提供すればいいんだろうけど、細かなバージョンアップどうするかとか、ソフトウェアのバージョン問題とかライフサイクル問題とか関わってきて難しいなと思っている。

そうそう、そもそもなぜ自分がEC2やCloud9を好んで使っているかというと、2つあって、

1つ目は、

マシンのローカルが汚れるのが嫌だ

というのと、

2つ目は、上記環境構築問題に対する憤りにもあるとおり、

チーム開発となった場合にサクッと環境を渡していきたい

というのがあったことを思い出した。

マシンのローカルが汚れるのが嫌だという割に、クソほどタブを開いていたり、いろんなアプリケーションが立ち上がったいたので、サポートしてくれた若者は「どないやねん!」と思っていたかもしれない・・・

ということで、次のUNCAINプロジェクトはAstarで決まり。