@ercworldio/blockchain-shared 1.0.5-dev.8-PLAT134.5 → 1.0.5-dev.8-PLAT272.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -135,6 +135,16 @@
135
135
  "source": "wallet"
136
136
  }
137
137
  ],
138
+ "quicknodeStreams": [
139
+ {
140
+ "network": "solana-devnet",
141
+ "dataset": "block",
142
+ "name": "solana-escrow-logs",
143
+ "listConfig": {
144
+ "key": "escrow-address"
145
+ }
146
+ }
147
+ ],
138
148
  "quicknodeNotificationConfig": [
139
149
  {
140
150
  "name": "escrow-sol-dev",
@@ -11,12 +11,12 @@
11
11
  "targetConfirmations": 10,
12
12
  "accounting": {
13
13
  "funding_wallet": "0x5BCAbaCAC48055E02eDc1A640E9208C867AbC4Fa",
14
- "treasury_receiver": "0xD7205fD63Fa5def834DD3556c149FF7911478391",
15
- "overflow_treasury_receiver": "0xD7205fD63Fa5def834DD3556c149FF7911478391",
14
+ "treasury_receiver": "0xe8c69d1dF23AE056cbc539Cf5ca54CDEa8102679",
15
+ "overflow_treasury_receiver": "0xe8c69d1dF23AE056cbc539Cf5ca54CDEa8102679",
16
16
  "overflow_threshold_decimal": 100000,
17
17
  "min_funding_wallet_balance_usd": 5,
18
18
  "allowed_receivers": [
19
- "0xD7205fD63Fa5def834DD3556c149FF7911478391"
19
+ "0xe8c69d1dF23AE056cbc539Cf5ca54CDEa8102679"
20
20
  ]
21
21
  },
22
22
  "custodialAlchemyWebhooks": [
@@ -45,7 +45,7 @@
45
45
  }
46
46
  ],
47
47
  "addresses": [
48
- "0xD7205fD63Fa5def834DD3556c149FF7911478391"
48
+ "0xe8c69d1dF23AE056cbc539Cf5ca54CDEa8102679"
49
49
  ]
50
50
  },
51
51
  {
@@ -129,12 +129,12 @@
129
129
  "targetConfirmations": 5,
130
130
  "accounting": {
131
131
  "funding_wallet": "0x5BCAbaCAC48055E02eDc1A640E9208C867AbC4Fa",
132
- "treasury_receiver": "0xedb9e987Da3806205D2f1e246Eb8c538A872783E",
133
- "overflow_treasury_receiver": "0xedb9e987Da3806205D2f1e246Eb8c538A872783E",
132
+ "treasury_receiver": "0xDC0Bb30179119CAC9d57fB530D07c299303c1f15",
133
+ "overflow_treasury_receiver": "0xDC0Bb30179119CAC9d57fB530D07c299303c1f15",
134
134
  "overflow_threshold_decimal": 100000,
135
135
  "min_funding_wallet_balance_usd": 5,
136
136
  "allowed_receivers": [
137
- "0xedb9e987Da3806205D2f1e246Eb8c538A872783E"
137
+ "0xDC0Bb30179119CAC9d57fB530D07c299303c1f15"
138
138
  ]
139
139
  },
140
140
  "custodialAlchemyWebhooks": [
@@ -163,7 +163,7 @@
163
163
  }
164
164
  ],
165
165
  "addresses": [
166
- "0xedb9e987Da3806205D2f1e246Eb8c538A872783E"
166
+ "0xDC0Bb30179119CAC9d57fB530D07c299303c1f15"
167
167
  ]
168
168
  },
169
169
  {
@@ -235,6 +235,16 @@
235
235
  "source": "wallet"
236
236
  }
237
237
  ],
