From 11c0d00cdcd187db1df53641c7ec268f477c13fc Mon Sep 17 00:00:00 2001 From: solimander Date: Mon, 25 Mar 2024 22:29:31 -0400 Subject: [PATCH] Dencun updates & award indexes --- packages/prop-house-protocol/package.json | 2 +- packages/prop-house-sdk-react/package.json | 4 +- packages/prop-house-sdk/package.json | 8 +- packages/prop-house-sdk/src/gql/evm/gql.ts | 6 +- .../prop-house-sdk/src/gql/evm/graphql.ts | 118 +++++++++++++- .../prop-house-sdk/src/gql/queries.evm.ts | 3 +- packages/prop-house-sdk/src/gql/utils.ts | 2 +- .../src/utils/storage-proofs/block.ts | 36 +---- packages/prop-house-subgraph/schema.graphql | 3 + .../prop-house-subgraph/src/timed-round.ts | 17 +- packages/prop-house-subgraph/subgraph.yaml | 2 + yarn.lock | 147 +++++++++++++----- 12 files changed, 268 insertions(+), 80 deletions(-) diff --git a/packages/prop-house-protocol/package.json b/packages/prop-house-protocol/package.json index 9bd437da1..2042a5602 100644 --- a/packages/prop-house-protocol/package.json +++ b/packages/prop-house-protocol/package.json @@ -1,6 +1,6 @@ { "name": "@prophouse/protocol", - "version": "1.0.9", + "version": "1.0.12", "license": "GPL-3.0", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", diff --git a/packages/prop-house-sdk-react/package.json b/packages/prop-house-sdk-react/package.json index 1f5e879bc..9cefeb5ca 100644 --- a/packages/prop-house-sdk-react/package.json +++ b/packages/prop-house-sdk-react/package.json @@ -1,6 +1,6 @@ { "name": "@prophouse/sdk-react", - "version": "1.0.22", + "version": "1.0.32", "description": "Useful tools for interacting with the Prop House protocol from React applications", "author": "solimander", "homepage": "https://prop.house", @@ -18,7 +18,7 @@ "wagmi": ">=0.9.2" }, "dependencies": { - "@prophouse/sdk": "1.0.27" + "@prophouse/sdk": "1.0.34" }, "devDependencies": { "react": "^17.0.2", diff --git a/packages/prop-house-sdk/package.json b/packages/prop-house-sdk/package.json index 4491767dc..9e3e862f4 100644 --- a/packages/prop-house-sdk/package.json +++ b/packages/prop-house-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@prophouse/sdk", - "version": "1.0.28", + "version": "1.0.36", "description": "Useful tools for interacting with the Prop House protocol", "author": "solimander", "homepage": "https://prop.house", @@ -18,6 +18,8 @@ "codegen:starknet": "graphql-codegen --config scripts/gql-codegen.starknet.ts" }, "dependencies": { + "@ethereumjs/block": "5.2.0", + "@ethereumjs/common": "4.3.0", "@ethersproject/abi": "~5.7.0", "@ethersproject/abstract-provider": "~5.7.0", "@ethersproject/abstract-signer": "~5.7.0", @@ -32,10 +34,8 @@ "@ethersproject/strings": "~5.7.0", "@ethersproject/wallet": "^5.7.0", "@pinata/sdk": "^2.1.0", - "@prophouse/protocol": "1.0.8", + "@prophouse/protocol": "1.0.11", "bn.js": "^5.2.1", - "ethereumjs-fork-block": "^4.2.4", - "ethereumjs-fork-common": "^3.1.3", "graphql": "^16.5.0", "graphql-request": "5.0.0", "merkletreejs": "^0.3.11", diff --git a/packages/prop-house-sdk/src/gql/evm/gql.ts b/packages/prop-house-sdk/src/gql/evm/gql.ts index 328f6c896..5bf61d102 100644 --- a/packages/prop-house-sdk/src/gql/evm/gql.ts +++ b/packages/prop-house-sdk/src/gql/evm/gql.ts @@ -17,7 +17,7 @@ const documents = { types.HouseFieldsFragmentDoc, '\n fragment GovPowerStrategyFields on GovPowerStrategy {\n id\n type\n address\n params\n }\n': types.GovPowerStrategyFieldsFragmentDoc, - '\n fragment TimedRoundConfigFields on TimedRoundConfig {\n winnerCount\n proposalThreshold\n proposalPeriodStartTimestamp\n proposalPeriodEndTimestamp\n proposalPeriodDuration\n votePeriodStartTimestamp\n votePeriodEndTimestamp\n votePeriodDuration\n claimPeriodEndTimestamp\n awards {\n asset {\n assetType\n token\n identifier\n }\n amount\n }\n }\n': + '\n fragment TimedRoundConfigFields on TimedRoundConfig {\n winnerCount\n proposalThreshold\n proposalPeriodStartTimestamp\n proposalPeriodEndTimestamp\n proposalPeriodDuration\n votePeriodStartTimestamp\n votePeriodEndTimestamp\n votePeriodDuration\n claimPeriodEndTimestamp\n awards(orderBy: index, orderDirection: asc) {\n index\n asset {\n assetType\n token\n identifier\n }\n amount\n }\n }\n': types.TimedRoundConfigFieldsFragmentDoc, '\n fragment RoundFields on Round {\n id\n type\n title\n description\n createdAt\n eventState\n isFullyFunded\n manager {\n id\n }\n proposingStrategies {\n strategy {\n ...GovPowerStrategyFields\n }\n }\n votingStrategies {\n strategy {\n ...GovPowerStrategyFields\n }\n }\n timedConfig {\n ...TimedRoundConfigFields\n }\n }\n': types.RoundFieldsFragmentDoc, @@ -75,8 +75,8 @@ export function graphql( * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql( - source: '\n fragment TimedRoundConfigFields on TimedRoundConfig {\n winnerCount\n proposalThreshold\n proposalPeriodStartTimestamp\n proposalPeriodEndTimestamp\n proposalPeriodDuration\n votePeriodStartTimestamp\n votePeriodEndTimestamp\n votePeriodDuration\n claimPeriodEndTimestamp\n awards {\n asset {\n assetType\n token\n identifier\n }\n amount\n }\n }\n', -): (typeof documents)['\n fragment TimedRoundConfigFields on TimedRoundConfig {\n winnerCount\n proposalThreshold\n proposalPeriodStartTimestamp\n proposalPeriodEndTimestamp\n proposalPeriodDuration\n votePeriodStartTimestamp\n votePeriodEndTimestamp\n votePeriodDuration\n claimPeriodEndTimestamp\n awards {\n asset {\n assetType\n token\n identifier\n }\n amount\n }\n }\n']; + source: '\n fragment TimedRoundConfigFields on TimedRoundConfig {\n winnerCount\n proposalThreshold\n proposalPeriodStartTimestamp\n proposalPeriodEndTimestamp\n proposalPeriodDuration\n votePeriodStartTimestamp\n votePeriodEndTimestamp\n votePeriodDuration\n claimPeriodEndTimestamp\n awards(orderBy: index, orderDirection: asc) {\n index\n asset {\n assetType\n token\n identifier\n }\n amount\n }\n }\n', +): (typeof documents)['\n fragment TimedRoundConfigFields on TimedRoundConfig {\n winnerCount\n proposalThreshold\n proposalPeriodStartTimestamp\n proposalPeriodEndTimestamp\n proposalPeriodDuration\n votePeriodStartTimestamp\n votePeriodEndTimestamp\n votePeriodDuration\n claimPeriodEndTimestamp\n awards(orderBy: index, orderDirection: asc) {\n index\n asset {\n assetType\n token\n identifier\n }\n amount\n }\n }\n']; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/packages/prop-house-sdk/src/gql/evm/graphql.ts b/packages/prop-house-sdk/src/gql/evm/graphql.ts index 1ae3fb450..e7b99e7fb 100644 --- a/packages/prop-house-sdk/src/gql/evm/graphql.ts +++ b/packages/prop-house-sdk/src/gql/evm/graphql.ts @@ -199,6 +199,11 @@ export enum Administrative_OrderBy { Manager = 'manager', } +export enum Aggregation_Interval { + Day = 'day', + Hour = 'hour', +} + export type Asset = { __typename?: 'Asset'; /** The asset type (Native | ERC20 | ERC721 | ERC1155) */ @@ -270,6 +275,8 @@ export type Award = { asset: Asset; /** A concatenation of the round address and award index */ id: Scalars['ID']; + /** The award index */ + index: Scalars['Int']; /** The configuration in which the awards exist */ round: TimedRoundConfig; }; @@ -315,6 +322,14 @@ export type Award_Filter = { id_lte?: InputMaybe; id_not?: InputMaybe; id_not_in?: InputMaybe>; + index?: InputMaybe; + index_gt?: InputMaybe; + index_gte?: InputMaybe; + index_in?: InputMaybe>; + index_lt?: InputMaybe; + index_lte?: InputMaybe; + index_not?: InputMaybe; + index_not_in?: InputMaybe>; or?: InputMaybe>>; round?: InputMaybe; round_?: InputMaybe; @@ -347,6 +362,7 @@ export enum Award_OrderBy { AssetIdentifier = 'asset__identifier', AssetToken = 'asset__token', Id = 'id', + Index = 'index', Round = 'round', RoundClaimPeriodEndTimestamp = 'round__claimPeriodEndTimestamp', RoundId = 'round__id', @@ -1327,7 +1343,8 @@ export type Query = { house?: Maybe; houseImplementation?: Maybe; houseImplementations: Array; - houseMetadata: Array; + houseMetadata?: Maybe; + houseMetadata_collection: Array; houses: Array; reclaim?: Maybe; reclaims: Array; @@ -1502,6 +1519,12 @@ export type QueryHouseImplementationsArgs = { }; export type QueryHouseMetadataArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + +export type QueryHouseMetadata_CollectionArgs = { block?: InputMaybe; first?: InputMaybe; orderBy?: InputMaybe; @@ -2508,7 +2531,8 @@ export type Subscription = { house?: Maybe; houseImplementation?: Maybe; houseImplementations: Array; - houseMetadata: Array; + houseMetadata?: Maybe; + houseMetadata_collection: Array; houses: Array; reclaim?: Maybe; reclaims: Array; @@ -2683,6 +2707,12 @@ export type SubscriptionHouseImplementationsArgs = { }; export type SubscriptionHouseMetadataArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + +export type SubscriptionHouseMetadata_CollectionArgs = { block?: InputMaybe; first?: InputMaybe; orderBy?: InputMaybe; @@ -3278,6 +3308,7 @@ export type TimedRoundConfigFieldsFragment = { claimPeriodEndTimestamp: any; awards: Array<{ __typename?: 'Award'; + index: number; amount: any; asset: { __typename?: 'Asset'; assetType: AssetType; token: any; identifier: any }; }>; @@ -3326,6 +3357,7 @@ export type RoundFieldsFragment = { claimPeriodEndTimestamp: any; awards: Array<{ __typename?: 'Award'; + index: number; amount: any; asset: { __typename?: 'Asset'; assetType: AssetType; token: any; identifier: any }; }>; @@ -3441,6 +3473,7 @@ export type ManyRoundsQuery = { claimPeriodEndTimestamp: any; awards: Array<{ __typename?: 'Award'; + index: number; amount: any; asset: { __typename?: 'Asset'; assetType: AssetType; token: any; identifier: any }; }>; @@ -3519,6 +3552,7 @@ export type ManyRoundsWithHouseInfoQuery = { claimPeriodEndTimestamp: any; awards: Array<{ __typename?: 'Award'; + index: number; amount: any; asset: { __typename?: 'Asset'; assetType: AssetType; token: any; identifier: any }; }>; @@ -3575,6 +3609,7 @@ export type RoundQuery = { claimPeriodEndTimestamp: any; awards: Array<{ __typename?: 'Award'; + index: number; amount: any; asset: { __typename?: 'Asset'; assetType: AssetType; token: any; identifier: any }; }>; @@ -3649,6 +3684,7 @@ export type RoundWithHouseInfoQuery = { claimPeriodEndTimestamp: any; awards: Array<{ __typename?: 'Award'; + index: number; amount: any; asset: { __typename?: 'Asset'; assetType: AssetType; token: any; identifier: any }; }>; @@ -3859,9 +3895,22 @@ export const TimedRoundConfigFieldsFragmentDoc = { { kind: 'Field', name: { kind: 'Name', value: 'awards' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderBy' }, + value: { kind: 'EnumValue', value: 'index' }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderDirection' }, + value: { kind: 'EnumValue', value: 'asc' }, + }, + ], selectionSet: { kind: 'SelectionSet', selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'index' } }, { kind: 'Field', name: { kind: 'Name', value: 'asset' }, @@ -3998,9 +4047,22 @@ export const RoundFieldsFragmentDoc = { { kind: 'Field', name: { kind: 'Name', value: 'awards' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderBy' }, + value: { kind: 'EnumValue', value: 'index' }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderDirection' }, + value: { kind: 'EnumValue', value: 'asc' }, + }, + ], selectionSet: { kind: 'SelectionSet', selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'index' } }, { kind: 'Field', name: { kind: 'Name', value: 'asset' }, @@ -4367,9 +4429,22 @@ export const ManyRoundsDocument = { { kind: 'Field', name: { kind: 'Name', value: 'awards' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderBy' }, + value: { kind: 'EnumValue', value: 'index' }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderDirection' }, + value: { kind: 'EnumValue', value: 'asc' }, + }, + ], selectionSet: { kind: 'SelectionSet', selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'index' } }, { kind: 'Field', name: { kind: 'Name', value: 'asset' }, @@ -4596,9 +4671,22 @@ export const ManyRoundsWithHouseInfoDocument = { { kind: 'Field', name: { kind: 'Name', value: 'awards' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderBy' }, + value: { kind: 'EnumValue', value: 'index' }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderDirection' }, + value: { kind: 'EnumValue', value: 'asc' }, + }, + ], selectionSet: { kind: 'SelectionSet', selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'index' } }, { kind: 'Field', name: { kind: 'Name', value: 'asset' }, @@ -4823,9 +4911,22 @@ export const RoundDocument = { { kind: 'Field', name: { kind: 'Name', value: 'awards' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderBy' }, + value: { kind: 'EnumValue', value: 'index' }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderDirection' }, + value: { kind: 'EnumValue', value: 'asc' }, + }, + ], selectionSet: { kind: 'SelectionSet', selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'index' } }, { kind: 'Field', name: { kind: 'Name', value: 'asset' }, @@ -5009,9 +5110,22 @@ export const RoundWithHouseInfoDocument = { { kind: 'Field', name: { kind: 'Name', value: 'awards' }, + arguments: [ + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderBy' }, + value: { kind: 'EnumValue', value: 'index' }, + }, + { + kind: 'Argument', + name: { kind: 'Name', value: 'orderDirection' }, + value: { kind: 'EnumValue', value: 'asc' }, + }, + ], selectionSet: { kind: 'SelectionSet', selections: [ + { kind: 'Field', name: { kind: 'Name', value: 'index' } }, { kind: 'Field', name: { kind: 'Name', value: 'asset' }, diff --git a/packages/prop-house-sdk/src/gql/queries.evm.ts b/packages/prop-house-sdk/src/gql/queries.evm.ts index dcf239384..23f7ec2ba 100644 --- a/packages/prop-house-sdk/src/gql/queries.evm.ts +++ b/packages/prop-house-sdk/src/gql/queries.evm.ts @@ -42,7 +42,8 @@ export const TimedRoundConfigFields = graphql(` votePeriodEndTimestamp votePeriodDuration claimPeriodEndTimestamp - awards { + awards(orderBy: index, orderDirection: asc) { + index asset { assetType token diff --git a/packages/prop-house-sdk/src/gql/utils.ts b/packages/prop-house-sdk/src/gql/utils.ts index 30200d0b5..4f5ffff35 100644 --- a/packages/prop-house-sdk/src/gql/utils.ts +++ b/packages/prop-house-sdk/src/gql/utils.ts @@ -13,7 +13,7 @@ export interface QueryConfig { export const GRAPHQL_APIS: Record = { [ChainId.EthereumMainnet]: { evm: 'https://api.thegraph.com/subgraphs/name/prop-house/prop-house', - starknet: 'https://starknet-subgraph-mainnet.onrender.com', + starknet: 'https://starknet-subgraph-mainnet-backup.onrender.com', }, [ChainId.EthereumGoerli]: { evm: 'https://api.thegraph.com/subgraphs/name/prop-house/prop-house-goerli-v2', diff --git a/packages/prop-house-sdk/src/utils/storage-proofs/block.ts b/packages/prop-house-sdk/src/utils/storage-proofs/block.ts index 6f951aa2c..aa1a2f6de 100644 --- a/packages/prop-house-sdk/src/utils/storage-proofs/block.ts +++ b/packages/prop-house-sdk/src/utils/storage-proofs/block.ts @@ -1,9 +1,7 @@ -import { Chain, Common, Hardfork } from 'ethereumjs-fork-common'; -import { blockFromRpc } from 'ethereumjs-fork-block/dist/from-rpc'; -import { Block, JsonRpcBlock } from 'ethereumjs-fork-block'; +import { Chain, Common, Hardfork } from '@ethereumjs/common'; import { JsonRpcProvider } from '@ethersproject/providers'; -import { BigNumber } from '@ethersproject/bignumber'; import { IntsSequence } from '../ints-sequence'; +import { Block } from '@ethereumjs/block'; import { hexToBytes } from '../bytes'; import { encoding } from '../..'; @@ -12,27 +10,6 @@ export interface ProcessBlockInputs { headerInts: string[]; } -/** - * Produces the input data for the process_block function in Herodotus - * using a JSON RPC block - * @param block Block object from RPC call - * @param chain EVM chain identifier - * @param hardfork Hardfork identifier - */ -export const getProcessBlockInputsForRpcBlock = async ( - block: JsonRpcBlock, - chain = Chain.Mainnet, - hardfork = Hardfork.Shanghai, -): Promise => { - const header = blockFromRpc(block, [], { common: new Common({ chain, hardfork }) }); - const headerRlp = `0x${header.serialize().toString('hex')}`; - const headerInts = IntsSequence.fromBytes(hexToBytes(headerRlp)); - return { - blockNumber: BigNumber.from(block.number).toNumber(), - headerInts: encoding.reverseByteOrder(headerInts.values), - }; -}; - /** * Produces the input data for the process_block function in Herodotus * using a block number. @@ -44,12 +21,13 @@ export const getProcessBlockInputsForBlockNumber = async ( provider: JsonRpcProvider | string, blockNumber: number, chain = Chain.Mainnet, - hardfork = Hardfork.Shanghai, + hardfork = Hardfork.Cancun, ): Promise => { - const block = await Block.fromEthersProvider(provider, BigInt(blockNumber), { - common: new Common({ chain, hardfork }), + const providerURL = typeof provider === 'string' ? provider : provider.connection.url; + const block = await Block.fromJsonRpcProvider(providerURL, BigInt(blockNumber), { + common: new Common({ chain, hardfork }) }); - const headerRlp = `0x${block.header.serialize().toString('hex')}`; + const headerRlp = `0x${Buffer.from(block.header.serialize()).toString('hex')}`; const headerInts = IntsSequence.fromBytes(hexToBytes(headerRlp)); return { diff --git a/packages/prop-house-subgraph/schema.graphql b/packages/prop-house-subgraph/schema.graphql index 6caca2889..c44dd5d2e 100644 --- a/packages/prop-house-subgraph/schema.graphql +++ b/packages/prop-house-subgraph/schema.graphql @@ -407,6 +407,9 @@ type Award @entity { "A concatenation of the round address and award index" id: ID! + "The award index" + index: Int! + "The asset information" asset: Asset! diff --git a/packages/prop-house-subgraph/src/timed-round.ts b/packages/prop-house-subgraph/src/timed-round.ts index 558861e50..e4d7f2202 100644 --- a/packages/prop-house-subgraph/src/timed-round.ts +++ b/packages/prop-house-subgraph/src/timed-round.ts @@ -1,5 +1,5 @@ import { log, BigInt } from '@graphprotocol/graph-ts'; -import { AssetClaimed, RoundCancelled, RoundFinalized, RoundRegistered, TransferBatch, TransferSingle } from '../generated/templates/TimedRound/TimedRound'; +import { AssetClaimed, RoundCancelled, RoundEmergencyCancelled, RoundFinalized, RoundRegistered, TransferBatch, TransferSingle } from '../generated/templates/TimedRound/TimedRound'; import { Account, Asset, Award, Balance, Claim, Reclaim, Round, RoundVotingStrategy, TimedRoundConfig, Transfer, GovPowerStrategy, RoundProposingStrategy } from '../generated/schema'; import { AssetStruct, computeAssetID, computeGovPowerStrategyID, get2DArray, getAssetTypeString, getGovPowerStrategyType, padHexTo32Bytes } from './lib/utils'; import { RoundEventState, BIGINT_ONE, ZERO_ADDRESS, BIGINT_4_WEEKS_IN_SECONDS, BIGINT_ZERO } from './lib/constants'; @@ -102,6 +102,7 @@ export function handleRoundRegistered(event: RoundRegistered): void { } const award = new Award(`${round.id}-${i}`); + award.index = i; award.asset = asset.id; award.amount = awardStruct.amount; award.round = config.id; @@ -132,6 +133,20 @@ export function handleRoundCancelled(event: RoundCancelled): void { round.save(); } +export function handleRoundEmergencyCancelled(event: RoundEmergencyCancelled): void { + const round = Round.load(event.address.toHex()); + if (!round) { + log.error('[handleRoundEmergencyCancelled] Round not found: {}. Cancelation Hash: {}', [ + event.address.toHex(), + event.transaction.hash.toHex(), + ]); + return; + } + + round.eventState = RoundEventState.CANCELLED; + round.save(); +} + export function handleRoundFinalized(event: RoundFinalized): void { const round = Round.load(event.address.toHex()); if (!round) { diff --git a/packages/prop-house-subgraph/subgraph.yaml b/packages/prop-house-subgraph/subgraph.yaml index e4ab930c6..eed1b1500 100644 --- a/packages/prop-house-subgraph/subgraph.yaml +++ b/packages/prop-house-subgraph/subgraph.yaml @@ -145,6 +145,8 @@ templates: handler: handleRoundRegistered - event: RoundCancelled() handler: handleRoundCancelled + - event: RoundEmergencyCancelled() + handler: handleRoundEmergencyCancelled - event: RoundFinalized() handler: handleRoundFinalized - event: AssetClaimed(uint256,address,address,(uint256,uint256)) diff --git a/yarn.lock b/yarn.lock index d58a6b287..bb38c0f41 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2860,11 +2860,35 @@ patch-package "^6.2.2" postinstall-postinstall "^2.1.0" +"@ethereumjs/block@5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@ethereumjs/block/-/block-5.2.0.tgz#f6722dcce597150a7a8fc32803f5e8dcdfdeebeb" + integrity sha512-NuVDtD58zyjm5lO3AKPaelzX9VywNwRpDF7WTCY0SKFlD5OeewK5Rdb6LWhwmdQ0ngiIg0Nh/36AQ/8W1nEhjw== + dependencies: + "@ethereumjs/common" "^4.3.0" + "@ethereumjs/rlp" "^5.0.2" + "@ethereumjs/trie" "^6.2.0" + "@ethereumjs/tx" "^5.3.0" + "@ethereumjs/util" "^9.0.3" + ethereum-cryptography "^2.1.3" + +"@ethereumjs/common@4.3.0", "@ethereumjs/common@^4.3.0": + version "4.3.0" + resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-4.3.0.tgz#5b45eec7dcf521fa4ddaf0b383072fbcf9913553" + integrity sha512-shBNJ0ewcPNTUfZduHiczPmqkfJDn0Dh/9BR5fq7xUFTuIq7Fu1Vx00XDwQVIrpVL70oycZocOhBM6nDO+4FEQ== + dependencies: + "@ethereumjs/util" "^9.0.3" + "@ethereumjs/rlp@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== +"@ethereumjs/rlp@^5.0.2": + version "5.0.2" + resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz#c89bd82f2f3bec248ab2d517ae25f5bbc4aac842" + integrity sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA== + "@ethereumjs/trie@^5.0.4": version "5.0.4" resolved "https://registry.yarnpkg.com/@ethereumjs/trie/-/trie-5.0.4.tgz#eb06ce2c7957f6a8f07c0db43fb0335b256f3705" @@ -2876,6 +2900,29 @@ ethereum-cryptography "^1.1.2" readable-stream "^3.6.0" +"@ethereumjs/trie@^6.2.0": + version "6.2.0" + resolved "https://registry.npmjs.org/@ethereumjs/trie/-/trie-6.2.0.tgz#1ebcece0c962f90c15c189fb67b90a1409422d19" + integrity sha512-4k9SrfIBTMi8MROXglKxk+jS15qcELUeLwI+NnKJOTCdci2ArhoQpiuRHT6aeXB+2P2cWX2OQHbSVtW9AqabDQ== + dependencies: + "@ethereumjs/rlp" "^5.0.2" + "@ethereumjs/util" "^9.0.3" + "@types/readable-stream" "^2.3.13" + debug "^4.3.4" + ethereum-cryptography "^2.1.3" + lru-cache "10.1.0" + readable-stream "^3.6.0" + +"@ethereumjs/tx@^5.3.0": + version "5.3.0" + resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-5.3.0.tgz#473f351729ef4e30eaa3a3fb5aaccd4405a7ee41" + integrity sha512-uv++XYuIfuqYbvymL3/o14hHuC6zX0nRQ1nI2FHsbkkorLZ2ChEIDqVeeVk7Xc9/jQNU/22sk9qZZkRlsveXxw== + dependencies: + "@ethereumjs/common" "^4.3.0" + "@ethereumjs/rlp" "^5.0.2" + "@ethereumjs/util" "^9.0.3" + ethereum-cryptography "^2.1.3" + "@ethereumjs/util@^8.0.5": version "8.0.5" resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.0.5.tgz#b9088fc687cc13f0c1243d6133d145dfcf3fe446" @@ -2894,6 +2941,14 @@ ethereum-cryptography "^2.0.0" micro-ftch "^0.3.1" +"@ethereumjs/util@^9.0.3": + version "9.0.3" + resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-9.0.3.tgz#c2709e6127a85bbe23a71937ac78358ac93e7241" + integrity sha512-PmwzWDflky+7jlZIFqiGsBPap12tk9zK5SVH9YW2OEnDN7OEhCjUOMzbOqwuClrbkSIkM2ERivd7sXZ48Rh/vg== + dependencies: + "@ethereumjs/rlp" "^5.0.2" + ethereum-cryptography "^2.1.3" + "@ethersproject/abi@5.0.0-beta.153": version "5.0.0-beta.153" resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" @@ -5464,6 +5519,13 @@ dependencies: "@noble/hashes" "1.3.1" +"@noble/curves@1.3.0", "@noble/curves@~1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + "@noble/curves@~1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -5496,6 +5558,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@noble/hashes@1.3.3": + version "1.3.3" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + "@noble/hashes@^1.1.2": version "1.1.5" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" @@ -5971,6 +6038,13 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.0.tgz#6734f8ebc106a0860dff7f92bf90df193f0935d7" integrity sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ== +"@prophouse/protocol@1.0.11": + version "1.0.11" + resolved "https://registry.npmjs.org/@prophouse/protocol/-/protocol-1.0.11.tgz#b19a6d8e9997f26fd8668a8fc4756c3e82f9c3e0" + integrity sha512-oS2sCTA5Gxr+5ublNOkB9o8EiEsxlm/H7QS+7VTIJTJuhePch9TlizB6Oq/bygEUJK9ThkwxIlmD+wNEiaiNdw== + dependencies: + ethers "~5.7.2" + "@prophouse/protocol@1.0.6": version "1.0.6" resolved "https://registry.npmjs.org/@prophouse/protocol/-/protocol-1.0.6.tgz#242e27e9285eea0449065ad2e994256617e6d30d" @@ -5992,37 +6066,6 @@ dependencies: "@prophouse/sdk" "1.0.34" -"@prophouse/sdk@1.0.27": - version "1.0.27" - resolved "https://registry.npmjs.org/@prophouse/sdk/-/sdk-1.0.27.tgz#06fec2c4ca07a7ec9cf144621925f6d21cce4070" - integrity sha512-lQoa0S3fqty4ccYJ0EJoklRU3812SB3dSmR4xmw/qExCndkuqswndHzt/dZLHQwdZFJy8oHUZ1ac3TKB2SRgiw== - dependencies: - "@ethersproject/abi" "~5.7.0" - "@ethersproject/abstract-provider" "~5.7.0" - "@ethersproject/abstract-signer" "~5.7.0" - "@ethersproject/address" "~5.7.0" - "@ethersproject/bignumber" "~5.7.0" - "@ethersproject/bytes" "~5.7.0" - "@ethersproject/constants" "~5.7.0" - "@ethersproject/contracts" "~5.7.0" - "@ethersproject/keccak256" "~5.7.0" - "@ethersproject/providers" "~5.7.0" - "@ethersproject/solidity" "~5.7.0" - "@ethersproject/strings" "~5.7.0" - "@ethersproject/wallet" "^5.7.0" - "@pinata/sdk" "^2.1.0" - "@prophouse/protocol" "1.0.8" - bn.js "^5.2.1" - ethereumjs-fork-block "^4.2.4" - ethereumjs-fork-common "^3.1.3" - graphql "^16.5.0" - graphql-request "5.0.0" - merkletreejs "^0.3.11" - micro-starknet "^0.2.3" - randombytes "^2.1.0" - starknet "5.19.5" - time-ts "^0.1.0" - "@prophouse/sdk@1.0.34": version "1.0.34" resolved "https://registry.npmjs.org/@prophouse/sdk/-/sdk-1.0.34.tgz#b923a001772d0483929927443aab44385fc9798e" @@ -6342,6 +6385,11 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== +"@scure/base@~1.1.4": + version "1.1.6" + resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.6.tgz#8ce5d304b436e4c84f896e0550c83e4d88cb917d" + integrity sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g== + "@scure/bip32@1.1.5": version "1.1.5" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" @@ -6369,6 +6417,15 @@ "@noble/hashes" "~1.3.1" "@scure/base" "~1.1.0" +"@scure/bip32@1.3.3": + version "1.3.3" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" + integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== + dependencies: + "@noble/curves" "~1.3.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" + "@scure/bip39@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" @@ -6393,6 +6450,14 @@ "@noble/hashes" "~1.3.0" "@scure/base" "~1.1.0" +"@scure/bip39@1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" + integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== + dependencies: + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" + "@scure/starknet@~0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@scure/starknet/-/starknet-0.3.0.tgz#b8273a42fc721025f8098b1f1d96368a7067e1c4" @@ -15079,6 +15144,16 @@ ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: "@scure/bip32" "1.3.1" "@scure/bip39" "1.2.1" +ethereum-cryptography@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" + integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== + dependencies: + "@noble/curves" "1.3.0" + "@noble/hashes" "1.3.3" + "@scure/bip32" "1.3.3" + "@scure/bip39" "1.2.2" + ethereum-waffle@^3.4.4: version "3.4.4" resolved "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840" @@ -20912,6 +20987,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@10.1.0, "lru-cache@^9.1.1 || ^10.0.0": + version "10.1.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" + integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== + lru-cache@5.1.1, lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -20938,11 +21018,6 @@ lru-cache@^7.10.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.0.tgz#21be64954a4680e303a09e9468f880b98a0b3c7f" integrity sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ== -"lru-cache@^9.1.1 || ^10.0.0": - version "10.1.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" - integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== - lru_map@^0.3.3: version "0.3.3" resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd"