(サムネイルは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進