概要

【実践編③】これまでの知識を結集し、簡易オークションコントラクトを構築します。enumを用いた「準備中/開催中/終了」といった厳密な状態管理、block.timestampによる時間制御を実装。
さらに、payableな入札機能と、安全な「Pull-over-Push」パターンによる返金ロジックなど、動的で価値の移動を伴うDApp開発の集大成となる、総合的な実践レポートです。
-
-
Solidity学習講座:最終版 目次(全20話)
基礎編 第1話:未来のインターネットへようこそ!Solidityとスマートコントラクトの全体像 第2話:準備は1分!ブラウザだけで開発できる「Remix IDE」の基本操作 第3話:記念すべき初コント ...
続きを見る
はじめに
実践編の第一弾「投票システム」、第二弾「独自トークン」と、あなたは着実にDApp開発の経験を積んできました。struct
やmapping
でデータを整理し、modifier
やrequire
で安全性を確保し、そしてevent
で外部に情報を伝える。これらの基本スキルは、あなたの強力な武器となっているはずです。
今回のプロジェクトは、これまでの集大成です。挑戦するのは、**「簡易イングリッシュ・オークション」**のスマートコントラクト。イングリッシュ・オークションとは、最も一般的な、価格を競り上げていき最高額の入札者が落札する形式のオークションです。
なぜオークションが「集大成」なのでしょうか? それは、これまでのDAppにはなかった、以下の重要な要素が含まれるからです。
- 時間の概念: オークションには「開催期間」があります。
block.timestamp
を使い、コントラクトが時間に応じて振る舞いを変えるロジックを実装します。 - より複雑な状態管理: オークションは「準備中」「開催中」「終了」といった、明確な状態(ステート)を持ち、それらの間を一方通行で行き来します。この状態遷移を厳密に管理する必要があります。
- 競合的な資金のやり取り: 複数の参加者がETHを入札し、最高入札者が常に更新されます。敗れた入札者への返金処理など、より高度で安全な資金管理が求められます。
このオークションコントラクトを完成させたとき、あなたはもはやSolidityの入門者ではありません。動的で、インタラクティブで、そして価値の移動を伴う、本格的なDAppをゼロから設計・実装できる、自信に満ちた開発者となっていることでしょう。