238
+ "quicknodeStreams": [
239
+ {
240
+ "network": "solana-mainnet",
241
+ "dataset": "block",
242
+ "name": "solana-escrow-logs-stg-dz",
243
+ "listConfig": {
244
+ "key": "escrow-address"
245
+ }
246
+ }
247
+ ],
238
248
  "contracts": [
239
249
  {
240
250
  "type": "Escrow",
@@ -321,12 +331,12 @@
321
331
  "targetConfirmations": 10,
322
332
  "accounting": {
323
333
  "funding_wallet": "0x5BCAbaCAC48055E02eDc1A640E9208C867AbC4Fa",
324
- "treasury_receiver": "0xc4b25365d597EB6B7Db78429f70b8E325C2456BD",
325
- "overflow_treasury_receiver": "0xc4b25365d597EB6B7Db78429f70b8E325C2456BD",
334
+ "treasury_receiver": "0x52B74AEF04b563f4Df5998DD854FcF477E385b4A",
335
+ "overflow_treasury_receiver": "0x52B74AEF04b563f4Df5998DD854FcF477E385b4A",
326
336
  "overflow_threshold_decimal": 100000,
327
337
  "min_funding_wallet_balance_usd": 5,
328
338
  "allowed_receivers": [
329
- "0xc4b25365d597EB6B7Db78429f70b8E325C2456BD"
339
+ "0x52B74AEF04b563f4Df5998DD854FcF477E385b4A"
330
340
  ]
331
341
  },
332
342
  "custodialAlchemyWebhooks": [
@@ -355,7 +365,7 @@
355
365
  }
356
366
  ],
357
367
  "addresses": [
358
- "0xc4b25365d597EB6B7Db78429f70b8E325C2456BD"
368
+ "0x52B74AEF04b563f4Df5998DD854FcF477E385b4A"
359
369
  ]
360
370
  },
361
371
  {
@@ -411,12 +421,12 @@
411
421
  "targetConfirmations": 10,
412
422
  "accounting": {
413
423
  "funding_wallet": "0x5BCAbaCAC48055E02eDc1A640E9208C867AbC4Fa",
414
- "treasury_receiver": "0xA228E95a253B42fFAc8C26Df2ca1EdD0C2D4A191",
415
- "overflow_treasury_receiver": "0xA228E95a253B42fFAc8C26Df2ca1EdD0C2D4A191",
424
+ "treasury_receiver": "0x1821236AaC799c31F12C7359017083620a49a52E",
425
+ "overflow_treasury_receiver": "0x1821236AaC799c31F12C7359017083620a49a52E",
416
426
  "overflow_threshold_decimal": 100000,
417
427
  "min_funding_wallet_balance_usd": 5,
418
428
  "allowed_receivers": [
419
- "0xA228E95a253B42fFAc8C26Df2ca1EdD0C2D4A191"
429
+ "0x1821236AaC799c31F12C7359017083620a49a52E"
420
430
  ]
421
431
  },
422
432
  "custodialAlchemyWebhooks": [
@@ -445,7 +455,7 @@
445
455
  }
446
456
  ],
447
457
  "addresses": [
448
- "0xA228E95a253B42fFAc8C26Df2ca1EdD0C2D4A191"
458
+ "0x1821236AaC799c31F12C7359017083620a49a52E"
449
459
  ]
450
460
  },
451
461
  {
@@ -487,12 +497,12 @@
487
497
  "targetConfirmations": 10,
488
498
  "accounting": {
489
499
  "funding_wallet": "0x5BCAbaCAC48055E02eDc1A640E9208C867AbC4Fa",
490
- "treasury_receiver": "0xD7205fD63Fa5def834DD3556c149FF7911478391",
491
- "overflow_treasury_receiver": "0xD7205fD63Fa5def834DD3556c149FF7911478391",
500
+ "treasury_receiver": "0xD350E4B4d672C0D1C1C7BdaC734108d6f992e3b9",
501
+ "overflow_treasury_receiver": "0xD350E4B4d672C0D1C1C7BdaC734108d6f992e3b9",
492
502
  "overflow_threshold_decimal": 100000,
493
503
  "min_funding_wallet_balance_usd": 5,
494
504
  "allowed_receivers": [
495
- "0xD7205fD63Fa5def834DD3556c149FF7911478391"
505
+ "0xD350E4B4d672C0D1C1C7BdaC734108d6f992e3b9"
496
506
  ]
497
507
  },
498
508
  "custodialAlchemyWebhooks": [
@@ -521,7 +531,7 @@
521
531
  }
522
532
  ],
