From 026095410bc06789b84d0f9df0218b6042e59c77 Mon Sep 17 00:00:00 2001 From: Arie Trouw Date: Mon, 11 Dec 2023 18:21:28 -0800 Subject: [PATCH] Moved Contract/Call Witnesses to network.xyo.evm name space --- .../witness/src/lib/getNftCollectionNfts.ts | 8 +-- .../witness/src/lib/getNftsOwnedByAddress.ts | 8 +-- .../packages/evm/packages/call/src/Diviner.ts | 52 ++++++++----------- .../packages/evm/packages/call/src/Payload.ts | 36 ++++++------- .../packages/evm/packages/call/src/Witness.ts | 44 +++++++--------- .../call/src/spec/Erc721Sentinel.json | 30 +++++------ .../call/src/spec/Erc721TokenSentinel.json | 14 ++--- .../call/src/spec/Sentinel.collection.spec.ts | 24 ++++----- .../call/src/spec/Sentinel.token.spec.ts | 28 +++++----- .../packages/call/src/spec/Witness.spec.ts | 12 ++--- .../evm/packages/contract/src/Payload.ts | 8 +-- .../evm/packages/contract/src/Witness.ts | 26 +++++----- .../contract/src/spec/Witness.spec.ts | 6 +-- .../evm/packages/erc1822/src/Payload.ts | 14 ++--- .../evm/packages/erc1822/src/Witness.ts | 30 ++++++----- ...c1822Status.ts => getErc1822SlotStatus.ts} | 6 +-- .../evm/packages/erc1822/src/lib/index.ts | 2 +- .../packages/erc1822/src/spec/Witness.spec.ts | 6 +-- .../evm/packages/erc1967/src/Payload.ts | 16 +++--- .../evm/packages/erc1967/src/Witness.ts | 14 ++--- ...c1967Status.ts => getErc1967SlotStatus.ts} | 6 +-- .../evm/packages/erc1967/src/lib/index.ts | 2 +- 22 files changed, 192 insertions(+), 200 deletions(-) rename packages/payloadset/packages/evm/packages/erc1822/src/lib/{getErc1822Status.ts => getErc1822SlotStatus.ts} (82%) rename packages/payloadset/packages/evm/packages/erc1967/src/lib/{getErc1967Status.ts => getErc1967SlotStatus.ts} (92%) diff --git a/packages/payloadset/packages/crypto/packages/nft/packages/collection/witness/src/lib/getNftCollectionNfts.ts b/packages/payloadset/packages/crypto/packages/nft/packages/collection/witness/src/lib/getNftCollectionNfts.ts index 8184384f1..2461a8536 100644 --- a/packages/payloadset/packages/crypto/packages/nft/packages/collection/witness/src/lib/getNftCollectionNfts.ts +++ b/packages/payloadset/packages/crypto/packages/nft/packages/collection/witness/src/lib/getNftCollectionNfts.ts @@ -2,8 +2,8 @@ import { AxiosJson } from '@xylabs/axios' import { exists } from '@xylabs/exists' import { isHexZero } from '@xylabs/hex' import { NftInfo, NftMetadata, NftSchema, TokenType, toTokenType } from '@xyo-network/crypto-nft-payload-plugin' -import { getErc1822Status } from '@xyo-network/erc1822-witness' -import { getErc1967Status } from '@xyo-network/erc1967-witness' +import { getErc1822SlotStatus } from '@xyo-network/erc1822-witness' +import { getErc1967SlotStatus } from '@xyo-network/erc1967-witness' import { ERC721Enumerable__factory, ERC721URIStorage__factory, ERC1155Supply__factory } from '@xyo-network/open-zeppelin-typechain' import { checkIpfsUrl } from '@xyo-network/witness-blockchain-abstract' import { Provider } from 'ethers' @@ -38,10 +38,10 @@ export const getNftCollectionNfts = async ( const block = await provider.getBlockNumber() //Check if ERC-1967 Upgradeable - const erc1967Status = await getErc1967Status(provider, contractAddress, block) + const erc1967Status = await getErc1967SlotStatus(provider, contractAddress, block) //Check if ERC-1822 Upgradeable - const erc1822Status = await getErc1822Status(provider, contractAddress, block) + const erc1822Status = await getErc1822SlotStatus(provider, contractAddress, block) const implementation = !erc1967Status.slots.implementation || isHexZero(erc1967Status.slots.implementation) diff --git a/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/witness/src/lib/getNftsOwnedByAddress.ts b/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/witness/src/lib/getNftsOwnedByAddress.ts index ed06335f3..624d9e50a 100644 --- a/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/witness/src/lib/getNftsOwnedByAddress.ts +++ b/packages/payloadset/packages/crypto/packages/nft/packages/nft/packages/witness/src/lib/getNftsOwnedByAddress.ts @@ -1,7 +1,7 @@ import { isHexZero } from '@xylabs/hex' import { NftInfoFields, TokenType } from '@xyo-network/crypto-nft-payload-plugin' -import { getErc1822Status } from '@xyo-network/erc1822-witness' -import { getErc1967Status } from '@xyo-network/erc1967-witness' +import { getErc1822SlotStatus } from '@xyo-network/erc1822-witness' +import { getErc1967SlotStatus } from '@xyo-network/erc1967-witness' import { ERC721__factory, ERC1155__factory, ERC1155Supply__factory } from '@xyo-network/open-zeppelin-typechain' import { Provider } from 'ethers' import { LRUCache } from 'lru-cache' @@ -118,10 +118,10 @@ export const getNftsOwnedByAddress = async ( // Check if Upgradeable const [erc1967Status, erc1822Status] = await Promise.all([ // Check if ERC-1967 Upgradeable - await getErc1967Status(provider, contract, block), + await getErc1967SlotStatus(provider, contract, block), // Check if ERC-1822 Upgradeable - await getErc1822Status(provider, contract, block), + await getErc1822SlotStatus(provider, contract, block), ]) const implementation = diff --git a/packages/payloadset/packages/evm/packages/call/src/Diviner.ts b/packages/payloadset/packages/evm/packages/call/src/Diviner.ts index 0f9bce132..4480c5b8f 100644 --- a/packages/payloadset/packages/evm/packages/call/src/Diviner.ts +++ b/packages/payloadset/packages/evm/packages/call/src/Diviner.ts @@ -4,22 +4,22 @@ import { AbstractDiviner } from '@xyo-network/abstract-diviner' import { DivinerConfig, DivinerParams } from '@xyo-network/diviner-model' import { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model' -import { asBlockchainContractCallSuccess, BlockchainContractCallResult, BlockchainContractCallResultSchema } from './Payload' +import { asEvmCallSuccess, EvmCallResult, EvmCallResultSchema } from './Payload' export type FindCallResult = [TResult, TPayload] | [undefined, TPayload] | [undefined, undefined] -export const BlockchainContractCallDivinerConfigSchema = 'network.xyo.blockchain.contract.call.diviner.config' -export type BlockchainContractCallDivinerConfigSchema = typeof BlockchainContractCallDivinerConfigSchema +export const EvmCallDivinerConfigSchema = 'network.xyo.evm.call.diviner.config' +export type EvmCallDivinerConfigSchema = typeof EvmCallDivinerConfigSchema -export type BlockchainContractCallDivinerConfig = DivinerConfig<{ - schema: BlockchainContractCallDivinerConfigSchema +export type EvmCallDivinerConfig = DivinerConfig<{ + schema: EvmCallDivinerConfigSchema }> -export type BlockchainContractCallDivinerParams = DivinerParams +export type EvmCallDivinerParams = DivinerParams -export const BlockchainContractCallResultsSchema = 'network.xyo.blockchain.contract.call.results' -export type BlockchainContractCallResultsSchema = typeof BlockchainContractCallResultsSchema +export const EvmCallResultsSchema = 'network.xyo.evm.call.results' +export type EvmCallResultsSchema = typeof EvmCallResultsSchema -export type BlockchainContractCallResults = Payload< +export type EvmCallResults = Payload< { address: string chainId: string @@ -31,21 +31,15 @@ export type BlockchainContractCallResults = Payload< } > }, - BlockchainContractCallResultsSchema + EvmCallResultsSchema > -export class BlockchainContractCallDiviner< - TParams extends BlockchainContractCallDivinerParams = BlockchainContractCallDivinerParams, -> extends AbstractDiviner { - static override configSchemas = [BlockchainContractCallDivinerConfigSchema] +export class EvmCallDiviner extends AbstractDiviner { + static override configSchemas = [EvmCallDivinerConfigSchema] - protected static findCallResult( - address: string, - functionName: string, - payloads: BlockchainContractCallResult[], - ): TResult | undefined { + protected static findCallResult(address: string, functionName: string, payloads: EvmCallResult[]): TResult | undefined { const foundPayload = payloads.find((payload) => payload.functionName === functionName && payload.address === address) - return asBlockchainContractCallSuccess(foundPayload)?.result as TResult | undefined + return asEvmCallSuccess(foundPayload)?.result as TResult | undefined } protected static matchingExistingField(objs: T[], field: keyof T): R | undefined { @@ -56,16 +50,16 @@ export class BlockchainContractCallDiviner< return didNotMatch ? undefined : expectedValue } - protected contractInfoRequiredFields(callResults: BlockchainContractCallResult[]): BlockchainContractCallResults { + protected contractInfoRequiredFields(callResults: EvmCallResult[]): EvmCallResults { return { - address: assertEx(BlockchainContractCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'), - chainId: assertEx(BlockchainContractCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'), - schema: BlockchainContractCallResultsSchema, + address: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'address'), 'Mismatched address'), + chainId: assertEx(EvmCallDiviner.matchingExistingField(callResults, 'chainId'), 'Mismatched chainId'), + schema: EvmCallResultsSchema, } } - protected override async divineHandler(inPayloads: BlockchainContractCallResult[] = []): Promise { - const callResults = inPayloads.filter(isPayloadOfSchemaType(BlockchainContractCallResultSchema)) + protected override async divineHandler(inPayloads: EvmCallResult[] = []): Promise { + const callResults = inPayloads.filter(isPayloadOfSchemaType(EvmCallResultSchema)) const addresses = Object.keys( callResults.reduce>((prev, result) => { if (result.address) { @@ -77,7 +71,7 @@ export class BlockchainContractCallDiviner< const result = await Promise.all( addresses.map(async (address) => { const foundCallResults = callResults.filter((callResult) => callResult.address === address) - const results: BlockchainContractCallResults = { + const results: EvmCallResults = { ...{ results: await this.reduceResults(foundCallResults) }, ...this.contractInfoRequiredFields(foundCallResults), } @@ -88,7 +82,7 @@ export class BlockchainContractCallDiviner< return result } - protected reduceResults(callResults: BlockchainContractCallResult[]): Promisable { + protected reduceResults(callResults: EvmCallResult[]): Promisable { return callResults.reduce< Record< string, @@ -98,7 +92,7 @@ export class BlockchainContractCallDiviner< } > >((prev, callResult) => { - const typedCallResult = asBlockchainContractCallSuccess(callResult) + const typedCallResult = asEvmCallSuccess(callResult) if (typedCallResult) { prev[callResult.functionName] = { args: typedCallResult.args, result: typedCallResult?.result } } diff --git a/packages/payloadset/packages/evm/packages/call/src/Payload.ts b/packages/payloadset/packages/evm/packages/call/src/Payload.ts index 4c85af904..b08b58b0a 100644 --- a/packages/payloadset/packages/evm/packages/call/src/Payload.ts +++ b/packages/payloadset/packages/evm/packages/call/src/Payload.ts @@ -1,22 +1,22 @@ import { Payload } from '@xyo-network/payload-model' -export const BlockchainContractCallSchema = 'network.xyo.blockchain.contract.call' -export type BlockchainContractCallSchema = typeof BlockchainContractCallSchema +export const EvmCallSchema = 'network.xyo.blockchain.contract.call' +export type EvmCallSchema = typeof EvmCallSchema -export type BlockchainContractCall = Payload< +export type EvmCall = Payload< { address?: string args?: unknown[] block?: number functionName?: string }, - BlockchainContractCallSchema + EvmCallSchema > -export const BlockchainContractCallResultSchema = 'network.xyo.blockchain.contract.call.result' -export type BlockchainContractCallResultSchema = typeof BlockchainContractCallResultSchema +export const EvmCallResultSchema = 'network.xyo.blockchain.contract.call.result' +export type EvmCallResultSchema = typeof EvmCallResultSchema -export type BlockchainContractCallResultBase = Payload< +export type EvmCallResultBase = Payload< { address: string args: unknown[] @@ -25,29 +25,27 @@ export type BlockchainContractCallResultBase = Payload< functionName: string implementation?: string }, - BlockchainContractCallResultSchema + EvmCallResultSchema > -export type BlockchainContractCallSuccess = BlockchainContractCallResultBase & { +export type EvmCallSuccess = EvmCallResultBase & { result: unknown } -export type BlockchainContractCallFailure = BlockchainContractCallResultBase & { +export type EvmCallFailure = EvmCallResultBase & { error: string } -export type BlockchainContractCallResult = BlockchainContractCallSuccess | BlockchainContractCallFailure +export type EvmCallResult = EvmCallSuccess | EvmCallFailure -export const isBlockchainContractCallSuccess = (payload?: BlockchainContractCallResult): payload is BlockchainContractCallSuccess => { - return (payload as BlockchainContractCallSuccess | undefined)?.result !== undefined +export const isEvmCallSuccess = (payload?: EvmCallResult): payload is EvmCallSuccess => { + return (payload as EvmCallSuccess | undefined)?.result !== undefined } -export const isBlockchainContractCallFailure = (payload?: BlockchainContractCallResult): payload is BlockchainContractCallFailure => { - return (payload as BlockchainContractCallFailure | undefined)?.error !== undefined +export const isEvmCallFailure = (payload?: EvmCallResult): payload is EvmCallFailure => { + return (payload as EvmCallFailure | undefined)?.error !== undefined } -export const asBlockchainContractCallSuccess = (payload?: BlockchainContractCallResult) => - isBlockchainContractCallSuccess(payload) ? payload : undefined +export const asEvmCallSuccess = (payload?: EvmCallResult) => (isEvmCallSuccess(payload) ? payload : undefined) -export const asBlockchainContractCallFailure = (payload?: BlockchainContractCallResult) => - isBlockchainContractCallFailure(payload) ? payload : undefined +export const asEvmCallFailure = (payload?: EvmCallResult) => (isEvmCallFailure(payload) ? payload : undefined) diff --git a/packages/payloadset/packages/evm/packages/call/src/Witness.ts b/packages/payloadset/packages/evm/packages/call/src/Witness.ts index 8803ea5af..bb6264b7d 100644 --- a/packages/payloadset/packages/evm/packages/call/src/Witness.ts +++ b/packages/payloadset/packages/evm/packages/call/src/Witness.ts @@ -1,24 +1,18 @@ import { assertEx } from '@xylabs/assert' -import { getErc1822Status } from '@xyo-network/erc1822-witness' -import { getErc1967Status } from '@xyo-network/erc1967-witness' +import { getErc1822SlotStatus } from '@xyo-network/erc1822-witness' +import { getErc1967SlotStatus } from '@xyo-network/erc1967-witness' import { isPayloadOfSchemaType } from '@xyo-network/payload-model' import { AbstractBlockchainWitness, BlockchainWitnessConfig, BlockchainWitnessParams } from '@xyo-network/witness-blockchain-abstract' import { Contract, JsonFragment } from 'ethers' -import { - BlockchainContractCall, - BlockchainContractCallResult, - BlockchainContractCallResultSchema, - BlockchainContractCallSchema, - BlockchainContractCallSuccess, -} from './Payload' +import { EvmCall, EvmCallResult, EvmCallResultSchema, EvmCallSchema, EvmCallSuccess } from './Payload' export type Abi = string | ReadonlyArray -export const BlockchainContractCallWitnessConfigSchema = 'network.xyo.blockchain.contract.call.witness.config' -export type BlockchainContractCallWitnessConfigSchema = typeof BlockchainContractCallWitnessConfigSchema +export const EvmCallWitnessConfigSchema = 'network.xyo.evm.call.witness.config' +export type EvmCallWitnessConfigSchema = typeof EvmCallWitnessConfigSchema -export type BlockchainContractCallWitnessConfig = BlockchainWitnessConfig< +export type EvmCallWitnessConfig = BlockchainWitnessConfig< { abi?: Abi address?: string @@ -26,10 +20,10 @@ export type BlockchainContractCallWitnessConfig = BlockchainWitnessConfig< block?: number functionName?: string }, - BlockchainContractCallWitnessConfigSchema + EvmCallWitnessConfigSchema > -export type BlockchainContractCallWitnessParams = BlockchainWitnessParams +export type EvmCallWitnessParams = BlockchainWitnessParams const prefixHex = (value?: string) => { if (value !== undefined) { @@ -43,22 +37,24 @@ const isHexZero = (value?: string) => { return prefixedValue === undefined ? true : BigInt(prefixedValue) === 0n } -export class BlockchainContractCallWitness< - TParams extends BlockchainContractCallWitnessParams = BlockchainContractCallWitnessParams, -> extends AbstractBlockchainWitness { - static override configSchemas = [BlockchainContractCallWitnessConfigSchema] +export class EvmCallWitness extends AbstractBlockchainWitness< + TParams, + EvmCall, + EvmCallResult +> { + static override configSchemas = [EvmCallWitnessConfigSchema] get abi() { return assertEx(this.config.abi, 'Missing abi') } - protected override async observeHandler(inPayloads: BlockchainContractCall[] = []): Promise { + protected override async observeHandler(inPayloads: EvmCall[] = []): Promise { await this.started('throw') //calling it here to make sure we rests the cache await this.getProviders() try { const observations = await Promise.all( - inPayloads.filter(isPayloadOfSchemaType(BlockchainContractCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => { + inPayloads.filter(isPayloadOfSchemaType(EvmCallSchema)).map(async ({ functionName, args, address, block: payloadBlock }) => { const validatedAddress = assertEx(address ?? this.config.address, 'Missing address') const validatedFunctionName = assertEx(functionName ?? this.config.functionName, 'Missing address') const mergedArgs = [...(args ?? this.config.args ?? [])] @@ -68,10 +64,10 @@ export class BlockchainContractCallWitness< const block = this.config.block ?? payloadBlock ?? (await provider.getBlockNumber()) //Check if ERC-1967 Upgradeable - const erc1967Status = await getErc1967Status(provider, validatedAddress, block) + const erc1967Status = await getErc1967SlotStatus(provider, validatedAddress, block) //Check if ERC-1822 Upgradeable - const erc1822Status = await getErc1822Status(provider, validatedAddress, block) + const erc1822Status = await getErc1822SlotStatus(provider, validatedAddress, block) const implementation = isHexZero(erc1967Status.slots.implementation) ? erc1822Status.implementation : erc1967Status.implementation @@ -84,14 +80,14 @@ export class BlockchainContractCallWitness< //const error = ex as Error & { code: string } //this.logger.error(`Error [${this.config.name}]: ${error.code} : ${error.message}`) } - const observation: BlockchainContractCallSuccess = { + const observation: EvmCallSuccess = { address: validatedAddress, args: mergedArgs, block, chainId: Number((await provider.getNetwork()).chainId), functionName: validatedFunctionName, result: transformedResult, - schema: BlockchainContractCallResultSchema, + schema: EvmCallResultSchema, } if (implementation !== validatedAddress) { observation.implementation = implementation diff --git a/packages/payloadset/packages/evm/packages/call/src/spec/Erc721Sentinel.json b/packages/payloadset/packages/evm/packages/call/src/spec/Erc721Sentinel.json index 39aa9c926..ebe4fa4be 100644 --- a/packages/payloadset/packages/evm/packages/call/src/spec/Erc721Sentinel.json +++ b/packages/payloadset/packages/evm/packages/call/src/spec/Erc721Sentinel.json @@ -12,88 +12,88 @@ "config": { "functionName": "name", "labels": { - "network.xyo.blockchain.contract.interface": "Erc721" + "network.xyo.evm.interface": "Erc721" }, "language": "javascript", "name": "Erc721NameWitness", "params": [], - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "functionName": "symbol", "labels": { - "network.xyo.blockchain.contract.interface": "Erc721" + "network.xyo.evm.interface": "Erc721" }, "language": "javascript", "name": "Erc721SymbolWitness", "params": [], - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "functionName": "tokenURI", "labels": { - "network.xyo.blockchain.contract.interface": "Erc721" + "network.xyo.evm.interface": "Erc721" }, "language": "javascript", "name": "Erc721TokenURIWitness", - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "functionName": "ownerOf", "labels": { - "network.xyo.blockchain.contract.interface": "Erc721" + "network.xyo.evm.interface": "Erc721" }, "language": "javascript", "name": "Erc721OwnerOfWitness", - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "functionName": "totalSupply", "labels": { - "network.xyo.blockchain.contract.interface": "Erc721Enumerable" + "network.xyo.evm.interface": "Erc721Enumerable" }, "language": "javascript", "name": "Erc721TotalSupplyWitness", "params": [], - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "functionName": "tokenByIndex", "labels": { - "network.xyo.blockchain.contract.interface": "Erc721Enumerable" + "network.xyo.evm.interface": "Erc721Enumerable" }, "language": "javascript", "name": "Erc721TokenByIndexWitness", - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "functionName": "uri", "labels": { - "network.xyo.blockchain.contract.interface": "Erc1155" + "network.xyo.evm.interface": "Erc1155" }, "language": "javascript", "name": "Erc1155UriWitness", "params": [], - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "language": "javascript", "name": "ContractInfoDiviner", - "schema": "network.xyo.blockchain.contract.call.diviner.config" + "schema": "network.xyo.evm.call.diviner.config" } }, { diff --git a/packages/payloadset/packages/evm/packages/call/src/spec/Erc721TokenSentinel.json b/packages/payloadset/packages/evm/packages/call/src/spec/Erc721TokenSentinel.json index 89550fa94..4f9079e8e 100644 --- a/packages/payloadset/packages/evm/packages/call/src/spec/Erc721TokenSentinel.json +++ b/packages/payloadset/packages/evm/packages/call/src/spec/Erc721TokenSentinel.json @@ -12,40 +12,40 @@ "config": { "functionName": "tokenURI", "labels": { - "network.xyo.blockchain.contract.interface": "ERC721URIStorage" + "network.xyo.evm.interface": "ERC721URIStorage" }, "language": "javascript", "name": "Erc721TokenURIWitness", - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "functionName": "ownerOf", "labels": { - "network.xyo.blockchain.contract.interface": "Erc721" + "network.xyo.evm.interface": "Erc721" }, "language": "javascript", "name": "Erc721OwnerOfWitness", - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "functionName": "uri", "labels": { - "network.xyo.blockchain.contract.interface": "Erc1155" + "network.xyo.evm.interface": "Erc1155" }, "language": "javascript", "name": "Erc1155UriWitness", - "schema": "network.xyo.blockchain.contract.call.witness.config" + "schema": "network.xyo.evm.call.witness.config" } }, { "config": { "language": "javascript", "name": "TokenInfoDiviner", - "schema": "network.xyo.blockchain.contract.call.diviner.config" + "schema": "network.xyo.evm.call.diviner.config" } }, { diff --git a/packages/payloadset/packages/evm/packages/call/src/spec/Sentinel.collection.spec.ts b/packages/payloadset/packages/evm/packages/call/src/spec/Sentinel.collection.spec.ts index c42b9c101..df3ca2a1c 100644 --- a/packages/payloadset/packages/evm/packages/call/src/spec/Sentinel.collection.spec.ts +++ b/packages/payloadset/packages/evm/packages/call/src/spec/Sentinel.collection.spec.ts @@ -13,9 +13,9 @@ import { getProviderFromEnv } from '@xyo-network/witness-blockchain-abstract' import { asWitnessInstance } from '@xyo-network/witness-model' import { Provider } from 'ethers' -import { BlockchainContractCallDiviner, BlockchainContractCallResults, BlockchainContractCallResultsSchema } from '../Diviner' -import { BlockchainContractCall, BlockchainContractCallSchema } from '../Payload' -import { BlockchainContractCallWitness } from '../Witness' +import { EvmCallDiviner, EvmCallResults, EvmCallResultsSchema } from '../Diviner' +import { EvmCall, EvmCallSchema } from '../Payload' +import { EvmCallWitness } from '../Witness' import erc721SentinelManifest from './Erc721Sentinel.json' const profiler = createProfiler() @@ -45,30 +45,30 @@ describe('Erc721Sentinel', () => { const mnemonic = 'later puppy sound rebuild rebuild noise ozone amazing hope broccoli crystal grief' const wallet = await HDWallet.fromPhrase(mnemonic) const locator = new ModuleFactoryLocator() - locator.register(BlockchainContractCallDiviner) + locator.register(EvmCallDiviner) locator.register( - new ModuleFactory(BlockchainContractCallWitness, { + new ModuleFactory(EvmCallWitness, { config: { abi: ERC721__factory.abi }, providers: () => getProviders(), }), - { 'network.xyo.blockchain.contract.interface': 'Erc721' }, + { 'network.xyo.evm.interface': 'Erc721' }, ) locator.register( - new ModuleFactory(BlockchainContractCallWitness, { + new ModuleFactory(EvmCallWitness, { config: { abi: ERC721Enumerable__factory.abi }, providers: () => getProviders(), }), - { 'network.xyo.blockchain.contract.interface': 'Erc721Enumerable' }, + { 'network.xyo.evm.interface': 'Erc721Enumerable' }, ) locator.register( - new ModuleFactory(BlockchainContractCallWitness, { + new ModuleFactory(EvmCallWitness, { config: { abi: ERC1155__factory.abi }, providers: () => getProviders(), }), - { 'network.xyo.blockchain.contract.interface': 'Erc1155' }, + { 'network.xyo.evm.interface': 'Erc1155' }, ) profile(profiler, 'setup') profile(profiler, 'manifest') @@ -94,12 +94,12 @@ describe('Erc721Sentinel', () => { const diviner = asDivinerInstance(await node.resolve('ContractInfoDiviner')) expect(diviner).toBeDefined() - const collectionCallPayload: BlockchainContractCall = { address, schema: BlockchainContractCallSchema } + const collectionCallPayload: EvmCall = { address, schema: EvmCallSchema } profile(profiler, 'collectionReport') const report = await collectionSentinel?.report([collectionCallPayload]) profile(profiler, 'collectionReport') profile(profiler, 'tokenCallSetup') - const info = report?.find(isPayloadOfSchemaType(BlockchainContractCallResultsSchema)) as BlockchainContractCallResults | undefined + const info = report?.find(isPayloadOfSchemaType(EvmCallResultsSchema)) as EvmCallResults | undefined console.log(`info: ${JSON.stringify(info, null, 2)}`) expect(info?.results?.name.result).toBeString() diff --git a/packages/payloadset/packages/evm/packages/call/src/spec/Sentinel.token.spec.ts b/packages/payloadset/packages/evm/packages/call/src/spec/Sentinel.token.spec.ts index 8cb7f11b5..cf7065401 100644 --- a/packages/payloadset/packages/evm/packages/call/src/spec/Sentinel.token.spec.ts +++ b/packages/payloadset/packages/evm/packages/call/src/spec/Sentinel.token.spec.ts @@ -12,9 +12,9 @@ import { asSentinelInstance } from '@xyo-network/sentinel-model' import { getProvidersFromEnv } from '@xyo-network/witness-blockchain-abstract' import { asWitnessInstance } from '@xyo-network/witness-model' -import { BlockchainContractCallDiviner, BlockchainContractCallResults, BlockchainContractCallResultsSchema } from '../Diviner' -import { BlockchainContractCall, BlockchainContractCallSchema } from '../Payload' -import { BlockchainContractCallWitness } from '../Witness' +import { EvmCallDiviner, EvmCallResults, EvmCallResultsSchema } from '../Diviner' +import { EvmCall, EvmCallSchema } from '../Payload' +import { EvmCallWitness } from '../Witness' import erc721TokenSentinelManifest from './Erc721TokenSentinel.json' const profiler = createProfiler() @@ -37,38 +37,38 @@ describe('Erc721Sentinel', () => { profile(profiler, 'setup') const wallet = await HDWallet.random() const locator = new ModuleFactoryLocator() - locator.register(BlockchainContractCallDiviner) + locator.register(EvmCallDiviner) locator.register( - new ModuleFactory(BlockchainContractCallWitness, { + new ModuleFactory(EvmCallWitness, { config: { abi: ERC721__factory.abi }, providers: () => getProvidersFromEnv(maxProviders), }), - { 'network.xyo.blockchain.contract.interface': 'Erc721' }, + { 'network.xyo.evm.interface': 'Erc721' }, ) locator.register( - new ModuleFactory(BlockchainContractCallWitness, { + new ModuleFactory(EvmCallWitness, { config: { abi: ERC721Enumerable__factory.abi }, providers: () => getProvidersFromEnv(maxProviders), }), - { 'network.xyo.blockchain.contract.interface': 'Erc721Enumerable' }, + { 'network.xyo.evm.interface': 'Erc721Enumerable' }, ) locator.register( - new ModuleFactory(BlockchainContractCallWitness, { + new ModuleFactory(EvmCallWitness, { config: { abi: ERC721URIStorage__factory.abi }, providers: () => getProvidersFromEnv(maxProviders), }), - { 'network.xyo.blockchain.contract.interface': 'ERC721URIStorage' }, + { 'network.xyo.evm.interface': 'ERC721URIStorage' }, ) locator.register( - new ModuleFactory(BlockchainContractCallWitness, { + new ModuleFactory(EvmCallWitness, { config: { abi: ERC1155__factory.abi }, providers: () => getProvidersFromEnv(maxProviders), }), - { 'network.xyo.blockchain.contract.interface': 'Erc1155' }, + { 'network.xyo.evm.interface': 'Erc1155' }, ) profile(profiler, 'setup') @@ -98,10 +98,10 @@ describe('Erc721Sentinel', () => { const diviner = asDivinerInstance(await node.resolve('TokenInfoDiviner')) expect(diviner).toBeDefined() - const tokenCallPayload: BlockchainContractCall = { address, args: [tokenId], schema: BlockchainContractCallSchema } + const tokenCallPayload: EvmCall = { address, args: [tokenId], schema: EvmCallSchema } profile(profiler, 'tokenReport') const report = await tokenSentinel?.report([tokenCallPayload]) - const info = report?.find(isPayloadOfSchemaType(BlockchainContractCallResultsSchema)) as BlockchainContractCallResults | undefined + const info = report?.find(isPayloadOfSchemaType(EvmCallResultsSchema)) as EvmCallResults | undefined console.log(`info: ${JSON.stringify(info, null, 2)}`) expect(info?.results?.['ownerOf']?.result).toBeString() expect(info?.results?.['tokenURI']?.result).toBeString() diff --git a/packages/payloadset/packages/evm/packages/call/src/spec/Witness.spec.ts b/packages/payloadset/packages/evm/packages/call/src/spec/Witness.spec.ts index 828679e26..ebb757030 100644 --- a/packages/payloadset/packages/evm/packages/call/src/spec/Witness.spec.ts +++ b/packages/payloadset/packages/evm/packages/call/src/spec/Witness.spec.ts @@ -3,11 +3,11 @@ import { ERC20__factory } from '@xyo-network/open-zeppelin-typechain' import { isPayloadOfSchemaType, Payload } from '@xyo-network/payload-model' import { getProvidersFromEnv } from '@xyo-network/witness-blockchain-abstract' -import { BlockchainContractCall, BlockchainContractCallResultSchema, BlockchainContractCallSchema } from '../Payload' -import { BlockchainContractCallWitness, BlockchainContractCallWitnessConfigSchema } from '../Witness' +import { EvmCall, EvmCallResultSchema, EvmCallSchema } from '../Payload' +import { EvmCallWitness, EvmCallWitnessConfigSchema } from '../Witness' const validateObservation = (observation: Payload[]) => { - const results = observation.filter(isPayloadOfSchemaType(BlockchainContractCallResultSchema)) + const results = observation.filter(isPayloadOfSchemaType(EvmCallResultSchema)) expect(results.length).toBeGreaterThan(0) expect(observation.length).toEqual(results.length) } @@ -19,12 +19,12 @@ describeIf(process.env.INFURA_PROJECT_ID)('CryptoWalletNftWitness', () => { describe('observe', () => { describe('with no address or chainId in query', () => { it('uses values from config', async () => { - const witness = await BlockchainContractCallWitness.create({ + const witness = await EvmCallWitness.create({ account: 'random', - config: { abi: ERC20__factory.abi, schema: BlockchainContractCallWitnessConfigSchema }, + config: { abi: ERC20__factory.abi, schema: EvmCallWitnessConfigSchema }, providers: getProvidersFromEnv, }) - const call: BlockchainContractCall = { address, args, functionName, schema: BlockchainContractCallSchema } + const call: EvmCall = { address, args, functionName, schema: EvmCallSchema } const observation = await witness.observe([call]) validateObservation(observation) }) diff --git a/packages/payloadset/packages/evm/packages/contract/src/Payload.ts b/packages/payloadset/packages/evm/packages/contract/src/Payload.ts index bbb3cfad9..923de1ba2 100644 --- a/packages/payloadset/packages/evm/packages/contract/src/Payload.ts +++ b/packages/payloadset/packages/evm/packages/contract/src/Payload.ts @@ -1,14 +1,14 @@ import { Payload } from '@xyo-network/payload-model' -export const BlockchainContractSchema = 'network.xyo.blockchain.contract' -export type BlockchainContractSchema = typeof BlockchainContractSchema +export const EvmContractSchema = 'network.xyo.evm.contract' +export type EvmContractSchema = typeof EvmContractSchema -export type BlockchainContract = Payload< +export type EvmContract = Payload< { address: string block: number chainId: number code?: string }, - BlockchainContractSchema + EvmContractSchema > diff --git a/packages/payloadset/packages/evm/packages/contract/src/Witness.ts b/packages/payloadset/packages/evm/packages/contract/src/Witness.ts index e32480012..d951db82c 100644 --- a/packages/payloadset/packages/evm/packages/contract/src/Witness.ts +++ b/packages/payloadset/packages/evm/packages/contract/src/Witness.ts @@ -8,21 +8,23 @@ import { BlockchainWitnessParams, } from '@xyo-network/witness-blockchain-abstract' -import { BlockchainContract, BlockchainContractSchema } from './Payload' +import { EvmContract, EvmContractSchema } from './Payload' -export const BlockchainContractWitnessConfigSchema = 'network.xyo.blockchain.contract.witness.config' -export type BlockchainContractWitnessConfigSchema = typeof BlockchainContractWitnessConfigSchema +export const EvmContractWitnessConfigSchema = 'network.xyo.evm.contract.witness.config' +export type EvmContractWitnessConfigSchema = typeof EvmContractWitnessConfigSchema -export type BlockchainContractWitnessConfig = BlockchainWitnessConfig<{ address?: string }, BlockchainContractWitnessConfigSchema> +export type EvmContractWitnessConfig = BlockchainWitnessConfig<{ address?: string }, EvmContractWitnessConfigSchema> -export type BlockchainContractWitnessParams = BlockchainWitnessParams +export type EvmContractWitnessParams = BlockchainWitnessParams -export class BlockchainContractWitness< - TParams extends BlockchainContractWitnessParams = BlockchainContractWitnessParams, -> extends AbstractBlockchainWitness { - static override configSchemas = [BlockchainContractWitnessConfigSchema] +export class EvmContractWitness extends AbstractBlockchainWitness< + TParams, + BlockchainAddress, + EvmContract +> { + static override configSchemas = [EvmContractWitnessConfigSchema] - protected override async observeHandler(inPayloads: BlockchainAddress[] = []): Promise { + protected override async observeHandler(inPayloads: BlockchainAddress[] = []): Promise { await this.started('throw') try { const observations = await Promise.all( @@ -34,12 +36,12 @@ export class BlockchainContractWitness< const block = await provider.getBlockNumber() const code = await provider.getCode(validatedAddress, block) - const observation: BlockchainContract = { + const observation: EvmContract = { address: validatedAddress, block, chainId: Number((await provider.getNetwork()).chainId), code, - schema: BlockchainContractSchema, + schema: EvmContractSchema, } return observation }), diff --git a/packages/payloadset/packages/evm/packages/contract/src/spec/Witness.spec.ts b/packages/payloadset/packages/evm/packages/contract/src/spec/Witness.spec.ts index 143b3db6b..ee7c8336c 100644 --- a/packages/payloadset/packages/evm/packages/contract/src/spec/Witness.spec.ts +++ b/packages/payloadset/packages/evm/packages/contract/src/spec/Witness.spec.ts @@ -1,15 +1,15 @@ import { describeIf } from '@xylabs/jest-helpers' import { BlockchainAddressSchema, getProvidersFromEnv } from '@xyo-network/witness-blockchain-abstract' -import { BlockchainContractWitness, BlockchainContractWitnessConfigSchema } from '../Witness' +import { EvmContractWitness, EvmContractWitnessConfigSchema } from '../Witness' describeIf(process.env.INFURA_PROJECT_ID)('CryptoWalletNftWitness', () => { const address = '0x55296f69f40ea6d20e478533c15a6b08b654e758' //XYO ERC20 describe('observe', () => { it('get code from contract', async () => { - const witness = await BlockchainContractWitness.create({ + const witness = await EvmContractWitness.create({ account: 'random', - config: { schema: BlockchainContractWitnessConfigSchema }, + config: { schema: EvmContractWitnessConfigSchema }, providers: getProvidersFromEnv, }) const observation = await witness.observe([{ address, schema: BlockchainAddressSchema }]) diff --git a/packages/payloadset/packages/evm/packages/erc1822/src/Payload.ts b/packages/payloadset/packages/evm/packages/erc1822/src/Payload.ts index 29400739f..1ac3a70fd 100644 --- a/packages/payloadset/packages/evm/packages/erc1822/src/Payload.ts +++ b/packages/payloadset/packages/evm/packages/erc1822/src/Payload.ts @@ -1,18 +1,18 @@ import { Address } from '@xylabs/hex' import { Payload } from '@xyo-network/payload-model' -import { Erc1822Status } from './lib' +import { Erc1822SlotStatus } from './lib' -export const BlockchainErc1822StatusSchema = 'network.xyo.blockchain.erc1822.status' -export type BlockchainErc1822StatusSchema = typeof BlockchainErc1822StatusSchema +export const Erc1822StatusSchema = 'network.xyo.erc1822.status' +export type Erc1822StatusSchema = typeof Erc1822StatusSchema -export type BlockchainErc1822Status = Payload< +export type Erc1822Status = Payload< { address: Address block: number chainId: number - implementation?: Erc1822Status['implementation'] - slots?: Erc1822Status['slots'] + implementation?: Erc1822SlotStatus['implementation'] + slots?: Erc1822SlotStatus['slots'] }, - BlockchainErc1822StatusSchema + Erc1822StatusSchema > diff --git a/packages/payloadset/packages/evm/packages/erc1822/src/Witness.ts b/packages/payloadset/packages/evm/packages/erc1822/src/Witness.ts index fe42a8b9c..88931e448 100644 --- a/packages/payloadset/packages/evm/packages/erc1822/src/Witness.ts +++ b/packages/payloadset/packages/evm/packages/erc1822/src/Witness.ts @@ -8,22 +8,24 @@ import { BlockchainWitnessParams, } from '@xyo-network/witness-blockchain-abstract' -import { getErc1822Status } from './lib' -import { BlockchainErc1822Status, BlockchainErc1822StatusSchema } from './Payload' +import { getErc1822SlotStatus } from './lib' +import { Erc1822Status, Erc1822StatusSchema } from './Payload' -export const BlockchainErc1822WitnessConfigSchema = 'network.xyo.blockchain.Erc1822.witness.config' -export type BlockchainErc1822WitnessConfigSchema = typeof BlockchainErc1822WitnessConfigSchema +export const Erc1822WitnessConfigSchema = 'network.xyo.blockchain.Erc1822.witness.config' +export type Erc1822WitnessConfigSchema = typeof Erc1822WitnessConfigSchema -export type BlockchainErc1822WitnessConfig = BlockchainWitnessConfig<{ address?: string }, BlockchainErc1822WitnessConfigSchema> +export type Erc1822WitnessConfig = BlockchainWitnessConfig<{ address?: string }, Erc1822WitnessConfigSchema> -export type BlockchainErc1822WitnessParams = BlockchainWitnessParams +export type Erc1822WitnessParams = BlockchainWitnessParams -export class BlockchainErc1822Witness< - TParams extends BlockchainErc1822WitnessParams = BlockchainErc1822WitnessParams, -> extends AbstractBlockchainWitness { - static override configSchemas = [BlockchainErc1822WitnessConfigSchema] +export class Erc1822Witness extends AbstractBlockchainWitness< + TParams, + BlockchainAddress, + Erc1822Status +> { + static override configSchemas = [Erc1822WitnessConfigSchema] - protected override async observeHandler(inPayloads: BlockchainAddress[] = []): Promise { + protected override async observeHandler(inPayloads: BlockchainAddress[] = []): Promise { await this.started('throw') //calling it here to make sure we rests the cache await this.getProviders() @@ -36,14 +38,14 @@ export class BlockchainErc1822Witness< const block = await provider.getBlockNumber() - const { implementation, slots } = await getErc1822Status(provider, validatedAddress, block) + const { implementation, slots } = await getErc1822SlotStatus(provider, validatedAddress, block) - const observation: BlockchainErc1822Status = { + const observation: Erc1822Status = { address: validatedAddress, block, chainId: Number((await provider.getNetwork()).chainId), implementation, - schema: BlockchainErc1822StatusSchema, + schema: Erc1822StatusSchema, slots, } return observation diff --git a/packages/payloadset/packages/evm/packages/erc1822/src/lib/getErc1822Status.ts b/packages/payloadset/packages/evm/packages/erc1822/src/lib/getErc1822SlotStatus.ts similarity index 82% rename from packages/payloadset/packages/evm/packages/erc1822/src/lib/getErc1822Status.ts rename to packages/payloadset/packages/evm/packages/erc1822/src/lib/getErc1822SlotStatus.ts index 174d2c927..cf24dc9c8 100644 --- a/packages/payloadset/packages/evm/packages/erc1822/src/lib/getErc1822Status.ts +++ b/packages/payloadset/packages/evm/packages/erc1822/src/lib/getErc1822SlotStatus.ts @@ -7,7 +7,7 @@ export interface Erc1822DataSlots { implementation?: Address } -export interface Erc1822Status { +export interface Erc1822SlotStatus { address: Address implementation: Address slots: Erc1822DataSlots @@ -22,8 +22,8 @@ const readAddressFromSlot = async (provider: Provider, address: string, slot: st } } -export const getErc1822Status = async (provider: Provider, address: string, block?: number): Promise => { - const status: Erc1822Status = { +export const getErc1822SlotStatus = async (provider: Provider, address: string, block?: number): Promise => { + const status: Erc1822SlotStatus = { address, implementation: address, slots: { diff --git a/packages/payloadset/packages/evm/packages/erc1822/src/lib/index.ts b/packages/payloadset/packages/evm/packages/erc1822/src/lib/index.ts index fc71a4e05..7c0515380 100644 --- a/packages/payloadset/packages/evm/packages/erc1822/src/lib/index.ts +++ b/packages/payloadset/packages/evm/packages/erc1822/src/lib/index.ts @@ -1 +1 @@ -export * from './getErc1822Status' +export * from './getErc1822SlotStatus' diff --git a/packages/payloadset/packages/evm/packages/erc1822/src/spec/Witness.spec.ts b/packages/payloadset/packages/evm/packages/erc1822/src/spec/Witness.spec.ts index 989c5137a..360c6e609 100644 --- a/packages/payloadset/packages/evm/packages/erc1822/src/spec/Witness.spec.ts +++ b/packages/payloadset/packages/evm/packages/erc1822/src/spec/Witness.spec.ts @@ -1,15 +1,15 @@ import { describeIf } from '@xylabs/jest-helpers' import { BlockchainAddressSchema, getProvidersFromEnv } from '@xyo-network/witness-blockchain-abstract' -import { BlockchainErc1822Witness, BlockchainErc1822WitnessConfigSchema } from '../Witness' +import { Erc1822Witness, Erc1822WitnessConfigSchema } from '../Witness' describeIf(process.env.INFURA_PROJECT_ID)('CryptoWalletNftWitness', () => { const address = '0x55296f69f40ea6d20e478533c15a6b08b654e758' //XYO ERC20 describe('observe', () => { it('get code from contract', async () => { - const witness = await BlockchainErc1822Witness.create({ + const witness = await Erc1822Witness.create({ account: 'random', - config: { schema: BlockchainErc1822WitnessConfigSchema }, + config: { schema: Erc1822WitnessConfigSchema }, providers: getProvidersFromEnv, }) const observation = await witness.observe([{ address, schema: BlockchainAddressSchema }]) diff --git a/packages/payloadset/packages/evm/packages/erc1967/src/Payload.ts b/packages/payloadset/packages/evm/packages/erc1967/src/Payload.ts index 1a9867b5f..e9bf06a53 100644 --- a/packages/payloadset/packages/evm/packages/erc1967/src/Payload.ts +++ b/packages/payloadset/packages/evm/packages/erc1967/src/Payload.ts @@ -1,19 +1,19 @@ import { Address } from '@xylabs/hex' import { Payload } from '@xyo-network/payload-model' -import { Erc1967Status } from './lib' +import { Erc1967SlotStatus } from './lib' -export const BlockchainErc1967StatusSchema = 'network.xyo.blockchain.erc1967.status' -export type BlockchainErc1967StatusSchema = typeof BlockchainErc1967StatusSchema +export const Erc1967StatusSchema = 'network.xyo.erc1967.status' +export type Erc1967StatusSchema = typeof Erc1967StatusSchema -export type BlockchainErc1967Status = Payload< +export type Erc1967Status = Payload< { address: Address - beacon?: Erc1967Status['beacon'] + beacon?: Erc1967SlotStatus['beacon'] block: number chainId: number - implementation?: Erc1967Status['implementation'] - slots?: Erc1967Status['slots'] + implementation?: Erc1967SlotStatus['implementation'] + slots?: Erc1967SlotStatus['slots'] }, - BlockchainErc1967StatusSchema + Erc1967StatusSchema > diff --git a/packages/payloadset/packages/evm/packages/erc1967/src/Witness.ts b/packages/payloadset/packages/evm/packages/erc1967/src/Witness.ts index b51cf9d6b..0855842cf 100644 --- a/packages/payloadset/packages/evm/packages/erc1967/src/Witness.ts +++ b/packages/payloadset/packages/evm/packages/erc1967/src/Witness.ts @@ -8,8 +8,8 @@ import { BlockchainWitnessParams, } from '@xyo-network/witness-blockchain-abstract' -import { getErc1967Status } from './lib' -import { BlockchainErc1967Status, BlockchainErc1967StatusSchema } from './Payload' +import { getErc1967SlotStatus } from './lib' +import { Erc1967Status, Erc1967StatusSchema } from './Payload' export const BlockchainErc1967WitnessConfigSchema = 'network.xyo.blockchain.Erc1967.witness.config' export type BlockchainErc1967WitnessConfigSchema = typeof BlockchainErc1967WitnessConfigSchema @@ -20,10 +20,10 @@ export type BlockchainErc1967WitnessParams = BlockchainWitnessParams extends AbstractBlockchainWitness { +> extends AbstractBlockchainWitness { static override configSchemas = [BlockchainErc1967WitnessConfigSchema] - protected override async observeHandler(inPayloads: BlockchainAddress[] = []): Promise { + protected override async observeHandler(inPayloads: BlockchainAddress[] = []): Promise { await this.started('throw') //calling it here to make sure we rests the cache await this.getProviders() @@ -36,15 +36,15 @@ export class BlockchainErc1967Witness< const block = await provider.getBlockNumber() - const { beacon, implementation, slots } = await getErc1967Status(provider, validatedAddress, block) + const { beacon, implementation, slots } = await getErc1967SlotStatus(provider, validatedAddress, block) - const observation: BlockchainErc1967Status = { + const observation: Erc1967Status = { address: validatedAddress, beacon, block, chainId: Number((await provider.getNetwork()).chainId), implementation, - schema: BlockchainErc1967StatusSchema, + schema: Erc1967StatusSchema, slots, } return observation diff --git a/packages/payloadset/packages/evm/packages/erc1967/src/lib/getErc1967Status.ts b/packages/payloadset/packages/evm/packages/erc1967/src/lib/getErc1967SlotStatus.ts similarity index 92% rename from packages/payloadset/packages/evm/packages/erc1967/src/lib/getErc1967Status.ts rename to packages/payloadset/packages/evm/packages/erc1967/src/lib/getErc1967SlotStatus.ts index 3c9eded00..2a62523e5 100644 --- a/packages/payloadset/packages/evm/packages/erc1967/src/lib/getErc1967Status.ts +++ b/packages/payloadset/packages/evm/packages/erc1967/src/lib/getErc1967SlotStatus.ts @@ -14,7 +14,7 @@ export interface Erc1967DataSlots { rollback?: Address } -export interface Erc1967Status { +export interface Erc1967SlotStatus { address: Address beacon?: { implementation?: Address @@ -32,8 +32,8 @@ const readAddressFromSlot = async (provider: Provider, address: string, slot: st } } -export const getErc1967Status = async (provider: Provider, address: string, block?: number): Promise => { - const status: Erc1967Status = { +export const getErc1967SlotStatus = async (provider: Provider, address: string, block?: number): Promise => { + const status: Erc1967SlotStatus = { address, implementation: address, slots: { diff --git a/packages/payloadset/packages/evm/packages/erc1967/src/lib/index.ts b/packages/payloadset/packages/evm/packages/erc1967/src/lib/index.ts index ae0aeab0d..f14339e31 100644 --- a/packages/payloadset/packages/evm/packages/erc1967/src/lib/index.ts +++ b/packages/payloadset/packages/evm/packages/erc1967/src/lib/index.ts @@ -1 +1 @@ -export * from './getErc1967Status' +export * from './getErc1967SlotStatus'