Current section
Files
Jump to
Current section
Files
polymarket_clob
CHANGELOG.md
CHANGELOG.md
# Changelog
## 0.2.0 - 2026-07-25
### Added
- **`PolymarketClob.Order.Payload.post_body/2`** — converts a
signed order (builder output) into the exact `POST /order`
request body the official Python v2 client sends (`order`
wrapper, `orderType`, `owner`, `deferExec`, `postOnly`; side
`0/1 → "BUY"/"SELL"`, salt string → integer). Pinned
byte-identical against the `post_body` entries in
`test/fixtures/parity/orders.json`. This closes the last gap in
the local order pipeline: build → sign → **payload** → post.
### Fixed
- **Order salt bounded to 48 bits** (`Order.Builder`). Full 64-bit
random salts (values > 2^63) intermittently broke the CLOB
signature check: the exchange parses the POSTed salt as a
limited-precision JSON integer, so any value above the JS/JSON
safe-integer range (2^53) is silently rounded — the exchange then
hashes a *different* salt than the one that was signed, and the
signature no longer matches. Result: ~70% of otherwise-valid orders
rejected with `"Invalid order payload"`. Salt is now drawn from
48 bits (`< 2^53`), which serializes losslessly and stays
collision-astronomically-safe at any real order volume.
## 0.1.0
- Initial package skeleton.
- Added parity-fixture-backed CLOB authentication and order-signing primitives.