523
533
  "addresses": [
524
- "0xD7205fD63Fa5def834DD3556c149FF7911478391"
534
+ "0xD350E4B4d672C0D1C1C7BdaC734108d6f992e3b9"
525
535
  ]
526
536
  },
527
537
  {
@@ -912,6 +912,101 @@
912
912
  }
913
913
  ]
914
914
  },
915
+ {
916
+ "name": "add_treasury_receiver",
917
+ "docs": [
918
+ "Whitelists a receiver for admin withdrawals (mirrors EVM grantRole TREASURY_RECEIVER_ROLE)."
919
+ ],
920
+ "discriminator": [
921
+ 218,
922
+ 173,
923
+ 230,
924
+ 27,
925
+ 126,
926
+ 71,
927
+ 202,
928
+ 54
929
+ ],
930
+ "accounts": [
931
+ {
932
+ "name": "escrow_config",
933
+ "pda": {
934
+ "seeds": [
935
+ {
936
+ "kind": "const",
937
+ "value": [
938
+ 101,
939
+ 115,
940
+ 99,
941
+ 114,
942
+ 111,
943
+ 119,
944
+ 45,
945
+ 99,
946
+ 111,
947
+ 110,
948
+ 102,
949
+ 105,
950
+ 103,
951
+ 45,
952
+ 118,
953
+ 50
954
+ ]
955
+ }
956
+ ]
957
+ }
958
+ },
959
+ {
960
+ "name": "treasury_receiver",
961
+ "writable": true,
962
+ "pda": {
963
+ "seeds": [
964
+ {
965
+ "kind": "const",
966
+ "value": [
967
+ 116,
968
+ 114,
969
+ 101,
970
+ 97,
971
+ 115,
972
+ 117,
973
+ 114,
974
+ 121,
975
+ 45,
976
+ 114,
977
+ 101,
978
+ 99,
979
+ 101,
980
+ 105,
981
+ 118,
982
+ 101,
983
+ 114
984
+ ]
985
+ },
986
+ {
987
+ "kind": "arg",
988
+ "path": "receiver"
989
+ }
990
+ ]
991
+ }
992
+ },
993
+ {
994
+ "name": "admin",
995
+ "writable": true,
996
+ "signer": true
997
+ },
998
+ {
999
+ "name": "system_program",
1000
+ "address": "11111111111111111111111111111111"
1001
+ }
1002
+ ],
1003
+ "args": [
1004
+ {
1005
+ "name": "receiver",
1006
+ "type": "pubkey"
1007
+ }
1008
+ ]
1009
+ },
915
1010
  {
916
1011
  "name": "admin_deposit_sol",
917
1012
  "docs": [
@@ -1244,11 +1339,43 @@
1244
1339
  },
1245
1340
  {
1246
1341
  "name": "recipient",
1342
+ "writable": true
1343
+ },
1344
+ {
1345
+ "name": "treasury_receiver",
1247
1346
  "docs": [
1248
- "(see the plan doc's \"minimal parity\" decision; EVM enforces TREASURY_RECEIVER_ROLE on-chain,",
1249
- "this is a known interim gap, not an oversight)."
1347
+ "Mirrors EVM's onlyTreasuryReceiver(receiver) the payout target must be whitelisted."
1250
1348
  ],
1251
- "writable": true
1349
+ "pda": {
1350
+ "seeds": [
1351
+ {
1352
+ "kind": "const",
1353
+ "value": [
1354
+ 116,
1355
+ 114,
1356
+ 101,
1357
+ 97,
1358
+ 115,
1359
+ 117,
1360
+ 114,
1361
+ 121,
1362
+ 45,
1363
+ 114,
1364
+ 101,
1365
+ 99,
1366
+ 101,
1367
+ 105,
1368
+ 118,
1369
+ 101,
1370
+ 114
1371
+ ]
1372
+ },
1373
+ {
1374
+ "kind": "account",
1375
+ "path": "recipient"
1376
+ }
1377
+ ]
1378
+ }
1252
1379
  },
1253
1380
  {
1254
1381
  "name": "admin",
@@ -1536,10 +1663,43 @@
1536
1663
  }
1537
1664
  },
