メッセージの保存機能を実装しよう
🔥 スマートコントラクトに機能を追加しましょう
前回のレッスンでは、Messenger
というスマートコントラクトを作成しました。
今回のレッスンでは以下の機能を実装します。
- メッセージを格納するデータ構造の用意
- メッセージの送信
- テスト
💁 これから実装するコントラクトの内部の処理をここで整理したいと思います。
プロジェクト内で出てくる「メッセージ」とは、テキストとそこに添付され たトークンを総称して指すこととします。 メッセージのテキストをメッセージテキスト、メッセージに添付されたトークンをメッセージトークンと呼ぶこととします。
メッセージのやり取りは、送信者から受信者へ直接ではなく、間にコントラクトを介して行われます。
- 送信者がメッセージの送信を行うと、メッセージテキストや関連情報がコントラクト内で保存されます。
- また、メッセージトークンはコントラクトへ送信されます。
- 送信されたメッセージはコントラクト内で保留という状態を取ります。
- その後メッセージの受信者が自分宛のメッセージの確認を行い、保留中のメッセージに対して以下の2つの動作を実行することができます。
- 承諾 -> メッセージトークンを受け取ることができます。コントラクトから受信者へトークンが送信されます。
- 拒否 -> メッセージトークンは返却されます。コントラクトから送信者へトークンが送信されます。
🪙 トークン
ブロックチェーン上には多くのトークンが存在しますが,
本プロジェクトで出てくるトークンとはAVAX
かETH
をさします。
AVAX
はAvalanche
のネイティブトークンで、ETH
はEthereum
のネイティブトークンです。
どちらも、それぞれのブロックチェーン上でトランザクションの際に手数料として必要です。