Cover photo

Flow の Permissionless Deployment について

2022 年の夏、Flow ブロックチェーンのメインネットで、スマートコントラクトのパーミションレス・デプロイ(Permissionless Deployment)が可能になります。

パーミションレス・デプロイとは?

現在のところ、Flow でメインネットにスマートコントラクトをデプロイするためには Flow チームからの許可が必要です(詳細)。

これは、Flow で使われる Cadence 言語の設計が、これまでのブロックチェーンのプログラミング言語とは大きく異なるため、セキュリティ的に問題ないことを時間をかけて確認する必要があったためです。

2022 年の夏、この制限がついに外れる予定です。これにより、Flow チームからの許可を得ることなく、誰でもコントラクトをデプロイできるようになります。

パーミションレス・デプロイ達成のためのマイルストーンと日程については、こちらの特設ページで状況を確認できます。具体的な日時は、2022 年 6 月中を目処に完了する監査結果と、バグバウンティの状況を考慮して決定されると考えられます。

これが重要な理由

真にパブリックなブロックチェーンになるとともに、Flow のエコシステムのさらなる発展が期待できます。

これまでは Flow チームからのレビューが必要だったため、どちらかというと大衆向けのメジャーなコンテンツを扱うプロジェクトのリリースが促進されていました。レビューには、ある程度しっかりとしたロードマップや運営体制も求められました。そのためこれまでは、発行数が少ないニッチな NFT や、実験的なコントラクトは、どうしても表に出てきづらい状況にあったと思います。また、アーティストが自分の独自コントラクトをデプロイすることも難しかったと思います。しかし今後は、より多様で、自由なプロジェクトが増えていくことが期待できます。

パーミションレス・デプロイに関する Q&A

先日(2022年6月12日)、Flow 開発コミュニティの参加メンバー何名かで集まって、パーミションレス・デプロイに関する AMA(質問会)を開催しました。以下、いくつかの質問と回答を記載します。

Q: パーミッションレス・デプロイになるということは、結局何が変わるの?

A: ユーザーにとっては、特にすぐに何かが変わるということはないが、良くも悪くもより多様なコンテンツが増える可能性が高い。開発者にとっては、Flow チームに連絡を取ることなくコントラクトをデプロイできるようになるので、より実験的なことや個人プロジェクトを作りやすくなる。

Q: scam 詐欺にあわないようにするためにはどうしたらいい?

A: これまでは Flow チームからのある意味で検閲フィルターがかかったプロジェクトだけがリリースされていたが、これからは詐欺的なプロジェクトも出てくる可能性がある。一般的な話ではあるが、変なプロジェクトじゃないか、自身できちんと調べたほうがよい。Flowverse で扱われているプロジェクトかどうかという点は、判断基準のひとつにはなるかもしれない(※あくまで判断材料のひとつ)。ただし、Ethereum など多くのブロックチェーンと違い、スマートコントラクトやトランザクションのコードが人間に読める形式であるため、怪しいコードかどうかは判別しやすい。

Q: トランザクションの署名を求められて何も疑問に思わず approve していたが、今後は注意が必要?

A: 注意は常に必要。Cadence を学ぶことがベストではある。ちなみに、Cadence は非常に静的解析がしやすい言語であるため、Blocto ウォレットや Litico ウォレットなど、ウォレット側でのセキュリティ的なチェック機能の追加が期待される。

Q: よくあるメタマスクの被害みたいに、これからは Flow でも revoke をする必要がありますか?また revoke はどこでできますか?

A: ERC20 や ERC721 トークンと、Flow の FT・NFT は仕組みが違うが、とはいえ、第 3 者に自分のトークンを移動できる権限を渡す機能は Flow にもある。現状は、Ethereum などのように、approve しているアドレス一覧を調べたり、revoke したりするサイトは Flow にはないが(このあたりはまだ標準化もされていない)、同等のものが今後でてくる可能性はある。

Q: コントラクト名って同じ名前でもデプロイできるの?

A: できる。コントラクトは、アドレス(デプロイする Flow アカウントのアドレス)とコントラクト名で一意に識別されるため、デプロイするアカウントが異なれば別物という扱いになる。

Q: Dapps によって接続できるウォレットが異なるのはなぜか。各ウォレット(Dapper, Blocto, Lilico)と個別に契約を交わして接続しているのか?

A: 現状、Dapper ウォレットと接続するためには、個別に Flow チームと調整する必要がある(ステーブルコインを扱うため、国によって制限があったりする)。Blocto と Lilico に関しては、FCL Discovery という仕組みを使うと、Dapps 側は簡単にウォレット選択画面を表示でき、ユーザーが何のウォレットを使っているかも特に意識しなくてよくなる。

Q: Flow では spam 的に変な NFT が送りつけられることは起こらない認識で良いでしょうか?

A: はい。ユーザーがその NFT のコレクションを自分のアカウントストレージで初期化しない限り、好き勝手な NFT を送りつけられることはない。そういう意味では、多少は Etherum や Polygon などよりはマシ。ただし、Rarible などの共通コントラクトを使って spam 的なものが送られることはありえる。

Q: 資金や NFT が抜かれるということに関して、仕組み上、Ethereum だと発生するけど Flow だと発生しないケース、反対に Flow だと発生するケースがあれば教えてください。

A: 特に、どちらかでしか発生しないケースはないという認識。どちらも同じような攻撃が可能であり、変なサイトにはアクセスしない、署名しない、など注意が必要。

Q: 間に合うならFlowチームの許可を得てデプロイした方がプロジェクトとしてお墨付きを貰えて良いと考えているのですが、許可を得てコントラクトをデプロイするのは難しかったり相当手間のかかることでしょうか?

A: レビューを申請すること自体はそこまで手間ではない(こちらを参照)。逆に、パーミションレス・デプロイが有効になったあとは、おそらく今のように誰でもレビューを受けれる状況はなくなる。いまが最後のチャンスかもしれない。

Q: イーサリアムではApprove時にPriority Feeを設定して優先的にトランザクションを通しますが、Flowにはそのような優先する仕組みはあるでしょうか?

A: 現状はその仕組みはないが、トランザクション手数料の仕様は活発に議論されていることの一つであり、今後追加される可能性はある。

Q: Flowのトランザクション手数料は非常に安いのでBOTによって詰まってしまう危険性もあると考えているのですが対策はされているのでしょうか?また、Solanaのように止まってしまうことはないのでしょうか?

A: このパーミションレス・デプロイに向けたアップデートのひとつに、トランザクション手数料の仕様変更が含まれている(こちらの記事も参照)。これにより、処理内容に応じて手数料が変わる仕組みと、ネットワーク状況に応じた手数料調整が可能となっている。スパム的にトランザクションが増えた場合は、ネットワーク手数料が上がることでこれを抑える力が働く。また、スパムのフィルタリングなどの対策をアクセスノード側に入れることもできる。ノードの種類が複数あるため、ネットワーク全体への影響は比較的小さくできるかもしれない。

Q: メタマスクでは設定したRPCによって快適に使用出来たりするのですが、Flowの場合は存在しないのでしょうか?それとも現在のウォレットが未対応なだけでしょうか?

A: Alchemy で Flow のノードを用意することができる。サービス側では、バックエンドでこれを使うことができる。ただし、Blocto などのウォレットは現状対応していない。

AMA のアーカイブ動画

ネットワークの不調により、残念ながら最初の 30 分しか録画されていませんが(ほんとは 全部で 2 時間ほど話しましたが…)、いちおうアーカイブ動画を YouTube に公開しています。

Play Video