1538
1665
  {
1539
- "name": "recipient",
1666
+ "name": "recipient"
1667
+ },
1668
+ {
1669
+ "name": "treasury_receiver",
1540
1670
  "docs": [
1541
- "(see the plan doc's \"minimal parity\" decision)."
1542
- ]
1671
+ "Mirrors EVM's onlyTreasuryReceiver(receiver) the payout target must be whitelisted."
1672
+ ],
1673
+ "pda": {
1674
+ "seeds": [
1675
+ {
1676
+ "kind": "const",
1677
+ "value": [
1678
+ 116,
1679
+ 114,
1680
+ 101,
1681
+ 97,
1682
+ 115,
1683
+ 117,
1684
+ 114,
1685
+ 121,
1686
+ 45,
1687
+ 114,
1688
+ 101,
1689
+ 99,
1690
+ 101,
1691
+ 105,
1692
+ 118,
1693
+ 101,
1694
+ 114
1695
+ ]
1696
+ },
1697
+ {
1698
+ "kind": "account",
1699
+ "path": "recipient"
1700
+ }
1701
+ ]
1702
+ }
1543
1703
  },
1544
1704
  {
1545
1705
  "name": "recipient_token_account",
@@ -4926,6 +5086,97 @@
4926
5086
  }
4927
5087
  ]
4928
5088
  },
5089
+ {
5090
+ "name": "remove_treasury_receiver",
5091
+ "docs": [
5092
+ "Revokes a receiver's admin-withdrawal whitelist entry (mirrors EVM revokeRole TREASURY_RECEIVER_ROLE)."
5093
+ ],
5094
+ "discriminator": [
5095
+ 94,
5096
+ 45,
5097
+ 107,
5098
+ 230,
5099
+ 200,
5100
+ 85,
5101
+ 152,
5102
+ 15
5103
+ ],
5104
+ "accounts": [
5105
+ {
5106
+ "name": "escrow_config",
5107
+ "pda": {
5108
+ "seeds": [
5109
+ {
5110
+ "kind": "const",
5111
+ "value": [
5112
+ 101,
5113
+ 115,
5114
+ 99,
5115
+ 114,
5116
+ 111,
5117
+ 119,
5118
+ 45,
5119
+ 99,
5120
+ 111,
5121
+ 110,
5122
+ 102,
5123
+ 105,
5124
+ 103,
5125
+ 45,
5126
+ 118,
5127
+ 50
5128
+ ]
5129
+ }
5130
+ ]
5131
+ }
5132
+ },
5133
+ {
5134
+ "name": "treasury_receiver",
5135
+ "writable": true,
5136
+ "pda": {
5137
+ "seeds": [
5138
+ {
5139
+ "kind": "const",
5140
+ "value": [
5141
+ 116,
5142
+ 114,
5143
+ 101,
5144
+ 97,
5145
+ 115,
5146
+ 117,
5147
+ 114,
5148
+ 121,
5149
+ 45,
5150
+ 114,
5151
+ 101,
5152
+ 99,
5153
+ 101,
5154
+ 105,
5155
+ 118,
5156
+ 101,
5157
+ 114
5158
+ ]
5159
+ },
5160
+ {
5161
+ "kind": "arg",
5162
+ "path": "receiver"
5163
+ }
5164
+ ]
5165
+ }
5166
+ },
5167
+ {
5168
+ "name": "admin",
5169
+ "writable": true,
5170
+ "signer": true
5171
+ }
5172
+ ],
5173
+ "args": [
5174
+ {
5175
+ "name": "receiver",
5176
+ "type": "pubkey"
5177
+ }
5178
+ ]
5179
+ },
4929
5180
  {
4930
5181
  "name": "set_admin",
4931
5182
  "discriminator": [
@@ -6950,6 +7201,19 @@
6950
7201
  41
6951
7202
  ]
6952
7203
  },
