Polymarket Relayer Client Tutorial
A practical TypeScript walkthrough of the Polymarket Relayer Client: installation, wallet handling, common flows (approvals, split/merge, orders), and tips for gasless integration.
Polymarket Relayer Client Tutorial
このガイドは、TypeScript で Polymarket Relayer Client を使い、ガス不要のフローを構築する方法を示します: ウォレットのデプロイ、ERC-20 承認の処理、CTF の split/merge/redeem 操作、そして CLOB での注文発注。Polymarket とガスレスに統合するには、Polymarket Relayer Client がまず使うべき開発者向けの SDK です。
主なポイント
- Polymarket Relayer Client は、ウォレットのデプロイ、承認、CTF 操作、注文発注を扱う TypeScript と Python の SDK を提供します。
- Polymarket のトランザクションはエンドユーザーにとってガス不要です。Relayer がガスをスポンサーし、ウォレットのデプロイや承認を抽象化します。
- 一般的なフローは: ウォレット導入 → 承認確認/承認 → split(完全セットをミント)→ 注文作成(指値または FAK)→ 解決後に merge/redeem。
- 常に解決や決済のリスクを設計に織り込んでください: UMA の異議申し立て、部分約定/スリッページ、タイミングリスクなどが実在します。
このガイドの対象者
このガイドは、Polymarket の CLOB に注文を送り、CTF とやり取りする統合、ボット、あるいは UX コンポーネントを構築する開発者向けです。TypeScript、EVM ウォレット(MetaMask、Rabby 等)、および基本的な web3 の概念に慣れていることを想定しています。
SDK がカバーする内容の概要
- ウォレット導入: 初回使用時の Proxy ウォレットのデプロイ、または既存の Gnosis Safe の利用。
- pUSD や split/merge で使うトークンの ERC-20 承認管理。
- CTF 操作: outcome トークン(ERC-1155)の split、merge、redeem。
- Relayer 経由での CLOB への注文発注とキャンセル。
- Builder として動作する場合のビルダー帰属ヘッダ(Builder Program のドキュメント参照)。
注: Polymarket は Polygon(chain ID 137)を使用し、決済資産は pUSD(Polymarket のラップされた USDC)です。すべてのユーザー トランザクションは Relayer を通じてガスレスになります。
インストールと最初の手順
TypeScript パッケージと標準的な web3 プロバイダパッケージをインストールします。正確なパッケージ名はリリースによって異なる場合があります。以下の例は Relayer SDK に一般的な正規のインポートパスを使っています。プロジェクトでパッケージ名が異なる場合は SDK の README を参照してください。
Shell
npm install @polymarket/relayer-client ethers
Basic initialization (TypeScript)
import { RelayerClient } from '@polymarket/relayer-client';
import { ethers } from 'ethers';
// Use a wallet provider exposed in the browser (MetaMask, Rabby, etc.)
const provider = new ethers.providers.Web3Provider((window as any).ethereum);
const signer = provider.getSigner();
const relayer = new RelayerClient({
signer,
network: 'polygon', // Polymarket runs on Polygon (chainId 137)
});
上の例についての注意: RelayerClient のコンストラクタとオプションオブジェクトは説明目的の例です。正確なコンストラクタ署名や利用可能なオプションは SDK の README を確認してください。
オンボーディング: ウォレットのデプロイと承認
Polymarket は 2 つのウォレットモデルをサポートします: 事前にデプロイされた Gnosis Safe と、最初のトランザクションで自動デプロイされる Proxy ウォレット。Relayer SDK は両方のフローを扱い、デプロイのガスをスポンサーします。
UX に実装すべき一般的なオンボーディング手順:
- ユーザーに既に Proxy か Safe があるか検出する。なければ SDK の deploy-on-first-use ヘルパーを呼ぶ。
- ユーザーがウォレットに pUSD を持っていることを確認する。なければブリッジや入金方法を案内する(Polymarket の資金調達ガイド参照)。
- pUSD の ERC-20 承認状況をチェックし、必要なら Relayer を通じてガスレス承認を促す。
例: 承認のチェックとリクエスト (TypeScript)
// Pseudocode — adapt to SDK methods
const pUsdAddress = '0x...'; // use SDK constant if provided
const allowance = await relayer.checkAllowance(pUsdAddress);
if (allowance.lt(requiredAmount)) {
await relayer.requestApproval(pUsdAddress, requiredAmount);
}
Relayer がガスをスポンサーするため、承認コールはユーザーが直接オンチェーンのガストランザクションに署名するのではなく、Relayer 経由で送信されます。
CTF フロー: split、merge、redeem
Conditional Token Framework (CTF) は、Polymarket が結果を表現する方法(ERC-1155 トークン)です。完全セットを買いたいときの典型的なシーケンス:
- split: pUSD を消費して outcome トークンの完全セットをミント
- 取引後、merge: 残った outcome トークンを共通ポジションに戻す
- redeem: 解決後、勝者トークンを燃やして 1.00 ドルずつ換金
例: split (TypeScript)
// Pseudocode using the Relayer SDK
const conditionId = '0x...';
const amount = ethers.utils.parseUnits('1.0', 6); // pUSD has 6 decimals
await relayer.split(conditionId, amount);
SDK は必要な承認と Relayer へのサブミッションを処理します。split の後、ユーザーの Proxy または Safe に ERC-1155 の outcome トークンが届きます。
CLOB での注文発注
CLOB は注文発注とオーダーブックの読み取りを公開しています。Relayer Client は注文発注を Relayer 経由でルーティングし、Builder として動作する場合はビルダー帰属ヘッダを処理します。
重要な注文タイプ:
- 指値注文: ブックに出してメイカーになる可能性(メイカーフィーはゼロ)。
- 成行注文(FAK): SDK は即時実行または取り消しとなる FAK 注文を作るヘルパーを提供します。
例: FAK 成行注文を発注する (TypeScript)
// Conceptual example
const instrumentId = 'POLY_MARKET_INSTRUMENT_ID';
const side = 'buy';
const size = ethers.utils.parseUnits('10', 6);
const result = await relayer.createMarketOrder({
instrumentId,
side,
size,
slippageTolerance: 0.01, // 1% slippage protection
});
console.log('fill result', result);
Builder として動作する場合は、Builder Program に従って帰属ヘッダやビルダー資格情報を含めてください。Builder Program は段階的なリレイ限度と報酬を提供します。資格情報は https://polymarket.com/settings で取得します。
マーケットデータの読み取りと WebSocket
トレード以外の読み取りには、Polymarket の公開 REST と WebSocket を使用します:
- Gamma API: https://gamma-api.polymarket.com (markets, events)
- Data API: https://data-api.polymarket.com (positions, trades, open interest)
- CLOB API: https://clob.polymarket.com (orderbook and order placement APIs)
- Market WebSocket: wss://ws-subscriptions-clob.polymarket.com/ws/market でリアルタイムのブック更新
マーケット WS フィードにサブスクライブする際は、best_bid_ask イベントを受け取るために custom_feature_enabled: true をリクエストし、接続ごとに 500 銘柄のサブスクリプション制限を守ってください。
エラーハンドリングとよくある落とし穴
- 部分約定: 成行注文(FAK)は部分的に約定する可能性があります。常に結果を検査し、残量を処理してください。
- スリッページ: 野心的な成行注文はスリッページ保護を設定して守ってください。SDK は市場ヘルパーでスリッページ設定を公開していることが多いです。
- 解決と決済のタイミング: UMA の異議申し立ては決済を停止する可能性があります。UI と会計処理は redeem が完了するまで未決済資金を反映するよう設計してください。
- ティックサイズの変更: ティックサイズは価格が極端な領域に近づくと $0.01 から $0.001 に移行します。tick_size_change の WebSocket イベントを処理してください。
テスト戦略
- エンドツーエンドのサンドボックス: フルオンボーディングを実行 — Proxy ウォレットのデプロイ、承認のリクエスト、split、注文の発注、そして merge/redeem。
- ラッパー関数のユニットテスト: relayer メソッドをモックして、正しい承認と split シーケンスが呼ばれることをアサートする。
- レート制限に注意: Gamma の /markets はレート制限があります(/markets は 300 req / 10 s)。読み取りはバッチやキャッシュを使ってください。
これがトレードやボットロジックに与える影響
Polymarket Relayer Client を使うと、エンドユーザーのガス管理が不要になり、Proxy のデプロイや承認を自動化してオンボーディングが簡素化されます。ボットにとっては戦略とマーケットデータに集中でき、SDK は split/merge と注文フローの統合面を減らします。ただし、スリッページ、部分約定、オラクル異議などの非実行リスクは依然として管理する必要があります。
参考と次のステップ
- Polymarket API ベース URL: Gamma (https://gamma-api.polymarket.com), Data (https://data-api.polymarket.com), CLOB (https://clob.polymarket.com)
- Market WebSocket: wss://ws-subscriptions-clob.polymarket.com/ws/market
- Builder Program の詳細と資格情報: https://polymarket.com/settings
補足: Polymarket は Relayer を通じてガスをスポンサーし、典型的なウォレットと CTF のワークフローを簡略化する TypeScript と Python の SDK を提供しています。Polymarket Relayer Client は CLOB と CTF とやり取りするガスレス統合を構築するための推奨ルートです。
よくある質問
Polymarket Relayer Client とは何ですか?
Polymarket Relayer Client は、TypeScript と Python の SDK で、ユーザーのトランザクションを Polymarket の Relayer 経由でルーティングし、ウォレットのデプロイ、ERC-20 承認、CTF 操作、注文発注を処理してエンドユーザーにガスレスな取引体験を提供します。
ユーザーは取引にまだ pUSD が必要ですか?
はい。Polymarket の決済資産は pUSD(ラップされた USDC)です。Relayer はガスをスポンサーしますが、ユーザーは split 操作や注文発注を行うために pUSD を保有している必要があります。
Relayer Client を通じて Builder として動けますか?
はい。Builder Program により、サードパーティは帰属ヘッダを付与して注文をルーティングし、ビルダーフィーを得ることができます。資格情報は https://polymarket.com/settings で取得し、SDK が要求する通りにビルダーヘッダを含めてください。
Relayer Client は承認とウォレットのデプロイを自動で扱いますか?
SDK は初回使用時の自動 Proxy ウォレットデプロイや Relayer 経由のガスレス ERC-20 承認を行うヘルパーを提供し、オンボーディングを簡素化します。
リアルタイムのオーダーブック更新はどこで読めますか?
Market WebSocket wss://ws-subscriptions-clob.polymarket.com/ws/market にサブスクライブしてください。best_bid_ask イベントを受け取るには custom_feature_enabled: true をリクエストし、500 銘柄のサブスクリプション上限に注意してください。
参照用語
関連ガイド
教育目的の情報のみ。金融・法務・税務の助言ではありません。Polymarket はお住まいの地域で利用できない場合があります。