Skip to content

Commit a66dd9d

Browse files
committed
Update mainnet deployment addresses and SDK
1 parent 2b48aca commit a66dd9d

9 files changed

Lines changed: 234 additions & 68 deletions

File tree

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Mainnet active→resting amendOrders upgrade plan — 2026-04-28
2+
3+
## Goals
4+
- Deploy the active→resting `amendOrders` contract patch to BSC mainnet.
5+
- Preserve all existing production DB data by archiving current live tables into `historical_*` before any live-table reset.
6+
- Update all contract address references across Strike repos.
7+
- Cut a new Rust SDK release tag after updating hardcoded mainnet addresses in `sdk/rust/src/config.rs`.
8+
9+
## Guardrails
10+
- `memory/strike/addresses.md` is the canonical address registry; update it before declaring done.
11+
- Do not clear or truncate `historical_*` tables.
12+
- Do not run `reset-deployment-state` until after:
13+
- production services are stopped/frozen,
14+
- a DB backup exists,
15+
- live tables are archived into `historical_*`, and
16+
- archive counts match live counts.
17+
- Use Ansible/source-of-truth deployment paths for production infra/frontend/MM; do not rely on ad-hoc prod edits.
18+
- Push intended commits before Ansible deploy so remote hosts pull the right revision.
19+
20+
## Planned sequence
21+
1. Update `contracts/script/DeployMainnet.s.sol` so it deploys/wires the full current stack:
22+
- FeeModel, OutcomeToken, Vault, OrderBook, BatchAuction, MarketFactory, PythResolver, AIResolver, Redemption.
23+
- Grant OrderBook/Vault/OutcomeToken roles.
24+
- Grant Factory admin to PythResolver, AIResolver, keeper, and resolution keeper.
25+
- Grant Factory market creator to deployer and keeper.
26+
- Set Factory AIResolver.
27+
- Grant AIResolver keeper role to keeper and resolution keeper.
28+
- Print machine-readable JSON with all addresses.
29+
2. Run contract validation locally:
30+
- `forge test` from `~/dev/strike/contracts`.
31+
- compile/dry-run deploy script if possible without broadcasting.
32+
3. Deploy new mainnet contracts with mainnet deployer key.
33+
- Capture first deploy block, final role/config tx/block, and all addresses.
34+
4. Update references:
35+
- `memory/strike/addresses.md`.
36+
- `~/dev/strike-infra/ansible/playbooks/group_vars/all.yml` with new addresses + `indexer_from_block`.
37+
- `~/dev/strike-frontend/src/lib/contracts.ts` mainnet entries.
38+
- `~/dev/strike/sdk/rust/src/config.rs` mainnet hardcoded addresses.
39+
- `~/dev/strike-mm` mainnet config/address references if present.
40+
- docs/README/CLAUDE references across Strike repos.
41+
5. Commit and push repo changes:
42+
- `strike` master.
43+
- `strike-infra` main if Ansible vars changed.
44+
- `strike-frontend` main.
45+
- `strike-mm` main if changed.
46+
6. Freeze production services:
47+
- Stop keeper, indexer, and MM. Keep frontend only if safe/read-only; otherwise deploy maintenance/brief downtime.
48+
7. Backup production state:
49+
- DB dump from mainnet host.
50+
- Copy current generated `/home/ubuntu/strike-infra/.env.mainnet`.
51+
- Copy current MM config.
52+
- Record `indexer_state.last_block` and live table counts.
53+
8. Archive current live DB into historical tables using old live addresses:
54+
- deployment label: `mainnet-pre-active-resting-amend-20260428`.
55+
- script: `scripts/archive-live-deployment.sql`.
56+
- verify historical counts match live counts for markets/orders/batches/fills/events/positions.
57+
- verify `all_filled_orders` still includes archived fills.
58+
9. Run `reset-deployment-state` only after archive verification.
59+
10. Deploy/restart production services via Ansible:
60+
- infra/indexer/keeper with new addresses and start block.
61+
- frontend with new contract map.
62+
- MM from main with new addresses/config.
63+
11. Post-cutover smoke tests:
64+
- indexer starts with new deployment fingerprint.
65+
- keeper creates/clears a new market.
66+
- API returns new live market(s).
67+
- frontend HTTP 200 and mainnet contract map correct.
68+
- MM quotes and uses `amendOrders` without active→resting revert.
69+
- archived historical counts remain present.
70+
12. SDK release:
71+
- bump SDK version if required by current release convention.
72+
- run SDK checks.
73+
- commit version/address changes.
74+
- push a new SDK release tag after deployment is confirmed.
75+
- note tag in `memory/2026-04-28.md`.

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -113,19 +113,19 @@ forge test --match-test testClearBatch -vvv
113113

