@artblocks/abx-sdk 0.4.1 → 0.4.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 +6 -0
- package/dist/chains.d.ts +1 -1
- package/dist/chains.d.ts.map +1 -1
- package/dist/chains.js +19 -11
- package/dist/chains.js.map +1 -1
- package/dist/clients.d.ts +24 -1
- package/dist/clients.d.ts.map +1 -1
- package/dist/clients.js +128 -19
- package/dist/clients.js.map +1 -1
- package/dist/creator-token.d.ts +1 -1
- package/dist/creator-token.d.ts.map +1 -1
- package/dist/creator-token.js +3 -1
- package/dist/creator-token.js.map +1 -1
- package/dist/execute.d.ts +4 -0
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +10 -1
- package/dist/execute.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @artblocks/abx-sdk
|
|
2
2
|
|
|
3
|
+
## 0.4.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f4e091e: Fail over across independent public RPCs by default, show unavailable fallbacks in `abx doctor`, preserve submitted transaction hashes during receipt outages, add Base mainnet's qualified recommended 721C validator, and warn before a collection image masks every token render.
|
|
8
|
+
|
|
3
9
|
## 0.4.1
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/dist/chains.d.ts
CHANGED
|
@@ -46,7 +46,7 @@ export declare function rpcEnvVar(chainKey: string): string;
|
|
|
46
46
|
* (e.g. widest `eth_getLogs` range). The bare and per-chain vars are never mixed, so a list for
|
|
47
47
|
* one network can't leak into another; a chainId guard (see `assertChainId`) then verifies the
|
|
48
48
|
* endpoints actually ARE `chainKey`.
|
|
49
|
-
* - manifest: the built-in keyless
|
|
49
|
+
* - manifest: the built-in keyless defaults for `chainKey`, normally independent providers.
|
|
50
50
|
*/
|
|
51
51
|
export declare function resolveRpcUrls(chainKey?: string, override?: string | string[]): string[];
|
|
52
52
|
/** The primary RPC endpoint (the first of {@link resolveRpcUrls}). */
|
package/dist/chains.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,MAAM,CAAC;AAIhC;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CASxC,CAAC;AASF,sFAAsF;AACtF,eAAO,MAAM,cAAc,UAA0C,CAAC;AAEtE,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,UAAoE,CAAC;AAEtG,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,UAAuB,CAAC;AAErD,eAAO,MAAM,iBAAiB,QAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,MAAM,CAAC;AAIhC;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CASxC,CAAC;AASF,sFAAsF;AACtF,eAAO,MAAM,cAAc,UAA0C,CAAC;AAEtE,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,UAAoE,CAAC;AAEtG,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,UAAuB,CAAC;AAErD,eAAO,MAAM,iBAAiB,QAAsC,CAAC;AAsBrE,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAA0B,GAAG,KAAK,CAInE;AAED;wFACwF;AACxF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;sFAGsF;AACtF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;+FAC+F;AAC/F,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAA0B,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAU3G;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,QAAQ,GAAE,MAA0B,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAExG;AAED,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAShD;AAED;;iGAEiG;AACjG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAOjF"}
|
package/dist/chains.js
CHANGED
|
@@ -29,16 +29,24 @@ export const SUPPORTED_CHAIN_KEYS = CHAIN_SUPPORT.filter(isChainSelectable).map(
|
|
|
29
29
|
/** Backward-compatible name for the CLI-selectable chain list. */
|
|
30
30
|
export const KNOWN_CHAIN_KEYS = SUPPORTED_CHAIN_KEYS;
|
|
31
31
|
export const DEFAULT_CHAIN_KEY = CHAIN_SUPPORT_REGISTRY.defaultChain;
|
|
32
|
-
// Public, keyless endpoints per chain — overridable.
|
|
33
|
-
//
|
|
32
|
+
// Public, keyless endpoints per chain — overridable. Each supported chain has independent
|
|
33
|
+
// providers where the network offers them: a public RPC is a convenience, not an availability
|
|
34
|
+
// guarantee, and rate limits / lag / method policy differ between providers. A self-hoster can
|
|
35
|
+
// replace the list outright through ABX_RPC_URLS_<CHAIN>; nothing depends on either provider.
|
|
34
36
|
const DEFAULT_RPC_URLS = {
|
|
35
|
-
'base-sepolia': 'https://sepolia.base.org',
|
|
36
|
-
sepolia: 'https://ethereum-sepolia-rpc.publicnode.com',
|
|
37
|
-
'robinhood-testnet':
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
arbitrum:
|
|
37
|
+
'base-sepolia': ['https://sepolia.base.org', 'https://base-sepolia-rpc.publicnode.com'],
|
|
38
|
+
sepolia: ['https://ethereum-sepolia-rpc.publicnode.com'],
|
|
39
|
+
'robinhood-testnet': [
|
|
40
|
+
'https://rpc.testnet.chain.robinhood.com',
|
|
41
|
+
'https://robinhood-sepolia-rpc.publicnode.com',
|
|
42
|
+
],
|
|
43
|
+
'arbitrum-sepolia': [
|
|
44
|
+
'https://sepolia-rollup.arbitrum.io/rpc',
|
|
45
|
+
'https://arbitrum-sepolia-rpc.publicnode.com',
|
|
46
|
+
],
|
|
47
|
+
robinhood: ['https://rpc.mainnet.chain.robinhood.com', 'https://robinhood-rpc.publicnode.com'],
|
|
48
|
+
base: ['https://mainnet.base.org', 'https://base-rpc.publicnode.com'],
|
|
49
|
+
arbitrum: ['https://arb1.arbitrum.io/rpc', 'https://arbitrum-one-rpc.publicnode.com'],
|
|
42
50
|
};
|
|
43
51
|
export function resolveChain(key = DEFAULT_CHAIN_KEY) {
|
|
44
52
|
const chain = CHAINS[key];
|
|
@@ -87,7 +95,7 @@ export function rpcEnvVar(chainKey) {
|
|
|
87
95
|
* (e.g. widest `eth_getLogs` range). The bare and per-chain vars are never mixed, so a list for
|
|
88
96
|
* one network can't leak into another; a chainId guard (see `assertChainId`) then verifies the
|
|
89
97
|
* endpoints actually ARE `chainKey`.
|
|
90
|
-
* - manifest: the built-in keyless
|
|
98
|
+
* - manifest: the built-in keyless defaults for `chainKey`, normally independent providers.
|
|
91
99
|
*/
|
|
92
100
|
export function resolveRpcUrls(chainKey = DEFAULT_CHAIN_KEY, override) {
|
|
93
101
|
const overrideList = override === undefined ? undefined : Array.isArray(override) ? override.join(',') : override;
|
|
@@ -98,7 +106,7 @@ export function resolveRpcUrls(chainKey = DEFAULT_CHAIN_KEY, override) {
|
|
|
98
106
|
.map((u) => u.trim())
|
|
99
107
|
.filter((u) => u && !seen.has(u) && seen.add(u));
|
|
100
108
|
if (urls.length === 0 && DEFAULT_RPC_URLS[chainKey])
|
|
101
|
-
urls.push(DEFAULT_RPC_URLS[chainKey]);
|
|
109
|
+
urls.push(...DEFAULT_RPC_URLS[chainKey]);
|
|
102
110
|
return urls;
|
|
103
111
|
}
|
|
104
112
|
/** The primary RPC endpoint (the first of {@link resolveRpcUrls}). */
|
package/dist/chains.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAExH,OAAO,EAAC,aAAa,EAAE,sBAAsB,EAAE,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAA0B;IAC3C,cAAc,EAAE,WAAW;IAC3B,OAAO;IACP,mBAAmB,EAAE,gBAAgB;IACrC,kBAAkB,EAAE,eAAe;IACnC,IAAI;IACJ,SAAS;IACT,QAAQ,EAAE,OAAO;IACjB,QAAQ;CACT,CAAC;AAEF,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,GAAG,cAAc,OAAO,CAAC,OAAO,UAAU,KAAK,EAAE,EAAE,IAAI,SAAS,EAAE,CAAC,CAAC;IAC7H,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEtE,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEtG,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,YAAY,CAAC;AAErE,
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
|
package/dist/clients.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type PublicClient, type WalletClient, type Account, type Hex } from 'viem';
|
|
1
|
+
import { type PublicClient, type WalletClient, type Account, type Hex, type TransactionReceipt } from 'viem';
|
|
2
2
|
export interface ClientOptions {
|
|
3
3
|
chainKey?: string;
|
|
4
4
|
/** A single RPC endpoint — wins outright over everything else (env included). */
|
|
@@ -8,8 +8,30 @@ export interface ClientOptions {
|
|
|
8
8
|
* resolution — see {@link resolveRpcUrls}'s override → env → manifest precedence. */
|
|
9
9
|
rpcUrls?: string[];
|
|
10
10
|
}
|
|
11
|
+
type ReceiptReader = Pick<PublicClient, 'getTransactionReceipt'> & Partial<Pick<PublicClient, 'getChainId'>>;
|
|
12
|
+
/** Validate the untrusted JSON-RPC object before it can drive a dependent transaction. Viem formats
|
|
13
|
+
* normal receipts, but the queried hash and each log's receipt identity are cross-field invariants
|
|
14
|
+
* a provider response must not be allowed to contradict. */
|
|
15
|
+
export declare function assertReceiptIdentity(receipt: TransactionReceipt, hash: Hex): void;
|
|
16
|
+
/** One receipt probe across configured readers. Every URL in the configured set is inside the
|
|
17
|
+
* same JSON-RPC trust boundary; list order is an operational preference, not a security tier. */
|
|
18
|
+
export declare function firstAvailableReceipt(readers: readonly ReceiptReader[], hash: Hex, options?: {
|
|
19
|
+
expectedChainId?: number;
|
|
20
|
+
allowStaleFirstFallback?: boolean;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
receipt?: TransactionReceipt;
|
|
23
|
+
error?: unknown;
|
|
24
|
+
}>;
|
|
11
25
|
/** A read-only client — all the indexer and token API ever need. */
|
|
12
26
|
export declare function makePublicClient(opts?: ClientOptions): PublicClient;
|
|
27
|
+
/** Wait for a mined receipt across the trusted RPC peers configured for this client. A short grace
|
|
28
|
+
* period preserves deterministic preference ordering; after it, a stale first endpoint must not
|
|
29
|
+
* hold an available receipt hostage. Every accepted peer verifies chain and receipt identity. */
|
|
30
|
+
export declare function waitForTransactionReceiptResilient(client: PublicClient, args: {
|
|
31
|
+
hash: Hex;
|
|
32
|
+
timeoutMs?: number;
|
|
33
|
+
pollingIntervalMs?: number;
|
|
34
|
+
}): Promise<TransactionReceipt>;
|
|
13
35
|
/**
|
|
14
36
|
* Verify the configured RPC actually IS the chain we think it is, before any write.
|
|
15
37
|
* The env var names a network ("sepolia") but the URL behind it could point anywhere;
|
|
@@ -51,4 +73,5 @@ export declare function makeWalletClient(opts?: WalletClientOptions): {
|
|
|
51
73
|
* client. Never throws.
|
|
52
74
|
*/
|
|
53
75
|
export declare function envSigningKey(override?: Hex): `0x${string}` | undefined;
|
|
76
|
+
export {};
|
|
54
77
|
//# sourceMappingURL=clients.d.ts.map
|
package/dist/clients.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../src/clients.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAEjB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../src/clients.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAEjB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,kBAAkB,EACxB,MAAM,MAAM,CAAC;AAMd,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;0FAEsF;IACtF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAqBD,KAAK,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;AAU7G;;4DAE4D;AAC5D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAuBlF;AAmBD;iGACiG;AACjG,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,IAAI,EAAE,GAAG,EACT,OAAO,GAAE;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAM,GAC1E,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAC,CAAC,CAoB1D;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,aAAkB,GAAG,YAAY,CAKvE;AAED;;iGAEiG;AACjG,wBAAsB,kCAAkC,CACtD,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAC,GAChE,OAAO,CAAC,kBAAkB,CAAC,CAiC7B;AAID;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,QAAQ,GAAE,MAA0B,EACpC,IAAI,GAAE;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAM,GACtC,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD;;oFAEgF;IAChF,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,mBAAwB,GAAG;IAChE,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB,CAOA;AAOD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,KAAK,MAAM,EAAE,GAAG,SAAS,CAGvE"}
|
package/dist/clients.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createPublicClient, createWalletClient, fallback, http, } from 'viem';
|
|
2
2
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
3
|
-
import { DEFAULT_CHAIN_KEY, resolveChain, resolveRpcUrls, rpcEnvVar } from './chains.js';
|
|
3
|
+
import { DEFAULT_CHAIN_KEY, redactRpcUrl, resolveChain, resolveRpcUrls, rpcEnvVar } from './chains.js';
|
|
4
4
|
import { readEnv } from './util.js';
|
|
5
5
|
import { MissingSigningKeyError } from './errors.js';
|
|
6
6
|
/**
|
|
@@ -9,17 +9,126 @@ import { MissingSigningKeyError } from './errors.js';
|
|
|
9
9
|
* is retried on the next, which is how the toolkit "finds the endpoint fit for the
|
|
10
10
|
* job" at request time. `retryCount: 0` makes that failover immediate.
|
|
11
11
|
*/
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
function clientRpcList(opts) {
|
|
13
|
+
return opts.rpcUrl ? [opts.rpcUrl] : resolveRpcUrls(opts.chainKey, opts.rpcUrls);
|
|
14
|
+
}
|
|
15
|
+
function makeTransport(urls) {
|
|
16
16
|
if (urls.length <= 1)
|
|
17
17
|
return http(urls[0]);
|
|
18
|
+
// Keep operator preference deterministic. Receipt reads separately query every endpoint because
|
|
19
|
+
// "not found" from a stale node is a successful JSON-RPC response, not a fallback-triggering error.
|
|
18
20
|
return fallback(urls.map((u) => http(u, { retryCount: 0 })));
|
|
19
21
|
}
|
|
22
|
+
const rpcLists = new WeakMap();
|
|
23
|
+
class ReceiptValidationError extends Error {
|
|
24
|
+
}
|
|
25
|
+
function receiptMissing(error) {
|
|
26
|
+
const name = typeof error === 'object' && error !== null && 'name' in error ? String(error.name) : '';
|
|
27
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
28
|
+
return name === 'TransactionReceiptNotFoundError' || /receipt.{0,40}(not found|could not be found)/i.test(message);
|
|
29
|
+
}
|
|
30
|
+
/** Validate the untrusted JSON-RPC object before it can drive a dependent transaction. Viem formats
|
|
31
|
+
* normal receipts, but the queried hash and each log's receipt identity are cross-field invariants
|
|
32
|
+
* a provider response must not be allowed to contradict. */
|
|
33
|
+
export function assertReceiptIdentity(receipt, hash) {
|
|
34
|
+
const expected = hash.toLowerCase();
|
|
35
|
+
if (receipt.transactionHash?.toLowerCase() !== expected) {
|
|
36
|
+
throw new ReceiptValidationError(`RPC returned receipt ${receipt.transactionHash ?? '(missing hash)'} for requested transaction ${hash}.`);
|
|
37
|
+
}
|
|
38
|
+
if (receipt.status !== 'success' && receipt.status !== 'reverted') {
|
|
39
|
+
throw new ReceiptValidationError(`RPC returned an invalid receipt status for transaction ${hash}.`);
|
|
40
|
+
}
|
|
41
|
+
for (const log of receipt.logs ?? []) {
|
|
42
|
+
if (log.transactionHash?.toLowerCase() !== expected) {
|
|
43
|
+
throw new ReceiptValidationError(`RPC returned a log from ${log.transactionHash ?? '(missing transaction hash)'} in receipt ${hash}.`);
|
|
44
|
+
}
|
|
45
|
+
if (log.blockHash?.toLowerCase() !== receipt.blockHash?.toLowerCase()) {
|
|
46
|
+
throw new ReceiptValidationError(`RPC returned a log from a different block in receipt ${hash}.`);
|
|
47
|
+
}
|
|
48
|
+
if (log.blockNumber !== receipt.blockNumber) {
|
|
49
|
+
throw new ReceiptValidationError(`RPC returned a log from a different block number in receipt ${hash}.`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function checkedReceipt(reader, hash, expectedChainId) {
|
|
54
|
+
const receipt = await reader.getTransactionReceipt({ hash });
|
|
55
|
+
assertReceiptIdentity(receipt, hash);
|
|
56
|
+
if (expectedChainId !== undefined) {
|
|
57
|
+
if (!reader.getChainId)
|
|
58
|
+
throw new ReceiptValidationError('Receipt reader cannot verify its chain id.');
|
|
59
|
+
const actual = await reader.getChainId();
|
|
60
|
+
if (actual !== expectedChainId) {
|
|
61
|
+
throw new ReceiptValidationError(`Receipt RPC reports chain ${actual}, expected ${expectedChainId}.`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return receipt;
|
|
65
|
+
}
|
|
66
|
+
/** One receipt probe across configured readers. Every URL in the configured set is inside the
|
|
67
|
+
* same JSON-RPC trust boundary; list order is an operational preference, not a security tier. */
|
|
68
|
+
export async function firstAvailableReceipt(readers, hash, options = {}) {
|
|
69
|
+
if (readers.length === 0)
|
|
70
|
+
return { error: new Error('No receipt RPC is configured.') };
|
|
71
|
+
try {
|
|
72
|
+
// Give the first configured endpoint a short propagation window to keep ordinary behavior
|
|
73
|
+
// deterministic. This is preference ordering only; every configured endpoint is a trusted peer.
|
|
74
|
+
return { receipt: await checkedReceipt(readers[0], hash, options.expectedChainId) };
|
|
75
|
+
}
|
|
76
|
+
catch (firstError) {
|
|
77
|
+
if (firstError instanceof ReceiptValidationError || readers.length === 1)
|
|
78
|
+
return { error: firstError };
|
|
79
|
+
if (receiptMissing(firstError) && !options.allowStaleFirstFallback)
|
|
80
|
+
return { error: firstError };
|
|
81
|
+
try {
|
|
82
|
+
return {
|
|
83
|
+
receipt: await Promise.any(readers.slice(1).map((reader) => checkedReceipt(reader, hash, options.expectedChainId))),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
catch (fallbackError) {
|
|
87
|
+
const reasons = fallbackError instanceof AggregateError ? fallbackError.errors : [fallbackError];
|
|
88
|
+
return { error: reasons.find((reason) => reason !== undefined) ?? firstError };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
20
92
|
/** A read-only client — all the indexer and token API ever need. */
|
|
21
93
|
export function makePublicClient(opts = {}) {
|
|
22
|
-
|
|
94
|
+
const urls = clientRpcList(opts);
|
|
95
|
+
const client = createPublicClient({ chain: resolveChain(opts.chainKey), transport: makeTransport(urls) });
|
|
96
|
+
rpcLists.set(client, urls);
|
|
97
|
+
return client;
|
|
98
|
+
}
|
|
99
|
+
/** Wait for a mined receipt across the trusted RPC peers configured for this client. A short grace
|
|
100
|
+
* period preserves deterministic preference ordering; after it, a stale first endpoint must not
|
|
101
|
+
* hold an available receipt hostage. Every accepted peer verifies chain and receipt identity. */
|
|
102
|
+
export async function waitForTransactionReceiptResilient(client, args) {
|
|
103
|
+
const urls = rpcLists.get(client) ?? [];
|
|
104
|
+
if (urls.length <= 1) {
|
|
105
|
+
const receipt = await client.waitForTransactionReceipt({ hash: args.hash, timeout: args.timeoutMs });
|
|
106
|
+
assertReceiptIdentity(receipt, args.hash);
|
|
107
|
+
if (client.chain) {
|
|
108
|
+
const actualChainId = await client.getChainId();
|
|
109
|
+
if (actualChainId !== client.chain.id) {
|
|
110
|
+
throw new ReceiptValidationError(`Receipt RPC reports chain ${actualChainId}, expected ${client.chain.id}.`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return receipt;
|
|
114
|
+
}
|
|
115
|
+
const readers = urls.map((rpcUrl) => createPublicClient({ chain: client.chain, transport: http(rpcUrl, { retryCount: 0 }) }));
|
|
116
|
+
const deadline = Date.now() + (args.timeoutMs ?? 180_000);
|
|
117
|
+
const startedAt = Date.now();
|
|
118
|
+
let lastError;
|
|
119
|
+
for (;;) {
|
|
120
|
+
const result = await firstAvailableReceipt(readers, args.hash, {
|
|
121
|
+
expectedChainId: client.chain?.id,
|
|
122
|
+
allowStaleFirstFallback: Date.now() - startedAt >= 6_000,
|
|
123
|
+
});
|
|
124
|
+
if (result.receipt)
|
|
125
|
+
return result.receipt;
|
|
126
|
+
lastError = result.error;
|
|
127
|
+
if (Date.now() >= deadline) {
|
|
128
|
+
throw lastError instanceof Error ? lastError : new Error(`Receipt ${args.hash} was not available before timeout.`);
|
|
129
|
+
}
|
|
130
|
+
await new Promise((resolve) => setTimeout(resolve, args.pollingIntervalMs ?? 1_000));
|
|
131
|
+
}
|
|
23
132
|
}
|
|
24
133
|
const verifiedChains = new Set();
|
|
25
134
|
/**
|
|
@@ -36,24 +145,24 @@ const verifiedChains = new Set();
|
|
|
36
145
|
* still preview what it can. Only a reachable-but-wrong endpoint is a preview-blocking error.
|
|
37
146
|
*/
|
|
38
147
|
export async function assertChainId(chainKey = DEFAULT_CHAIN_KEY, opts = {}) {
|
|
39
|
-
|
|
148
|
+
const urls = resolveRpcUrls(chainKey);
|
|
149
|
+
const verificationKey = `${chainKey}\0${urls.join('\0')}`;
|
|
150
|
+
if (verifiedChains.has(verificationKey))
|
|
40
151
|
return;
|
|
41
152
|
const expected = resolveChain(chainKey).id;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
153
|
+
const checks = await Promise.allSettled(urls.map((url) => createPublicClient({ chain: resolveChain(chainKey), transport: http(url, { retryCount: 0 }) }).getChainId()));
|
|
154
|
+
const reachable = checks.flatMap((result, index) => result.status === 'fulfilled' ? [{ actual: result.value, url: urls[index] }] : []);
|
|
155
|
+
const wrong = reachable.find(({ actual }) => actual !== expected);
|
|
156
|
+
if (wrong) {
|
|
157
|
+
throw new Error(`RPC network mismatch: the configured endpoint (${redactRpcUrl(wrong.url)}) reports chain ${wrong.actual}, but ABX_CHAIN='${chainKey}' ` +
|
|
158
|
+
`expects ${expected}. Point ${rpcEnvVar(chainKey)} (or ABX_RPC_URLS) at a '${chainKey}' endpoint.`);
|
|
45
159
|
}
|
|
46
|
-
|
|
160
|
+
if (reachable.length === 0) {
|
|
47
161
|
if (opts.allowUnreachable)
|
|
48
162
|
return; // offline dry-run: preview what we can, don't block
|
|
49
|
-
throw new Error(`Could not reach an RPC for '${chainKey}' to verify the network
|
|
50
|
-
`Check ${rpcEnvVar(chainKey)} / ABX_RPC_URLS in your .env.`);
|
|
51
|
-
}
|
|
52
|
-
if (actual !== expected) {
|
|
53
|
-
throw new Error(`RPC network mismatch: the configured endpoint reports chain ${actual}, but ABX_CHAIN='${chainKey}' ` +
|
|
54
|
-
`expects ${expected}. Point ${rpcEnvVar(chainKey)} (or ABX_RPC_URLS) at a '${chainKey}' endpoint.`);
|
|
163
|
+
throw new Error(`Could not reach an RPC for '${chainKey}' to verify the network. Check ${rpcEnvVar(chainKey)} / ABX_RPC_URLS in your .env.`);
|
|
55
164
|
}
|
|
56
|
-
verifiedChains.add(
|
|
165
|
+
verifiedChains.add(verificationKey);
|
|
57
166
|
}
|
|
58
167
|
/**
|
|
59
168
|
* A signing client, backed by a private key. The SDK never takes custody of keys beyond
|
|
@@ -69,7 +178,7 @@ export function makeWalletClient(opts = {}) {
|
|
|
69
178
|
throw new MissingSigningKeyError();
|
|
70
179
|
const account = privateKeyToAccount(normalizePk(pk));
|
|
71
180
|
const chain = resolveChain(opts.chainKey);
|
|
72
|
-
const wallet = createWalletClient({ account, chain, transport: makeTransport(opts) });
|
|
181
|
+
const wallet = createWalletClient({ account, chain, transport: makeTransport(clientRpcList(opts)) });
|
|
73
182
|
return { wallet, account };
|
|
74
183
|
}
|
|
75
184
|
function normalizePk(pk) {
|
package/dist/clients.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clients.js","sourceRoot":"","sources":["../src/clients.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,QAAQ,EACR,IAAI,
|
|
1
|
+
{"version":3,"file":"clients.js","sourceRoot":"","sources":["../src/clients.ts"],"names":[],"mappings":"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"}
|
package/dist/creator-token.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export declare const CREATOR_TOKEN_EXTENSION_ID: "0x0839e7ed7fc1f5db3f253851d61b
|
|
|
37
37
|
* an owner-initiated (OTC) transfer succeeds; an unauthorized operator reverts
|
|
38
38
|
* `StrictAuthorizedTransferSecurityRegistry__UnauthorizedTransfer()`.
|
|
39
39
|
*
|
|
40
|
-
* CREATE2-style vanity address, identical on
|
|
40
|
+
* CREATE2-style vanity address, identical on the shipped chains — kept per-chain anyway
|
|
41
41
|
* (keyed like `deployments.ts`) because presence-on-chain is the fact that matters, and a
|
|
42
42
|
* future chain may recommend a different validator.
|
|
43
43
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator-token.d.ts","sourceRoot":"","sources":["../src/creator-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAkC,KAAK,OAAO,EAAY,KAAK,YAAY,EAAC,MAAM,MAAM,CAAC;AAEhG,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEzC,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,EAAG,YAAqB,CAAC;AAChE,qFAAqF;AACrF,eAAO,MAAM,iCAAiC,EAAG,YAAqB,CAAC;AACvE,iGAAiG;AACjG,eAAO,MAAM,0BAA0B,EACrC,oEAA6E,CAAC;AAEhF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"creator-token.d.ts","sourceRoot":"","sources":["../src/creator-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAkC,KAAK,OAAO,EAAY,KAAK,YAAY,EAAC,MAAM,MAAM,CAAC;AAEhG,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEzC,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,EAAG,YAAqB,CAAC;AAChE,qFAAqF;AACrF,eAAO,MAAM,iCAAiC,EAAG,YAAqB,CAAC;AACvE,iGAAiG;AACjG,eAAO,MAAM,0BAA0B,EACrC,oEAA6E,CAAC;AAEhF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAOlE,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAExF;AAED,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,yFAAyF;IACzF,QAAQ,EAAE,OAAO,CAAC;IAClB,uFAAuF;IACvF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAe7B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,wBAAwB,GAAG,IAAI,GAAG,SAAS,GAAG,qBAAqB,GAAG,aAAa,CAAC;AAEhG,oGAAoG;AACpG,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,wBAAwB,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,OAAO;AAClB;+DAC+D;AAC/D,IAAI,GAAE;IAAC,EAAE,CAAC,EAAE,OAAO,CAAA;CAAM,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAsBjC;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,UAAU,CAiBb"}
|
package/dist/creator-token.js
CHANGED
|
@@ -37,7 +37,7 @@ export const CREATOR_TOKEN_EXTENSION_ID = '0x0839e7ed7fc1f5db3f253851d61b10f8520
|
|
|
37
37
|
* an owner-initiated (OTC) transfer succeeds; an unauthorized operator reverts
|
|
38
38
|
* `StrictAuthorizedTransferSecurityRegistry__UnauthorizedTransfer()`.
|
|
39
39
|
*
|
|
40
|
-
* CREATE2-style vanity address, identical on
|
|
40
|
+
* CREATE2-style vanity address, identical on the shipped chains — kept per-chain anyway
|
|
41
41
|
* (keyed like `deployments.ts`) because presence-on-chain is the fact that matters, and a
|
|
42
42
|
* future chain may recommend a different validator.
|
|
43
43
|
*/
|
|
@@ -46,6 +46,8 @@ export const RECOMMENDED_TRANSFER_VALIDATOR = {
|
|
|
46
46
|
11155111: '0xA000027A9B2802E1ddf7000061001e5c005A0000',
|
|
47
47
|
// Base Sepolia (testnet)
|
|
48
48
|
84532: '0xA000027A9B2802E1ddf7000061001e5c005A0000',
|
|
49
|
+
// Base (mainnet) — same deployed runtime bytecode as Base Sepolia, verified before inclusion.
|
|
50
|
+
8453: '0xA000027A9B2802E1ddf7000061001e5c005A0000',
|
|
49
51
|
};
|
|
50
52
|
/** The recommended validator for a chain (undefined if none is known — never guess one). */
|
|
51
53
|
export function resolveRecommendedTransferValidator(chainId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator-token.js","sourceRoot":"","sources":["../src/creator-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAC,kBAAkB,EAAE,WAAW,EAA4C,MAAM,MAAM,CAAC;AAChG,OAAO,EAAC,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAGhD,0FAA0F;AAC1F,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAqB,CAAC;AAChE,qFAAqF;AACrF,MAAM,CAAC,MAAM,iCAAiC,GAAG,YAAqB,CAAC;AACvE,iGAAiG;AACjG,MAAM,CAAC,MAAM,0BAA0B,GACrC,oEAA6E,CAAC;AAEhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAA4B;IACrE,oBAAoB;IACpB,QAAQ,EAAE,4CAA4C;IACtD,yBAAyB;IACzB,KAAK,EAAE,4CAA4C;
|
|
1
|
+
{"version":3,"file":"creator-token.js","sourceRoot":"","sources":["../src/creator-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAC,kBAAkB,EAAE,WAAW,EAA4C,MAAM,MAAM,CAAC;AAChG,OAAO,EAAC,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAGhD,0FAA0F;AAC1F,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAqB,CAAC;AAChE,qFAAqF;AACrF,MAAM,CAAC,MAAM,iCAAiC,GAAG,YAAqB,CAAC;AACvE,iGAAiG;AACjG,MAAM,CAAC,MAAM,0BAA0B,GACrC,oEAA6E,CAAC;AAEhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAA4B;IACrE,oBAAoB;IACpB,QAAQ,EAAE,4CAA4C;IACtD,yBAAyB;IACzB,KAAK,EAAE,4CAA4C;IACnD,8FAA8F;IAC9F,IAAI,EAAE,4CAA4C;CACnD,CAAC;AAEF,4FAA4F;AAC5F,MAAM,UAAU,mCAAmC,CAAC,OAAe;IACjE,OAAO,8BAA8B,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAoB,EACpB,QAAiB;IAEjB,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,MAAM;aACH,YAAY,CAAC;YACZ,OAAO,EAAE,QAAQ;YACjB,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,mBAAmB;YACjC,IAAI,EAAE,CAAC,0BAA0B,CAAC;SACnC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAqB;QACzC,MAAM;aACH,YAAY,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,sBAAsB,EAAC,CAAC;aAC9F,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,CAAqB;KAChD,CAAC,CAAC;IACH,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,CAAC;AAC/B,CAAC;AAwBD;;;GAGG;AACH,MAAM,wBAAwB,GAAG,YAAmB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAoB,EACpB,SAAkB;AAClB;+DAC+D;AAC/D,OAAuB,EAAE;IAEzB,IAAI,IAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAC,OAAO,EAAE,SAAS,EAAC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC;IAC5E,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,wBAAwB;YAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uFAAuF;QACvF,0FAA0F;QAC1F,OAAO,kBAAkB,CAAC,GAAG,CAAC;YAC5B,CAAC,CAAC,EAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC;YACrE,CAAC,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC;IAC1C,CAAC;IACD,OAAO,EAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,SAAS,EAAC,CAAC;AAC9D,CAAC;AAED,6FAA6F;AAC7F,SAAS,SAAS,CAAC,GAAY;IAC7B,OAAO,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACtE,CAAC;AAED;;uGAEuG;AACvG,SAAS,kBAAkB,CAAC,GAAY;IACtC,MAAM,IAAI,GAAI,GAAuB,EAAE,IAAI,IAAI,EAAE,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;IACnD,IAAI,0EAA0E,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvG,OAAO,CACL,oFAAoF,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/F,gGAAgG,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3G,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAI3C;IACC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,KAAK,WAAW,CAAC;IAClD,OAAO;QACL,EAAE,EAAE,wBAAwB;QAC5B,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,IAAI,EAAE,kBAAkB,CAAC;YACvB,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,sBAAsB;YACpC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;SACvB,CAAC;QACF,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,UAAU;YACjB,CAAC,CAAC,mFAAmF;YACrF,CAAC,CAAC,qCAAqC,IAAI,CAAC,SAAS,EAAE;QACzD,MAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC;KAC7D,CAAC;AACJ,CAAC"}
|
package/dist/execute.d.ts
CHANGED
|
@@ -72,6 +72,10 @@ export type SendTx = (tx: PreparedTx) => Promise<TransactionReceipt>;
|
|
|
72
72
|
export type SendEvent = {
|
|
73
73
|
kind: 'sending';
|
|
74
74
|
tx: PreparedTx;
|
|
75
|
+
} | {
|
|
76
|
+
kind: 'submitted';
|
|
77
|
+
hash: Hex;
|
|
78
|
+
tx: PreparedTx;
|
|
75
79
|
} | {
|
|
76
80
|
kind: 'mined';
|
|
77
81
|
receipt: TransactionReceipt;
|
package/dist/execute.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAC,MAAM,MAAM,CAAC;AAChG,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAC,MAAM,MAAM,CAAC;AAChG,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAIzC;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhH;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,YAAY,EACpB,EAAE,EAAE;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAC,EAC/E,IAAI,GAAE;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAM,GAC/C,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED;;;sBAGsB;AACtB,MAAM,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,UAAU,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAErE;;0BAE0B;AAC1B,MAAM,MAAM,SAAS,GACjB;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,UAAU,CAAA;CAAC,GACjC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,EAAE,EAAE,UAAU,CAAA;CAAC,GAC9C;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAC;IAAC,EAAE,EAAE,UAAU,CAAA;CAAC,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;CAClC,GAAG,MAAM,CA0DT;AAED;;mDAEmD;AACnD,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAIhG"}
|
package/dist/execute.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GasEstimateBelowFloorError, TxRevertedError } from './errors.js';
|
|
2
|
+
import { waitForTransactionReceiptResilient } from './clients.js';
|
|
2
3
|
/**
|
|
3
4
|
* Wait until `address` has code from THIS client's point of view. A deploy receipt proves the
|
|
4
5
|
* contract exists on chain; it does not prove the node answering the next request has caught up.
|
|
@@ -140,7 +141,15 @@ export function makeHotSender(args) {
|
|
|
140
141
|
});
|
|
141
142
|
nonce += 1;
|
|
142
143
|
sent += 1;
|
|
143
|
-
|
|
144
|
+
notify({ kind: 'submitted', hash, tx });
|
|
145
|
+
let receipt;
|
|
146
|
+
try {
|
|
147
|
+
receipt = await waitForTransactionReceiptResilient(publicClient, { hash });
|
|
148
|
+
}
|
|
149
|
+
catch (cause) {
|
|
150
|
+
throw new Error(`Transaction ${hash} was submitted, but the configured RPCs could not read its receipt. ` +
|
|
151
|
+
`Do not retry it until you check that hash in a block explorer or another RPC.`, { cause });
|
|
152
|
+
}
|
|
144
153
|
if (receipt.status !== 'success')
|
|
145
154
|
throw new TxRevertedError(tx.op, hash);
|
|
146
155
|
notify({ kind: 'mined', receipt, tx });
|
package/dist/execute.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAC,0BAA0B,EAAE,eAAe,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"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"}
|