@integraledger/lcp-binding-evm-escrow 0.12.0 → 0.12.2

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # @integraledger/lcp-binding-evm-escrow
2
2
 
3
+ ## 0.12.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 3cfaff4: `decodeEscrowLogs` surfaces the indexed `paymentInfoHash` — the escrow's join key.
8
+
9
+ **⛔⛔ IT WAS DECODED AND THEN NOT READ.** `paymentInfoHash` is an indexed parameter on all six escrow
10
+ events, so `decodeEventLog` has always returned it — but the `args` cast picked out `paymentInfo` and
11
+ `amount` and nothing else, so it never reached `DecodedEscrowLog`. A consumer that needed the key had no
12
+ way to read it off the chain and could only take a caller's word for which payment a transition belonged
13
+ to, which is not a join.
14
+
15
+ **⭐ WHY IT MATTERS: FOUR OF THE SIX EVENTS CANNOT RE-PROVE THEIR OWN atrHash.** Only `PaymentAuthorized`
16
+ and `PaymentCharged` carry the cleartext `PaymentInfo` whose `salt` IS the atrHash, so `recover` can never
17
+ answer for a `PaymentCaptured`, `PaymentVoided`, `PaymentReclaimed` or `PaymentRefunded`. What those carry
18
+ is this indexed hash — and it is exactly what `conditional-weld` keys its durable log by, and what its
19
+ `ports.ts` names as the thing the package exists to prove: _"the atrHash has to be recoverable from the
20
+ authorization artifact AND the capture artifact, joining on the rail's own key (`paymentInfoHash` on
21
+ Base)."_ The join was designed; the key was simply unreachable through the port.
22
+
23
+ **⭐ SURFACED HERE RATHER THAN ON `LifecycleTransition`.** `binding-core` fixes that shape for fifteen
24
+ bindings and this is one rail's own key — and `decodeEscrowLogs`' own docblock already names itself as the
25
+ sanctioned route for exactly this: _"the only way a consumer reaches the asset behind the weld… a caller
26
+ checking that a settlement moved the asset its record names calls this directly."_ Additive: the field is
27
+ added, `salt` is unmoved, and nothing outside this adapter constructs a `DecodedEscrowLog`.
28
+
29
+ Driven three ways: dropping the field, hard-coding it to a constant, and taking it from the salt (right on
30
+ an authorize, zeroed on a capture — the shape a naive implementation takes) each turn tests red. The
31
+ constant case is the one that matters: two logs from different payments must decode to different keys, or a
32
+ capture from another payment would join to this one's log.
33
+
34
+ - @integraledger/lcp-binding-core@0.12.2
35
+ - @integraledger/lcp-binding-evm-common@0.12.2
36
+
37
+ ## 0.12.1
38
+
39
+ ### Patch Changes
40
+
41
+ - @integraledger/lcp-binding-core@0.12.1
42
+ - @integraledger/lcp-binding-evm-common@0.12.1
43
+
3
44
  ## 0.12.0
4
45
 
5
46
  ### Patch Changes
