seaport - Seaportは、NFTを安全かつ効率的に売買するためのマーケットプレイスプロトコルです。

(Seaport is a marketplace protocol for safely and efficiently buying and selling NFTs.)

Created at: 2022-01-21 01:56:24
Language: Solidity
License: MIT

シーポート

シーポート

Seaportは、NFTを安全かつ効率的に売買するための新しいマーケットプレイスプロトコルです。

目次

バックグラウンド

Seaportは、NFTを安全かつ効率的に売買するためのマーケットプレイスプロトコルです。各リストには、提供者が喜んで提供する任意の数のアイテム(「オファー」)と、それぞれの受信者と一緒に受信する必要のある任意の数のアイテム(「対価」)が含まれます。

Seaportの詳細については、ドキュメントインターフェイス、および完全なインターフェイスのドキュメントを参照してください。

展開

Seaport 1.1デプロイメントアドレス:

通信網 住所
イーサリアムメインネット 0x00000000006c3852cbEf3e08E8dF289169EdE581
リンケビュー 0x00000000006c3852cbEf3e08E8dF289169EdE581

コンジットコントローラの展開アドレス:

通信網 住所
イーサリアムメインネット 0x00000000F9490004C11Cef243f5400493c00Ad63
リンケビュー 0x00000000F9490004C11Cef243f5400493c00Ad63

ダイアグラム

graph TD
    Offer & Consideration --> Order
    zone & conduitKey --> Order

    subgraph Seaport[ ]
    Order --> Fulfill & Match
    Order --> Validate & Cancel
    end

    Validate --> Verify
    Cancel --> OrderStatus

    Fulfill & Match --> OrderCombiner --> OrderFulfiller

    OrderCombiner --> BasicOrderFulfiller --> OrderValidator
    OrderCombiner --> FulfillmentApplier

    OrderFulfiller --> CriteriaResolution
    OrderFulfiller --> AmountDeriver
    OrderFulfiller --> OrderValidator

    OrderValidator --> ZoneInteraction
    OrderValidator --> Executor --> TokenTransferrer
    Executor --> Conduit --> TokenTransferrer
    Executor --> Verify

    subgraph Verifiers[ ]
    Verify --> Time & Signature & OrderStatus
    end

より完全なフローチャートについては、Seaport図を参照してください。

インストール

依存関係をインストールしてコントラクトをコンパイルするには:

git clone https://github.com/ProjectOpenSea/seaport && cd seaport
yarn install
yarn build

使用法

javascriptで記述されたヘルメットテストを実行するには:

yarn test
yarn coverage

注:アーティファクトとキャッシュフォルダーは、標準テストとカバレッジテストの実行の間に削除する必要がある場合があります。

参照コントラクトに対してヘルメットテストを実行するには:

yarn test:ref
yarn coverage:ref

ガス使用量をプロファイルするには:

yarn profile

ファウンドリテスト

Seaportには、Foundryと一体となって作成された一連のファジングテストも含まれています。

Foundryをインストールするには(LinuxまたはmacOSシステムを想定):

curl -L https://foundry.paradigm.xyz | bash

これにより、foundryupがダウンロードされます。Foundryを開始するには、以下を実行します。

foundryup

依存関係をインストールするには:

forge install

コントラクトをプリコンパイルするには:

最適化されたコントラクトは、コンパイルに長い時間がかかる可能性があるIRパイプラインを使用してコンパイルされます。デフォルトでは、差分テストスイートは、最適化されたコントラクトと参照コントラクトの両方のプリコンパイルされたバージョンをデプロイします。事前コンパイルは、特定のFoundryプロファイルを指定することで実行できます。

FOUNDRY_PROFILE=optimized forge build
FOUNDRY_PROFILE=reference forge build

テストスイートを実行するための3つのFoundryプロファイルがあり、IRパイプラインをバイパスしてコンパイルを高速化します。テストを実行するには、次のいずれかを実行します。

FOUNDRY_PROFILE=test forge test # with 5000 fuzz runs
FOUNDRY_PROFILE=lite forge test # with 1000 fuzz runs
FOUNDRY_PROFILE=local-ffi forge test # compiles and deploys ReferenceConsideration normally, with 1000 fuzz runs

ローカルで開発する場合は、特定のプロファイルを含む

.env
ファイルを含めることをお勧めします。
export

スタック+デバッグトレースは、プリコンパイルされたコントラクトでは使用できないことに注意してください。ローカル開発を容易にするために、指定する

FOUNDRY_PROFILE=local-ffi
とリファレンス実装が通常どおりコンパイルおよびデプロイされ、スタックとデバッグのトレースが可能になります。

local-ffi
プロファイルがForgeの
ffi
フラグを使用していることに注意してください。
ffi
Forgeが任意のコードを実行できるため、安全でない可能性があります。特にサードパーティのフォークで作業する場合は、注意して使用し、このリポジトリ内のコードを常に信頼できるようにしてください。

次の修飾子も使用できます。

  • レベル2(-vv):テスト中に発行されたログも表示されます。
  • レベル3(-vvv):失敗したテストのスタックトレースも表示されます。
  • レベル4(-vvvv):すべてのテストのスタックトレースが表示され、失敗したテストのセットアップトレースが表示されます。
  • レベル5(-vvvvv):スタックトレースとセットアップトレースが常に表示されます。
FOUNDRY_PROFILE=test forge test  -vv

ファウンドリのテストと使用の詳細については、ファウンドリブックのインストール手順を参照してください。

lintチェックを実行するには:

yarn lint:check

Lintチェックは、prettier、prettier-plugin-solidity、およびsolhintを利用します。

"prettier": "^2.5.1",
"prettier-plugin-solidity": "^1.0.0-beta.19",

監査

OpenSeaはTrailofBitsを利用して、Seaportのセキュリティを監査しました。2022年4月18日から5月12日まで、TrailofBitsコンサルタントのチームがSeaportのセキュリティレビューを実施しました。監査では、スマートコントラクトの侵害、資金の損失、またはターゲットシステムの予期しない動作につながる可能性のある重大な欠陥は発見されませんでした。彼らの完全なレポートはここにあります

貢献

Seaportへの貢献は、より多くのテストの作成、読みやすさの向上、ガス効率の最適化、または新しいゾーン契約やその他の機能によるプロトコルの拡張に関心のある人なら誰でも歓迎します。

プルリクエストを行うときは、次のことを確認してください。

  • すべてのテストに合格します。
  • コードカバレッジは100%のままです(カバレッジテストは現在、ヘルメットで作成する必要があります)。
  • すべての新しいコードはスタイルガイドに準拠しています。
    • すべてのlintチェックに合格します。
    • 必要に応じて、コードはnatspecで徹底的にコメント化されます。
  • 契約に変更を加える場合:
    • ガスのスナップショットが提供され、改善(または他の改善が与えられた場合の許容可能な不足)を示します。
    • 参照契約は、必要に応じてそれに応じて変更されます。
    • すべての新機能またはコードパスに対して、新しいテスト(理想的にはファウンドリ経由)が含まれています。
  • サードパーティの依存関係に変更を加える場合は、
    yarn audit
    合格します。
  • PRの説明的な要約が提供されています。

ライセンス

MIT Copyright 2022 Ozone Networks、Inc.