EVMチェーンでオンチェーンメッセージを送る方法

(サムネイルはChatGPTを用いて生成しました。)

こんにちは!弐号です。

ブロックチェーンにチャット機能はありませんが、オンチェーンにデータを書き込むことでお互いにメッセージをやり取りすることができます。

メッセージを送るたびにガス代はかかってしまいますが、まぁL2系チェーンであれば携帯のショートメッセージぐらいのコストで送れますし、なによりアドレス同士で世界中に公開される形でメッセージをやり取りでき、その記録はチェーンが存続する限り世界に残り続ける、というのはなんとも神秘的ではないでしょうか。

もちろんメールでもSNSでもいいのですが、メールはメールアドレスが失効してしまうと永遠に失われてしまいますし、SNSも何十年後もサービスが終了せずに残り続ける保証なんてどこにもありません。

一方でブロックチェーンは一人でもブロック生成者が残っていれば永遠にデータが残り続けます。

今回はプログラミングの話が出てきますが、コードをコピペするだけで動きますので、ぜひみなさんもブロックチェーンに自分だけのメッセージ(つめあと)を残してみてください!

メッセージを送る方法

さて、メッセージを送る方法ですが、EVM系チェーンではメッセージを送るという機能は実はありません(!)

しかし、EVMのトランザクションには data というフィールドを指定することができ、ここに文字列を UTF-8 でエンコードしたものを入れると Etherscan などで確認できるようになっており、これを利用することがEVMチェーンでの実質的なメッセージ機能となっています。

Etherscanでの確認方法

Etherscanでメッセージを確認する場合には、送ったトランザクションのページを開き、「Click to show more」を押し、「Input Data」の「View Input As」から「UTF-8」を選択すると以下のようにもとのテキストが表示されます。

https://sepolia.etherscan.io/tx/0x17a1b371082d532775cd6b9b3b3491fe6c00d02e7cbce2d7c7149a16dc83b087

UTF-8ですので、もちろん日本語にも対応していて、以下のように日本語も表示できます。

https://sepolia.etherscan.io/tx/0x1a37ef7c03046b3810345e739457def4a96bb05565e07733b9f6fe5e57323c97

鍵ペア作成

まずはMetaMaskなどのウォレットから秘密鍵をエクスポートするか、新たにアドレスを生成してください。

MetaMaskの場合「設定 ⇨ セキュリティとプライバシー ⇨ シークレットリカバリーフレーズを確認」からニーモニック(リカバリーフレーズ)を取り出すことができます。

新規に生成する場合には、例えば以下のようなコードでニーモニックを生成できます。

import { ethers } from 'ethers';

export const main = async () => {
    const wallet = ethers.Wallet.createRandom();
    console.log('Address:', wallet.address);
    console.log('Privkey:', wallet.privateKey);
    console.log('Mnemonic: ', wallet.mnemonic!.phrase);
};

main();

実行すると

Address: 0x61302A4447eEB624a8Cde47F5224bAEbeEe3973E
Privkey: 0x9b6bfae82ebbfb063a2f14bbe6129ce87469e9098df23a9d8c3c270023476a5f
Mnemonic:  wing stadium common female town auto craft rely purity false coin will

といった感じで表示されますので、ここの一番下の行に表示されているニーモニックを利用してください。

プログラム

では data フィールドを通してメッセージを送るプログラムを見てみましょう。

といっても、data フィールドに UTF-8 エンコードを行った16進

ここから先は、会員限定のコンテンツになります。残り全てを見るには、サロン入会案内ページから会員登録をよろしくおねがいします。

関連記事