package/dist/adapter.d.ts CHANGED
@@ -57,6 +57,21 @@ export interface EscrowAdapterConfig {
57
57
  */
58
58
  export interface DecodedEscrowLog {
59
59
  name: EscrowEventName;
60
+ /**
61
+ * ⭐⭐ **THE JOIN KEY — the indexed topic on ALL SIX events, and the only thing tying a salt-less one to
62
+ * the payment it belongs to.**
63
+ *
64
+ * Four of the six events carry no cleartext `PaymentInfo`, so {@link WeldAdapter.recover} can never
65
+ * answer for them: a `PaymentCaptured` cannot re-prove its own atrHash. What it carries is this hash,
66
+ * indexed, and `conditional-weld`'s durable log is keyed by exactly it — *"the atrHash has to be
67
+ * recoverable from the authorization artifact AND the capture artifact, joining on the rail's own key
68
+ * (`paymentInfoHash` on Base)"*. A consumer that cannot read this key off the chain has to take a
69
+ * caller's word for which payment a transition belongs to, which is not a join.
70
+ *
71
+ * ⚠️ It was decoded and then not read: `decodeEventLog` returns it as an indexed parameter, and the
72
+ * `args` cast below picked out `paymentInfo` and `amount` only.
73
+ */
74
+ paymentInfoHash: `0x${string}`;
60
75
  /** The atrHash weld, as the raw `PaymentInfo.salt` uint256. Absent on events carrying no `PaymentInfo`. */
61
76
  salt?: bigint;
62
77
  amount: bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAKV,WAAW,EACZ,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,GAAG,EAAkB,KAAK,GAAG,EAAY,MAAM,MAAM,CAAC;AAEpE,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AAMtE;0EAC0E;AAC1E,eAAO,MAAM,iBAAiB,EAAE,GAO9B,CAAC;AAEH,iGAAiG;AACjG,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,GAAG,MAAM,CAE9D;AACD,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAE3D;AAED,yGAAyG;AACzG,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC9D;;+EAE+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;qFAEqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,2GAA2G;IAC3G,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,sEAAsE;IACtE,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,GAAG,EAAE,EACpB,MAAM,EAAE,MAAM,GACb,gBAAgB,EAAE,CAuCpB;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,WAAW,CAqG5E"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAKV,WAAW,EACZ,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,KAAK,GAAG,EAAkB,KAAK,GAAG,EAAY,MAAM,MAAM,CAAC;AAEpE,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AAMtE;0EAC0E;AAC1E,eAAO,MAAM,iBAAiB,EAAE,GAO9B,CAAC;AAEH,iGAAiG;AACjG,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,GAAG,MAAM,CAE9D;AACD,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAE3D;AAED,yGAAyG;AACzG,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC9D;;+EAE+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;qFAEqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,2GAA2G;IAC3G,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,sEAAsE;IACtE,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,GAAG,EAAE,EACpB,MAAM,EAAE,MAAM,GACb,gBAAgB,EAAE,CA0CpB;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,WAAW,CAqG5E"}
package/dist/adapter.js CHANGED
@@ -44,6 +44,7 @@ export function decodeEscrowLogs(logs, escrow) {
44
44
  const args = decoded.args;
45
45
  out.push({
46
46
  name: decoded.eventName,
47
+ paymentInfoHash: args.paymentInfoHash,
47
48
  ...(args.paymentInfo !== undefined
48
49
  ? {
49
50
  salt: args.paymentInfo.salt,
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integraledger/lcp-binding-evm-escrow",
3
- "version": "0.12.0",
3
+ "version": "0.12.2",
4
4
  "description": "Welds an ATR hash into an authorize-and-capture escrow settlement on EVM chains.",
5
5
  "keywords": [
6
6
  "lcp",
@@ -43,13 +43,13 @@
43
43
  "homepage": "https://github.com/IntegraLedger/integra-protocol/tree/main/packages/binding-evm-escrow#readme",
44
44
  "dependencies": {
45
45
  "viem": "2.55.11",
46
- "@integraledger/lcp-binding-core": "0.12.0",
47
- "@integraledger/lcp-binding-evm-common": "0.12.0"
46
+ "@integraledger/lcp-binding-core": "0.12.2",
47
+ "@integraledger/lcp-binding-evm-common": "0.12.2"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/node": "24.13.3",
51
51
  "vitest": "4.1.10",
52
- "@integraledger/lcp-kernel": "0.12.0"
52
+ "@integraledger/lcp-kernel": "0.12.2"
53
53
  },
54
54
  "license": "Apache-2.0",
55
55
  "engines": {
package/src/adapter.ts CHANGED
@@ -86,6 +86,21 @@ export interface EscrowAdapterConfig {
86
86
  */
87
87
  export interface DecodedEscrowLog {
88
88
  name: EscrowEventName;
89
+ /**
90
+ * ⭐⭐ **THE JOIN KEY — the indexed topic on ALL SIX events, and the only thing tying a salt-less one to
91
+ * the payment it belongs to.**
92
+ *
93
+ * Four of the six events carry no cleartext `PaymentInfo`, so {@link WeldAdapter.recover} can never
94
+ * answer for them: a `PaymentCaptured` cannot re-prove its own atrHash. What it carries is this hash,
95
+ * indexed, and `conditional-weld`'s durable log is keyed by exactly it — *"the atrHash has to be
96
+ * recoverable from the authorization artifact AND the capture artifact, joining on the rail's own key
97
+ * (`paymentInfoHash` on Base)"*. A consumer that cannot read this key off the chain has to take a
98
+ * caller's word for which payment a transition belongs to, which is not a join.
99
+ *
100
+ * ⚠️ It was decoded and then not read: `decodeEventLog` returns it as an indexed parameter, and the
101
+ * `args` cast below picked out `paymentInfo` and `amount` only.
102
+ */
103
+ paymentInfoHash: `0x${string}`;
89
104
  /** The atrHash weld, as the raw `PaymentInfo.salt` uint256. Absent on events carrying no `PaymentInfo`. */
90
105
  salt?: bigint;
91
106
  amount: bigint;
@@ -121,6 +136,8 @@ export function decodeEscrowLogs(
121
136
  topics: log.topics,
122
137
  });
123
138
  const args = decoded.args as unknown as {
139
+ /** Indexed on every one of the six events — see {@link DecodedEscrowLog.paymentInfoHash}. */
140
+ paymentInfoHash: `0x${string}`;
124
141
  paymentInfo?: {
125
142
  salt: bigint;
126
143
  token: `0x${string}`;
@@ -131,6 +148,7 @@ export function decodeEscrowLogs(
131
148
  };
132
149
  out.push({
133
150
  name: decoded.eventName as unknown as EscrowEventName,
151
+ paymentInfoHash: args.paymentInfoHash,
134
152
  ...(args.paymentInfo !== undefined
135
153
  ? {
136
154
  salt: args.paymentInfo.salt,