※当ニュースレター文中の下線部は全てリンクを添付しています。お役立てください。
今回のゲスト講師のユウキさんは、前職の公務員を辞めてエンジニアに転職されたとのことです。
二年前、プログラミングは全くの素人だったそうで、音声SNS『Clubhouse』でAsterの渡辺創太さんによるブロックチェーンの話を聞いて興味を持ったことがきっかけになり、プログラミングの勉強を始めたそうです。
たった二年の月日で、ブロックチェーンゲーム企業に勤めながら、勉強会を開くまでのスキルを身につけられることに驚きました。
ユウキさんの経歴を聞くと、全くの素人から二年で開発事業に携われることは、多くの人に勇気を与えるのではないでしょうか?
僕はコードや技術面は全くの無知で、ただただ難しいイメージしかありませんでしたが、勉強をしていけそうな勇気をいただけました。
NFTの仕組みやERC-721など、なんとなく聞いたことがあるだけだったり、関連記事を読んでみて少し知った程度では、やはり人に説明できるほどの理解はできていません。
『NFTとはこういうものだ』とか本質がどうとか語るには技術面も知っておく必要があり、現状のテクノロジーで何ができるのか、今後は何ができるようになるのか、を知ることも大事だと思うのは私だけではないはずでしょう。
2022年12月現在、アーリーアダプターの私たち一人一人のリテラシーが向上すれば、web3において日本の市場も海外と肩を並べることができると考えておりますし、また私たち個人個人のweb3での成功の鍵となると考えております。
その基礎の基礎となるお話をユウキさんにしていただいたので、ぜひご一読ください。
ーーーー
普段されている主な活動内容をお願いします。
普段は、主に3つのことをやっています。
①実際にコードを書いて開発
②社内の営業・コンサルの方からの技術についての質問への回答など
③社内勉強会(主に非エンジニア向け)
③については、私は営業の方であっても、技術に強くあってほしいと思っているので、かなり色々と伝えています。
いつ頃からブロックチェーンおよびNFTを触り始めましたか?きっかけは?
2020年の11月頃から触り始めました。
現Astar Networkの渡辺聡太さんのお話をclubhouseで聴き、面白そうと思ったことがきっかけです。
エンジニアさんからの視点から見るNFTのおもしろさって何ですか?
仕組みはさほど難しくないのに、アイディア次第で、いろいろなことができるということです。
エンジニアじゃない方とパッと作ってパッとできる様なものなので、本当は全然難しくないようなものなんですけども、
アイデアや少しの工夫で、新しいいろいろなものを作ることができるのが面白いと思います。
例えば、ERC-4907の様なレンタル可能なNFTやSBT(譲渡不可)、有効期限つきのNFTなどいろいろなものが出ていますが、どれも仕組みはどれも単純です。
素人でもできてしまう、そんなに簡単にできるものなんですね!イメージと違ってました。
ユウキさんは最近ではどのようなチャレンジをされてますか?
新しいことをどんどんやりたいというところがあるので、Thirdwebという簡単にNFTを作れるサービスとかあるんですけども、それを触ったり、
ゲーム特化をしてみたいと思っていて、Unityという3D系のものを作れるサービスがありまして、それにNFTの要素を組み合わせてウォレット接続をしたりそういった連携が楽しくてやっています。
技術的なところは全然わからないですが、なんとなくのイメージとして、連携などができると幅が広がりそうですね。
私たちが普段使っているwebサイト型のマーケットプレイスって、ウォレット接続のボタンを押せば接続できると思うんですけども、それをただ単に3Dのゲームで同じことをできるようにするだけです。
なので仕組み自体は難しいことではなく、コアな技術さえあれば色々応用できるなっていう感じですね。
なるほど、では素人でも少し学べばその段階までは簡単にできるようになるということですね
はい、簡単といいますか色々ハードルがあって、フロントエンドとバックエンドは難しいですが、
「コントラクトを作ってNFTを作ってThirdwebを使って繋ぎこみをおこなう」というような、そこの部分だけだったら、わりといけるのかなって思います。
素人だったらそこを出来るだけでも達成感を得てワクワクしそうですね。
そうですね、感じていただけると思います。
一度コントラストを書いてNFTを作ってみるだけでも達成感はあるので、ちょっとずつでも出来るとワクワクすると思います。
実際に触ってみて(仕組みなどを)理解できるところがあったりしそうですね。
まさにそうだと思います。実際に作るとイメージが付きやすいと思います。
エンジニアさんから見るNFTのテクノロジーがもたらした可能性ってどのようなものですか?
NFT、というよりもブロックチェーンかと思っていますが、改ざんがほぼ不可能(チェーンによりますが)というのが大きいと思っています。
改ざんが不可能だからこそ、システムに対する信頼が生まれたというのが大きな価値だと思っており、
現在、人や国や銀行など信頼で成立しているものがブロックチェーンにより変わっていきうる、というのが私が考える可能性だと思っています。
誰も書き換えられないというところはすごく画期的ですね。
スマートコントラストを走らせたら誰も止められないって言われていますもんね。
そうですね、システム的に言うと止めることはできなくて、UpgradeableというNFTがありまして、コードを変えることが出来るという仕組みも実はあったりします。
ただ、それとは別にチェーンで刻まれたことを変更できるわけではないので、一回コントラストが変更されたというような履歴が残ります。なのでその辺りは凄いなと思います。
NFTの本質は、画像なのか思想的なところなのか、それともテクノロジーなのか、その人の活動によって視点が変わると思いますが、ユウキさんはどこにあると思いますか?
そうですね、名が体を表すといったとおり、Non-Fungible Token、代替不可能というところですけども、代替可能なのは例えば通貨で『私が持ってる1円はあなたの持ってる1円と同じ価値で交換できる』ですが、
NFTは『私のスマホとあなたのスマホは価値が違うから代替できない』という感じと思っています。
Fungible Token(代替可能)の代表がERC-20で、NFTの代表がERC-721ですが、
根本的なところは、ERC-20は"量"をあらわすものなんです。
例えば『私は500持ってて、あなたは1,000持ってる、他の人は2,000持っている』ように量を示すものです。
一方でERC-721が示しているのは"トークンID"を示しています。『私が持ってるトークンIDは10です、あなたは20です、あなたは5です。代替不可能ですよね』
といったところが本質だと思っています。
めちゃくちゃ分かりやすいです!
代替可能なブロックチェーン通貨の本質は量で、NFTはIDが本質なんですね。
まさにその通りですね。
NFTはフルオンチェーンではないと、画像の保管場所が無くなってしまうと画像が消えると聞きますが、ERC-721で言うと画像はどこに乗っているのでしょうか?
先ず乗っかってないものから説明するとイメージがつきやすいと思うんですが、それはコントラクトの中に画像情報が無いんですよね。
『ここに乗っかっています』と書いてある画像情報だけがあって、その画像情報が示す場所に行けば画像があるといった感じですね。
一方で乗っているもの(フルオンチェーン)ですが、画像といってもデータの集まりじゃないですか。
画像もやはりデータであらわすことが出来て、コントラクトもコードの集まりで、画像コードの集まりなのでそれを単にコントラクトの中に入れるといったものです。
ただそれによって無くなるってことは一見なさそうなんですが、実はそういうことでもなくて、
コントラクトって色々中身を変えられるんです。
ReadとWrite、読み込むことと書き込むことができるんですけども、例えば今オンチェーンの中に書き込まれている画像のデータを書き換えれば、画像って変わっちゃうんです。
一年前に遊びで作ったんですけども、進化するフルオンチェーンのNFTというのが簡単にできまして、進化ボタンというのを押すと、画像がフルオンチェーンなんですけども進化するんですよ。
なので、フルオンチェーンだから安全という物ではなくて、ただ単にスマートコントラクトの中に画像のデータが入ってるっていうだけというイメージを持っています。
そうなんですね!フルオンチェーンは画像が消えることはないけど変えることはできるということですか?
そうですね、もちろん変えることができないようにコードを書き込むことができるので、
コード次第ではあるんですけども、変えようと思えばそういうコントラクトは作れちゃうという感じです。
作ってみたいですそれ!楽しそうです
はい、結構その辺も簡単にできると思いますよ。
ERC-721という規格はどういったものですか?
また、規格がなければNFTは作れないのですか?
ERC-721がなくてもNFTは作れます。
これは定義によるものではありまして、Non-Fungible Token、代替不可能なトークンの定義で話をさせていただきたいんですけども、ERC-721がなくても作ること自体は可能です。
実際にCryptoPunksはERC721が生まれる前に作られています。
規格という意味ですが、共通の約束事がないと不便なんですね。
NFTに共通するものっていくつかあって、例えば「mint」ボタンだったり「owner of」 という所有者が誰か記すといった、そういう機能は共通するんですが、『名称を統一しよう』というのが規格なんです。
例えば、あるコントラクトはmintっていう名称だったり、あるコントラクトはsuper mintっていう名称だったりという様な、統一性がないと使いにくいんですよ。
色んな名称が付いてたら、いちいちコントラクトを読まないとどれを使ってmintすれば良いか分からないんですよね。
なのでですね、ERC-721っていうのはmintをする時は、mintという名称を使いましょうとか、NFTを送付する時は「safeTransferFrom」というのがあるんですけども、そういった定義してやりましょうというお約束事なんですよ。
なので、いちいちコントラクトを読まなくても送付したい時にはsafeTransferFromのボタンを押せば良いなっていうのが分かるんですよ。
それが規格の意味です。
そのほか、例えば、ERC4907はレンタルが可能なNFTの規格ですが、それを使っていれば、そこで使用される「userOf」という関数が入っているということがわかります。
なので、ERC721とNFTは本質的には別なので、代替不可能なトークンという意味でのNFTはERC721を使わなくてもできますが、とても不便ですし、期待されているように動かないので、
人によってはERC721を準拠していないと、NFTと呼ばないと定義する人がいてもおかしくはないかなと思います。
なるほど!とてもよく分かりやすいです!
ユウキさんは、エンジニアさんの視点ではNFTのどういうところに着目していますか?投資やトレンドよりもシステム重視ですか?
どの観点から、この先どうなっていくかなどを見られているんですか?
あくまでも私の視点ですが、やはり技術のところを見るんですけども、先ほど述べた本質的なところは代替不可能なトークンIDだと思っていて、ということはその本質を利用したトークンゲート、
例えばwebサイトに繋げばトークンIDの1〜10の人だけが入れるwebサイトを作ったりですとか、トークンID1の人だけ特典があるなど、
そういう差別化ができるようなサービスが今後もっと増えるとおもしろいなと思っています。
ERC-721でもチケットみたいなのがあると思うんですけども、チケットは代替可能ですが、
NFTの本質であるIDの特性を活かしたタイプのチケットみたいなものができたら良いなってのは思っています。
なるほど、たしかにIDまで意識した着眼点はないかもしれません。
レア度とかで特典が別れるというのはプロジェクトによってはあったりしますが、同じチケットでもIDで特典が変わるっていうのは考えたことがなかったです。
ほとんどの場合が、絵柄やレア度、プロジェクトのユーティリティなど大きな部分や表面的なところに、目がいきがちのように思います。
次の質問ですが、コレクターもテクノロジーを知っておいた方が良いですか?もしそうであれば、理由などをお聞かせください。
はい、私は知っておいた方が良いと思っていまして、知らないと危険だというところがあります。
approveっていう処理があって、例えばOpenSeaにNFTを販売したことがあれば、approveという処理があるんですね。
そのapproveというのは、『私のNFTを全部あなたの好きにしていいですよ』という意味なんです。
しかも結構怖くてですね、例えば私があるプロジェクトのNFT10枚を持っているとして、それを販売しようとOpenSeaにあげるとすると、OpenSeaは私のNFT一個を売ったり自由にできちゃうんですけども、それだけじゃなくて他の9個も好きにできちゃうんですよ。
もちろんOpen Seaはそんなことしないよって思われるはずですけども、例えば誰かよくわからない人が作ったマーケットプレイスがあって、
『せっかく作ったので皆さん触ってください』というところにapproveをしてしまうと、そのマケプレの管理者が好きなようにtransferできてしまうので、そういうあたりは技術的なところですが、知らないと危険だなと思います。
一応、誤解がないようになんですけども、私が持っているNFT全てがapproveになるわけではないんです。
例えば私がAというプロジェクトのNFTとBというNFTを持っているとして、
AのNFTを一つ販売するためにapproveしたらOpen SeaはAのNFTは全て自由にできるんですが、BのNFTはコントラクトが違うのでapproveをしていない形になるので自由に移動できないということです。
なるほど、たしかに今後、独自マケプレが増えるんじゃないかということも話題になってて、注意が必要ですね。
コードを読めるようになっておかないとダメですか?
そうですね、注意しなきゃいけないというポイントがあるので、例えばOpen Seaで販売停止とかもありますが、販売停止にしたらapproveが切れるのか切れないのかということが分かると思うんですが、ちなみに切れないんです。
なので、一度そこにあげたらずっとapprove状態になってるんです。
そういえば最近はメタマスクにも注意書きが出ますよね
そうですね、その辺りは一応読んでいただいた方が良いのかなと思います。
特にOpen Sea以外には気をつけていった方が良い感じですね
はい、私はOpen Seaも含めて気をつけた方が良いと思っています。
販売停止だとapproveは消えないんですけども、コントラクトを実際にたたくというのは出来るので、直接コントラクトをたたいてapproveを解除するということは全然できるようになるところなので、できるようになっておくと強いのかなと思います。
NFTコレクターでもNFTのテクノロジーを知っておく方が本質を理解できると考えています。
非エンジニアでもSolidity(イーサリアムで使われるコード言語)のようなのようなプログラミングコードを読めるようになれますか?
はい、なれます。
ちなみに、『エンジニアになる』ことと『solidityを書ける・読めるようになる』ことは大きな隔たりがあるかなと思っていて、難易度的にはかなり違ってきます。
ただ、書ける・読めるようになるといことでお話しさせていただくと、簡単だと思います。
難しいイメージがあると思いますが、実は難しくありませんし、私は他の言語よりも簡単だと思っています。むしろやれることが限られているので、正直そこまで難易度は高くはないかと。
もちろん色々なことをやったら難しいですが、一般的に使うくらいのレベルでしたら、難しくないですよ。
少なくとも簡単なコードを読めるようになるには、あまり時間はかからないと思います。
そうなんですね!意外でした。
私の会社は非エンジニアの方も多くいますが、みんなsolidityを書けるようになって欲しいなって思ってるくらい、全然いけるレベルです。
他のコード言語から学んだ方が良いと聞いたことがあるのですが、そうではないのですか?
たしかにJavascriptというコード言語にsolidityは似ていると言われていますが、もちろんJavascriptを知っていた方がsolidityに入りやすいのはあると思います。
ただ、solidityはそこまで難しい言語ではないので、solidityを学びたいのであればsolidityから入って良いと思います。
最低限、読めるようになるにはどういう順序で学んでいけば良いですか?
Cryptozombieというゾンビを作りながら無料でsolidityを学ぶツールがあるので、まずはそこで感覚的に慣れるといいと思います。
そして慣れてくると、自分の好きなNFTのコントラクトって簡単に読めるので、そこを実際に読んでみるのも良いですね。
ただ、Cryptozombieはかなり古く、今と書き方が違うところがあるので、余裕があれば、有料ですが、smart contract engineer(確か月1500円)が良いと思います。
こちらは私がめちゃくちゃハマっているサービスでして、実際に書いて学ぶんですけども、これをやればsolidityに関してはかなり強くなると思います。
書きながら学べてものすごく良い教材だと思います。
ただご注意いただきたいのが、すべて英語で書かれておりまして、翻訳機を使いながらできる範囲とは思いますがその辺はハードルかなと思います。
なるほど、そうなんですね。とても興味があります。
そういう風に学んでいくと、エンジニアさんの記事とかも理解できるようになりますか?
そこはもしかしたらハードルがあるかもしれません。
エンジニアさんの記事って言語だけの話じゃないんですね。色んな言語を使うための準備として、環境構築といって色んなものをインストールしたりすることがあるんですけど、そういったところが結構難しかったりよく知らないものが出てきたりするので、
solidityを読めるようになってもエンジニアさんの記事を読めるようになるには結構ハードルが高いかなと思います。
一般向けに書いてくれる記事なら少しわかるようにはなれそうですか?
そうですね、コードを読める方ならコントラクトの仕組みまで分かるので、より深い理解を得られると思います。
英語の勉強でも、リスニング力を上げるためにはシャドーイングをする必要があるのと同じで、コードを読めるようになるには実際に書いてみる必要があるんですね?
はい、まさしくそう思います。
読むとなんとなく頭に入ったようで、ほとんど入っていないことが多々あるので、実際にCryptozombieとかも書くツールなんですけども、
ちゃんと自分で書いてみて正解ボタンを押して正解や不正解が出るので、そうやって書いて取り組むうちに読めるようになると思います。
とてもやりたくなってきました!
結構楽しいと思いますよ。
ちなみにCryptozombieとsmart contract engineerは目的が違うものでして、Cryptozombieはあくまでsolidityを学ぶものでして、一方smart contract engineerはどちらかというとコントラクトを学ぶためのものなんですよ。
なのでコントラクトありきなので例えば『こういうコントラクトを作るためには、こういうコードを書きます。』というものなので、より実践的な感じですね。
とても分かりやすいです。ありがとうございます。
次の質問ですが、
エンジニアさんの視点から、今のNFT市場はどのように見えますか?また将来的にどのような発展をすると予想していますか?
NFTを簡単に他の領域と簡単に結びつけられるようになるかに注目しています。
他との連携が簡単にできるようになれば、その技術はどんどん進んでいくのではと思っています。
また、最近ERC4337のAccount Abstraction(AA)が大きな話題になっていますが、めちゃくちゃ凄いんですよ。NFT市場がだいぶん変わるなと思っています。
私は現状では周囲にNFTをあまり薦めたいと思っていなくて、理由としては、今のウォレットは秘密鍵をなくしちゃったら大変なので、それが怖くて薦められなかったりしますし、それが怖くて始められないという人もいらっしゃると思うんですよね。
しかしAAによってその辺りが変わってきます。
アカウントって二種類あるんですが、ウォレットアドレス(EOA)とコントラクトアドレスです。
私たちはウォレットアドレスを持ってますが、なぜ必要かというとトランザクション、『何か処理を実行するには必ずウォレットアドレスからスタートしなくてはいけない』ということが決まっているんですよね。
ウォレットアドレスを持つっていうことは秘密鍵を管理しなくてはいけないリスクがつきものなんですが、しかしAAによってコントラクトアカウントから処理ができるようになるんです。
コントラクトアカウントというのは、コードから作ったコントラクトなんですが、秘密鍵を持たなくて良いんです。そこがすごく大きな利点で、ヴィタリック(イーサリアム創設者)も言ってるんですが、それによってソーシャル・リカバリー(社会的復帰)、秘密鍵をなくしても復帰できるなどの方向が見えてくるんです。
なのでリスクがかなり減ると思われます。
なのでNFT市場は人が参入しやすくなり、市場が大きくなる可能性があるかなと予測しています。
なるほどです!とても分かりやすいです。自分でAAに関する記事などを読みましたが、さっぱり理解できませんでした。笑
秘密鍵をなくすリスクと、scam対策も大丈夫になりますよね。
そうですね、秘密鍵という概念がなくなりはしないと思うんですが、手段の一つになると思うんです。
コントラクトアドレスになったとしても、誰が実行したのか分かる必要があります。
誰が実行したのか分からないと困るわけなので、『私が実行しています』というのはどうしても必要になります。
なので検証がどうしても必要なんですが、従来だと検証が秘密鍵だけです。
しかしコントラクトアドレスは中にコードが書けるわけなので、検証方法を自由に設定できるんですよ。
なので、秘密鍵でも検証しても良いし、他の方法で検証しても良いってなるので、それも結構大事になります。
今って皆さん、ウォレットアドレスを色んなところに貼っていたりするんですけども、秘密鍵がバレないという前提で成り立っていますよね?
今はそうなんですが、量子コンピューターが発展したら見破られる可能性があるって言われています。
その辺りも解消していくでしょうと言われています。
AAはヴィタリックがエンジニアの夢だと話しているくらいなので、かなり大きな変化だと思います。
いつ頃から実装されそうなんですか?
テスト段階では既に実装されていて、先日のハッカソン(エンジニアのイベント)でもとても流行っていて、皆さん結構実装していたりするのでこれから広まっていくと思います。
メタマスクなど既存のウォレットもERC-4337を実装していくのか、それとも全く新しいウォレットが出てくるのか、その辺りはどうなんでしょうか?
全く新しいウォレットになると思います。Gnosis Safe(グノーシスセーフ)という製品がありまして、コントラクトアドレスを簡単に作れるサービスなんです。
AAとはまた別の話になるんですが、コントラクトアカウントの何が凄いのかというとマルチシグができるんですね。
それは何かというと、結構安全なものでして、ウォレットアドレスは秘密鍵を失くすと使えなくなりますが、コントラクトウォレットは中にコードを書くことができるので『5人中3人が承認したら通る』という事ができます。
そうする事によって、もし失くしちゃったとしても3人が承認すればリカバリーできるよという感じになります。
それがコントラクトアドレスで出来ることなんですが、メタマスクだとできないといった違いです。
ただグノーシスセーフは承認する人が、承認する際に必要なのは従来のウォレットアドレスになるので、AAを組み合わせるとコントラクトアドレスでできるようになったりしますね。
最後に質問というかお願いがありまして、、、
ユウキさんのノートは初心者でも分かるように画像付きで丁寧な書き方で構成されてて、とてもありがたいです。
もしよろしければ、私たちPalAcademyのTwitterスペースでユウキさんのブログや動画を教科書として見ながら、月一回勉強会を開いていただけないでしょうか?
はい、もちろん大丈夫ですよ。是非やっていきましょう。
皆さんに使っていただきたいので、私の記事はすべて無料公開なので、ご自由にどうぞ。
ちなみに、最近はnoteではなく、Zennで書いています。
技術関連は好きで、話せることがたくさんあると思いますので、是非どうぞ。
月一回ペースですと、例えば今回の様な概念的なところでしたら、コードの勉強よりも皆さんの頭にも残りやすいと思いますので、理解していただけるかなと思います。
ありがとうございます!とても嬉しいです!
ユウキさんのお力をお借りしながら私たちPalAcademyの取り組みを通して、一人でも多くの方のリテラシー向上に貢献できたら幸いです。
1時間にわたりとても親切丁寧にお話ししていただき誠にありがとうございました!
ーーーー
皆さんいかがでしたか?
知っておくべきリスクや、そして今後のテクノロジーの可能性などを知っていただけたのではないでしょうか?
個人的には、進化するNFTを作りたいと思ったのと、またAAの話がとても興味深いものでした。
FTの本質は量、NFTの本質はトークンID
というポイントもとても興味深い視点でした。
今のNFTのテクノロジーで出来る範囲、そして将来的に出来そうなことを知れると、NFTの進化をいち早くキャッチすることができますね。
PalAcademyのDiscordでは、テクノロジー関連の勉強部屋チャンネルを設けており、情報シェアやユウキさんのご厚意で質問できる環境を作っております。
興味のある方はお気軽にお入りください。
初心者向けユウキさんのブログ
ERC‐721の本質が超わかりやすいYouTube
NFTが社会に浸透する将来にむけて、私たちと一緒に今からリテラシーを高めていきましょう!
いつも通りTwitterでコメントをお待ちしております!
感謝
※当ニュースレター文中の下線部は全てリンクを添付しています。お役立てください。