@getomnichain/omnichain 0.5.0 → 0.5.1
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 +26 -0
- package/dist/cjs/solana/solana_chain.js +89 -25
- package/dist/cjs/solana/solana_chain.js.map +1 -1
- package/dist/cjs/solana/solana_transaction_status.js +39 -3
- package/dist/cjs/solana/solana_transaction_status.js.map +1 -1
- package/dist/esm/solana/solana_chain.d.ts.map +1 -1
- package/dist/esm/solana/solana_chain.js +90 -26
- package/dist/esm/solana/solana_chain.js.map +1 -1
- package/dist/esm/solana/solana_transaction_status.d.ts +40 -2
- package/dist/esm/solana/solana_transaction_status.d.ts.map +1 -1
- package/dist/esm/solana/solana_transaction_status.js +38 -2
- package/dist/esm/solana/solana_transaction_status.js.map +1 -1
- package/docs/solana.md +23 -0
- package/package.json +1 -1
|
@@ -24,8 +24,28 @@ export class SolanaTransactionFees {
|
|
|
24
24
|
this.netLamportsChangeByFeePayer = init.netLamportsChangeByFeePayer;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Confirmation count reported for a rooted (finalized-and-past)
|
|
29
|
+
* Solana transaction. The RPC returns `confirmations: null` when rooted;
|
|
30
|
+
* the SDK normalises to this constant so consumers gated on
|
|
31
|
+
* `confirmations >= threshold` see a monotone number.
|
|
32
|
+
*/
|
|
33
|
+
export const SOLANA_FINALIZED_CONFIRMATIONS = 32;
|
|
27
34
|
export class SolanaTransactionStatus extends TransactionStatus {
|
|
28
35
|
fees;
|
|
36
|
+
/** Slot from `getTransaction.slot`, or from `getSignatureStatus.slot`
|
|
37
|
+
* on the ledger-pruned fallback. `null` when neither surfaced it. */
|
|
38
|
+
slot;
|
|
39
|
+
/** `getSignatureStatus.confirmations`, normalised to
|
|
40
|
+
* {@link SOLANA_FINALIZED_CONFIRMATIONS} for rooted responses. `null`
|
|
41
|
+
* when the sig-status read was unavailable. */
|
|
42
|
+
confirmations;
|
|
43
|
+
/** Raw RPC `confirmationStatus`. `null` when unavailable or unknown. */
|
|
44
|
+
confirmationStatus;
|
|
45
|
+
/** Base58 signer keys in message order (`staticAccountKeys[0..header.numRequiredSignatures]`).
|
|
46
|
+
* Empty when the SDK never observed the message (ledger-pruned fallback,
|
|
47
|
+
* `notFound`). */
|
|
48
|
+
signers;
|
|
29
49
|
constructor(init) {
|
|
30
50
|
super({
|
|
31
51
|
chainId: init.chainId,
|
|
@@ -35,6 +55,10 @@ export class SolanaTransactionStatus extends TransactionStatus {
|
|
|
35
55
|
balanceChanges: init.balanceChanges,
|
|
36
56
|
});
|
|
37
57
|
this.fees = init.fees ?? null;
|
|
58
|
+
this.slot = init.slot ?? null;
|
|
59
|
+
this.confirmations = init.confirmations ?? null;
|
|
60
|
+
this.confirmationStatus = init.confirmationStatus ?? null;
|
|
61
|
+
this.signers = init.signers ?? [];
|
|
38
62
|
}
|
|
39
63
|
static successful(args) {
|
|
40
64
|
return new SolanaTransactionStatus({
|
|
@@ -44,6 +68,10 @@ export class SolanaTransactionStatus extends TransactionStatus {
|
|
|
44
68
|
balanceChanges: args.balanceChanges,
|
|
45
69
|
fees: args.fees,
|
|
46
70
|
error: null,
|
|
71
|
+
slot: args.slot,
|
|
72
|
+
confirmations: args.confirmations,
|
|
73
|
+
confirmationStatus: args.confirmationStatus,
|
|
74
|
+
signers: args.signers,
|
|
47
75
|
});
|
|
48
76
|
}
|
|
49
77
|
/**
|
|
@@ -51,7 +79,7 @@ export class SolanaTransactionStatus extends TransactionStatus {
|
|
|
51
79
|
* the slot's ledger data so `getTransaction` returned null but
|
|
52
80
|
* `getSignatureStatus` reports `finalized` + `err`) has no way to
|
|
53
81
|
* reconstruct fees; the alternative would be polling `Pending`
|
|
54
|
-
* indefinitely
|
|
82
|
+
* indefinitely.
|
|
55
83
|
*/
|
|
56
84
|
static failed(args) {
|
|
57
85
|
return new SolanaTransactionStatus({
|
|
@@ -61,9 +89,13 @@ export class SolanaTransactionStatus extends TransactionStatus {
|
|
|
61
89
|
error: args.error,
|
|
62
90
|
balanceChanges: null,
|
|
63
91
|
fees: args.fees,
|
|
92
|
+
slot: args.slot,
|
|
93
|
+
confirmations: args.confirmations,
|
|
94
|
+
confirmationStatus: args.confirmationStatus,
|
|
95
|
+
signers: args.signers,
|
|
64
96
|
});
|
|
65
97
|
}
|
|
66
|
-
static pending(chainId) {
|
|
98
|
+
static pending(chainId, finality) {
|
|
67
99
|
return new SolanaTransactionStatus({
|
|
68
100
|
chainId,
|
|
69
101
|
status: TransactionStatusTypes.Pending,
|
|
@@ -71,6 +103,10 @@ export class SolanaTransactionStatus extends TransactionStatus {
|
|
|
71
103
|
error: null,
|
|
72
104
|
balanceChanges: null,
|
|
73
105
|
fees: null,
|
|
106
|
+
slot: finality?.slot,
|
|
107
|
+
confirmations: finality?.confirmations,
|
|
108
|
+
confirmationStatus: finality?.confirmationStatus,
|
|
109
|
+
signers: finality?.signers,
|
|
74
110
|
});
|
|
75
111
|
}
|
|
76
112
|
static notFound(chainId, error = null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana_transaction_status.js","sourceRoot":"","sources":["../../../solana/solana_transaction_status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EACL,kBAAkB,EAGlB,iBAAiB,EAEjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AASlC,MAAM,OAAO,qBAAqB;IACvB,QAAQ,CAAS;IACjB,WAAW,CAAS;IAC7B;kFAC8E;IACrE,oBAAoB,CAAgB;IACpC,2BAA2B,CAAS;IAE7C,YAAY,IAA+B;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,kDAAkD,CACnD,CAAC;QACJ,CAAC;QACD,wEAAwE;QACxE,IAAI,IAAI,CAAC,WAAW,GAAG,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,uDAAuD,IAAI,CAAC,WAAW,EAAE,CAC1E,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,IAAI,IAAI,CAAC,oBAAoB,GAAG,EAAE,EAAE,CAAC;YACzE,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,wEAAwE,IAAI,CAAC,oBAAoB,EAAE,CACpG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtD,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,CAAC;IACtE,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"solana_transaction_status.js","sourceRoot":"","sources":["../../../solana/solana_transaction_status.ts"],"names":[],"mappings":"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"}
|
package/docs/solana.md
CHANGED
|
@@ -161,6 +161,29 @@ decodes these into a `NestedBalanceChanges` — the same nested Map shape EVM em
|
|
|
161
161
|
and returns a `SolanaTransactionStatus` (extends `TransactionStatus`) with `fees:
|
|
162
162
|
SolanaTransactionFees` alongside. Wallet keys are the raw base58 (case-sensitive).
|
|
163
163
|
|
|
164
|
+
**Finality fields (RIN-296).** The status also carries four fields populated by firing
|
|
165
|
+
`getSignatureStatus` in parallel with `getTransaction`:
|
|
166
|
+
|
|
167
|
+
- `slot: number | null` — from `getTransaction.slot` on the Success path; from
|
|
168
|
+
`getSignatureStatus.slot` on the ledger-pruned fallback.
|
|
169
|
+
- `confirmations: number | null` — the raw RPC count (0..31) for non-final states,
|
|
170
|
+
normalised to the exported `SOLANA_FINALIZED_CONFIRMATIONS = 32` when the RPC reports
|
|
171
|
+
`null` (rooted). Saturates at 32 — consumers running a uniform `confirmationBlocks: 64`
|
|
172
|
+
gate across families should either special-case Solana or bound at 32.
|
|
173
|
+
- `confirmationStatus: 'processed' | 'confirmed' | 'finalized' | null` — raw RPC string.
|
|
174
|
+
- `signers: readonly string[]` — base58 signer keys in message order
|
|
175
|
+
(`staticAccountKeys[0..header.numRequiredSignatures]`). Empty on the ledger-pruned
|
|
176
|
+
fallback and on `notFound`.
|
|
177
|
+
|
|
178
|
+
**No `blockNumber`.** Solana slots are not block heights (skipped slots exist) and
|
|
179
|
+
`getChainTipHeight` returns a block height (0.3.3 fix). Consumers deriving finality from
|
|
180
|
+
`blockNumber` on other families must gate Solana on `confirmations`.
|
|
181
|
+
|
|
182
|
+
**Sig-status soft-fail (D2).** If `getSignatureStatus` errors while `getTransaction`
|
|
183
|
+
succeeds, the returned Success/Failed status keeps `slot` + `signers` populated but
|
|
184
|
+
`confirmations`/`confirmationStatus` are `null`. The whole read is not thrown — a working
|
|
185
|
+
tx read shouldn't fail because a metadata enrichment call failed.
|
|
186
|
+
|
|
164
187
|
Fallback path when `getTransaction` returns null:
|
|
165
188
|
- `getSignatureStatus` yields no value at all → `NotFound`.
|
|
166
189
|
- `getSignatureStatus` reports `finalized`/`confirmed` with `err` set →
|
package/package.json
CHANGED