Skip to content

Commit 383f452

Browse files
authored
docs: replace private escrow source links
Replace private hosted custody contract source links with public explorer links and disclose pending explorer source verification/public source publication.
1 parent e218ddc commit 383f452

3 files changed

Lines changed: 30 additions & 14 deletions

File tree

changelog.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [2.49.10] - 2026-06-12
6+
7+
Hosted custody docs now link to the public contract explorer pages instead of private GitHub source paths, and explicitly disclose that explorer source verification/public source publication is still pending.
8+
9+
### Fixed
10+
11+
- **`docs/concepts/hosted-custody.mdx`**: Replaced the broken private `pmxt-dev/pmxt-trading` source links in the deployed-contracts table with public Polygonscan/BscScan explorer links for the current Polygon `PreFundedEscrow` (`0x3ad326f78b1390b9a5dc5f00e7f62f8632de23e2`) and BSC `VenueEscrow` (`0x6a273643d84edbb603b808d8a724fb963c7a298a`) deployments. Added a warning that the explorers show deployed bytecode but are not source-verified yet, so users should treat the explorer addresses plus the unaudited status as the current public security posture. Removed remaining private-source links from the admin-model and withdrawal-delay copy.
12+
513
## [2.49.9] - 2026-06-11
614

715
Kalshi API hostname fix. The `api.external-api.kalshi.com` domain was decommissioned by Kalshi, causing all Kalshi ingest runs to fail with `ENOTFOUND` for approximately 2.6 days. Updated all hardcoded URLs to the current hostnames.

