そうだ!ChatGPTで暗号資産をつくってみよう
こんにちは、Fintertechの太田です。
当社にエンジニアは勿論在籍していますが、私はエンジニアではなく、コードひとつも書けない完全初心者の社員です。日頃、造作なくコードを書いている社員を羨ましく思っていました。
そんな私が、ふと思い立ったのです。
「そうだ!ChatGPTの手を借りて、暗号資産を作ってみよう」と。暗号資産を作る過程で必要なコードをChatGPTを使ってクリアしようという試みです。
早速ですが、心強い回答が返ってきました。
まずは、ルールと目標を決めます。
ルール
できる限りChatGPTを利用
社内のエンジニア、検索記事や関連書籍には頼らない
時系列でNoteへ記録
価値あるトークンを作らない(Ethereumのテストネットで公開)
目標
オリジナル・トークンの作成
分散型取引所「Uniswap」へ流動性の提供(取引可能に)
2023/5/29 さあ、はじめよう
まずは、素直に聞いてみます。
回答 1-1
項番5は初心者には専門用語でわかりにくいため、聞き返します。
回答 1-1-2
次に、聞き方を変えてみました。上記の回答より、具体的に見えますが内容はとっつきにくい印象ですね。
回答 1-2
これでも初心者には難しい内容であり、細部は一旦無視をすることにしました。そして、回答 1-1、1-1-2、1-2をもとに、まずは工程段階を区切りたいと思いました。初日、以下が私の抱いた工程のイメージとなります。
パソコンに環境を準備
スマートコントラクトを作成(コード記載)
コンパイル(コード→コンピュータ語に変換)
デプロイ(3をEthereumネットワーク上に搭載)
2023/5/31 パソコンに環境を準備する⇒スマートコントラクトを作成
最初に、OpenZeppelinというキーワードが目についたため、同サイトを訪問しました。Solidityのコード記載を補助してくれるということで、ニーズに合っているように思えました。
パソコンにアプリケーション等をインストールする・・・を想像していたのですが、OpenZeppelinではその必要がなく、WEB画面の簡単な入力・ボタン選択をすることで、次々自動的にコントラクトが生成されます。主な選択項目は、希望する「トークン名称」「シンボル」「数量」「機能」等です。
(すでに、ChatGPTを使ってコードを書くという試みは破綻しかけている気がしましたが、なりゆきで進んでいきます)
オリジナル・トークンの名称は、自宅の庭に植えてあるパセリが見えたという理由で「Parsley(パセリ)」にしました。シンボルはPARです、今後ともお見知りおきよろしくお願いいたします。
2023/6/26 コンパイルする
先日、OpenZepplinでコントラクトを生成したところで一息ついておりました。さて、次のコンパイルに向けてヒントを探していたわけですが、OpenZepplin上に設置されている「Open in Remix」のボタンが目についたので試しに押してみました。
すると、Remixというサービスに遷移しました。タイトルに「SOLIDITY COMPILER」とありますから、どうも次のステップであるSolidityのコンパイルに繋がりそうです。よって、このサイトを利用していきます。
既に、OpenZepplinで作成したコードが入っており、画面の案内に沿って進んでいきます。
その結果、コンパイルもすんなり終わり、「Parsley_compData.json」というファイルが出来上がりました。
拡張子「json」は、私にとって聞きなれない拡張子のファイルです。中に何が書いてあるか興味はあるものの、開き方がよくわからなかったため、ChatGPTに聞いています。
メモ帳で開くのが簡単そうに思えました。その結果が、以下の図です。不可解かつ驚きのテキスト量でした。コンパイルは、コンピューターが理解しやすい形式に変換するということでしたが、妙に納得しました。
2023/7/6 いよいよデプロイする
前回、コンパイルされた文字列を眺めながら悦にいってしまい、すこし再開まで期間があいてしまいました。いよいよデプロイの段階が近づいているはずです。ところで「.json」の拡張子のファイルは、Solidity特有のファイルなのかが疑問に思いましたのでChatGPTに聞いてみました。
どうやら、JavaScriptでメインに使われるファイルであるものの、他のプログラミング言語もサポートされているとのこと。ChatGPTに次の質問をする際には、あえて「Solidityで書いたJSONファイル」と注釈をつけたほうがよさそうな気がします。そのため、以下の質問としました。
提示されたツールの選択肢は複数ありましたが、ここまで使ってきたRemixはデプロイツールでもあるとの回答を得ましたので、継続して利用することとしました。触っておりますと、Remix画面・左側タブより、コンパイル画面からデプロイ画面へと遷移できました。遷移すると、すでにコンパイルの結果が反映されていました。(この場合、.solのファイルで反映されており、.jsonのファイルは不要でしたが、JSONファイルはまたの機会に利用したいと思います。)
最初に環境を選択肢一覧より設定しますが、この箇所はどのブロックチェーンへデプロイするかということのようです。ここでは、自分で決めたルールを思い返します。
価値あるトークンを作らない。です。
「Parsley(PAR)」に対して価値がつくとは思いませんが、Ethereumのテストネットにデプロイされた試験的トークンであればルールに沿うと思えました。また、Ethereumのメインネットに、あまり意味のないトークンを作るのは、社会インフラの無駄遣いのように感じたためでもあります。よって、Ethereumのテストネット、具体的には(Goerli)を利用することにしました。
テストネット(Goerli)上にデプロイするためには、Remixの環境設定では「Injected Provider」を選択するのが一つのやり方のようです。このとき、ブラウザ版Metamaskに接続をしますので、予めMetamaskで(Goerli)のネットワークを選択しておきます。
さあ、いよいよデプロイですが、はやる気持ちを抑えまして、社内のセキュリティにも精通したエンジニアに報告と相談をしました。(社内のエンジニアには頼らないと自分で決めたルールは、あくまで作成へのヒントをもらわないということであり、ここでは曲げました)
これまでの経緯を説明したところ、① テストネットを利用する姿勢はよい ② 今回は、Solidityのコードも簡易なためよいが、多くのエンジニアは、このようなウェブ上のサービスではなく、ローカル環境にてコードを扱っており、そのほうがセキュリティ上望ましい。といった意見をもらいました。
なんとか、お墨付きをもらいましたので、いよいよデプロイです。デプロイを押すと、Metamask画面よりガス代を求められますので、それを払います。これで、、、、完了のはずです。
いよいよ、結果報告です。Etherscan(イーサスキャン)にて、テストネット用の検索画面がありますので、そこで自身のアドレスを検索したところ、「Parsley(PAR)」が発行されていました!
以下が、「Parsley(PAR)」の詳細です。ERC-20の規格、発行枚数100万枚、保有者は現在1名で確かに存在するようです。Parsley(PAR)を検索する際には、トークンコントラクト 0xF7d2D403ab73d6CD3Fd414b57E08C9F98667410B を使えばよいですね。テストネットとはいえ、やや感動しました。
2023/7/6 分散型取引所「Uniswap」へ流動性の提供をする
すこし感慨に耽ったところで、最後は実際に取引ができることを検証します。Parsley(PAR)が実際に使えるものかどうかは、単に送受信ができるかを確認することでもよかったのですが、折角なので取引所での取引で検証することにしました。
もちろん、暗号資産交換所へ上場するとなれば上場審査もありハードルが高いのですが、分散型取引所「Decentralized Exchanges」であれば、すぐにできそうなので試してみることにしました。今回は、Metamaskをテストネット(Goerli)に接続させたまま、分散型取引所であるUniswapのサイトへ接続します。
ここでは、UniswapのプールにETHとPARをペアとして流動性を提供することで、Uniswapを利用するユーザーが実際に取引できるようにします。画面では、プールを選択します。
前述のとおり、ETHとPARをペアとして流動性を供給します。Ethereumテストネット(Goerli)にPARがあるのであれば、Uniswapからも表示されるはずです。果たして、Parsley(PAR)が表示されるのかワクワクする場面です。
いでよ、神龍(シェンロン)!
ありました!でましたね。
でてきた警告メッセージは次のとおりです。「This token isn't traded on leading U.S. centralized exchanges or frequently swapped on Uniswap.」この内容は、そのとおりなので気にせずにすすみます。
初めての流動性提供ペアになりますので、最初はトークン間の価格設定や供給量を設定します。わかりやすく、1ETH=1PARとしました。
Metamaskの認証を続けながら、どんどん進んでいきます。この後、無事に流動性提供が完了し、プールが作成されました。
そして、実際に、スワップできるかの検証です。Uniswapの画面ではスワップを選択します。スワップ画面では、当初の設定どおり、およそ1ETH=1PARから大きく逸れないレート提示でスタートしています。とはいえ、供給量自体が少なかったため、大口取引になるのかもしれません、1%強の価格変動が見込まれまています。
スワップも大成功です!
これで、ひととおりの目標を達成することができました。
最後はChatGPTに御礼を言って〆としました。
さいごに
今回は、ChatGPTで実際にコードを書いてもらったというよりは、道先案内をしてもらったというのが実感です。確かに、ChatGPTは最初の質問に対して、次のように答えていました。暗号資産をつくれるツールであると最初に誤解したのは私のようでした。
そして、今回の体験をきっかけに、コードは書くだけではなく、コンパイルやデプロイが必要であることもわかりましたし、もうすこし掘り下げてみたいと思えました。今後は、ChatGPTや各種ツールを活用して、ローカル環境でのトークン作成やERC721トークン等(NFT)の作成にも改めて挑戦してみたいと思います。
ChatGPTの利用について
当内容は社外向けであり、前提となる環境を合わせるために、ChatGPTの通常版を利用しています。
一方で、Fintertech社内では、マイクロソフト社のクラウドサービス「Azure OpenAI Service」を活用した、セキュアで占有のDaiwa ChatGPTを業務で利用しています。
Daiwa ChatGPTは、一般的なChatGPTと異なり、Chatに入力した情報が外部に漏れず、他の社員へ公開されることはありません。このようにセキュアな環境が確保されているため、入力内容に制約はなく、翻訳、要約、文書・プログラミングの素案生成等、幅広い業務に活用されています。
当社を含む大和証券グループは、情報セキュリティにも配慮したうえで、汎用AIなどの先端技術を取り入れ、生産性をより高める働き方を推進しています。
大和証券グループ本社プレスリリース
「大和証券における全社員のChatGPT利用開始について」
https://ssl4.eir-parts.net/doc/8601/tdnet/2263460/00.pdf
日本経済新聞
「大和証券、対話型AIの「ChatGPT」を導入し全社員約9,000人を対象に利用を開始」
https://www.nikkei.com/article/DGXZRSP653467_Y3A410C2000000/
注意事項
「暗号資産交換業」の登録を得ないで「暗号資産交換業」に該当する行為を行った場合には、刑罰の対象となることがあります。
また、暗号資産を投資家に出資してもらう仕組みへ採用する場合は、金融商品取引法の規制を受ける場合があり注意が必要です。
暗号資産に関する法規制については、複雑であり、暗号資産を扱う事業の内容によってもどのような規制を受けるかが変わってくる可能性があります。暗号資産の規制に関しては、専門的知識を持つ弁護士に相談することをおすすめします。