7204
+ {
7205
+ "name": "TreasuryReceiver",
7206
+ "discriminator": [
7207
+ 160,
7208
+ 74,
7209
+ 145,
7210
+ 140,
7211
+ 88,
7212
+ 105,
7213
+ 185,
7214
+ 168
7215
+ ]
7216
+ },
6953
7217
  {
6954
7218
  "name": "WithdrawNonce",
6955
7219
  "discriminator": [
@@ -7427,6 +7691,11 @@
7427
7691
  "code": 6034,
7428
7692
  "name": "AdminWithdrawConfigNotSet",
7429
7693
  "msg": "Admin withdrawal threshold is not configured"
7694
+ },
7695
+ {
7696
+ "code": 6035,
7697
+ "name": "ReceiverNotWhitelisted",
7698
+ "msg": "Receiver is not whitelisted for admin withdrawals"
7430
7699
  }
7431
7700
  ],
7432
7701
  "types": [
@@ -8033,6 +8302,9 @@
8033
8302
  },
8034
8303
  {
8035
8304
  "name": "TimelockExecutive"
8305
+ },
8306
+ {
8307
+ "name": "TreasuryReceiver"
8036
8308
  }
8037
8309
  ]
8038
8310
  }
@@ -8393,6 +8665,31 @@
8393
8665
  ]
8394
8666
  }
8395
8667
  },