docs/concepts/hosted-custody.mdx

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,20 @@ If anything here disagrees with what you read in [Hosted trading](/concepts/host
1111

1212
There are two contracts, on two chains. Both are non-upgradeable, non-pausable, with no Ownable role — only an immutable `operator` set at deploy time.
1313

14-
| Contract | Chain | ChainId | Mainnet address | Source |
15-
| -------- | ----- | ------- | --------------- | ------ |
16-
| `PreFundedEscrow` (HomeEscrow) | Polygon | 137 | `0x3ad326f78b1390b9a5dc5f00e7f62f8632de23e2` | [PreFundedEscrow.sol](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/PreFundedEscrow.sol) |
17-
| `VenueEscrow` | BSC | 56 | `0x6a273643d84edbb603b808d8a724fb963c7a298a` | [VenueEscrow.sol](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/VenueEscrow.sol) |
14+
| Contract | Chain | ChainId | Mainnet address | Explorer |
15+
| -------- | ----- | ------- | --------------- | -------- |
16+
| `PreFundedEscrow` (HomeEscrow) | Polygon | 137 | `0x3ad326f78b1390b9a5dc5f00e7f62f8632de23e2` | [Polygonscan](https://polygonscan.com/address/0x3ad326f78b1390b9a5dc5f00e7f62f8632de23e2) |
17+
| `VenueEscrow` | BSC | 56 | `0x6a273643d84edbb603b808d8a724fb963c7a298a` | [BscScan](https://bscscan.com/address/0x6a273643d84edbb603b808d8a724fb963c7a298a) |
1818

1919
Verify each one on the explorer before you fund:
2020

2121
- Polygon `PreFundedEscrow`: `https://polygonscan.com/address/0x3ad326f78b1390b9a5dc5f00e7f62f8632de23e2`
2222
- BSC `VenueEscrow`: `https://bscscan.com/address/0x6a273643d84edbb603b808d8a724fb963c7a298a`
2323

24+
<Warning>
25+
The explorer pages currently show the deployed contract bytecode, but the source code is not explorer-verified yet. Public source links will be added here once verification/public source publication is complete; until then, treat the explorer addresses above as the public deployment identifiers and the unaudited status below as the security posture.
26+
</Warning>
27+
2428
<Info>
2529
The SDK reads the live address from the trading API at runtime; if PMXT ever migrates the escrow, the SDK picks it up automatically. The mainnet addresses above are the current production deployment. Testnet deployments are environment-scoped and not listed here — check `trade.pmxt.dev`'s config endpoint, or your self-hosted trading-api's `PREFUNDED_ESCROW_ADDRESS` / `VENUE_ESCROW_ADDRESS` env vars.
2630
</Info>
@@ -60,7 +64,7 @@ The trust property worth checking is "PMXT (the operator) cannot drain user fund
6064

6165
## Operator / admin model
6266

63-
There is no admin. The contracts have **no `Ownable`, no `Pausable`, no upgrade proxy, no upgrade timelock, no fee setter**. Read the source: the entire privileged surface is the `onlyOperator` modifier in [OutcomeCustody.sol](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/OutcomeCustody.sol), and the `operator` address is `immutable` — set once in the constructor and unchangeable for the life of the contract.
67+
There is no admin. The contracts have **no `Ownable`, no `Pausable`, no upgrade proxy, no upgrade timelock, no fee setter**. The entire privileged surface is the `onlyOperator` modifier in the shared `OutcomeCustody` base contract, and the `operator` address is `immutable` — set once in the constructor and unchangeable for the life of the contract.
6468

6569
What this means concretely:
6670

@@ -113,7 +117,7 @@ PreFundedEscrow.withdraw(amount); // amount in USDC micro-units
113117
This debits your in-escrow balance immediately and records a pending withdrawal claimable after `WITHDRAWAL_DELAY` seconds.
114118

115119
<Warning>
116-
The deployed `WITHDRAWAL_DELAY` is **60 seconds**, set as a constant in [OutcomeCustody.sol#L36](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/OutcomeCustody.sol). Older versions of [Escrow lifecycle](/guides/escrow-lifecycle) referred to "~1 hour" — that was a forward-looking value; the production contract uses 60 seconds today. We will lengthen the timelock before raising the value of funds the operator manages; this page will reflect the change.
120+
The deployed `WITHDRAWAL_DELAY` is **60 seconds**. Older versions of [Escrow lifecycle](/guides/escrow-lifecycle) referred to "~1 hour" — that was a forward-looking value; the production contract uses 60 seconds today. We will lengthen the timelock before raising the value of funds the operator manages; this page will reflect the change.
117121
</Warning>
118122

119123
### Step 3 — Wait the timelock, then claim
@@ -128,7 +132,7 @@ That's it — your USDC is back in your wallet without any signature from or cal
128132

129133
### If you also hold Opinion outcome tokens on BSC
130134

131-
`VenueEscrow` exposes the same shape on BSC. Use `withdrawTokens(tokenId, amount)` → wait → `claimTokensWithdrawal(tokenId)`. Source: [OutcomeCustody.sol](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/OutcomeCustody.sol#L129).
135+
`VenueEscrow` exposes the same shape on BSC. Use `withdrawTokens(tokenId, amount)` → wait → `claimTokensWithdrawal(tokenId)`.
132136

133137
## Failure modes
134138

docs/llms-full.txt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1614,17 +1614,21 @@ If anything here disagrees with what you read in [Hosted trading](https://pmxt.d
16141614

16151615
There are two contracts, on two chains. Both are non-upgradeable, non-pausable, with no Ownable role — only an immutable `operator` set at deploy time.
16161616

1617-
| Contract | Chain | ChainId | Mainnet address | Source |
1618-
| -------- | ----- | ------- | --------------- | ------ |
1619-
| `PreFundedEscrow` (HomeEscrow) | Polygon | 137 | `0x3ad326f78b1390b9a5dc5f00e7f62f8632de23e2` | [PreFundedEscrow.sol](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/PreFundedEscrow.sol) |
1620-
| `VenueEscrow` | BSC | 56 | `0x6a273643d84edbb603b808d8a724fb963c7a298a` | [VenueEscrow.sol](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/VenueEscrow.sol) |
1617+
| Contract | Chain | ChainId | Mainnet address | Explorer |
1618+
| -------- | ----- | ------- | --------------- | -------- |
1619+
| `PreFundedEscrow` (HomeEscrow) | Polygon | 137 | `0x3ad326f78b1390b9a5dc5f00e7f62f8632de23e2` | [Polygonscan](https://polygonscan.com/address/0x3ad326f78b1390b9a5dc5f00e7f62f8632de23e2) |
1620+
| `VenueEscrow` | BSC | 56 | `0x6a273643d84edbb603b808d8a724fb963c7a298a` | [BscScan](https://bscscan.com/address/0x6a273643d84edbb603b808d8a724fb963c7a298a) |
16211621

16221622
Verify each one on the explorer before you fund:
16231623

16241624
- Polygon `PreFundedEscrow`: `https://polygonscan.com/address/0x3ad326f78b1390b9a5dc5f00e7f62f8632de23e2`
16251625
- BSC `VenueEscrow`: `https://bscscan.com/address/0x6a273643d84edbb603b808d8a724fb963c7a298a`
16261626

16271627

1628+
> **Warning:**
1629+
The explorer pages currently show the deployed contract bytecode, but the source code is not explorer-verified yet. Public source links will be added here once verification/public source publication is complete; until then, treat the explorer addresses above as the public deployment identifiers and the unaudited status below as the security posture.
1630+
1631+
16281632
> **Note:**
16291633
The SDK reads the live address from the trading API at runtime; if PMXT ever migrates the escrow, the SDK picks it up automatically. The mainnet addresses above are the current production deployment. Testnet deployments are environment-scoped and not listed here — check `trade.pmxt.dev`'s config endpoint, or your self-hosted trading-api's `PREFUNDED_ESCROW_ADDRESS` / `VENUE_ESCROW_ADDRESS` env vars.
16301634

@@ -1664,7 +1668,7 @@ The trust property worth checking is "PMXT (the operator) cannot drain user fund
16641668

16651669
#### Operator / admin model
16661670

1667-
There is no admin. The contracts have **no `Ownable`, no `Pausable`, no upgrade proxy, no upgrade timelock, no fee setter**. Read the source: the entire privileged surface is the `onlyOperator` modifier in [OutcomeCustody.sol](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/OutcomeCustody.sol), and the `operator` address is `immutable` — set once in the constructor and unchangeable for the life of the contract.
1671+
There is no admin. The contracts have **no `Ownable`, no `Pausable`, no upgrade proxy, no upgrade timelock, no fee setter**. The entire privileged surface is the `onlyOperator` modifier in the shared `OutcomeCustody` base contract, and the `operator` address is `immutable` — set once in the constructor and unchangeable for the life of the contract.
16681672

16691673
What this means concretely:
16701674

@@ -1718,7 +1722,7 @@ This debits your in-escrow balance immediately and records a pending withdrawal
17181722

17191723

17201724
> **Warning:**
1721-
The deployed `WITHDRAWAL_DELAY` is **60 seconds**, set as a constant in [OutcomeCustody.sol#L36](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/OutcomeCustody.sol). Older versions of [Escrow lifecycle](https://pmxt.dev/docs/guides/escrow-lifecycle) referred to "~1 hour" — that was a forward-looking value; the production contract uses 60 seconds today. We will lengthen the timelock before raising the value of funds the operator manages; this page will reflect the change.
1725+
The deployed `WITHDRAWAL_DELAY` is **60 seconds**. Older versions of [Escrow lifecycle](https://pmxt.dev/docs/guides/escrow-lifecycle) referred to "~1 hour" — that was a forward-looking value; the production contract uses 60 seconds today. We will lengthen the timelock before raising the value of funds the operator manages; this page will reflect the change.
17221726

17231727

17241728
##### Step 3 — Wait the timelock, then claim
@@ -1733,7 +1737,7 @@ That's it — your USDC is back in your wallet without any signature from or cal
17331737

17341738
##### If you also hold Opinion outcome tokens on BSC
17351739

1736-
`VenueEscrow` exposes the same shape on BSC. Use `withdrawTokens(tokenId, amount)` → wait → `claimTokensWithdrawal(tokenId)`. Source: [OutcomeCustody.sol](https://github.com/pmxt-dev/pmxt-trading/blob/main/contracts/src/OutcomeCustody.sol#L129).
1740+
`VenueEscrow` exposes the same shape on BSC. Use `withdrawTokens(tokenId, amount)` → wait → `claimTokensWithdrawal(tokenId)`.
17371741

17381742
#### Failure modes
17391743

0 commit comments

Comments
 (0)