114114
## Contract Addresses
115115

116-
### BSC Mainnet (deployed block `94290419`)
116+
### BSC Mainnet (deployed block `95210316`)
117117

118118
| Contract | Address |
119119
|----------|---------|
120-
| MarketFactory | `0xcbBC04B2a3EfE858c7C3d159c56f194AF2a7eBac` |
121-
| OrderBook | `0x1E7C9b93D2C939a433D87b281918508Eec7c9171` |
122-
| BatchAuction | `0xCdd122520E9efbdb5bd1Cc246aE497c37c70bdBE` |
123-
| Vault | `0x2a6EA3F574264E6fA9c6F3c691dA01BE6DaC066f` |
124-
| OutcomeToken | `0xdcA3d1Be0a181494F2bf46a5a885b2c2009574f3` |
125-
| Redemption | `0x9a46D6c017eDdA49832cC9eE315246d0B55E5804` |
126-
| FeeModel | `0x10d479354013c20eC777569618186D79eE818D8a` |
127-
| PythResolver | `0x101383ef333d5Cb7Cb154EAbcA68961e3ac5B1a4` |
128-
| AIResolver | `0xb0606b7984a2AA36774e8865E76689f98D39eE6e` |
120+
| MarketFactory | `0x34E0BCC1619dBc6A00A23b70BbaD9F36b0483d82` |
121+
| OrderBook | `0x71F7Bc523FFF296A049a45D08cBD39D39d3C047B` |
122+
| BatchAuction | `0x9d66fa0Aad92bb4428947443c1135C06a0cbFFBb` |
123+
| Vault | `0x43D5caC88a87560Db8040Bef16F0ce8871B4F7ee` |
124+
| OutcomeToken | `0xdAA6810Ca9614e2246d2849Be2a9c818707e404B` |
125+
| Redemption | `0xcC1687A27133f06dB96aF4e00E5bA91411f9c999` |
126+
| FeeModel | `0xFd7538Ad9EFEe4fCE07924F65a30688044e0800C` |
127+
| PythResolver | `0x3E0864BbC19ca92777BB4c2e02490fC0C7A44C5a` |
128+
| AIResolver | `0x3e0D91480147802D9C41068d91b7878E7943a632` |
129129
| USDT | `0x55d398326f99059fF775485246999027B3197955` |
130130

131131
### BSC Testnet (deployed block `104337216`)

