AmazonやeBayなどの従来のeコマースマーケットプレイスでは、中央当局が買い手と売り手の間の取引を容易にします。 この中央当局は、取引を管理し、製品リストを維持し、紛争解決を管理します。 この集中型モデルには利点がありますが、検閲のリスク、高額な手数料、信頼への依存など、いくつかの欠点もあります。
一方、分散型市場はブロックチェーン技術を活用して、仲介者なしでピアツーピア取引を可能にします。 トランザクションはブロックチェーン上のすべての参加者によって透過的で検証可能であるため、信頼の必要性を排除します。 分散型マーケットプレイスの例には、OpenBazaarやOrigin Protocolなどがあります。
Remix IDE(統合開発環境)は、イーサリアムのスマートコントラクト開発のために特別に設計された強力なオープンソースツールです。 Webブラウザで直接実行されるため、コンピュータに何もインストールする必要はありません。
リミックスIDEには https://remix.ethereum.org からアクセスできます。 ブラウザでRemixを開くと、次の3つのパネルが表示されます。
左パネル: ここで、Solidityファイルを作成、インポート、および管理できます。 また、コントラクトをコンパイル、テスト、デバッグ、およびデプロイするためのさまざまなプラグインも含まれています。
中央パネル: これはコード エディターです。 ここでは、Solidityコードを記述および編集します。
右パネル:このパネルは、コントラクトをコンパイルし、イーサリアムネットワーク(実際のイーサリアムネットワークまたはJavaScript VMシミュレーションのいずれか)にデプロイし、デプロイされたコントラクトと対話するためのさまざまなツールを提供します。
このパートでは、最初のSolidityコントラクトを作成します。 この契約は、当社のマーケットプレイスにおける基本的な「アイテム」を表します。
まず、左側のパネルの上から2番目のアイコン(ファイルアイコン)をクリックして、Remixで新しいファイルを作成します。 中央のパネルに新しいダイアログが表示されます。 ファイル名として入力 Item.sol
し、「OK」をクリックします。
硬度
SPDX ライセンス識別子: MIT
プラグマの堅牢性^ 0.8.6;
契約明細 {
新しいアイテムが作成されたときに発生するイベントを定義する
event NewItem(uint itemId, string itemName, uint itemPrice);
各アイテムには、ID、名前、価格があります
struct ItemStruct {
string name;
uint price;
}
すべての項目を保持する配列
ItemStruct[] パブリック アイテム。
新しいアイテムを作成する関数
関数 createItem(string memory _name, uint _price) public {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
SPDXライセンス識別子:これは、契約のライセンスを表現する標準的な方法です。 この行は // SPDX-License-Identifier: MIT
、契約が寛容なMITライセンスを使用していることを示しています。
プラグマ指令: pragma solidity ^0.8.6;
コントラクトがSolidityバージョン0.8.6で書かれていることを指定します。 この記号は ^
、バージョン0.9.0までの新しいバージョンとも互換性があることを意味します。
コントラクト定義: contract Item {...}
という Item
新しいコントラクトを定義します。 ここで、コントラクトの状態変数と関数を記述します。
イベント定義: event NewItem(uint itemId, string itemName, uint itemPrice);
新しいアイテムが作成されるたびに発行できるイベントを定義します。 イベントは、スマートコントラクトが外部関係者がリッスンできるアクティビティを記録する方法です。
構造体定義: struct ItemStruct {...}
a と a name
price
を持つ Item を表す新しいデータ型ItemStruct
を定義します。
状態変数: ItemStruct[] public items;
s のItemStruct
配列を保持する状態変数items
を宣言します。このキーワードは public
、誰でもアイテムのリストにアクセスできるようにするゲッター関数を自動的に作成します。
関数定義: function createItem(string memory _name, uint _price) public {...}
新しいアイテムを作成するために誰でも呼び出すことができるパブリック関数を定義します。 この関数は、名前と価格を受け取り、新しい ItemStruct
ものを作成し、配列に追加 items
して、イベントを発行します NewItem
。
このコントラクトをコンパイルするには、右側のパネルに移動し、上から3番目のアイコン(Solidityロゴ)をクリックします。 ここでコントラクトをコンパイルできます。 「コンパイル」ボタンをクリックし、エラーがなければ、契約は正常にコンパイルされます。
IPFS:惑星間ファイルシステム(IPFS)は、永続的で分散型のWebを作成するために設計されたプロトコルです。 これは、1つのBitTorrentスウォームのようなもので、1つのGitリポジトリ内でオブジェクトを交換します。
Swarm:Swarmは、イーサリアムweb3スタックにネイティブな分散ストレージプラットフォームおよびコンテンツ配信サービスです。 これにより、ピアのネットワークがデータを保存および配布できます。
コントラクトをコンパイルすると、Solidityコンパイラは、アプリケーションバイナリインターフェイス(ABI)とバイトコードなどの情報を含むJSONファイルを生成します。 これは、コントラクトのメタデータと呼ばれます。 このメタデータを分散型ストレージネットワークに保存すると、永続的に利用可能になり、コントラクトのソースコードを検証するのに役立ちます。
ただし、学習目的で、Etherscanまたはその他のブロックエクスプローラーで契約を確認する予定がない場合は、SwarmまたはIPFSのいずれかを選択するか、単に無視して学習の次のステップに進むことができます。 この段階での主な焦点は、コントラクトの記述、コンパイル、および配置の方法を理解することです。
AmazonやeBayなどの従来のeコマースマーケットプレイスでは、中央当局が買い手と売り手の間の取引を容易にします。 この中央当局は、取引を管理し、製品リストを維持し、紛争解決を管理します。 この集中型モデルには利点がありますが、検閲のリスク、高額な手数料、信頼への依存など、いくつかの欠点もあります。
一方、分散型市場はブロックチェーン技術を活用して、仲介者なしでピアツーピア取引を可能にします。 トランザクションはブロックチェーン上のすべての参加者によって透過的で検証可能であるため、信頼の必要性を排除します。 分散型マーケットプレイスの例には、OpenBazaarやOrigin Protocolなどがあります。
Remix IDE(統合開発環境)は、イーサリアムのスマートコントラクト開発のために特別に設計された強力なオープンソースツールです。 Webブラウザで直接実行されるため、コンピュータに何もインストールする必要はありません。
リミックスIDEには https://remix.ethereum.org からアクセスできます。 ブラウザでRemixを開くと、次の3つのパネルが表示されます。
左パネル: ここで、Solidityファイルを作成、インポート、および管理できます。 また、コントラクトをコンパイル、テスト、デバッグ、およびデプロイするためのさまざまなプラグインも含まれています。
中央パネル: これはコード エディターです。 ここでは、Solidityコードを記述および編集します。
右パネル:このパネルは、コントラクトをコンパイルし、イーサリアムネットワーク(実際のイーサリアムネットワークまたはJavaScript VMシミュレーションのいずれか)にデプロイし、デプロイされたコントラクトと対話するためのさまざまなツールを提供します。
このパートでは、最初のSolidityコントラクトを作成します。 この契約は、当社のマーケットプレイスにおける基本的な「アイテム」を表します。
まず、左側のパネルの上から2番目のアイコン(ファイルアイコン)をクリックして、Remixで新しいファイルを作成します。 中央のパネルに新しいダイアログが表示されます。 ファイル名として入力 Item.sol
し、「OK」をクリックします。
硬度
SPDX ライセンス識別子: MIT
プラグマの堅牢性^ 0.8.6;
契約明細 {
新しいアイテムが作成されたときに発生するイベントを定義する
event NewItem(uint itemId, string itemName, uint itemPrice);
各アイテムには、ID、名前、価格があります
struct ItemStruct {
string name;
uint price;
}
すべての項目を保持する配列
ItemStruct[] パブリック アイテム。
新しいアイテムを作成する関数
関数 createItem(string memory _name, uint _price) public {
items.push(ItemStruct(_name, _price));
emit NewItem(items.length - 1, _name, _price);
}
}
SPDXライセンス識別子:これは、契約のライセンスを表現する標準的な方法です。 この行は // SPDX-License-Identifier: MIT
、契約が寛容なMITライセンスを使用していることを示しています。
プラグマ指令: pragma solidity ^0.8.6;
コントラクトがSolidityバージョン0.8.6で書かれていることを指定します。 この記号は ^
、バージョン0.9.0までの新しいバージョンとも互換性があることを意味します。
コントラクト定義: contract Item {...}
という Item
新しいコントラクトを定義します。 ここで、コントラクトの状態変数と関数を記述します。
イベント定義: event NewItem(uint itemId, string itemName, uint itemPrice);
新しいアイテムが作成されるたびに発行できるイベントを定義します。 イベントは、スマートコントラクトが外部関係者がリッスンできるアクティビティを記録する方法です。
構造体定義: struct ItemStruct {...}
a と a name
price
を持つ Item を表す新しいデータ型ItemStruct
を定義します。
状態変数: ItemStruct[] public items;
s のItemStruct
配列を保持する状態変数items
を宣言します。このキーワードは public
、誰でもアイテムのリストにアクセスできるようにするゲッター関数を自動的に作成します。
関数定義: function createItem(string memory _name, uint _price) public {...}
新しいアイテムを作成するために誰でも呼び出すことができるパブリック関数を定義します。 この関数は、名前と価格を受け取り、新しい ItemStruct
ものを作成し、配列に追加 items
して、イベントを発行します NewItem
。
このコントラクトをコンパイルするには、右側のパネルに移動し、上から3番目のアイコン(Solidityロゴ)をクリックします。 ここでコントラクトをコンパイルできます。 「コンパイル」ボタンをクリックし、エラーがなければ、契約は正常にコンパイルされます。
IPFS:惑星間ファイルシステム(IPFS)は、永続的で分散型のWebを作成するために設計されたプロトコルです。 これは、1つのBitTorrentスウォームのようなもので、1つのGitリポジトリ内でオブジェクトを交換します。
Swarm:Swarmは、イーサリアムweb3スタックにネイティブな分散ストレージプラットフォームおよびコンテンツ配信サービスです。 これにより、ピアのネットワークがデータを保存および配布できます。
コントラクトをコンパイルすると、Solidityコンパイラは、アプリケーションバイナリインターフェイス(ABI)とバイトコードなどの情報を含むJSONファイルを生成します。 これは、コントラクトのメタデータと呼ばれます。 このメタデータを分散型ストレージネットワークに保存すると、永続的に利用可能になり、コントラクトのソースコードを検証するのに役立ちます。
ただし、学習目的で、Etherscanまたはその他のブロックエクスプローラーで契約を確認する予定がない場合は、SwarmまたはIPFSのいずれかを選択するか、単に無視して学習の次のステップに進むことができます。 この段階での主な焦点は、コントラクトの記述、コンパイル、および配置の方法を理解することです。