Polymarket Bot Tutorial · 第32章中6章目
Polymarket botの認証とウォレット設定:proxy walletとEOAの違い、SDK経由のAPIキー生成、Gnosis Safe向けのsigType 2、鍵の保管ベストプラクティス、そしてMagicからPrivyへの移行。
この章で扱う内容
Polymarketのウォレットモデルには3つの要素があります。注文に署名する externally owned account(EOA)、資金を保有する smart-contract proxy、そしてHTTPリクエストを認証する Polymarket CLOB API key です。この3つを正しく連携させることは、新規ビルダーにとってDay 1で最もよくある失敗であり、2025年8月のMagic LabsからPrivyへの移行以降はさらに分かりにくくなりました。この章では、各要素をセットアップ順に、production codeで必要になる具体的な環境変数と signature-type フラグとともに解説します。
- Proxy walletとEOA: botで使うのはどちらか
- API keyの生成(SDK手順)
- sigType 2とPOLY_FUNDER_ADDRESS(Gnosis Safe)
- 鍵の保管:.env、vault、KMS
- Magic LabsからPrivyへの移行
- USDC/pUSD spendingの承認
- Walletの復旧とバックアップ
Proxy walletとEOA: botで使うのはどちらか
Polymarketはsmart-contract proxy walletのパターンを使っています。あなたのEOA-private keyに紐づくアドレス-がtransactionsとordersに署名します。決定論的なアドレスにデプロイされたGnosis Safeが、実際のpUSDとoutcome sharesを保有します。Proxy address はPolymarket UIの「wallet」パネルに表示されるもので、署名を行うのはEOAです。
botでは、常にEOA(env内のPRIVATE_KEY)で署名し、CLOB client configではproxy addressをPOLY_FUNDER_ADDRESSとして参照します。funderとしてEOAを使ってorderを送ると、proxyに資金があっても「insufficient balance」エラーになります。
EOAだけでbot運用することはできません。Polymarketのweb flowは、signup時に必ずproxyを作成します。CLIのpolymarket wallet showで両方のアドレスを確認するか、Polymarket UIのsettingsからproxy addressを確認してください。
API keyの生成(SDK手順)
CLOB APIには3つの認証情報が必要です。key、secret、passphraseです。これらはwallet private keyではありません。walletに紐づいたHMAC形式の認証情報セットで、HTTP request authentication専用です。
SDKで一度だけ生成します。
# Python
from py_clob_client.client import ClobClient
c = ClobClient(host="https://clob.polymarket.com", chain_id=137,
key="<PRIVATE_KEY>", signature_type=2,
funder="<PROXY_ADDRESS>")
creds = c.create_or_derive_api_creds()
print(creds.api_key, creds.api_secret, creds.api_passphrase)
出力はJSONファイルに保存し、bot起動のたびに読み込んでください。セッションごとに再生成してはいけません。API serverは認証情報セットをキャッシュしており、頻繁なローテーションはrate-limit logicを引き起こすことがあります。認証情報は自動では期限切れになりません。漏えいの疑いがある場合にのみローテーションしてください。
sigType 2とPOLY_FUNDER_ADDRESS(Gnosis Safe)
signature_type引数は、CLOBがorder署名をどのように検証するかを制御します。値は3つありますが、実際に使うのは2つです。
- 0 / EOA: EOAがsignerかつfunder。private keyを直接インポートした特殊なセットアップ向けです。
- 1 / POLY_PROXY: 旧Magic Labs proxy contract。2025年以前のほとんどのアカウント。
- 2 / POLY_GNOSIS_SAFE: 現在の標準。資金はGnosis Safeにあり、EOAが署名します。
2025年8月以降に作成されたアカウント(Privy移行後)や、Polymarket UIでGnosis Safe addressが見えるアカウントでは、必ずsignature_type=2を使ってください。POLY_FUNDER_ADDRESS環境変数には、EOAではなくSafe addressを指定する必要があります。funder typeと不一致のsignature_typeを使うと、「insufficient allowance」や「balance: 0」のような order rejection が黙って返されます。エラーメッセージは誤解を招きます。
鍵の保管:.env、vault、KMS
EOA private keyの現実的な保管方法は3段階あります。
- .env file(単一マシンでの開発)。ファイルはVPS上に置かれ、botは起動時にそれを読み込み、keyはホストの外に出ません。<$1kのwalletなら十分です。
chmod 600 .envを実行し、repoの.gitignoreに必ず含めてください。 - Self-hosted vault(HashiCorp Vault、ageで暗号化したファイル、またはsystemd-creds)。bot起動時にunlock stepが追加されます。$1k-$10kのwalletなら導入する価値があります。
- Cloud KMS(AWS KMS、GCP KMS)。botがKMSを呼び出してmemory上でkeyを復号し、keyはdiskに触れません。運用の複雑さに見合うのは$10k超、または複数bot fleetの場合です。
絶対にやってはいけないこと:private keyをgitにcommitする、chatに貼る、local-only modeのないクラウド同期付きpassword managerに保存すること。Polymarket EOAが漏えいした場合のon-chain blast radiusは、pUSD残高とoutcome share inventoryのすべてです。
Magic LabsからPrivyへの移行
2025年8月、Polymarketは埋め込みウォレットの主要プロバイダをMagic LabsからPrivyへ移行しました。botから見た影響は小さいですが、具体的です。
移行前のアカウント(Magic経由で作成)は通常signature_type=1(POLY_PROXY)を使います。移行後のアカウントはsignature_type=2(POLY_GNOSIS_SAFE)を使います。古いアカウントを移行したユーザーもいれば、元のまま使い続けたユーザーもいます。public APIだけで、アカウントがどちらのタイプを使っているかを見分ける方法はありません。orderへの署名を試し、rejectionを確認して判定します。
この移行では、UIでfunder addressの見え方も変わりました。以前のPolymarket UI flowではdashboardにproxy addressが表示されていましたが、現在のflowではaccount settingsの中に隠れています。CLIのpolymarket wallet showを使うのが、アカウント作成時期に関係なく両方の値を確認する最も確実な方法です。
USDC/pUSD spendingの承認
CLOBがorder match時にあなたのpUSDを動かすには、proxyがPolymarket exchange contractsをspenderとして承認している必要があります。Polymarket UIは最初のdeposit時にこれらのapprovalを設定します。proxyへ直接fundするbotでは、手動で設定する必要があります。
walletごとに一度だけ設定する3つのapproval:
- pUSD (ERC-20) → exchange contract
- Conditional Tokens (ERC-1155) → exchange contract(sharesを売る場合)
- Conditional Tokens (ERC-1155) → NegRisk exchange contract(NegRisk sharesを売る場合)
初回セットアップ時にCLIからpolymarket approveを実行してください。transactionのgas代は数セント程度のMATICです。polymarket approve checkで確認すると、3つすべてが「approved」を返すはずです。新規ビルダーで最も多い無言のバグはNegRisk approvalの不足で、multi-outcome marketのsharesを売るときにだけ失敗し、balance errorのように見えます。
Walletの復旧とバックアップ
botのwalletには、復旧可能な要素が2つあります。EOA private keyと、Polymarket account passwordです。後者はweb UIからのアクセスを制御しますが、SDKからのアクセスは制御しません。
botにとって重要なのはEOA private keyだけです。失えばproxy内のすべてを失います。Cold backup: 紙に書き、封筒に封入し、オフサイトで保管する。Hot backup: 暗号化したUSB stick。自分宛てにメールしてはいけません。暗号化されていないままクラウドストレージに保存してもいけません。
Polymarket account passwordは、元のsignup emailをまだ管理している限り、Magic Labs / Privyのemail recoveryで復旧できます。bot accessを左右するものではありません。botはEOA private keyを直接使うからです。
key漏えいが疑われる場合は、すぐにpUSDとoutcome tokensを新しいwalletへwithdrawし、新しいEOAを生成して、新しいkeyでbotを再デプロイしてください。漏えいしたkeyはrevokeできません。できるのは資金を抜き取ることだけです。