contracts/README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,20 +31,20 @@ Fully on-chain prediction market protocol on BNB Chain. Binary outcome tokens (Y
3131

3232
## Live Deployments
3333

34-
### BSC Mainnet (deployed block `94290419`)
34+
### BSC Mainnet (deployed block `95210316`)
3535

3636
| Contract | Address |
3737
|----------|---------|
3838
| USDT | `0x55d398326f99059fF775485246999027B3197955` |
39-
| FeeModel | `0x10d479354013c20eC777569618186D79eE818D8a` |
40-
| OutcomeToken | `0xdcA3d1Be0a181494F2bf46a5a885b2c2009574f3` |
41-
| Vault | `0x2a6EA3F574264E6fA9c6F3c691dA01BE6DaC066f` |
42-
| OrderBook | `0x1E7C9b93D2C939a433D87b281918508Eec7c9171` |
43-
| BatchAuction | `0xCdd122520E9efbdb5bd1Cc246aE497c37c70bdBE` |
44-
| MarketFactory | `0xcbBC04B2a3EfE858c7C3d159c56f194AF2a7eBac` |
45-
| PythResolver | `0x101383ef333d5Cb7Cb154EAbcA68961e3ac5B1a4` |
46-
| AIResolver | `0xb0606b7984a2AA36774e8865E76689f98D39eE6e` |
47-
| Redemption | `0x9a46D6c017eDdA49832cC9eE315246d0B55E5804` |
39+
| FeeModel | `0xFd7538Ad9EFEe4fCE07924F65a30688044e0800C` |
40+
| OutcomeToken | `0xdAA6810Ca9614e2246d2849Be2a9c818707e404B` |
41+
| Vault | `0x43D5caC88a87560Db8040Bef16F0ce8871B4F7ee` |
42+
| OrderBook | `0x71F7Bc523FFF296A049a45D08cBD39D39d3C047B` |
43+
| BatchAuction | `0x9d66fa0Aad92bb4428947443c1135C06a0cbFFBb` |
44+
| MarketFactory | `0x34E0BCC1619dBc6A00A23b70BbaD9F36b0483d82` |
45+
| PythResolver | `0x3E0864BbC19ca92777BB4c2e02490fC0C7A44C5a` |
46+
| AIResolver | `0x3e0D91480147802D9C41068d91b7878E7943a632` |
47+
| Redemption | `0xcC1687A27133f06dB96aF4e00E5bA91411f9c999` |
4848
| Pyth Core | `0x4D7E825f80bDf85e913E0DD2A2D54927e9dE1594` |
4949

5050
### BSC Testnet (deployed block `104337216`)

contracts/script/DeployMainnet.s.sol

Lines changed: 118 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,60 +10,151 @@ import {BatchAuction} from "../src/BatchAuction.sol";
1010
import {MarketFactory} from "../src/MarketFactory.sol";
1111
import {PythResolver} from "../src/PythResolver.sol";
1212
import {Redemption} from "../src/Redemption.sol";
13+
import {AIResolver} from "../src/AIResolver.sol";
1314

1415
contract DeployMainnetScript is Script {
16+
address internal constant USDT_BSC_MAINNET = 0x55d398326f99059fF775485246999027B3197955;
17+
address internal constant PYTH_BSC_MAINNET = 0x4D7E825f80bDf85e913E0DD2A2D54927e9dE1594;
18+
19+
// BTC/USD Pyth price feed ID
20+
bytes32 internal constant BTC_USD_PRICE_ID = 0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43;
21+
22+
struct Deployed {
23+
address feeModel;
24+
address outcomeToken;
25+
address vault;
26+
address orderBook;
27+
address batchAuction;
28+
address factory;
29+
address pythResolver;
30+
address aiResolver;
31+
address redemption;
32+
address pyth;
33+
address usdt;
34+
}
35+
1536
function run() external {
1637
uint256 pk = vm.envUint("DEPLOYER_PRIVATE_KEY");
1738
address deployer = vm.addr(pk);
18-
19-
// BSC Mainnet addresses
20-
address usdt = 0x55d398326f99059fF775485246999027B3197955;
21-
address pyth = 0x4D7E825f80bDf85e913E0DD2A2D54927e9dE1594;
39+
address keeper = vm.envOr("KEEPER_ADDRESS", deployer);
40+
address resolutionKeeper = vm.envOr("RESOLUTION_KEEPER_ADDRESS", address(0));
41+
if (resolutionKeeper == address(0)) {
42+
resolutionKeeper = vm.envOr("RESOLUTION_ADDRESS", keeper);
43+
}
44+
45+
require(block.chainid == 56, "DeployMainnet: not BSC mainnet");
2246

23-
console.log("Deploying Strike to BSC Mainnet...");
47+
console.log("Deploying Strike protocol to BSC Mainnet...");
48+
console.log(" Chain ID:", block.chainid);
2449
console.log(" Deployer:", deployer);
50+
console.log(" Keeper:", keeper);
51+
console.log(" Resolution keeper:", resolutionKeeper);
52+
console.log(" Pyth:", PYTH_BSC_MAINNET);
53+
console.log(" USDT:", USDT_BSC_MAINNET);
54+
55+
Deployed memory d;
56+
d.pyth = PYTH_BSC_MAINNET;
57+
d.usdt = USDT_BSC_MAINNET;
2558

2659
vm.startBroadcast(pk);
2760

2861
FeeModel feeModel = new FeeModel(deployer, 20, deployer);
29-
console.log("FeeModel:", address(feeModel));
62+
d.feeModel = address(feeModel);
3063

3164
OutcomeToken outcomeToken = new OutcomeToken(deployer);
32-
console.log("OutcomeToken:", address(outcomeToken));
65+
d.outcomeToken = address(outcomeToken);
3366

34-
Vault vault = new Vault(deployer, usdt);
35-
console.log("Vault:", address(vault));
67+
Vault vault = new Vault(deployer, USDT_BSC_MAINNET);
68+
d.vault = address(vault);
3669

3770
OrderBook orderBook = new OrderBook(deployer, address(vault), address(feeModel), address(outcomeToken));
38-
console.log("OrderBook:", address(orderBook));
71+
d.orderBook = address(orderBook);
3972

40-
BatchAuction batchAuction = new BatchAuction(deployer, address(orderBook), address(vault), address(outcomeToken));
41-
console.log("BatchAuction:", address(batchAuction));
73+
BatchAuction batchAuction =
74+
new BatchAuction(deployer, address(orderBook), address(vault), address(outcomeToken));
75+
d.batchAuction = address(batchAuction);
4276

4377
MarketFactory factory = new MarketFactory(deployer, address(orderBook), address(outcomeToken));
44-
console.log("MarketFactory:", address(factory));
78+
d.factory = address(factory);
79+
80+
PythResolver pythResolver = new PythResolver(PYTH_BSC_MAINNET, address(factory));
81+
d.pythResolver = address(pythResolver);
4582

46-
PythResolver pythResolver = new PythResolver(pyth, address(factory));
47-
console.log("PythResolver:", address(pythResolver));
83+
AIResolver aiResolver = new AIResolver(address(factory), deployer);
84+
d.aiResolver = address(aiResolver);
4885

4986
Redemption redemption = new Redemption(address(factory), address(outcomeToken), address(vault));
50-
console.log("Redemption:", address(redemption));
87+
d.redemption = address(redemption);
5188

52-
// Wire roles
53-
orderBook.grantRole(orderBook.OPERATOR_ROLE(), address(batchAuction));
54-
orderBook.grantRole(orderBook.OPERATOR_ROLE(), address(factory));
89+
_wireRoles(d, deployer, keeper, resolutionKeeper);
5590

56-
vault.grantRole(vault.PROTOCOL_ROLE(), address(orderBook));
57-
vault.grantRole(vault.PROTOCOL_ROLE(), address(batchAuction));
58-
vault.grantRole(vault.PROTOCOL_ROLE(), address(redemption));
91+
vm.stopBroadcast();
5992

60-
outcomeToken.grantRole(outcomeToken.MINTER_ROLE(), address(batchAuction));
61-
outcomeToken.grantRole(outcomeToken.MINTER_ROLE(), address(redemption));
62-
outcomeToken.grantRole(outcomeToken.ESCROW_ROLE(), address(batchAuction));
93+
_printJson(d);
94+
}
6395

64-
factory.grantRole(factory.ADMIN_ROLE(), address(pythResolver));
96+
function _wireRoles(Deployed memory d, address deployer, address keeper, address resolutionKeeper) internal {
97+
OrderBook orderBook = OrderBook(d.orderBook);
98+
Vault vault = Vault(d.vault);
99+
OutcomeToken outcomeToken = OutcomeToken(d.outcomeToken);
100+
MarketFactory factory = MarketFactory(d.factory);
101+
AIResolver aiResolver = AIResolver(payable(d.aiResolver));
102+
103+
orderBook.grantRole(orderBook.OPERATOR_ROLE(), d.batchAuction);
104+
orderBook.grantRole(orderBook.OPERATOR_ROLE(), d.factory);
105+
orderBook.grantRole(orderBook.OPERATOR_ROLE(), keeper);
106+
107+
vault.grantRole(vault.PROTOCOL_ROLE(), d.orderBook);
108+
vault.grantRole(vault.PROTOCOL_ROLE(), d.batchAuction);
109+
vault.grantRole(vault.PROTOCOL_ROLE(), d.redemption);
110+
111+
outcomeToken.grantRole(outcomeToken.MINTER_ROLE(), d.batchAuction);
112+
outcomeToken.grantRole(outcomeToken.MINTER_ROLE(), d.redemption);
113+
outcomeToken.grantRole(outcomeToken.ESCROW_ROLE(), d.batchAuction);
114+
115+
factory.grantRole(factory.ADMIN_ROLE(), d.pythResolver);
116+
factory.grantRole(factory.ADMIN_ROLE(), d.aiResolver);
117+
factory.grantRole(factory.ADMIN_ROLE(), keeper);
118+
factory.grantRole(factory.ADMIN_ROLE(), resolutionKeeper);
65119
factory.grantRole(factory.MARKET_CREATOR_ROLE(), deployer);
120+
factory.grantRole(factory.MARKET_CREATOR_ROLE(), keeper);
121+
factory.setAIResolver(d.aiResolver);
66122

67-
vm.stopBroadcast();
123+
aiResolver.grantRole(aiResolver.KEEPER_ROLE(), keeper);
124+
aiResolver.grantRole(aiResolver.KEEPER_ROLE(), resolutionKeeper);
125+
}
126+
127+
function _printJson(Deployed memory d) internal view {
128+
string memory json = string.concat(
129+
'{"feeModel":"',
130+
vm.toString(d.feeModel),
131+
'","outcomeToken":"',
132+
vm.toString(d.outcomeToken),
133+
'","vault":"',
134+
vm.toString(d.vault),
135+
'","orderBook":"',
136+
vm.toString(d.orderBook),
137+
'","batchAuction":"',
138+
vm.toString(d.batchAuction),
139+
'","pyth":"',
140+
vm.toString(d.pyth)
141+
);
142+
json = string.concat(
143+
json,
144+
'","usdt":"',
145+
vm.toString(d.usdt),
146+
'","marketFactory":"',
147+
vm.toString(d.factory),
148+
'","pythResolver":"',
149+
vm.toString(d.pythResolver),
150+
'","aiResolver":"',
151+
vm.toString(d.aiResolver),
152+
'","redemption":"',
153+
vm.toString(d.redemption),
154+
'","btcUsdPriceId":"',
155+
vm.toString(BTC_USD_PRICE_ID),
156+
'"}'
157+
);
158+
console.log(json);
68159
}
69160
}

docs/contracts/deployments.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22

33
## BSC Mainnet (Chain ID: 56)
44

5-
Deployed at block `94290419` on 2026-04-23.
5+
Deployed at block `95210316` on 2026-04-23.
66

77
| Contract | Address |
88
|----------|---------|
99
| **USDT** | [`0x55d398326f99059fF775485246999027B3197955`](https://bscscan.com/address/0x55d398326f99059fF775485246999027B3197955) |
10-
| **FeeModel** | [`0x10d479354013c20eC777569618186D79eE818D8a`](https://bscscan.com/address/0x10d479354013c20eC777569618186D79eE818D8a) |
11-
| **OutcomeToken** | [`0xdcA3d1Be0a181494F2bf46a5a885b2c2009574f3`](https://bscscan.com/address/0xdcA3d1Be0a181494F2bf46a5a885b2c2009574f3) |
12-
| **Vault** | [`0x2a6EA3F574264E6fA9c6F3c691dA01BE6DaC066f`](https://bscscan.com/address/0x2a6EA3F574264E6fA9c6F3c691dA01BE6DaC066f) |
13-
| **OrderBook** | [`0x1E7C9b93D2C939a433D87b281918508Eec7c9171`](https://bscscan.com/address/0x1E7C9b93D2C939a433D87b281918508Eec7c9171) |
14-
| **BatchAuction** | [`0xCdd122520E9efbdb5bd1Cc246aE497c37c70bdBE`](https://bscscan.com/address/0xCdd122520E9efbdb5bd1Cc246aE497c37c70bdBE) |
15-
| **MarketFactory** | [`0xcbBC04B2a3EfE858c7C3d159c56f194AF2a7eBac`](https://bscscan.com/address/0xcbBC04B2a3EfE858c7C3d159c56f194AF2a7eBac) |
16-
| **PythResolver** | [`0x101383ef333d5Cb7Cb154EAbcA68961e3ac5B1a4`](https://bscscan.com/address/0x101383ef333d5Cb7Cb154EAbcA68961e3ac5B1a4) |
17-
| **AIResolver** | [`0xb0606b7984a2AA36774e8865E76689f98D39eE6e`](https://bscscan.com/address/0xb0606b7984a2AA36774e8865E76689f98D39eE6e) |
10+
| **FeeModel** | [`0xFd7538Ad9EFEe4fCE07924F65a30688044e0800C`](https://bscscan.com/address/0xFd7538Ad9EFEe4fCE07924F65a30688044e0800C) |
11+
| **OutcomeToken** | [`0xdAA6810Ca9614e2246d2849Be2a9c818707e404B`](https://bscscan.com/address/0xdAA6810Ca9614e2246d2849Be2a9c818707e404B) |
12+
| **Vault** | [`0x43D5caC88a87560Db8040Bef16F0ce8871B4F7ee`](https://bscscan.com/address/0x43D5caC88a87560Db8040Bef16F0ce8871B4F7ee) |
13+
| **OrderBook** | [`0x71F7Bc523FFF296A049a45D08cBD39D39d3C047B`](https://bscscan.com/address/0x71F7Bc523FFF296A049a45D08cBD39D39d3C047B) |
14+
| **BatchAuction** | [`0x9d66fa0Aad92bb4428947443c1135C06a0cbFFBb`](https://bscscan.com/address/0x9d66fa0Aad92bb4428947443c1135C06a0cbFFBb) |
15+
| **MarketFactory** | [`0x34E0BCC1619dBc6A00A23b70BbaD9F36b0483d82`](https://bscscan.com/address/0x34E0BCC1619dBc6A00A23b70BbaD9F36b0483d82) |
16+
| **PythResolver** | [`0x3E0864BbC19ca92777BB4c2e02490fC0C7A44C5a`](https://bscscan.com/address/0x3E0864BbC19ca92777BB4c2e02490fC0C7A44C5a) |
17+
| **AIResolver** | [`0x3e0D91480147802D9C41068d91b7878E7943a632`](https://bscscan.com/address/0x3e0D91480147802D9C41068d91b7878E7943a632) |
1818
| **FlapAIProvider** | [`0xaEe3a7Ca6fe6b53f6c32a3e8407eC5A9dF8B7E39`](https://bscscan.com/address/0xaEe3a7Ca6fe6b53f6c32a3e8407eC5A9dF8B7E39) |
19-
| **Redemption** | [`0x9a46D6c017eDdA49832cC9eE315246d0B55E5804`](https://bscscan.com/address/0x9a46D6c017eDdA49832cC9eE315246d0B55E5804) |
19+
| **Redemption** | [`0xcC1687A27133f06dB96aF4e00E5bA91411f9c999`](https://bscscan.com/address/0xcC1687A27133f06dB96aF4e00E5bA91411f9c999) |
2020
| **Pyth Core** | [`0x4D7E825f80bDf85e913E0DD2A2D54927e9dE1594`](https://bscscan.com/address/0x4D7E825f80bDf85e913E0DD2A2D54927e9dE1594) |
2121

2222
### Mainnet Parimutuel Contracts

docs/project/roadmap.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,6 @@ Preserved on the `poc` branch.
7171
- Variable market durations (1min, 5min, 15min, 1hr)
7272

7373
### Recently Completed
74-
- [x] BSC mainnet redeployment and production cutover (block 94290419, previous live deployment archived before reset)
74+
- [x] BSC mainnet redeployment and production cutover (block 95210316, previous live deployment archived before reset)
7575
- [x] Canonical BSC testnet stack with `amendOrders` live (block 103312703)
7676
- [x] Leaderboard (PNL + Volume tabs, 24H/7D/30D/All, username system)

sdk/rust/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sdk/rust/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "strike-sdk"
3-
version = "0.2.12"
3+
version = "0.2.13"
44
edition = "2021"
55
description = "Rust SDK for Strike prediction markets on BNB Chain"
66
license = "MIT"

0 commit comments

Comments
 (0)