@towns-protocol/web3 0.0.287 → 0.0.289
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/dist/BaseContractShim.d.ts +4 -0
- package/dist/BaseContractShim.d.ts.map +1 -1
- package/dist/BaseContractShim.js +37 -0
- package/dist/BaseContractShim.js.map +1 -1
- package/dist/readContractRetryer.d.ts +10 -0
- package/dist/readContractRetryer.d.ts.map +1 -0
- package/dist/readContractRetryer.js +68 -0
- package/dist/readContractRetryer.js.map +1 -0
- package/package.json +4 -4
|
@@ -14,10 +14,14 @@ export declare class BaseContractShim<connect extends Connect<ethers.Contract>,
|
|
|
14
14
|
readonly provider: ethers.providers.Provider;
|
|
15
15
|
readonly connect: Connect<T_CONTRACT>;
|
|
16
16
|
readonly abi: Abi;
|
|
17
|
+
private _network?;
|
|
18
|
+
private _networkPromise?;
|
|
17
19
|
private contractInterface?;
|
|
18
20
|
private readContract?;
|
|
21
|
+
private readContractWithRetry?;
|
|
19
22
|
private writeContract?;
|
|
20
23
|
constructor(address: string, provider: ethers.providers.Provider, connect: Connect<T_CONTRACT>, abi: Abi);
|
|
24
|
+
getNetwork(): Promise<ethers.providers.Network | undefined>;
|
|
21
25
|
get interface(): T_CONTRACT['interface'];
|
|
22
26
|
get read(): T_CONTRACT;
|
|
23
27
|
write(signer: ethers.Signer): T_CONTRACT;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseContractShim.d.ts","sourceRoot":"","sources":["../src/BaseContractShim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/D,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"BaseContractShim.d.ts","sourceRoot":"","sources":["../src/BaseContractShim.ts"],"names":[],"mappings":"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"}
|
package/dist/BaseContractShim.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { dlogger } from '@towns-protocol/dlog';
|
|
2
2
|
import { wrapTransaction } from './space-dapp/wrapTransaction';
|
|
3
|
+
import { readRetryWrapper } from './readContractRetryer';
|
|
4
|
+
import { BASE_MAINNET, BASE_SEPOLIA, LOCALHOST_CHAIN_ID } from './utils/Web3Constants';
|
|
3
5
|
export const UNKNOWN_ERROR = 'UNKNOWN_ERROR';
|
|
4
6
|
const logger = dlogger('csb:BaseContractShim');
|
|
5
7
|
export class BaseContractShim {
|
|
@@ -7,14 +9,34 @@ export class BaseContractShim {
|
|
|
7
9
|
provider;
|
|
8
10
|
connect;
|
|
9
11
|
abi;
|
|
12
|
+
_network;
|
|
13
|
+
_networkPromise;
|
|
10
14
|
contractInterface;
|
|
11
15
|
readContract;
|
|
16
|
+
readContractWithRetry;
|
|
12
17
|
writeContract;
|
|
13
18
|
constructor(address, provider, connect, abi) {
|
|
14
19
|
this.address = address;
|
|
15
20
|
this.provider = provider;
|
|
16
21
|
this.connect = connect;
|
|
17
22
|
this.abi = abi;
|
|
23
|
+
void this.getNetwork();
|
|
24
|
+
}
|
|
25
|
+
async getNetwork() {
|
|
26
|
+
if (this._network) {
|
|
27
|
+
return this._network;
|
|
28
|
+
}
|
|
29
|
+
if (!this._networkPromise) {
|
|
30
|
+
this._networkPromise = this.provider.getNetwork();
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
this._network = await this._networkPromise;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
this._networkPromise = undefined;
|
|
37
|
+
logger.error('Failed to fetch network info:', error);
|
|
38
|
+
}
|
|
39
|
+
return this._network;
|
|
18
40
|
}
|
|
19
41
|
get interface() {
|
|
20
42
|
if (!this.contractInterface) {
|
|
@@ -29,6 +51,21 @@ export class BaseContractShim {
|
|
|
29
51
|
this.readContract = this.connect(this.address, this.provider);
|
|
30
52
|
this.contractInterface = this.readContract.interface;
|
|
31
53
|
}
|
|
54
|
+
if (!this._network) {
|
|
55
|
+
void this.getNetwork();
|
|
56
|
+
}
|
|
57
|
+
// if network is already resolved, use the appropriate contract version
|
|
58
|
+
if (this._network) {
|
|
59
|
+
// calling river chain, especially in tests, may expect a quick failure - i.e. stream doesn't exist
|
|
60
|
+
// the failed/limited calls are happening on base
|
|
61
|
+
const baseNetworks = [BASE_MAINNET, BASE_SEPOLIA, LOCALHOST_CHAIN_ID];
|
|
62
|
+
if (baseNetworks.includes(this._network.chainId)) {
|
|
63
|
+
if (!this.readContractWithRetry) {
|
|
64
|
+
this.readContractWithRetry = readRetryWrapper(this.readContract);
|
|
65
|
+
}
|
|
66
|
+
return this.readContractWithRetry;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
32
69
|
return this.readContract;
|
|
33
70
|
}
|
|
34
71
|
write(signer) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseContractShim.js","sourceRoot":"","sources":["../src/BaseContractShim.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAI9C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"BaseContractShim.js","sourceRoot":"","sources":["../src/BaseContractShim.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { Connect, ContractType } from './types/typechain';
|
|
3
|
+
type RetryOptions = {
|
|
4
|
+
maxAttempts?: number;
|
|
5
|
+
initialRetryDelay?: number;
|
|
6
|
+
maxRetryDelay?: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function readRetryWrapper<T_CONTRACT extends ContractType<Connect<ethers.Contract>>>(contract: T_CONTRACT, retryOptions?: RetryOptions): T_CONTRACT;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=readContractRetryer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readContractRetryer.d.ts","sourceRoot":"","sources":["../src/readContractRetryer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIzD,KAAK,YAAY,GAAG;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB,CAAA;AAQD,wBAAgB,gBAAgB,CAAC,UAAU,SAAS,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EACtF,QAAQ,EAAE,UAAU,EACpB,YAAY,GAAE,YAAiB,GAChC,UAAU,CAiFZ"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { dlogger } from '@towns-protocol/dlog';
|
|
2
|
+
const logger = dlogger('csb:readContractRetryer');
|
|
3
|
+
const DEFAULT_RETRY_OPTIONS = {
|
|
4
|
+
maxAttempts: 4,
|
|
5
|
+
initialRetryDelay: 1000,
|
|
6
|
+
maxRetryDelay: 8000,
|
|
7
|
+
};
|
|
8
|
+
export function readRetryWrapper(contract, retryOptions = {}) {
|
|
9
|
+
const opts = { ...DEFAULT_RETRY_OPTIONS, ...retryOptions };
|
|
10
|
+
const wrapper = Object.create(contract);
|
|
11
|
+
// ethers/typechain contracts have a set of functions.
|
|
12
|
+
// these functions are defined on the class itself, i.e. contract[myFunction]
|
|
13
|
+
// as well as in these properties, i.e. contract.callStatic.myFunction
|
|
14
|
+
// so, we're gonna replace all these with retry wrapper
|
|
15
|
+
const contractMethodProperties = [
|
|
16
|
+
'functions',
|
|
17
|
+
'callStatic',
|
|
18
|
+
'estimateGas',
|
|
19
|
+
'populateTransaction',
|
|
20
|
+
];
|
|
21
|
+
const functionNames = Object.keys(contract.functions);
|
|
22
|
+
const objectsWithContractMethods = ['root', ...contractMethodProperties];
|
|
23
|
+
for (const target of objectsWithContractMethods) {
|
|
24
|
+
const isRoot = target === 'root';
|
|
25
|
+
const source = isRoot ? wrapper : wrapper[target];
|
|
26
|
+
const destination = isRoot ? wrapper : Object.create(wrapper[target] || {});
|
|
27
|
+
for (const funcName of functionNames) {
|
|
28
|
+
const ogFunction = source?.[funcName];
|
|
29
|
+
if (typeof ogFunction === 'function') {
|
|
30
|
+
Object.defineProperty(destination, funcName, {
|
|
31
|
+
value: function (...args) {
|
|
32
|
+
return (async () => {
|
|
33
|
+
let attempt = 0;
|
|
34
|
+
// eslint-disable-next-line no-constant-condition
|
|
35
|
+
while (true) {
|
|
36
|
+
attempt++;
|
|
37
|
+
try {
|
|
38
|
+
const result = ogFunction.apply(this, args);
|
|
39
|
+
return await result;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (attempt >= opts.maxAttempts) {
|
|
43
|
+
logger.error(`Read contract call failed after ${attempt} attempts:`, error);
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
const retryDelay = Math.min(opts.maxRetryDelay, opts.initialRetryDelay * Math.pow(2, attempt - 1));
|
|
47
|
+
logger.log(`Read contract call failed for ${funcName} (attempt ${attempt}/${opts.maxAttempts}), retrying in ${retryDelay}ms:`, error);
|
|
48
|
+
await new Promise((resolve) => setTimeout(resolve, retryDelay));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
})();
|
|
52
|
+
},
|
|
53
|
+
configurable: true,
|
|
54
|
+
writable: true,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (!isRoot) {
|
|
59
|
+
Object.defineProperty(wrapper, target, {
|
|
60
|
+
value: destination,
|
|
61
|
+
configurable: true,
|
|
62
|
+
writable: true,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return wrapper;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=readContractRetryer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readContractRetryer.js","sourceRoot":"","sources":["../src/readContractRetryer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@towns-protocol/web3",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.289",
|
|
4
4
|
"packageManager": "yarn@3.8.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@isaacs/ttlcache": "^1.4.1",
|
|
22
|
-
"@towns-protocol/dlog": "^0.0.
|
|
23
|
-
"@towns-protocol/generated": "^0.0.
|
|
22
|
+
"@towns-protocol/dlog": "^0.0.289",
|
|
23
|
+
"@towns-protocol/generated": "^0.0.289",
|
|
24
24
|
"abitype": "^0.9.10",
|
|
25
25
|
"debug": "^4.3.4",
|
|
26
26
|
"ethers": "^5.7.2",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "9f555480626b06ebce630b3c45f7b08f7bd85820"
|
|
51
51
|
}
|