8668
+ {
8669
+ "name": "TreasuryReceiver",
8670
+ "docs": [
8671
+ "Whitelist entry for a single admin-withdrawal receiver (mirrors EVM's TREASURY_RECEIVER_ROLE).",
8672
+ "Existence with `is_whitelisted = true` means `admin_withdraw_sol_v2`/`admin_withdraw_spl_v2`",
8673
+ "may pay out to this address; anything else (account missing, since `remove_treasury_receiver`",
8674
+ "closes it rather than flipping a flag) is rejected.",
8675
+ "",
8676
+ "A dedicated PDA per receiver rather than a roster `Vec` (like `TreasuryConfig`'s managers/",
8677
+ "executives) — this whitelist can grow much larger than the manager/executive rosters and is",
8678
+ "checked per-withdrawal, so an O(1) PDA lookup keyed by the receiver's own address is a better",
8679
+ "fit than deserializing and scanning a list on every withdrawal.",
8680
+ "",
8681
+ "PDA seeds: `[b\"treasury-receiver\", receiver]`."
8682
+ ],
8683
+ "type": {
8684
+ "kind": "struct",
8685
+ "fields": [
8686
+ {
8687
+ "name": "is_whitelisted",
8688
+ "type": "bool"
8689
+ }
8690
+ ]
8691
+ }
8692
+ },
8396
8693
  {
8397
8694
  "name": "WithdrawNonce",
8398
8695
  "type": {
@@ -1 +1 @@
1
- {"version":3,"file":"EscrowAdminUtility.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/EscrowAdminUtility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EscrowAdminUtility.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/EscrowAdminUtility.ts"],"names":[],"mappings":"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"}
@@ -770,6 +770,7 @@ class EscrowAdminUtility {
770
770
  if (!((_a = r.signatures) === null || _a === void 0 ? void 0 : _a.length))
771
771
  continue;
772
772
  const message = (0, TreasuryWithdrawalSignature_1.buildWithdrawalApprovalMessage)({
773
+ escrowProgramId: this.program.programId,
773
774
  recipient: new web3_js_1.PublicKey(r.receiver_pubkey),
774
775
  tokenMint,
775
776
  committedAmount: BigInt(r.amount_in_lamports),
@@ -17,7 +17,8 @@ export interface TreasurySignatureInput {
17
17
  * `build_withdrawal_message` byte for byte, or verification fails.
18
18
  *
19
19
  * Withdrawal Approval
20
- * Version: 1
20
+ * Version: 2
21
+ * Program: <escrow program id base58>
21
22
  * Chain: <chainId>
22
23
  * Request: <requestId>
23
24
  * Recipient: <recipient base58>
@@ -27,8 +28,14 @@ export interface TreasurySignatureInput {
27
28
  * `Amount` is the committed (approved) amount — the net paid out is chosen later by the backend
28
29
  * and bounded on-chain by TreasuryConfig.max_fee_delta. The title + Version line domain-separate
29
30
  * the signature; bump Version in lockstep with the program on any format change.
31
+ *
32
+ * The Program line binds the signature to a specific deployment's own address (escrow-audit
33
+ * finding: escrow-audit-cross-deployment-replay) — without it a signature collected under one
34
+ * program instance would verify identically against any other deployment reusing the same
35
+ * treasury roster and chainId (e.g. a same-cluster redeploy to a new program id).
30
36
  */
31
37
  export declare function buildWithdrawalApprovalMessage(params: {
38
+ escrowProgramId: PublicKey;
32
39
  recipient: PublicKey;
33
40
  tokenMint: PublicKey;
34
41
  committedAmount: bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"TreasuryWithdrawalSignature.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/TreasuryWithdrawalSignature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGpF;;;;;GAKG;AAEH,wEAAwE;AACxE,MAAM,WAAW,sBAAsB;IACnC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACnD,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAUT;AAED,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAU5D;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,sBAAsB,CAoD/F"}
1
+ {"version":3,"file":"TreasuryWithdrawalSignature.d.ts","sourceRoot":"","sources":["../../../../../src/services/solana/escrow/services/TreasuryWithdrawalSignature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGpF;;;;;GAKG;AAEH,wEAAwE;AACxE,MAAM,WAAW,sBAAsB;IACnC,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACnD,eAAe,EAAE,SAAS,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAWT;AAED,oFAAoF;AACpF,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAU5D;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,UAAU,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,sBAAsB,CAoD/F"}
@@ -13,7 +13,8 @@ const bs58_1 = __importDefault(require("bs58"));
13
13
  * `build_withdrawal_message` byte for byte, or verification fails.
14
14
  *
15
15
  * Withdrawal Approval
16
- * Version: 1
16
+ * Version: 2
17
+ * Program: <escrow program id base58>
17
18
  * Chain: <chainId>
18
19
  * Request: <requestId>
19
20
  * Recipient: <recipient base58>
@@ -23,10 +24,16 @@ const bs58_1 = __importDefault(require("bs58"));
23
24
  * `Amount` is the committed (approved) amount — the net paid out is chosen later by the backend
24
25
  * and bounded on-chain by TreasuryConfig.max_fee_delta. The title + Version line domain-separate
25
26
  * the signature; bump Version in lockstep with the program on any format change.
27
+ *
28
+ * The Program line binds the signature to a specific deployment's own address (escrow-audit
29
+ * finding: escrow-audit-cross-deployment-replay) — without it a signature collected under one
30
+ * program instance would verify identically against any other deployment reusing the same
31
+ * treasury roster and chainId (e.g. a same-cluster redeploy to a new program id).
26
32
  */
27
33
  function buildWithdrawalApprovalMessage(params) {
28
34
  const text = "Withdrawal Approval\n" +
29
- "Version: 1\n" +
35
+ "Version: 2\n" +
36
+ `Program: ${params.escrowProgramId.toBase58()}\n` +
30
37
  `Chain: ${params.chainId}\n` +
31
38
  `Request: ${params.requestId}\n` +
32
39
  `Recipient: ${params.recipient.toBase58()}\n` +