@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.
Files changed (87) hide show
  1. package/dist/browser/Witness.d.cts +6 -2
  2. package/dist/browser/Witness.d.cts.map +1 -1
  3. package/dist/browser/Witness.d.mts +6 -2
  4. package/dist/browser/Witness.d.mts.map +1 -1
  5. package/dist/browser/Witness.d.ts +6 -2
  6. package/dist/browser/Witness.d.ts.map +1 -1
  7. package/dist/browser/index.cjs +64 -74
  8. package/dist/browser/index.cjs.map +1 -1
  9. package/dist/browser/index.d.cts +1 -0
  10. package/dist/browser/index.d.cts.map +1 -1
  11. package/dist/browser/index.d.mts +1 -0
  12. package/dist/browser/index.d.mts.map +1 -1
  13. package/dist/browser/index.d.ts +1 -0
  14. package/dist/browser/index.d.ts.map +1 -1
  15. package/dist/browser/index.js +64 -74
  16. package/dist/browser/index.js.map +1 -1
  17. package/dist/browser/lib/getProviderFromEnv.d.cts +6 -2
  18. package/dist/browser/lib/getProviderFromEnv.d.cts.map +1 -1
  19. package/dist/browser/lib/getProviderFromEnv.d.mts +6 -2
  20. package/dist/browser/lib/getProviderFromEnv.d.mts.map +1 -1
  21. package/dist/browser/lib/getProviderFromEnv.d.ts +6 -2
  22. package/dist/browser/lib/getProviderFromEnv.d.ts.map +1 -1
  23. package/dist/browser/lib/index.d.cts +0 -1
  24. package/dist/browser/lib/index.d.cts.map +1 -1
  25. package/dist/browser/lib/index.d.mts +0 -1
  26. package/dist/browser/lib/index.d.mts.map +1 -1
  27. package/dist/browser/lib/index.d.ts +0 -1
  28. package/dist/browser/lib/index.d.ts.map +1 -1
  29. package/dist/browser/model.d.cts +9 -0
  30. package/dist/browser/model.d.cts.map +1 -0
  31. package/dist/browser/model.d.mts +9 -0
  32. package/dist/browser/model.d.mts.map +1 -0
  33. package/dist/browser/model.d.ts +9 -0
  34. package/dist/browser/model.d.ts.map +1 -0
  35. package/dist/node/Witness.d.cts +6 -2
  36. package/dist/node/Witness.d.cts.map +1 -1
  37. package/dist/node/Witness.d.mts +6 -2
  38. package/dist/node/Witness.d.mts.map +1 -1
  39. package/dist/node/Witness.d.ts +6 -2
  40. package/dist/node/Witness.d.ts.map +1 -1
  41. package/dist/node/index.cjs +67 -81
  42. package/dist/node/index.cjs.map +1 -1
  43. package/dist/node/index.d.cts +1 -0
  44. package/dist/node/index.d.cts.map +1 -1
  45. package/dist/node/index.d.mts +1 -0
  46. package/dist/node/index.d.mts.map +1 -1
  47. package/dist/node/index.d.ts +1 -0
  48. package/dist/node/index.d.ts.map +1 -1
  49. package/dist/node/index.js +64 -74
  50. package/dist/node/index.js.map +1 -1
  51. package/dist/node/lib/getProviderFromEnv.d.cts +6 -2
  52. package/dist/node/lib/getProviderFromEnv.d.cts.map +1 -1
  53. package/dist/node/lib/getProviderFromEnv.d.mts +6 -2
  54. package/dist/node/lib/getProviderFromEnv.d.mts.map +1 -1
  55. package/dist/node/lib/getProviderFromEnv.d.ts +6 -2
  56. package/dist/node/lib/getProviderFromEnv.d.ts.map +1 -1
  57. package/dist/node/lib/index.d.cts +0 -1
  58. package/dist/node/lib/index.d.cts.map +1 -1
  59. package/dist/node/lib/index.d.mts +0 -1
  60. package/dist/node/lib/index.d.mts.map +1 -1
  61. package/dist/node/lib/index.d.ts +0 -1
  62. package/dist/node/lib/index.d.ts.map +1 -1
  63. package/dist/node/model.d.cts +9 -0
  64. package/dist/node/model.d.cts.map +1 -0
  65. package/dist/node/model.d.mts +9 -0
  66. package/dist/node/model.d.mts.map +1 -0
  67. package/dist/node/model.d.ts +9 -0
  68. package/dist/node/model.d.ts.map +1 -0
  69. package/package.json +9 -7
  70. package/src/Witness.ts +20 -3
  71. package/src/index.ts +1 -0
  72. package/src/lib/getProviderFromEnv.ts +62 -25
  73. package/src/lib/index.ts +0 -1
  74. package/src/model.ts +13 -0
  75. package/dist/browser/lib/getErc1967Status.d.cts +0 -19
  76. package/dist/browser/lib/getErc1967Status.d.cts.map +0 -1
  77. package/dist/browser/lib/getErc1967Status.d.mts +0 -19
  78. package/dist/browser/lib/getErc1967Status.d.mts.map +0 -1
  79. package/dist/browser/lib/getErc1967Status.d.ts +0 -19
  80. package/dist/browser/lib/getErc1967Status.d.ts.map +0 -1
  81. package/dist/node/lib/getErc1967Status.d.cts +0 -19
  82. package/dist/node/lib/getErc1967Status.d.cts.map +0 -1
  83. package/dist/node/lib/getErc1967Status.d.mts +0 -19
  84. package/dist/node/lib/getErc1967Status.d.mts.map +0 -1
  85. package/dist/node/lib/getErc1967Status.d.ts +0 -19
  86. package/dist/node/lib/getErc1967Status.d.ts.map +0 -1
  87. 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
- const createInfuraRpc = (chainId: number) => {
8
- return new InfuraProvider(chainId, {
9
- projectId: process.env.INFURA_PROJECT_ID,
10
- projectSecret: process.env.INFURA_PROJECT_SECRET,
11
- })
8
+ export interface GetProvidersFromEnvOptions {
9
+ overrides?: Partial<ConnectionInfo>
10
+ providerSource?: ProviderSource
11
+ providerType?: ProviderType
12
12
  }
13
13
 
14
- const createInfuraWss = (chainId: number) => {
15
- return new InfuraWebSocketProvider(chainId, {
16
- projectId: process.env.INFURA_PROJECT_ID,
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
- return quickNodeWSSUri ? new WebSocketProvider(quickNodeWSSUri, chainId) : undefined
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
- return quickNodeHttpsUri ? new JsonRpcProvider(quickNodeHttpsUri, chainId) : undefined
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
- options?: { providerSource?: ProviderSource; providerType?: ProviderType },
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
- default: {
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 'rpc': {
55
- provider = createInfuraRpc(chainId)
84
+ case 'wss': {
85
+ provider = createInfuraWss(chainId, overrides)
56
86
  break
57
87
  }
58
- case 'wss':
59
- default: {
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}]: ${options ? JSON.stringify(options) : 'default'}`)
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
@@ -1,3 +1,2 @@
1
1
  export * from './checkIpfsUrl'
2
- export * from './getErc1967Status'
3
2
  export * from './getProviderFromEnv'
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
- }