@xyo-network/witness-blockchain-abstract 2.79.3 → 2.79.5
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/browser/Witness.d.cts +6 -2
- package/dist/browser/Witness.d.cts.map +1 -1
- package/dist/browser/Witness.d.mts +6 -2
- package/dist/browser/Witness.d.mts.map +1 -1
- package/dist/browser/Witness.d.ts +6 -2
- package/dist/browser/Witness.d.ts.map +1 -1
- package/dist/browser/index.cjs +64 -74
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +1 -0
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +1 -0
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +64 -74
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/lib/getProviderFromEnv.d.cts +6 -2
- package/dist/browser/lib/getProviderFromEnv.d.cts.map +1 -1
- package/dist/browser/lib/getProviderFromEnv.d.mts +6 -2
- package/dist/browser/lib/getProviderFromEnv.d.mts.map +1 -1
- package/dist/browser/lib/getProviderFromEnv.d.ts +6 -2
- package/dist/browser/lib/getProviderFromEnv.d.ts.map +1 -1
- package/dist/browser/lib/index.d.cts +0 -1
- package/dist/browser/lib/index.d.cts.map +1 -1
- package/dist/browser/lib/index.d.mts +0 -1
- package/dist/browser/lib/index.d.mts.map +1 -1
- package/dist/browser/lib/index.d.ts +0 -1
- package/dist/browser/lib/index.d.ts.map +1 -1
- package/dist/browser/model.d.cts +9 -0
- package/dist/browser/model.d.cts.map +1 -0
- package/dist/browser/model.d.mts +9 -0
- package/dist/browser/model.d.mts.map +1 -0
- package/dist/browser/model.d.ts +9 -0
- package/dist/browser/model.d.ts.map +1 -0
- package/dist/node/Witness.d.cts +6 -2
- package/dist/node/Witness.d.cts.map +1 -1
- package/dist/node/Witness.d.mts +6 -2
- package/dist/node/Witness.d.mts.map +1 -1
- package/dist/node/Witness.d.ts +6 -2
- package/dist/node/Witness.d.ts.map +1 -1
- package/dist/node/index.cjs +67 -81
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1 -0
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +1 -0
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +64 -74
- package/dist/node/index.js.map +1 -1
- package/dist/node/lib/getProviderFromEnv.d.cts +6 -2
- package/dist/node/lib/getProviderFromEnv.d.cts.map +1 -1
- package/dist/node/lib/getProviderFromEnv.d.mts +6 -2
- package/dist/node/lib/getProviderFromEnv.d.mts.map +1 -1
- package/dist/node/lib/getProviderFromEnv.d.ts +6 -2
- package/dist/node/lib/getProviderFromEnv.d.ts.map +1 -1
- package/dist/node/lib/index.d.cts +0 -1
- package/dist/node/lib/index.d.cts.map +1 -1
- package/dist/node/lib/index.d.mts +0 -1
- package/dist/node/lib/index.d.mts.map +1 -1
- package/dist/node/lib/index.d.ts +0 -1
- package/dist/node/lib/index.d.ts.map +1 -1
- package/dist/node/model.d.cts +9 -0
- package/dist/node/model.d.cts.map +1 -0
- package/dist/node/model.d.mts +9 -0
- package/dist/node/model.d.mts.map +1 -0
- package/dist/node/model.d.ts +9 -0
- package/dist/node/model.d.ts.map +1 -0
- package/package.json +9 -7
- package/src/Witness.ts +20 -3
- package/src/index.ts +1 -0
- package/src/lib/getProviderFromEnv.ts +62 -25
- package/src/lib/index.ts +0 -1
- package/src/model.ts +13 -0
- package/dist/browser/lib/getErc1967Status.d.cts +0 -19
- package/dist/browser/lib/getErc1967Status.d.cts.map +0 -1
- package/dist/browser/lib/getErc1967Status.d.mts +0 -19
- package/dist/browser/lib/getErc1967Status.d.mts.map +0 -1
- package/dist/browser/lib/getErc1967Status.d.ts +0 -19
- package/dist/browser/lib/getErc1967Status.d.ts.map +0 -1
- package/dist/node/lib/getErc1967Status.d.cts +0 -19
- package/dist/node/lib/getErc1967Status.d.cts.map +0 -1
- package/dist/node/lib/getErc1967Status.d.mts +0 -19
- package/dist/node/lib/getErc1967Status.d.mts.map +0 -1
- package/dist/node/lib/getErc1967Status.d.ts +0 -19
- package/dist/node/lib/getErc1967Status.d.ts.map +0 -1
- package/src/lib/getErc1967Status.ts +0 -63
|
@@ -1,48 +1,78 @@
|
|
|
1
1
|
import { BaseProvider, InfuraProvider, InfuraWebSocketProvider, JsonRpcProvider, WebSocketProvider } from '@ethersproject/providers'
|
|
2
|
+
import { ConnectionInfo } from '@ethersproject/web'
|
|
2
3
|
import { assertEx } from '@xylabs/assert'
|
|
3
4
|
|
|
4
5
|
export type ProviderSource = 'infura' | 'quicknode'
|
|
5
6
|
export type ProviderType = 'rpc' | 'wss'
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
})
|
|
8
|
+
export interface GetProvidersFromEnvOptions {
|
|
9
|
+
overrides?: Partial<ConnectionInfo>
|
|
10
|
+
providerSource?: ProviderSource
|
|
11
|
+
providerType?: ProviderType
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
const enableConfigOverride = false
|
|
15
|
+
|
|
16
|
+
const configureConnection = (connection?: ConnectionInfo, { timeout = 1000 }: Partial<ConnectionInfo> = {}) => {
|
|
17
|
+
if (connection && enableConfigOverride) {
|
|
18
|
+
connection.timeout = timeout
|
|
19
|
+
connection.throttleCallback = async (attempt, url) => {
|
|
20
|
+
console.log(`throttleCallback[${attempt}]: ${url}`)
|
|
21
|
+
return await Promise.resolve(true)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const createInfuraRpc = (chainId: number, overrides?: Partial<ConnectionInfo>) => {
|
|
27
|
+
const provider =
|
|
28
|
+
process.env.INFURA_PROJECT_ID && process.env.INFURA_PROJECT_SECRET
|
|
29
|
+
? new InfuraProvider(chainId, {
|
|
30
|
+
projectId: process.env.INFURA_PROJECT_ID,
|
|
31
|
+
projectSecret: process.env.INFURA_PROJECT_SECRET,
|
|
32
|
+
})
|
|
33
|
+
: undefined
|
|
34
|
+
configureConnection(provider?.connection, overrides)
|
|
35
|
+
return provider
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const createInfuraWss = (chainId: number, overrides?: Partial<ConnectionInfo>) => {
|
|
39
|
+
const provider = process.env.INFURA_PROJECT_ID
|
|
40
|
+
? new InfuraWebSocketProvider(chainId, {
|
|
41
|
+
projectId: process.env.INFURA_PROJECT_ID,
|
|
42
|
+
})
|
|
43
|
+
: undefined
|
|
44
|
+
configureConnection(provider?.connection, overrides)
|
|
45
|
+
return provider
|
|
18
46
|
}
|
|
19
47
|
|
|
20
|
-
const createQuicknodeWss = (chainId: number) => {
|
|
48
|
+
const createQuicknodeWss = (chainId: number, overrides?: Partial<ConnectionInfo>) => {
|
|
21
49
|
const quickNodeWSSUri = process.env.QUICKNODE_WSS_URI
|
|
22
|
-
|
|
50
|
+
const provider = quickNodeWSSUri ? new WebSocketProvider(quickNodeWSSUri, chainId) : undefined
|
|
51
|
+
configureConnection(provider?.connection, overrides)
|
|
52
|
+
return provider
|
|
23
53
|
}
|
|
24
54
|
|
|
25
|
-
const createQuicknodeRpc = (chainId: number) => {
|
|
55
|
+
const createQuicknodeRpc = (chainId: number, overrides?: Partial<ConnectionInfo>) => {
|
|
26
56
|
const quickNodeHttpsUri = process.env.QUICKNODE_HTTPS_URI
|
|
27
|
-
|
|
57
|
+
const provider = quickNodeHttpsUri ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : undefined
|
|
58
|
+
configureConnection(provider?.connection, overrides)
|
|
59
|
+
return provider
|
|
28
60
|
}
|
|
29
61
|
|
|
30
62
|
export const getProviderFromEnv = (
|
|
31
63
|
chainId: number = 0x01,
|
|
32
|
-
|
|
64
|
+
{ providerSource = 'infura', providerType = 'rpc', overrides }: GetProvidersFromEnvOptions = {},
|
|
33
65
|
): BaseProvider => {
|
|
34
|
-
const { providerSource, providerType } = options ?? {}
|
|
35
66
|
let provider: BaseProvider | undefined = undefined
|
|
36
67
|
switch (providerSource) {
|
|
37
68
|
case 'quicknode': {
|
|
38
69
|
switch (providerType) {
|
|
39
70
|
case 'rpc': {
|
|
40
|
-
provider = createQuicknodeRpc(chainId)
|
|
71
|
+
provider = createQuicknodeRpc(chainId, overrides)
|
|
41
72
|
break
|
|
42
73
|
}
|
|
43
|
-
case 'wss':
|
|
44
|
-
|
|
45
|
-
provider = createQuicknodeWss(chainId)
|
|
74
|
+
case 'wss': {
|
|
75
|
+
provider = createQuicknodeWss(chainId, overrides)
|
|
46
76
|
break
|
|
47
77
|
}
|
|
48
78
|
}
|
|
@@ -51,13 +81,12 @@ export const getProviderFromEnv = (
|
|
|
51
81
|
default:
|
|
52
82
|
case 'infura': {
|
|
53
83
|
switch (providerType) {
|
|
54
|
-
case '
|
|
55
|
-
provider =
|
|
84
|
+
case 'wss': {
|
|
85
|
+
provider = createInfuraWss(chainId, overrides)
|
|
56
86
|
break
|
|
57
87
|
}
|
|
58
|
-
case '
|
|
59
|
-
|
|
60
|
-
provider = createInfuraWss(chainId)
|
|
88
|
+
case 'rpc': {
|
|
89
|
+
provider = createInfuraRpc(chainId, overrides)
|
|
61
90
|
break
|
|
62
91
|
}
|
|
63
92
|
}
|
|
@@ -67,7 +96,7 @@ export const getProviderFromEnv = (
|
|
|
67
96
|
if (!provider) {
|
|
68
97
|
provider = createInfuraWss(chainId) ?? createInfuraRpc(chainId) ?? createQuicknodeRpc(chainId)
|
|
69
98
|
}
|
|
70
|
-
return assertEx(provider, `Unable to create provider [${chainId}]: ${
|
|
99
|
+
return assertEx(provider, `Unable to create provider [${chainId}]: ${providerSource}|${providerType}`)
|
|
71
100
|
}
|
|
72
101
|
|
|
73
102
|
const providers: Record<string, BaseProvider> = {}
|
|
@@ -80,3 +109,11 @@ export const getSharedProviderFromEnv = (
|
|
|
80
109
|
providers[key] = providers[key] ?? getProviderFromEnv(chainId, options)
|
|
81
110
|
return providers[key]
|
|
82
111
|
}
|
|
112
|
+
|
|
113
|
+
export const getProvidersFromEnv = (count: number = 1, chainId: number = 0x01, options: GetProvidersFromEnvOptions = {}): BaseProvider[] => {
|
|
114
|
+
const result: BaseProvider[] = []
|
|
115
|
+
for (let i = 0; i < count; i++) {
|
|
116
|
+
result.push(getProviderFromEnv(chainId, options))
|
|
117
|
+
}
|
|
118
|
+
return result
|
|
119
|
+
}
|
package/src/lib/index.ts
CHANGED
package/src/model.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Payload } from '@xyo-network/payload-model'
|
|
2
|
+
|
|
3
|
+
export const BlockchainAddressSchema = 'network.xyo.blockchain.address'
|
|
4
|
+
export type BlockchainAddressSchema = typeof BlockchainAddressSchema
|
|
5
|
+
|
|
6
|
+
export type BlockchainAddress = Payload<
|
|
7
|
+
{
|
|
8
|
+
address?: string
|
|
9
|
+
blockTag?: string | number
|
|
10
|
+
chainId?: number
|
|
11
|
+
},
|
|
12
|
+
BlockchainAddressSchema
|
|
13
|
+
>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { BaseProvider } from '@ethersproject/providers';
|
|
2
|
-
export declare const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
|
|
3
|
-
export declare const ERC1967_PROXY_BEACON_STORAGE_SLOT = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
|
|
4
|
-
export declare const ERC1967_PROXY_ADMIN_STORAGE_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
|
|
5
|
-
export declare const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143";
|
|
6
|
-
export interface Erc1967DataSlots {
|
|
7
|
-
admin: string;
|
|
8
|
-
beacon: string;
|
|
9
|
-
implementation: string;
|
|
10
|
-
rollback: string;
|
|
11
|
-
}
|
|
12
|
-
export interface Erc1967Status {
|
|
13
|
-
address: string;
|
|
14
|
-
implementation: string;
|
|
15
|
-
proxy: Erc1967DataSlots;
|
|
16
|
-
}
|
|
17
|
-
export declare const readAddressFromSlot: (provider: BaseProvider, address: string, slot: string) => Promise<string>;
|
|
18
|
-
export declare const getErc1967Status: (provider: BaseProvider, address: string) => Promise<Erc1967Status>;
|
|
19
|
-
//# sourceMappingURL=getErc1967Status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getErc1967Status.d.ts","sourceRoot":"","sources":["../../../src/lib/getErc1967Status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIvD,eAAO,MAAM,yCAAyC,uEAAuE,CAAA;AAC7H,eAAO,MAAM,iCAAiC,uEAAuE,CAAA;AACrH,eAAO,MAAM,gCAAgC,uEAAuE,CAAA;AACpH,eAAO,MAAM,mCAAmC,uEAAuE,CAAA;AAEvH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,gBAAgB,CAAA;CACxB;AAcD,eAAO,MAAM,mBAAmB,aAAoB,YAAY,WAAW,MAAM,QAAQ,MAAM,oBAG9F,CAAA;AAED,eAAO,MAAM,gBAAgB,aAAoB,YAAY,WAAW,MAAM,KAAG,QAAQ,aAAa,CAuBrG,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { BaseProvider } from '@ethersproject/providers';
|
|
2
|
-
export declare const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
|
|
3
|
-
export declare const ERC1967_PROXY_BEACON_STORAGE_SLOT = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
|
|
4
|
-
export declare const ERC1967_PROXY_ADMIN_STORAGE_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
|
|
5
|
-
export declare const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143";
|
|
6
|
-
export interface Erc1967DataSlots {
|
|
7
|
-
admin: string;
|
|
8
|
-
beacon: string;
|
|
9
|
-
implementation: string;
|
|
10
|
-
rollback: string;
|
|
11
|
-
}
|
|
12
|
-
export interface Erc1967Status {
|
|
13
|
-
address: string;
|
|
14
|
-
implementation: string;
|
|
15
|
-
proxy: Erc1967DataSlots;
|
|
16
|
-
}
|
|
17
|
-
export declare const readAddressFromSlot: (provider: BaseProvider, address: string, slot: string) => Promise<string>;
|
|
18
|
-
export declare const getErc1967Status: (provider: BaseProvider, address: string) => Promise<Erc1967Status>;
|
|
19
|
-
//# sourceMappingURL=getErc1967Status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getErc1967Status.d.ts","sourceRoot":"","sources":["../../../src/lib/getErc1967Status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIvD,eAAO,MAAM,yCAAyC,uEAAuE,CAAA;AAC7H,eAAO,MAAM,iCAAiC,uEAAuE,CAAA;AACrH,eAAO,MAAM,gCAAgC,uEAAuE,CAAA;AACpH,eAAO,MAAM,mCAAmC,uEAAuE,CAAA;AAEvH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,gBAAgB,CAAA;CACxB;AAcD,eAAO,MAAM,mBAAmB,aAAoB,YAAY,WAAW,MAAM,QAAQ,MAAM,oBAG9F,CAAA;AAED,eAAO,MAAM,gBAAgB,aAAoB,YAAY,WAAW,MAAM,KAAG,QAAQ,aAAa,CAuBrG,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { BaseProvider } from '@ethersproject/providers';
|
|
2
|
-
export declare const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
|
|
3
|
-
export declare const ERC1967_PROXY_BEACON_STORAGE_SLOT = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
|
|
4
|
-
export declare const ERC1967_PROXY_ADMIN_STORAGE_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
|
|
5
|
-
export declare const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143";
|
|
6
|
-
export interface Erc1967DataSlots {
|
|
7
|
-
admin: string;
|
|
8
|
-
beacon: string;
|
|
9
|
-
implementation: string;
|
|
10
|
-
rollback: string;
|
|
11
|
-
}
|
|
12
|
-
export interface Erc1967Status {
|
|
13
|
-
address: string;
|
|
14
|
-
implementation: string;
|
|
15
|
-
proxy: Erc1967DataSlots;
|
|
16
|
-
}
|
|
17
|
-
export declare const readAddressFromSlot: (provider: BaseProvider, address: string, slot: string) => Promise<string>;
|
|
18
|
-
export declare const getErc1967Status: (provider: BaseProvider, address: string) => Promise<Erc1967Status>;
|
|
19
|
-
//# sourceMappingURL=getErc1967Status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getErc1967Status.d.ts","sourceRoot":"","sources":["../../../src/lib/getErc1967Status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIvD,eAAO,MAAM,yCAAyC,uEAAuE,CAAA;AAC7H,eAAO,MAAM,iCAAiC,uEAAuE,CAAA;AACrH,eAAO,MAAM,gCAAgC,uEAAuE,CAAA;AACpH,eAAO,MAAM,mCAAmC,uEAAuE,CAAA;AAEvH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,gBAAgB,CAAA;CACxB;AAcD,eAAO,MAAM,mBAAmB,aAAoB,YAAY,WAAW,MAAM,QAAQ,MAAM,oBAG9F,CAAA;AAED,eAAO,MAAM,gBAAgB,aAAoB,YAAY,WAAW,MAAM,KAAG,QAAQ,aAAa,CAuBrG,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { BaseProvider } from '@ethersproject/providers';
|
|
2
|
-
export declare const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
|
|
3
|
-
export declare const ERC1967_PROXY_BEACON_STORAGE_SLOT = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
|
|
4
|
-
export declare const ERC1967_PROXY_ADMIN_STORAGE_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
|
|
5
|
-
export declare const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143";
|
|
6
|
-
export interface Erc1967DataSlots {
|
|
7
|
-
admin: string;
|
|
8
|
-
beacon: string;
|
|
9
|
-
implementation: string;
|
|
10
|
-
rollback: string;
|
|
11
|
-
}
|
|
12
|
-
export interface Erc1967Status {
|
|
13
|
-
address: string;
|
|
14
|
-
implementation: string;
|
|
15
|
-
proxy: Erc1967DataSlots;
|
|
16
|
-
}
|
|
17
|
-
export declare const readAddressFromSlot: (provider: BaseProvider, address: string, slot: string) => Promise<string>;
|
|
18
|
-
export declare const getErc1967Status: (provider: BaseProvider, address: string) => Promise<Erc1967Status>;
|
|
19
|
-
//# sourceMappingURL=getErc1967Status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getErc1967Status.d.ts","sourceRoot":"","sources":["../../../src/lib/getErc1967Status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIvD,eAAO,MAAM,yCAAyC,uEAAuE,CAAA;AAC7H,eAAO,MAAM,iCAAiC,uEAAuE,CAAA;AACrH,eAAO,MAAM,gCAAgC,uEAAuE,CAAA;AACpH,eAAO,MAAM,mCAAmC,uEAAuE,CAAA;AAEvH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,gBAAgB,CAAA;CACxB;AAcD,eAAO,MAAM,mBAAmB,aAAoB,YAAY,WAAW,MAAM,QAAQ,MAAM,oBAG9F,CAAA;AAED,eAAO,MAAM,gBAAgB,aAAoB,YAAY,WAAW,MAAM,KAAG,QAAQ,aAAa,CAuBrG,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { BaseProvider } from '@ethersproject/providers';
|
|
2
|
-
export declare const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
|
|
3
|
-
export declare const ERC1967_PROXY_BEACON_STORAGE_SLOT = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
|
|
4
|
-
export declare const ERC1967_PROXY_ADMIN_STORAGE_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
|
|
5
|
-
export declare const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143";
|
|
6
|
-
export interface Erc1967DataSlots {
|
|
7
|
-
admin: string;
|
|
8
|
-
beacon: string;
|
|
9
|
-
implementation: string;
|
|
10
|
-
rollback: string;
|
|
11
|
-
}
|
|
12
|
-
export interface Erc1967Status {
|
|
13
|
-
address: string;
|
|
14
|
-
implementation: string;
|
|
15
|
-
proxy: Erc1967DataSlots;
|
|
16
|
-
}
|
|
17
|
-
export declare const readAddressFromSlot: (provider: BaseProvider, address: string, slot: string) => Promise<string>;
|
|
18
|
-
export declare const getErc1967Status: (provider: BaseProvider, address: string) => Promise<Erc1967Status>;
|
|
19
|
-
//# sourceMappingURL=getErc1967Status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getErc1967Status.d.ts","sourceRoot":"","sources":["../../../src/lib/getErc1967Status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIvD,eAAO,MAAM,yCAAyC,uEAAuE,CAAA;AAC7H,eAAO,MAAM,iCAAiC,uEAAuE,CAAA;AACrH,eAAO,MAAM,gCAAgC,uEAAuE,CAAA;AACpH,eAAO,MAAM,mCAAmC,uEAAuE,CAAA;AAEvH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,gBAAgB,CAAA;CACxB;AAcD,eAAO,MAAM,mBAAmB,aAAoB,YAAY,WAAW,MAAM,QAAQ,MAAM,oBAG9F,CAAA;AAED,eAAO,MAAM,gBAAgB,aAAoB,YAAY,WAAW,MAAM,KAAG,QAAQ,aAAa,CAuBrG,CAAA"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { BaseProvider } from '@ethersproject/providers';
|
|
2
|
-
export declare const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
|
|
3
|
-
export declare const ERC1967_PROXY_BEACON_STORAGE_SLOT = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
|
|
4
|
-
export declare const ERC1967_PROXY_ADMIN_STORAGE_SLOT = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
|
|
5
|
-
export declare const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = "0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143";
|
|
6
|
-
export interface Erc1967DataSlots {
|
|
7
|
-
admin: string;
|
|
8
|
-
beacon: string;
|
|
9
|
-
implementation: string;
|
|
10
|
-
rollback: string;
|
|
11
|
-
}
|
|
12
|
-
export interface Erc1967Status {
|
|
13
|
-
address: string;
|
|
14
|
-
implementation: string;
|
|
15
|
-
proxy: Erc1967DataSlots;
|
|
16
|
-
}
|
|
17
|
-
export declare const readAddressFromSlot: (provider: BaseProvider, address: string, slot: string) => Promise<string>;
|
|
18
|
-
export declare const getErc1967Status: (provider: BaseProvider, address: string) => Promise<Erc1967Status>;
|
|
19
|
-
//# sourceMappingURL=getErc1967Status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getErc1967Status.d.ts","sourceRoot":"","sources":["../../../src/lib/getErc1967Status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIvD,eAAO,MAAM,yCAAyC,uEAAuE,CAAA;AAC7H,eAAO,MAAM,iCAAiC,uEAAuE,CAAA;AACrH,eAAO,MAAM,gCAAgC,uEAAuE,CAAA;AACpH,eAAO,MAAM,mCAAmC,uEAAuE,CAAA;AAEvH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,gBAAgB,CAAA;CACxB;AAcD,eAAO,MAAM,mBAAmB,aAAoB,YAAY,WAAW,MAAM,QAAQ,MAAM,oBAG9F,CAAA;AAED,eAAO,MAAM,gBAAgB,aAAoB,YAAY,WAAW,MAAM,KAAG,QAAQ,aAAa,CAuBrG,CAAA"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { BaseProvider } from '@ethersproject/providers'
|
|
2
|
-
import { BigNumber } from '@xylabs/bignumber'
|
|
3
|
-
import { UpgradeableBeacon__factory } from '@xyo-network/open-zeppelin-typechain'
|
|
4
|
-
|
|
5
|
-
export const ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc'
|
|
6
|
-
export const ERC1967_PROXY_BEACON_STORAGE_SLOT = '0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50'
|
|
7
|
-
export const ERC1967_PROXY_ADMIN_STORAGE_SLOT = '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103'
|
|
8
|
-
export const ERC1967_PROXY_ROLLBACK_STORAGE_SLOT = '0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143'
|
|
9
|
-
|
|
10
|
-
export interface Erc1967DataSlots {
|
|
11
|
-
admin: string
|
|
12
|
-
beacon: string
|
|
13
|
-
implementation: string
|
|
14
|
-
rollback: string
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface Erc1967Status {
|
|
18
|
-
address: string
|
|
19
|
-
implementation: string
|
|
20
|
-
proxy: Erc1967DataSlots
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const hexBytesOnlyOnly = (value: string) => {
|
|
24
|
-
return value.startsWith('0x') ? value.substring(2) : value
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const addressFromHex = (value: string) => {
|
|
28
|
-
return `0x${hexBytesOnlyOnly(value).substring(24)}`
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const isHexZero = (value: string) => {
|
|
32
|
-
return new BigNumber(hexBytesOnlyOnly(value), 'hex').eqn(0)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export const readAddressFromSlot = async (provider: BaseProvider, address: string, slot: string) => {
|
|
36
|
-
const slotValue = await provider.getStorageAt(address, slot)
|
|
37
|
-
return addressFromHex(slotValue)
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export const getErc1967Status = async (provider: BaseProvider, address: string): Promise<Erc1967Status> => {
|
|
41
|
-
const proxy: Erc1967DataSlots = {
|
|
42
|
-
admin: await readAddressFromSlot(provider, address, ERC1967_PROXY_ADMIN_STORAGE_SLOT),
|
|
43
|
-
beacon: await readAddressFromSlot(provider, address, ERC1967_PROXY_BEACON_STORAGE_SLOT),
|
|
44
|
-
implementation: await readAddressFromSlot(provider, address, ERC1967_PROXY_IMPLEMENTATION_STORAGE_SLOT),
|
|
45
|
-
rollback: await readAddressFromSlot(provider, address, ERC1967_PROXY_ROLLBACK_STORAGE_SLOT),
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (!isHexZero(proxy.beacon)) {
|
|
49
|
-
const beacon = UpgradeableBeacon__factory.connect(proxy.beacon, provider)
|
|
50
|
-
try {
|
|
51
|
-
proxy.implementation = await beacon.callStatic.implementation()
|
|
52
|
-
} catch (ex) {
|
|
53
|
-
const error = ex as Error
|
|
54
|
-
console.log(error.message)
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return {
|
|
59
|
-
address,
|
|
60
|
-
implementation: isHexZero(proxy.implementation) ? address : proxy.implementation,
|
|
61
|
-
proxy,
|
|
62
|
-
}
|
|
63
|
-
}
|