本文へスキップ

    / で検索、[ と ] で前後のページに移動します。

    開発者向けリファレンス

    EIP-712

    コントラクトとリレイヤーが検証する型付きデータの正確な内容です。型文字列とハッシュは、コントラクトがエクスポートする定数から取り、ビルド時にTypeScriptの定義と照合しています。

    型

    型ドメイン署名者オンチェーンで検証
    OpenPositionexchangeウォレットまたはセッションキーはい
    型の文字列 OpenPosition(address user,uint32 instrumentId,bool isLong,uint128 size,uint32 leverage,bool useDebt,uint256 nonce,uint64 deadline)
    タイプハッシュ 0xfce2fb41f9ff0457a0f012e62cfd6a7cff4e8439ae20008ab6979c740ba5a983
    Closeexchangeウォレットまたはセッションキーはい
    型の文字列 Close(address user,uint256[] positionIds,uint256 nonce,uint64 deadline)
    タイプハッシュ 0x9cc23a52214afa42e1ae53cdb2e79dc2d0cd33c33faca383ed3b149300adcb13
    WithdrawToCoreexchangeウォレットのみはい
    型の文字列 WithdrawToCore(address user,uint256 amount,uint256 nonce,uint64 deadline)
    タイプハッシュ 0xac4ddb8d63e9d7a862c5d61ce47517623a448262414a7eef6797102104b31214
    RegisterSessionKeyexchangeウォレットのみはい
    型の文字列 RegisterSessionKey(address user,address key,uint64 expiry,address feeAddress,uint256 nonce,uint64 deadline)
    タイプハッシュ 0xd3d9a309f635415423ab81e7e3fb16d2117cc8e1edc90506adde9eaa3855edd2
    RegisterSessionKeyV2exchangeウォレットのみはい
    型の文字列 RegisterSessionKeyV2(address user,address key,uint64 expiry,address feeAddress,uint64 maxBuilderFee,address referrer,uint256 nonce,uint64 deadline)
    タイプハッシュ 0x768549c4ec62ba892ffe75fc24ce07bdbe7e6b6f0f359e49248461f08920a885
    RevokeSessionKeysexchangeウォレットのみはい
    型の文字列 RevokeSessionKeys(address user,address[] keys,bool all,uint256 nonce,uint64 deadline)
    タイプハッシュ 0x01026316a272dd97577cb59b037b3a0753aaf9bb1e3e933c358f48655bc6f9a0
    Stakestakingウォレットのみはい
    型の文字列 Stake(address user,uint256 amount,uint256 nonce,uint64 deadline)
    タイプハッシュ 0x0e9469f2731f138fe05733a3ab1961961d9def010d73419c3f5b55ae6d64e8b0
    Unstakestakingウォレットのみはい
    型の文字列 Unstake(address user,uint256 amount,uint256 nonce,uint64 deadline)
    タイプハッシュ 0x1ecc9b0f79f4bb74abad4adb49babe57570219b3bc83a569a9b25299f833a9ce
    Claimstakingウォレットのみはい
    型の文字列 Claim(address user,uint256 nonce,uint64 deadline)
    タイプハッシュ 0x98df9450683706f5e3c8e5a81515893081ae7460248fbba60c7781957adc9f8f
    Distributestakingウォレットのみはい
    型の文字列 Distribute(address user,uint256 nonce,uint64 deadline)
    タイプハッシュ 0x23f3bc470a64f8283203a55adc575bcd5f81b7c537b6831c6886e4a0e2101e5a
    CancelIntentcancelウォレットまたはセッションキーいいえ(リレイヤーのみ)
    型の文字列 CancelIntent(address user,bytes32 intentId,uint256 deadline)
    タイプハッシュ 0xa35cd971369839445ca1bec7da15d6528a097bd9c3d0ebaf7d5d4f368f537b71

    EIP-712ドメイン: メインネット · チェーンID 999

    近日公開:このネットワークにコントラクトがデプロイされしだい、ここに掲載します。

    ドメイン

    すべての署名は三つのドメインで行われます。

    • Exchange:検証コントラクトはExchangeのプロキシです。取引、出金、セッションキーに使います。これらの署名は、SessionKeyManagerがExchangeのために検証します。
    • Staking:検証コントラクトはStakingのプロキシです。ステーク、アンステーク、受け取り、分配に使います。
    • Cancel:検証コントラクトはExchangeのプロキシで、独自の名前を持ちます。確認するのはリレイヤーだけで、コントラクトは確認しません。

    三つとも、四つのフィールド(name、version、chainId、verifyingContract)を持つ完全なドメインを使います。どちらのコントラクトも、ERC-5267のeip712Domain()でドメインを公開しています。

    ノンスと期限

    ノンスに順序はありません。各アカウントはビットマップを持ち、ノンスnはワードn / 256のビットn mod 256を使います。未使用のノンスなら、どれでも、どの順番でも使えます。ウォレットからinvalidateUnorderedNonces(word, mask)を呼べば、何にも署名せずにオンチェーンでノンスを無効化できます。

    クライアントは1時間後の期限で署名し、リレイヤーは最大61分後までの期限を受け付けます。

    転送形式

    転送時、整数のフィールドはすべて正規の十進文字列、アドレスとハッシュはすべて小文字の十六進数です。署名は、メッセージのフィールドと並べてv、r、sとして送ります。sが大きい署名は拒否されます。

    インテントID

    リレイヤーは、署名済みの各メッセージを次の値で識別します。

    intentId = keccak256( keccak256(utf8(intentIdTag)) ‖ digest ‖ signer )
    

    これはパディングなしで連結したもので、32バイトのタグハッシュ、32バイトのEIP-712ダイジェスト、20バイトの復元された署名者(セッションキーで署名したメッセージではセッションキー)からなります。各ネットワークのタグはコントラクトアドレスに記載しています。署名のバイト列はIDに含まれないため、展性を利用して改変した署名で新しいIDを作ることはできません。

    最終更新: