@xyo-network/react-chain 1.3.6 → 1.3.7
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.
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/block/BlockHeadingFlexbox.tsx","../../src/context/analyzer/context.ts","../../src/context/analyzer/Provider.tsx","../../src/context/analyzer/use.ts","../../src/context/chain/Context.ts","../../src/context/chain/Provider.tsx","../../src/context/polling/context.ts","../../src/context/polling/Provider.tsx","../../src/context/polling/use.ts","../../src/lib/getChainArchivist.ts","../../src/lib/getChainInformation.ts","../../src/lib/hexToBigInt.ts","../../src/components/transactions/submit/Builder.tsx","../../src/components/transactions/submit/Network.tsx","../../src/components/transactions/submit/SubmitChain.tsx","../../src/components/transactions/TransactionCountChip.tsx","../../src/components/transactions/TransactionsQuickTipButton.tsx","../../src/components/block/hooks/useAnchorElement.ts","../../src/components/block/hooks/useBlockHeadingEvents.ts","../../src/components/block/hooks/useBlockProducer.ts","../../src/components/block/hooks/useDynamicBlockComponents.ts","../../src/components/block/helpers/blockProducer.ts","../../src/components/block/helpers/tsxFromBlock.ts","../../src/components/block/helpers/buildBlockChainRenderComponent.tsx","../../src/components/block/hooks/useStaticBlockComponents.ts","../../src/components/block/hooks/useTxsFromBlock.ts","../../src/components/block/LinkedDivider.tsx","../../src/components/block/menu/Expanded.tsx","../../src/components/block/ProducerChip.tsx","../../src/components/block/table/cell/BlockNumber.tsx","../../src/components/block/table/cell/hooks/useLinkedBlockItem.tsx","../../src/components/block/table/cell/Hash.tsx","../../src/components/block/table/cell/JsonView.tsx","../../src/components/block/table/cell/Producer.tsx","../../src/components/block/table/cell/TransactionCount.tsx","../../src/components/block/table/cell/Verification.tsx","../../src/components/block/table/Ex.tsx","../../src/components/block/table/row/TableRow.tsx","../../src/components/chain/controls/PollingControlsFlexbox.tsx","../../src/components/chain/stats/Dialog.tsx","../../src/components/chain/stats/producer/ProducerFlexbox.tsx","../../src/components/chain/stats/producer/Table.tsx","../../src/components/chain/controls/PulseSvgIcon.tsx","../../src/components/chain/dialog/Dialog.tsx","../../src/components/chain/hooks/useOnBlock.ts","../../src/components/chain/pagination/BlockChainPagination.tsx","../../src/components/chain/pagination/hooks/usePagination.tsx","../../src/components/chain/render/dynamic/flexbox/Flexbox.tsx","../../src/components/chain/list/Animated.tsx","../../src/components/chain/styled/BlockListWrapperFlexbox.tsx","../../src/components/chain/render/dynamic/hooks/useDynamicBlockRenderComponents.ts","../../src/hooks/chain-iterator/ChainIteratorStore.ts","../../src/hooks/chain-iterator/useChainIteratorParams.ts","../../src/hooks/chain-iterator/useChainIteratorStore.ts","../../src/hooks/chain-iterator/useChainIteratorUpdatingHead.ts","../../src/hooks/useIterateChain.ts","../../src/components/chain/render/dynamic/hooks/useRemoteBlockChainRenderProps.ts","../../src/components/chain/render/static/flexbox/Flexbox.tsx","../../src/components/chain/render/static/hooks/useStaticBlockRenderComponents.ts","../../src/stories/ChainArchivistDecorator.tsx","../../src/stories/ExampleBlockchainWithPayloads.json","../../src/stories/ChainArchivistDelayedInsertDecorator.tsx","../../src/stories/ChainInfoContextDecorator.tsx"],"sourcesContent":["import { Hash } from '@xylabs/hex'\nimport { BWVerification, HashHeadingPaper } from '@xylabs/react-boundwitness-plugin-private'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { useChainPollingContext } from '../../context/index.ts'\nimport { hexToBigInt } from '../../lib/index.ts'\nimport { BlockComponentWithTxsProps } from '../../types/index.ts'\nimport { TransactionCountChip } from '../transactions/index.ts'\nimport { useBlockHeadingEvents } from './hooks/index.ts'\nimport { LinkedDivider } from './LinkedDivider.tsx'\nimport { BlockMenuExpanded } from './menu/index.ts'\nimport { BlockProducerChip } from './ProducerChip.tsx'\n\nexport const BlockHeadingFlexbox: React.FC<BlockComponentWithTxsProps> = ({\n block, defaultExpanded, chainInformation, transactions,\n}) => {\n const hash = usePayloadHash(block)\n const [blockHeadingRef, blockHeadingListener] = useBlockHeadingEvents<HTMLDivElement>()\n const { pollingState } = useChainPollingContext()\n const expanded = (pollingState === 'paused') || defaultExpanded\n\n const handleTransactionCountClick = (event: React.MouseEvent, transactions: Hash[]) => {\n event.stopPropagation()\n blockHeadingListener('transaction-count', 'click', JSON.stringify(transactions))\n }\n\n return (\n <FlexCol className=\"block-heading-flexbox\" alignItems=\"stretch\" ref={blockHeadingRef} onClick={() => blockHeadingListener('block-hash', 'click', hash)}>\n <LinkedDivider />\n <HashHeadingPaper\n hash={hash}\n heading={block?.block ? hexToBigInt(block.block).toString() : ''}\n paperProps={{ sx: { p: 1, width: '100%' } }}\n AdornmentEnd={(\n <FlexRow gap={1}>\n <BlockProducerChip block={block} chainInformation={chainInformation} />\n <TransactionCountChip\n onClick={e => handleTransactionCountClick(e, transactions ?? [])}\n transactions={transactions}\n />\n <BWVerification iconColors boundwitness={block} />\n <span style={{\n // maxWidth is required for css animation to work and 28px is the width of the icon button\n display: 'flex', transition: 'max-width .5s', maxWidth: expanded ? '28px' : 0,\n }}\n >\n <BlockMenuExpanded block={block} />\n </span>\n </FlexRow>\n )}\n identiconProps={{ p: 0.75, size: 18 }}\n />\n </FlexCol>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { ChainAnalyzersState } from './state.ts'\n\nexport const ChainAnalyzersContext = createContextEx<ChainAnalyzersState>()\n","import { BlockBoundWitness, hydrateBlock } from '@xylabs/sdk-xyo-chain-js'\nimport { ReadArchivist } from '@xyo-network/archivist-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n PropsWithChildren, useCallback, useMemo, useState,\n} from 'react'\n\nimport { ChainAnalyzersContext } from './context.ts'\nimport { ChainAnalyzers, ChainAnalyzersState } from './state.ts'\n\nexport interface ChainAnalyzersProviderProps extends PropsWithChildren {\n analyzers?: ChainAnalyzers\n}\n\nexport const ChainAnalyzersProvider: React.FC<ChainAnalyzersProviderProps> = ({ analyzers: analyzersProp, children }) => {\n const [analyzersState, setAnalyzersState] = useState<ChainAnalyzers>(analyzersProp ?? {} as ChainAnalyzers)\n const [statsUpdated, setStatsUpdated] = useState(Date.now())\n\n const analyzers = useMemo(() => ({ ...analyzersProp, ...analyzersState }), [analyzersProp])\n\n const addAnalyzers: ChainAnalyzersState['addAnalyzers'] = useCallback((analyzers: ChainAnalyzersState['analyzers']) => {\n if (!analyzers) return\n setAnalyzersState(prev => ({ ...prev, ...analyzers }))\n }, [])\n\n const onBlock = useCallback(async (chainArchivist: ReadArchivist, block: BlockBoundWitness) => {\n const hash = await PayloadBuilder.hash(block)\n const hydratedBlock = await hydrateBlock(chainArchivist, hash)\n\n for (const analyzer of Object.values(analyzers)) {\n void analyzer.onBlock(hydratedBlock)\n setStatsUpdated(Date.now())\n }\n }, [analyzers])\n\n const value = useMemo(() => ({\n analyzers, addAnalyzers, onBlock, statsUpdated, provided: true,\n }), [analyzers, addAnalyzers, onBlock, statsUpdated])\n\n return (\n <ChainAnalyzersContext.Provider value={value}>{children}</ChainAnalyzersContext.Provider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { ChainAnalyzersContext } from './context.ts'\nimport { ChainAnalyzersState } from './state.ts'\n\nexport const useChainAnalyzersContext = (required = false) => useContextEx<ChainAnalyzersState>(ChainAnalyzersContext, 'ChainAnalyzers', required)\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { ChainInfoState } from './State.ts'\n\nexport const ChainInfoContext = createContextEx<ChainInfoState>()\n","import React, {\n PropsWithChildren,\n useEffect, useMemo, useState,\n} from 'react'\n\nimport { ChainInfoContext } from './Context.ts'\nimport { ChainInfoState } from './State.ts'\n\ninterface ChainInfoProviderProps extends PropsWithChildren, Omit<ChainInfoState, 'provided'> {\n}\n\nexport const ChainInfoProvider: React.FC<ChainInfoProviderProps> = ({\n children, chainArchivist: chainArchivistProp, chainInformation: chainInformationProp, chainIterator: chainIteratorProp,\n}) => {\n const [chainArchivist, setChainArchivist] = useState<ChainInfoState['chainArchivist']>(chainArchivistProp)\n const [chainInformation, setChainInformation] = useState<ChainInfoState['chainInformation']>(chainInformationProp)\n const [chainIterator, setChainIterator] = useState<ChainInfoState['chainIterator']>(chainIteratorProp)\n\n const updateChainArchivist = (chainArchivist: ChainInfoState['chainArchivist']) => {\n setChainArchivist(chainArchivist)\n }\n const updateChainInformation = (chainInformation: ChainInfoState['chainInformation']) => {\n setChainInformation(chainInformation)\n }\n const updateChainIterator = (chainIterator: ChainInfoState['chainIterator']) => {\n setChainIterator(chainIterator)\n }\n\n useEffect(() => {\n updateChainArchivist(chainArchivistProp)\n }, [chainArchivistProp])\n\n useEffect(() => {\n updateChainInformation(chainInformationProp)\n }, [chainInformationProp])\n\n useEffect(() => {\n updateChainIterator(chainIteratorProp)\n }, [chainIteratorProp])\n\n const chainState = useMemo(() => ({\n chainArchivist,\n chainInformation,\n chainIterator,\n updateChainArchivist,\n updateChainInformation,\n updateChainIterator,\n provided: true,\n }), [chainArchivist, chainInformation, chainIterator, updateChainArchivist, updateChainInformation, updateChainIterator])\n\n return (\n <ChainInfoContext.Provider value={chainState}>\n {children}\n </ChainInfoContext.Provider>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { ChainPollingState } from './state.ts'\n\nexport const ChainPollingContext = createContextEx<ChainPollingState>()\n","import {\n PropsWithChildren, useCallback, useMemo, useState,\n} from 'react'\n\nimport { ChainPollingContext } from './context.ts'\nimport { ChainPollingState, PollingState } from './state.ts'\n\nexport interface ChainPollingProviderProps extends PropsWithChildren {\n pollingState?: PollingState\n}\n\nexport const ChainPollingProvider: React.FC<ChainPollingProviderProps> = ({ children, pollingState: pollingStateProp = 'running' }) => {\n const [pollingState, setPollingState] = useState<PollingState>(pollingStateProp)\n\n const updatePollingState = useCallback((newPollingState: PollingState) => {\n setPollingState(newPollingState)\n }, [])\n\n const value = useMemo<ChainPollingState>(() => ({\n pollingState,\n provided: true,\n updatePollingState,\n }), [pollingState, updatePollingState])\n\n return <ChainPollingContext.Provider value={value}>{children}</ChainPollingContext.Provider>\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { ChainPollingContext } from './context.ts'\n\nexport const useChainPollingContext = (required = false) => useContextEx(ChainPollingContext, 'ChainPolling', required)\n","import { assertEx } from '@xylabs/assert'\nimport { ArchivistInstance, asArchivistInstance } from '@xyo-network/archivist-model'\nimport {\n HttpBridge, HttpBridgeConfig, HttpBridgeConfigSchema,\n} from '@xyo-network/bridge-http'\nimport { ModuleIdentifier } from '@xyo-network/module-model'\n\nexport interface BridgedChainArchivistParams {\n chainArchivistModuleId: ModuleIdentifier\n url: string\n}\n\nexport const getChainArchivistFromBridge = async (params: BridgedChainArchivistParams): Promise<ArchivistInstance> => {\n const { url, chainArchivistModuleId } = params\n const config: HttpBridgeConfig = { schema: HttpBridgeConfigSchema, client: { url } }\n const bridge = await HttpBridge.create({ config })\n\n const resolved = await bridge.resolve(chainArchivistModuleId)\n const mod = assertEx(resolved, () => `Module ${chainArchivistModuleId} not found`)\n return assertEx(asArchivistInstance(mod), () => `Module ${chainArchivistModuleId} is not an archivist`)\n}\n","import { ChainInformation } from '@xylabs/sdk-xyo-chain-js'\nimport { HDWallet } from '@xyo-network/account'\n\nconst id = 'ce080bf3043a40c6c8838c7e813c00ab53df1684'\nconst sharedAccountPhrase = 'crane ribbon cook cousin tobacco vital moral protect merit knock veteran hint knee ocean nurse'\nconst sharedAccountPath = \"m/44'/60'/0'/0\"\n\nexport const getChainInformation = async () => {\n const sharedSignerAccount = await HDWallet.fromPhrase(sharedAccountPhrase, sharedAccountPath)\n const chainInformation: ChainInformation = {\n id, sharedSigner: sharedSignerAccount.address, sharedSignerAccount,\n }\n return { chainInformation }\n}\n","import { Hex, hexFromHexString } from '@xylabs/hex'\n\nexport function hexToBigInt(hex: Hex): bigint {\n return BigInt(hexFromHexString(hex, { prefix: true }))\n}\n","import {\n Button, FormControl, TextField,\n} from '@mui/material'\nimport { Address, Hex } from '@xylabs/hex'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { TransactionBoundWitnessFields } from '@xylabs/sdk-xyo-chain-js'\nimport React from 'react'\n\nexport interface ChainTransactionBuilder {\n onSubmitTx?: (chainTx: TransactionBoundWitnessFields) => Promise<void>\n}\n\nexport const ChainTransactionBuilder: React.FC<ChainTransactionBuilder> = ({ onSubmitTx }) => {\n const handleSubmit = async (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n const formData = new FormData(event.currentTarget)\n\n // TODO - more field level validation\n const chainTx: TransactionBoundWitnessFields = {\n chain: formData.get('chain') as Address,\n gas: formData.get('gas') as Hex,\n nbf: formData.get('nbf') as Hex,\n exp: formData.get('exp') as Hex,\n }\n\n await onSubmitTx?.(chainTx)\n }\n\n return (\n <form onSubmit={event => void handleSubmit(event)} style={{ width: '100%' }}>\n <FlexCol gap={2}>\n <FormControl fullWidth>\n <TextField label=\"Chain Address\" name=\"chain\" required />\n </FormControl>\n <FormControl fullWidth>\n <TextField label=\"Gas\" name=\"gas\" required />\n </FormControl>\n <FormControl fullWidth>\n <TextField label=\"Not Before Block\" name=\"nbf\" required />\n </FormControl>\n <FormControl fullWidth>\n <TextField label=\"Not After Block\" name=\"exp\" required />\n </FormControl>\n\n <Button type=\"submit\" variant=\"contained\">Submit</Button>\n </FlexCol>\n </form>\n )\n}\n","import {\n FormControl, FormHelperText, StandardTextFieldProps,\n TextField,\n} from '@mui/material'\nimport React, { ChangeEventHandler, useState } from 'react'\n\nexport interface ChainTransactionNetworkProps extends StandardTextFieldProps {\n network?: URL\n onNetworkChange?: (url: URL) => void\n}\n\nexport const ChainTransactionNetwork: React.FC<ChainTransactionNetworkProps> = ({\n network, onNetworkChange, ...props\n}) => {\n const [error, setError] = useState<Error>()\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n try {\n const url = new URL(event.target.value)\n setError(undefined)\n onNetworkChange?.(url)\n } catch (error) {\n console.error(error)\n setError(error as Error)\n }\n }\n\n return (\n <FormControl fullWidth>\n <TextField label=\"Network\" name=\"network\" onChange={handleChange} required value={network} {...props} />\n <FormHelperText sx={{ color: error ? 'red' : undefined }}>{error ? 'Not a valid url' : 'Enter full url of archivist'}</FormHelperText>\n </FormControl>\n )\n}\n","import {\n Alert, Grid2, Typography,\n} from '@mui/material'\nimport { axios } from '@xylabs/axios'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { FlexGrowCol } from '@xylabs/react-flexbox'\nimport {\n buildTransaction, hexToBigInt, TransactionBoundWitnessFields,\n} from '@xylabs/sdk-xyo-chain-js'\nimport { Account } from '@xyo-network/account'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { ModuleQueryResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\nimport React, { useState } from 'react'\n\nimport { ChainTransactionBuilder } from './Builder.tsx'\nimport { ChainTransactionNetwork } from './Network.tsx'\n\nconst BETA_PENDING_TRANSACTIONS_ARCHIVIST = 'https://beta.api.chain.xyo.network/8050fee682a2762f504d5449d8269a6f17f0b693'\n\nexport const SubmitChainTransaction: React.FC = () => {\n const [network, setNetwork] = useState<URL>(new URL(BETA_PENDING_TRANSACTIONS_ARCHIVIST))\n const [result, setResult] = useState<ModuleQueryResult>()\n const [error, setError] = useState<Error>()\n\n const onSubmitTx = async (chainTx: TransactionBoundWitnessFields) => {\n if (!network) throw new Error('Network not set')\n const randomAccount = await Account.random()\n const [transactionBoundWitness] = await buildTransaction(\n chainTx.chain,\n [],\n BigInt(`0x${chainTx.gas}`),\n randomAccount,\n hexToBigInt(chainTx.nbf),\n hexToBigInt(chainTx.exp),\n )\n\n const insertQuery = new PayloadBuilder({ schema: ArchivistInsertQuerySchema }).build()\n const [queryBoundWitness] = await new QueryBoundWitnessBuilder()\n .payloads([transactionBoundWitness as Payload])\n .query(insertQuery)\n .signer(randomAccount)\n .build()\n\n const response = await axios.post<ApiEnvelope<ModuleQueryResult>>(network.href, [queryBoundWitness, [insertQuery, transactionBoundWitness, chainTx]])\n if (response.data.errors) {\n setError(new Error(response.data.errors.map(e => e.message).join('\\n')))\n } else {\n setResult(response.data.data)\n }\n }\n\n const onNetworkChange = (url: URL) => {\n setNetwork(url)\n }\n\n return (\n <Grid2 container>\n <Grid2 size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <FlexGrowCol alignItems=\"start\" gap={2}>\n <ChainTransactionNetwork network={network} onNetworkChange={onNetworkChange} />\n {network ? <ChainTransactionBuilder onSubmitTx={onSubmitTx} /> : null}\n {result?.[2].length === 0 ? <Alert severity=\"success\">Success</Alert> : null}\n\n {error ? <ErrorRender error={error} /> : null}\n {result?.[2] && result?.[2].length > 0 ? <ErrorRender error={new Error('Failed insert...see result below')} /> : null}\n\n {result\n ? (\n <>\n <Typography variant=\"h6\">Result:</Typography>\n <pre>{JSON.stringify(result, null, 2)}</pre>\n </>\n )\n : null}\n </FlexGrowCol>\n </Grid2>\n </Grid2>\n )\n}\n","import { Difference } from '@mui/icons-material'\nimport {\n Chip, ChipProps, Icon,\n} from '@mui/material'\nimport { Hash } from '@xylabs/hex'\nimport { useMemo } from 'react'\n\nexport interface TransactionCountChipProps extends ChipProps {\n transactions?: Hash[]\n}\n\nexport const TransactionCountChip: React.FC<TransactionCountChipProps> = ({\n transactions, sx, ...props\n}) => {\n const label = useMemo(() => {\n if (!transactions) return '0'\n return transactions?.length > 10 ? '+10' : transactions.length\n }, [transactions])\n\n return (\n <Chip\n avatar={(\n <Icon>\n <Difference />\n </Icon>\n )}\n label={`tx: ${label}`}\n title={transactions ? `Block contains ${transactions.length} transactions` : undefined}\n sx={{\n display: 'inline-flex', alignItems: 'center', justifyContent: 'center', ...sx,\n }}\n {...props}\n />\n )\n}\n","import { ContentCopy as ContentCopyIcon, Paid } from '@mui/icons-material'\nimport {\n Alert, AlertTitle, Collapse, Snackbar, Typography,\n} from '@mui/material'\nimport { Hash } from '@xylabs/hex'\nimport { ErrorRender } from '@xylabs/react-error'\nimport {\n FlexGrowCol, FlexGrowRow, FlexRow,\n} from '@xylabs/react-flexbox'\nimport { QuickTipButton, QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { BlockBoundWitness } from '@xylabs/sdk-xyo-chain-js'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\nimport React, {\n Fragment, useMemo, useState,\n} from 'react'\n\nimport { useTxsFromBlock } from '../block/index.ts'\n\nexport interface TransactionsQuickTipButtonQuickTipButtonProps extends QuickTipButtonProps {\n block?: BlockBoundWitness\n chainArchivist?: ArchivistInstance\n}\n\nexport const TransactionsQuickTipButton: React.FC<TransactionsQuickTipButtonQuickTipButtonProps> = ({\n block, chainArchivist, ...props\n}) => {\n const [transactions, transactionsError] = useTxsFromBlock(chainArchivist, block)\n\n const [copied, setCopied] = useState(false)\n const [showError, setShowError] = useState(false)\n useMemo(() => transactionsError ? setShowError(true) : setShowError(false), [transactionsError])\n\n const onCopy = async (transactionHash: Hash) => {\n await navigator.clipboard.writeText(transactionHash)\n setCopied(true)\n setTimeout(() => {\n setCopied(false)\n }, 5000)\n }\n\n return (\n <>\n <QuickTipButton\n Icon={Paid}\n disabled={transactions?.length === 0}\n hoverText={`Transaction Count: ${transactions?.length ?? 0}`}\n disableDialog={transactions?.length === 0}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n {...props}\n >\n {transactions?.length === 0\n ? null\n : (\n <FlexGrowCol gap={1} alignItems=\"stretch\">\n {transactions?.map(([transaction, hash]) => (\n <Fragment key={hash}>\n <FlexGrowRow gap={2} justifyContent=\"start\">\n <ContentCopyIcon sx={{ cursor: 'pointer' }} onClick={() => void onCopy(hash)} />\n <Typography sx={{\n overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',\n }}\n >\n {transaction._hash}\n </Typography>\n </FlexGrowRow>\n <FlexRow>\n <Collapse in={copied} unmountOnExit>\n <Alert>\n <AlertTitle>Previous hash copied to clipboard</AlertTitle>\n </Alert>\n </Collapse>\n </FlexRow>\n </Fragment>\n ))}\n </FlexGrowCol>\n )}\n </QuickTipButton>\n <Snackbar open={showError} onClose={() => setShowError(false)}>\n <ErrorRender error={transactionsError} scope=\"TransactionsQuickTipButton\" />\n </Snackbar>\n </>\n )\n}\n","import { useRef, useState } from 'react'\n\nexport const useAnchorElement = () => {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const anchorRef = useRef<HTMLButtonElement>(null)\n const open = Boolean(anchorEl)\n\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n return {\n anchorEl, anchorRef, open, handleClick, handleClose,\n }\n}\n","import { useEvent } from '@xyo-network/react-event'\n\nexport type BlockHeaderEventNouns = 'transaction-count' | 'block-hash' | 'block-number' | 'block-producer' | 'block-verification'\n\n// NOTE: extracting the type so compilers can easily strip it off vs inlining it withing the hook\n// which causes compilation warnings.\ntype HookArgs<TElement extends HTMLElement> = Parameters<typeof useEvent<TElement, BlockHeaderEventNouns>>\n\nexport const useBlockHeadingEvents = <TElement extends HTMLElement>(...args: HookArgs<TElement>) => {\n return useEvent<TElement, BlockHeaderEventNouns>(...args)\n}\n","import { BlockBoundWitness, ChainInformation } from '@xylabs/sdk-xyo-chain-js'\nimport { useMemo } from 'react'\n\nexport const useBlockProducer = (block?: BlockBoundWitness, chainInformation?: ChainInformation) => {\n return useMemo(() => {\n if (block && chainInformation) {\n const producer = block.addresses.find(address => address !== chainInformation.sharedSigner)\n return producer\n }\n }, [block, chainInformation])\n}\n","import {\n BlockBoundWitness, isBlockBoundWitness, XyoChainIteratorParams,\n} from '@xylabs/sdk-xyo-chain-js'\nimport { ComponentType, useState } from 'react'\n\nimport { useChainAnalyzersContext } from '../../../context/index.ts'\nimport {\n BlockChainRenderComponent,\n BlockComponentProps, BlockComponentWithTxsProps,\n} from '../../../types/index.ts'\nimport { buildBlockChainRenderComponent } from '../helpers/index.ts'\n\nexport const useDynamicBlockComponents = (BlockComponent: ComponentType<BlockComponentWithTxsProps>, params?: XyoChainIteratorParams, maxBlocks?: number) => {\n const { chainArchivist, chainInformation } = params ?? {}\n const [blockChainRenderComponents, setBlockChainRenderComponents] = useState<BlockChainRenderComponent[]>([])\n\n const { onBlock } = useChainAnalyzersContext()\n\n const onAddBlock = async (block: BlockBoundWitness) => {\n if (!isBlockBoundWitness(block) || !chainArchivist || !chainInformation) return\n\n const blockComponentProps: BlockComponentProps = { block, chainInformation }\n const newBlockComponent = await buildBlockChainRenderComponent(BlockComponent, blockComponentProps, chainArchivist)\n\n if (block.block !== blockChainRenderComponents[0]?.block.block) {\n void onBlock?.(chainArchivist, block)\n\n setBlockChainRenderComponents((blockComponents) => {\n const newBlockComponents = [newBlockComponent, ...blockComponents]\n\n if (maxBlocks && newBlockComponents.length > maxBlocks) {\n // trim the last block if we exceed the max\n newBlockComponents.pop()\n }\n\n return newBlockComponents\n })\n }\n }\n\n return { blockChainRenderComponents, onAddBlock }\n}\n","import { BlockBoundWitness, XyoChainInformation } from '@xylabs/sdk-xyo-chain-js'\n\nexport const blockProducer = (block: BlockBoundWitness, chainInformation: XyoChainInformation) => {\n return block.addresses.find(address => address !== chainInformation.sharedSigner)\n}\n","import { BlockBoundWitness, isTransactionBoundWitness } from '@xylabs/sdk-xyo-chain-js'\nimport { ReadArchivist } from '@xyo-network/archivist-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\n\nexport const txsFromBlock = async (chainArchivist: ReadArchivist, block: BlockBoundWitness) => {\n const payloads = await chainArchivist.get(block.payload_hashes)\n const transactionPayloads = payloads.filter(payload => isTransactionBoundWitness(payload))\n return await PayloadBuilder.hashPairs(transactionPayloads)\n}\n","import { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { ComponentType } from 'react'\n\nimport {\n BlockChainRenderComponent,\n BlockComponentProps, BlockComponentWithTxsProps,\n} from '../../../types/index.ts'\nimport { BlockHeadingFlexbox } from '../BlockHeadingFlexbox.tsx'\nimport { txsFromBlock } from './tsxFromBlock.ts'\n\nexport const buildBlockChainRenderComponent = async (\n BlockComponent: ComponentType<BlockComponentWithTxsProps>,\n blockComponentProps: BlockComponentProps,\n chainArchivist: ArchivistInstance,\n) => {\n const { block, ...remainingProps } = blockComponentProps\n const blockTxs = await txsFromBlock(chainArchivist, block)\n const txHashes = blockTxs.map(([_, hash]) => hash)\n\n const item: BlockChainRenderComponent = {\n child: (\n <BlockComponent\n block={block}\n transactions={txHashes}\n {...remainingProps}\n />\n ),\n key: block.block,\n block,\n }\n return item\n}\n\nexport const buildBlockHeadingComponent = async (\n blockComponentProps: BlockComponentProps,\n chainArchivist: ArchivistInstance,\n) => {\n return await buildBlockChainRenderComponent(BlockHeadingFlexbox, blockComponentProps, chainArchivist)\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n BlockBoundWitness,\n XyoChainIteratorParams,\n} from '@xylabs/sdk-xyo-chain-js'\nimport { ComponentType } from 'react'\n\nimport { useChainAnalyzersContext } from '../../../context/index.ts'\nimport { BlockComponentProps, BlockComponentWithTxsProps } from '../../../types/index.ts'\nimport { buildBlockChainRenderComponent } from '../helpers/index.ts'\n\nexport const useStaticBlockComponents = (\n BlockComponent: ComponentType<BlockComponentWithTxsProps>,\n params?: XyoChainIteratorParams,\n blocks?: BlockBoundWitness[],\n) => {\n const { onBlock } = useChainAnalyzersContext()\n\n const [blockComponents, blockComponentsError] = usePromise(async () => {\n const resolvedBlockWithStorage = blocks ?? []\n if (!params?.chainArchivist) return []\n\n const { chainArchivist, chainInformation } = params\n\n return await Promise.all(resolvedBlockWithStorage?.map(async (block) => {\n if (onBlock && chainArchivist) {\n await onBlock(chainArchivist, block)\n }\n\n const blockComponentProps: BlockComponentProps = {\n block, chainInformation, defaultExpanded: true,\n }\n return await buildBlockChainRenderComponent(BlockComponent, blockComponentProps, chainArchivist)\n }))\n }, [blocks, params, BlockComponent])\n\n return { blockComponents, errors: blockComponentsError }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { BlockBoundWitness } from '@xylabs/sdk-xyo-chain-js'\nimport { ReadArchivist } from '@xyo-network/archivist-model'\n\nimport { txsFromBlock } from '../helpers/index.ts'\n\nexport const useTxsFromBlock = (chainArchivist?: ReadArchivist, block?: BlockBoundWitness) => {\n return usePromise(async () => {\n if (block && chainArchivist) {\n return await txsFromBlock(chainArchivist, block)\n }\n }, [block, chainArchivist])\n}\n","import { Divider, Stack } from '@mui/material'\nimport React from 'react'\n\nexport const LinkedDivider: React.FC = () => {\n return (\n <>\n {/* An element to house the height of the divider...really just here to help with calculating\n the height for animation purposes and allowing for a dynamic divider height */}\n <Stack\n className=\"divider-spacer\"\n justifyContent=\"end\"\n sx={{\n width: '50%', height: 24, justifyContent: 'end',\n }}\n >\n <Divider\n className=\"divider\"\n orientation=\"vertical\"\n flexItem\n sx={{\n borderRightWidth: 2, height: 24, transition: 'height 1s',\n }}\n />\n </Stack>\n </>\n )\n}\n","import { MoreVert } from '@mui/icons-material'\nimport { IconButton, Menu } from '@mui/material'\nimport { BWJsonMenuItem, BWPreviousHashMenuItem } from '@xylabs/react-boundwitness-plugin-private'\nimport { BlockBoundWitness } from '@xylabs/sdk-xyo-chain-js'\n\nimport { useAnchorElement } from '../hooks/index.ts'\n\nexport interface BlockExpandedMenuProps {\n block?: BlockBoundWitness\n}\n\nexport const BlockMenuExpanded: React.FC<BlockExpandedMenuProps> = ({ block }) => {\n const {\n anchorEl, anchorRef, open, handleClick, handleClose,\n } = useAnchorElement()\n\n return (\n <>\n <IconButton ref={anchorRef} size=\"small\" onClick={handleClick}>\n <MoreVert fontSize=\"inherit\" />\n </IconButton>\n <Menu\n open={open}\n anchorEl={anchorEl}\n anchorOrigin={{ horizontal: 'left', vertical: 'bottom' }}\n onClose={handleClose}\n >\n <BWPreviousHashMenuItem boundwitness={block} dense onDialogClose={handleClose} />\n <BWJsonMenuItem boundwitness={block} dense onDialogClose={handleClose} />\n </Menu>\n </>\n )\n}\n","import { Chip, ChipProps } from '@mui/material'\nimport { EthAddress } from '@xylabs/eth-address'\nimport { BlockBoundWitness, ChainInformation } from '@xylabs/sdk-xyo-chain-js'\nimport { BlockiesAvatar } from '@xylabs/xyo-chain-react-blockies'\nimport { useMemo } from 'react'\n\nexport interface BlockProducerChipProps extends ChipProps {\n block?: BlockBoundWitness\n chainInformation?: ChainInformation\n}\nexport const BlockProducerChip: React.FC<BlockProducerChipProps> = ({\n block, chainInformation, ...props\n}) => {\n const blockProducer = useMemo(() => {\n if (block && chainInformation) {\n const producer = block.addresses.find(address => address !== chainInformation.sharedSigner)\n return producer\n }\n }, [block, chainInformation])\n\n const shortedBlockProducer = blockProducer ? EthAddress.parse(blockProducer)?.toShortString(3) : null\n\n const avatar = useMemo(() => blockProducer === '' ? undefined : <BlockiesAvatar blockiesOptions={{ seed: blockProducer }} />, [blockProducer])\n\n return <Chip avatar={avatar} label={shortedBlockProducer ? `${shortedBlockProducer}` : null} title={`Block producer: ${blockProducer}`} {...props} />\n}\n","import {\n Link, TableCell, Tooltip,\n} from '@mui/material'\nimport React from 'react'\n\nimport { hexToBigInt } from '../../../../lib/index.ts'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockNumberTableCellProps extends BlockTableCellProps {}\n\nexport const BlockNumberTableCell: React.FC<BlockNumberTableCellProps> = ({\n block, linked, ...props\n}) => {\n const [ref, handleClick] = useLinkedBlockItem('block-number', block?.block)\n\n const blockNumberBigInt = block ? hexToBigInt(block.block).toString() : ''\n\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Block Number: ${blockNumberBigInt}`}>\n <span>\n {linked && block\n ? (\n <Link title={block.block} onClick={handleClick} sx={{ cursor: 'pointer' }}>{hexToBigInt(block.block).toString()}</Link>\n )\n : null}\n {!linked && blockNumberBigInt}\n </span>\n </Tooltip>\n </TableCell>\n )\n}\n","import { useEvent } from '@xyo-network/react-event'\nimport { RefObject } from 'react'\n\nimport { BlockHeaderEventNouns } from '../../../hooks/index.ts'\n\nexport const useLinkedBlockItem = (noun?: BlockHeaderEventNouns, data?: string): [RefObject<HTMLElement>, (event: React.MouseEvent) => void] => {\n const [ref, dispatch] = useEvent<HTMLAnchorElement, BlockHeaderEventNouns>()\n\n const handleClick = (event: React.MouseEvent) => {\n event.preventDefault()\n if (!noun) {\n console.warn('useLinkedBlockItem: noun is required')\n return\n }\n dispatch(noun, 'click', data)\n }\n\n return [ref, handleClick]\n}\n","import {\n Avatar,\n Chip,\n TableCell, Tooltip,\n} from '@mui/material'\nimport { Identicon, IdenticonProps } from '@xylabs/react-identicon'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockHashTableCellProps extends BlockTableCellProps {\n identiconProps?: IdenticonProps\n}\n\nexport const BlockHashTableCell: React.FC<BlockHashTableCellProps> = ({\n block, identiconProps, linked, ...props\n}) => {\n const hash = usePayloadHash(block)\n\n const [ref, handleClick] = useLinkedBlockItem('block-hash', hash)\n\n const shortenedHash = hash ? `${hash.slice(0, 4)}...${hash.slice(-5, -1)}` : ''\n\n return (\n <TableCell ref={ref} {...props}>\n {hash\n ? (\n <Tooltip title={`Block Hash: ${hash}`}>\n <Chip\n avatar={(\n <Avatar sx={{ background: 'white' }}>\n <Identicon\n size={16}\n value={hash}\n {...identiconProps}\n />\n </Avatar>\n )}\n label={shortenedHash}\n onClick={linked ? handleClick : undefined}\n />\n </Tooltip>\n )\n : null}\n </TableCell>\n )\n}\n","import { Code } from '@mui/icons-material'\nimport {\n Button,\n Dialog, DialogActions, DialogContent, DialogTitle, IconButton, TableCell,\n} from '@mui/material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React, { useState } from 'react'\n\nimport { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockJsonViewTableCellProps extends BlockTableCellProps {}\n\nexport const BlockJsonViewTableCell: React.FC<BlockJsonViewTableCellProps> = ({ block, ...props }) => {\n const [open, setOpen] = useState(false)\n const onClose = () => setOpen(false)\n\n const hash = usePayloadHash(block)\n const title = hash ? `JSON for ${ellipsize(hash, 5)}` : 'JSON'\n\n return (\n <TableCell {...props}>\n <FlexRow sx={{ width: '100%' }}>\n <IconButton onClick={() => setOpen(true)}>\n <Code />\n </IconButton>\n </FlexRow>\n <Dialog open={open} onClose={onClose}>\n <DialogTitle>{title}</DialogTitle>\n <DialogContent>\n <JsonViewerEx value={block} />\n </DialogContent>\n <DialogActions sx={{\n display: 'flex', flexDirection: 'row', justifyContent: 'end',\n }}\n >\n <Button variant=\"contained\" onClick={onClose}>Close</Button>\n </DialogActions>\n </Dialog>\n </TableCell>\n )\n}\n","import { TableCell, Tooltip } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { ChainInformation } from '@xylabs/sdk-xyo-chain-js'\nimport React from 'react'\n\nimport { useBlockProducer } from '../../hooks/index.ts'\nimport { BlockProducerChip, BlockProducerChipProps } from '../../ProducerChip.tsx'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockProducerTableCell extends BlockTableCellProps {\n chainInformation?: ChainInformation\n producerChipProps?: BlockProducerChipProps\n}\n\nexport const BlockProducerTableCell: React.FC<BlockProducerTableCell> = ({\n block, chainInformation, linked, producerChipProps, ...props\n}) => {\n const [ref, handleClick] = useLinkedBlockItem('block-producer', JSON.stringify(block))\n const producer = useBlockProducer(block, chainInformation)\n\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Block Producer: ${producer}`}>\n <FlexRow sx={{ width: '100%' }}>\n <BlockProducerChip onClick={linked ? handleClick : undefined} block={block} chainInformation={chainInformation} {...producerChipProps} />\n </FlexRow>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Error } from '@mui/icons-material'\nimport {\n Link, TableCell, Tooltip,\n} from '@mui/material'\nimport { ReadArchivist } from '@xyo-network/archivist-model'\nimport React from 'react'\n\nimport { useTxsFromBlock } from '../../hooks/index.ts'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockTransactionCountTableCellProps extends BlockTableCellProps {\n chainArchivist?: ReadArchivist\n}\n\nexport const BlockTransactionCountTableCell: React.FC<BlockTransactionCountTableCellProps> = ({\n block, chainArchivist, linked, ...props\n}) => {\n const [txs, error] = useTxsFromBlock(chainArchivist, block)\n const [ref, handleClick] = useLinkedBlockItem('transaction-count', JSON.stringify(txs ?? null))\n\n return (\n <TableCell ref={ref} {...props}>\n <span>\n {error\n ? (\n <Tooltip title={error.message}>\n <Error color=\"error\" />\n </Tooltip>\n )\n : null}\n {linked ? <Link onClick={handleClick} sx={{ cursor: 'pointer' }}>{txs?.length ?? 0}</Link> : txs?.length ?? 0}\n </span>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\nimport { BWVerification } from '@xylabs/react-boundwitness-plugin-private'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockVerificationTableCellProps extends BlockTableCellProps {}\n\nexport const BlockVerificationTableCell: React.FC<BlockVerificationTableCellProps> = ({\n block, linked, ...props\n}) => {\n const [ref, handleClick] = useLinkedBlockItem('block-verification', block?.block)\n\n return (\n <TableCell ref={ref} {...props}>\n <FlexRow sx={{ width: '100%' }}>\n <BWVerification onClick={linked ? handleClick : undefined} iconColors boundwitness={block} />\n </FlexRow>\n </TableCell>\n )\n}\n","import {\n TableBody, TableCell, TableHead, TableRow,\n} from '@mui/material'\nimport { TableEx, TableExProps } from '@xyo-network/react-table'\nimport { forwardRef } from 'react'\n\nexport const BlockchainTableEx = forwardRef<HTMLTableElement, TableExProps>(({ children, ...props }, ref) => {\n return (\n <TableEx ref={ref} {...props}>\n <TableHead>\n <TableRow>\n <TableCell>Block Hash</TableCell>\n <TableCell>Block Number</TableCell>\n <TableCell>Transaction Count</TableCell>\n <TableCell align=\"center\">Block Producer</TableCell>\n <TableCell align=\"center\">Valid</TableCell>\n <TableCell align=\"center\">JSON</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {children}\n </TableBody>\n </TableEx>\n )\n})\n\nBlockchainTableEx.displayName = 'BlockchainTableEx'\n","import { TableRow } from '@mui/material'\nimport { useMemo } from 'react'\n\nimport { BlockComponentProps } from '../../../../types/index.ts'\nimport {\n BlockHashTableCell, BlockJsonViewTableCell, BlockNumberTableCell, BlockProducerTableCell,\n BlockTransactionCountTableCell,\n BlockVerificationTableCell,\n} from '../cell/index.ts'\n\nexport interface BlockChainTableRowProps extends BlockComponentProps {\n linked?: boolean\n}\n\nexport const BlockChainTableRow: React.FC<BlockChainTableRowProps> = ({\n block, chainInformation, linked, ...props\n}) => {\n const defaultTableCellProps = useMemo(() => ({ block, linked }), [block, linked])\n return (\n <TableRow {...props}>\n <BlockHashTableCell {...defaultTableCellProps} />\n <BlockNumberTableCell {...defaultTableCellProps} />\n <BlockTransactionCountTableCell {...defaultTableCellProps} />\n <BlockProducerTableCell chainInformation={chainInformation} {...defaultTableCellProps} />\n <BlockVerificationTableCell {...defaultTableCellProps} />\n <BlockJsonViewTableCell {...defaultTableCellProps} />\n </TableRow>\n )\n}\n","import {\n Autorenew,\n Pause,\n} from '@mui/icons-material'\nimport {\n Alert,\n AlertTitle,\n Grow,\n Icon, IconButton, Tooltip,\n} from '@mui/material'\nimport { Address } from '@xylabs/hex'\nimport { FlexBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport React, { memo } from 'react'\n\nimport { PollingState } from '../hooks/index.ts'\nimport { ChainAnalyzerStatsDialogFromContext } from '../stats/index.ts'\nimport { StyledPulseSvgIcon } from './PulseSvgIcon.tsx'\n\nexport interface PollingControlsFlexboxProps extends FlexBoxProps {\n blocksBehind?: number\n pollingState?: PollingState\n setPollingState?: (newState: PollingState) => void\n sharedAddress?: Address\n}\n\nexport const PollingControlsFlexbox: React.FC<PollingControlsFlexboxProps> = ({\n blocksBehind, pollingState, setPollingState, sharedAddress,\n}) => {\n const paused = pollingState === 'paused'\n const running = pollingState === 'running'\n\n return (\n <FlexRow justifyContent=\"space-between\" width=\"100%\">\n <FlexRow gap={2}>\n {running && (\n <IconButton onClick={() => setPollingState?.('paused')} title=\"Pause Block Stream\">\n <Pause />\n </IconButton>\n )}\n {paused && (\n <IconButton onClick={() => setPollingState?.('running')} title=\"Re-Sync Block Stream\">\n <Autorenew />\n </IconButton>\n )}\n <ChainAnalyzerStatsDialogFromContext />\n </FlexRow>\n <FlexRow gap={2}>\n <Grow in={(blocksBehind ?? 0) > 0}>\n <Tooltip title=\"Click to Re-Sync\">\n <Alert\n sx={{\n py: 0, px: 1, cursor: 'pointer',\n }}\n severity=\"warning\"\n onClick={() => setPollingState?.('running')}\n >\n <AlertTitle sx={{ mb: 0 }}>\n Behind:\n {' '}\n {blocksBehind}\n </AlertTitle>\n </Alert>\n </Tooltip>\n </Grow>\n <Tooltip title={sharedAddress ? `Chain: ${sharedAddress}` : ''}>\n <Icon>\n <StyledPulseSvgIcon className={running ? '' : 'paused'} />\n </Icon>\n </Tooltip>\n </FlexRow>\n </FlexRow>\n )\n}\n\nexport const MemoizedPollingControlsFlexbox = memo(PollingControlsFlexbox)\n","import { QueryStats } from '@mui/icons-material'\nimport {\n Dialog, DialogContent, DialogProps,\n DialogTitle, IconButton,\n} from '@mui/material'\nimport { useState } from 'react'\n\nimport { useChainAnalyzersContext } from '../../../context/index.ts'\nimport { BlockProducerStatsFlexbox } from './producer/index.ts'\n\nexport interface ChainAnalyzerStatsDialogProps extends DialogProps {}\n\nexport const ChainAnalyzerStatsDialog: React.FC<ChainAnalyzerStatsDialogProps> = (props) => {\n const { analyzers, statsUpdated } = useChainAnalyzersContext()\n\n return (\n <Dialog {...props}>\n <DialogTitle>Chain Analysis</DialogTitle>\n <DialogContent>\n {!!statsUpdated && Object.entries(analyzers).map(([id, analyzer]) => (\n <div key={id}>\n {id === 'producers' && (\n <BlockProducerStatsFlexbox payload={analyzer.result()} />\n )}\n </div>\n ))}\n </DialogContent>\n </Dialog>\n )\n}\n\nexport const ChainAnalyzerStatsDialogFromContext: React.FC = (props) => {\n const [open, setOpen] = useState(false)\n const handleClose = () => setOpen(false)\n\n return (\n <>\n <IconButton onClick={() => setOpen(true)}>\n <QueryStats />\n </IconButton>\n <ChainAnalyzerStatsDialog onClose={handleClose} open={open} {...props} />\n </>\n )\n}\n","import {\n ListItem, styled, Typography,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { isChainSummaryProducers } from '@xylabs/sdk-xyo-chain-js'\nimport { Payload } from '@xyo-network/payload-model'\nimport { useMemo } from 'react'\n\nimport { ChainProducerStatsTable } from './Table.tsx'\n\nexport interface BlockProducerStatsFlexboxProps {\n payload?: Payload\n}\n\nexport const BlockProducerStatsFlexbox: React.FC<BlockProducerStatsFlexboxProps> = ({ payload, ...props }) => {\n const [producer, producerError] = useMemo(() => {\n if (payload) {\n return isChainSummaryProducers(payload) ? [payload] : [undefined, new Error('Payload is not a Chain Producer')]\n } else {\n return []\n }\n }, [payload])\n\n const producersArray = useMemo(() => Object.values(producer?.producers ?? {}), [producer])\n\n return (\n <FlexCol alignItems=\"start\" gap={1} {...props}>\n <ErrorRender error={producerError} scope=\"BlockProducerStatsFlexbox\" />\n <Typography fontSize=\"1rem\">Block Producers</Typography>\n <ChainProducerStatsTable producers={producersArray} />\n </FlexCol>\n )\n}\n\nexport const StyledListItem = styled(ListItem)(() => ({\n paddingTop: 0,\n paddingBottom: 0,\n}))\n","import {\n Table, TableBody, TableCell, TableHead, TableProps,\n TableRow,\n useTheme,\n} from '@mui/material'\nimport { AnalyzedProducer } from '@xylabs/sdk-xyo-chain-js'\nimport { BlockiesAvatar } from '@xylabs/xyo-chain-react-blockies'\nimport React from 'react'\n\nexport interface ChainProducerStatsTableProps extends TableProps {\n producers?: AnalyzedProducer[]\n}\n\nexport const ChainProducerStatsTable: React.FC<ChainProducerStatsTableProps> = ({ producers, ...props }) => {\n const theme = useTheme()\n return (\n <Table {...props}>\n <TableHead>\n <TableRow>\n <TableCell>Address</TableCell>\n <TableCell>Blocks Produced</TableCell>\n <TableCell>Rewards Earned Produced</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {producers?.map(producer => (\n <TableRow key={producer.address}>\n <TableCell>\n <BlockiesAvatar blockiesOptions={{ seed: producer.address }} sx={{ height: theme.spacing(2.75), width: theme.spacing(2.75) }} />\n </TableCell>\n <TableCell>{producer.blocksProduced.toString()}</TableCell>\n <TableCell>{producer.rewardsEarned.toString()}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n )\n}\n","import {\n alpha,\n createSvgIcon, keyframes, styled,\n} from '@mui/material'\n\n// Adapted from - https://codepen.io/Taver/pen/PWyEqp\nexport const PulseSvgIcon = createSvgIcon(\n <svg viewBox=\"0 0 80 80\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"translate(34,34)\">\n <circle className=\"core\" cx=\"0\" cy=\"0\" r=\"6\"></circle>\n <circle className=\"radar\" cx=\"0\" cy=\"0\" r=\"6\"></circle>\n </g>\n </svg>,\n 'PulseSvgIcon',\n)\n\nconst pulse1 = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0);\n }\n 30% {\n opacity: 1;\n transform: scale(1.5);\n }\n 60% {\n opacity: 1;\n transform: scale(2);\n }\n 100% {\n opacity: 0;\n transform: scale(2);\n }\n`\n\nconst pulse2 = keyframes`\n 0% {\n transform: scale(1, 1);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n transform: scale(6, 6);\n opacity: 0;\n }\n`\n\nexport const StyledPulseSvgIcon = styled(PulseSvgIcon)(({ theme }) => {\n return {\n '& .core': {\n animation: `${pulse1} 1.25s ease-in-out infinite`,\n fill: theme.palette.success.main,\n },\n '&.paused .core': {\n animation: 'none',\n fill: theme.palette.divider,\n transform: 'scale(2)',\n },\n '& .radar': {\n animation: `${pulse2} 1.25s ease-in-out infinite`,\n fill: alpha(theme.palette.success.main, 0.5),\n },\n '&.paused .radar': {\n animation: 'none',\n fill: theme.palette.divider,\n transform: 'scale(6)',\n },\n }\n})\n","import {\n Button, Dialog, DialogActions, DialogContent, DialogProps,\n} from '@mui/material'\nimport React from 'react'\n\nexport interface TransactionsDialogProps extends DialogProps {}\n\nexport const TransactionsDialog: React.FC<TransactionsDialogProps> = (props) => {\n return (\n <Dialog {...props}>\n <DialogContent>\n Transactions Dialog\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={e => props?.onClose?.(e, 'escapeKeyDown')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { Hex } from '@xylabs/hex'\nimport { BlockBoundWitness } from '@xylabs/sdk-xyo-chain-js'\nimport { useEffect, useRef } from 'react'\n\nexport type PollingState = 'paused' | 'running'\n\nexport const useOnBlock = (\n initialHead?: Hex,\n onAddBlock?: (block: BlockBoundWitness) => Promise<void>,\n liveHead?: BlockBoundWitness,\n pollingState?: PollingState,\n) => {\n /**\n * Note: blocksWhilePaused is a ref because we don't want to re-render the component when it changes.\n * But, since we get new blockComponents regardless, the hook rerenders anyway so consumers can get\n * the latest blocksWhilePaused value without having to rely on a state update.\n */\n const blocksWhilePaused = useRef<BlockBoundWitness[]>([])\n // Because the useEffect has liveHead AND pollingState, every time the polling state changes, the hook will\n // run a second time with the live head from the previous run. This is why we need to keep track of the last\n // live head so we can compare it to the current live head and prevent the hook from adding the same block twice\n const lastLiveHead = useRef<BlockBoundWitness | undefined>(liveHead)\n\n useEffect(() => {\n // use lastLiveHead to prevent the hook from adding the same block multiple times\n if (lastLiveHead.current?.block === liveHead?.block) return\n\n if (liveHead && onAddBlock) {\n // update lastLiveHead\n lastLiveHead.current = liveHead\n\n // if the polling state is paused and the block is new, add it to the blocksWhilePaused array\n const isNewBlock = initialHead !== liveHead.block && liveHead.block !== blocksWhilePaused.current[0]?.block\n if (pollingState === 'paused' && isNewBlock) {\n blocksWhilePaused.current.push(liveHead)\n } else if (pollingState === 'running') {\n // if the polling state is running, add the blocksWhilePaused\n if (blocksWhilePaused.current.length > 0) {\n for (const block of blocksWhilePaused.current) {\n void onAddBlock(block)\n }\n // clear the blocksWhilePaused array\n blocksWhilePaused.current = []\n }\n // add the liveHead block\n void onAddBlock(liveHead)\n }\n }\n }, [liveHead, pollingState])\n\n return blocksWhilePaused.current\n}\n","import { TablePaginationActions, TablePaginationActionsProps } from '@xyo-network/react-payload-table'\nimport React from 'react'\n\nexport interface BlockChainPaginationProps extends TablePaginationActionsProps {}\n\nexport const BlockChainPagination: React.FC<BlockChainPaginationProps> = ({\n count = 0, onPageChange, page, rowsPerPage = 10,\n}) => {\n return <TablePaginationActions count={count} onPageChange={onPageChange} page={page} rowsPerPage={rowsPerPage} />\n}\n","import {\n MouseEvent, useMemo, useState,\n} from 'react'\n\nimport { BlockChainRenderComponent } from '../../../../types/index.ts'\n\nexport const useChainPagination = (pageSize: number, blockComponents?: BlockChainRenderComponent[]) => {\n const [page, setPage] = useState(0)\n\n const paginatedBlockComponents = useMemo(() => {\n const startIndex = page * pageSize\n const endIndex = startIndex + pageSize\n return blockComponents?.slice(startIndex, endIndex)\n }, [blockComponents, page, pageSize])\n\n const onPageChange = (_event: MouseEvent<HTMLButtonElement>, newPage: number) => {\n setPage(newPage)\n }\n\n return {\n onPageChange, page, paginatedBlockComponents,\n }\n}\n","import { ErrorRender } from '@xylabs/react-error'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { ChainProducersAnalyzer } from '@xylabs/sdk-xyo-chain-js'\nimport React, { useMemo } from 'react'\n\nimport {\n ChainAnalyzers, ChainAnalyzersProvider, ChainPollingProvider,\n} from '../../../../../context/index.ts'\nimport { BlockChainRenderFlexboxProps, RemoteBlockChainRenderFlexboxProps } from '../../../../../types/index.ts'\nimport { BlockHeadingFlexbox } from '../../../../block/index.ts'\nimport { MemoizedPollingControlsFlexbox } from '../../../controls/index.ts'\nimport { BlockListAnimated } from '../../../list/index.ts'\nimport { useDynamicBlockRenderComponents, useRemoteBlockChainRenderProps } from '../hooks/index.ts'\n\nconst Base: React.FC<BlockChainRenderFlexboxProps> = ({ blockChainRenderProps, ...props }) => {\n const {\n errors, blockChainRenderComponents, blocksWhilePaused, pollingState, updatePollingState,\n } = useDynamicBlockRenderComponents(BlockHeadingFlexbox, blockChainRenderProps)\n\n return (\n <FlexCol alignItems=\"start\" {...props}>\n {errors?.map((error, index) => <ErrorRender error={error} key={index} scope=\"DynamicBlockchainRenderFlexboxInner\" />)}\n <MemoizedPollingControlsFlexbox\n blocksBehind={blocksWhilePaused?.length}\n pollingState={pollingState}\n setPollingState={updatePollingState}\n sharedAddress={blockChainRenderProps?.chainInformation?.sharedSignerAccount.address}\n />\n <BlockListAnimated blockChainRenderComponents={blockChainRenderComponents} />\n </FlexCol>\n )\n}\n\nconst WithAnalysis: React.FC<BlockChainRenderFlexboxProps> = ({ blockChainRenderProps, ...props }) => {\n const { chainInformation } = blockChainRenderProps ?? {}\n\n const analyzers = useMemo(() => {\n if (chainInformation) {\n return { producers: new ChainProducersAnalyzer(chainInformation.sharedSigner) } as ChainAnalyzers\n }\n }, [chainInformation])\n\n return (\n <ChainAnalyzersProvider analyzers={analyzers}>\n <ChainPollingProvider>\n <DynamicBlockchainRenderFlexbox.Base blockChainRenderProps={blockChainRenderProps} {...props} />\n </ChainPollingProvider>\n </ChainAnalyzersProvider>\n )\n}\n\nconst WithRemote: React.FC<RemoteBlockChainRenderFlexboxProps> = ({\n url, chainArchivistModuleId, blockChainRenderProps: blockChainRenderPropsArg, ...props\n}) => {\n const { error, blockChainRenderProps } = useRemoteBlockChainRenderProps(chainArchivistModuleId, url, blockChainRenderPropsArg)\n\n return (\n <>\n <ErrorRender error={error} scope=\"RemoteChainProviderFlexbox\" />\n <DynamicBlockchainRenderFlexbox.WithAnalysis blockChainRenderProps={blockChainRenderProps} {...props} />\n </>\n )\n}\n\nexport const DynamicBlockchainRenderFlexbox = {\n Base, WithAnalysis, WithRemote,\n}\n","import { AnimatedList } from '@xylabs/react-animation'\n\nimport { BlockListComponentProps } from '../../../types/index.ts'\nimport { BlockListWrapperFlexBox } from '../styled/index.ts'\n\nexport const BlockListAnimated: React.FC<BlockListComponentProps> = ({ blockChainRenderComponents }) => {\n return (\n <BlockListWrapperFlexBox\n alignItems=\"stretch\"\n width=\"100%\"\n >\n <AnimatedList\n fullWidth\n items={blockChainRenderComponents}\n />\n </BlockListWrapperFlexBox>\n )\n}\n","import { styled } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\n\n// Target the first visible child (first actual child is a hidden div) and hide the after pseudo element that visually links blocks together\nexport const BlockListWrapperFlexBox = styled(FlexCol, { name: 'BlockListWrapperFlexbox' })(() => ({\n '& > div:nth-of-type(2) .block-heading-flexbox .divider-spacer': {\n // hide the spacer for the first element\n visibility: 'hidden',\n },\n '& > div:nth-of-type(2) .block-heading-flexbox .divider': {\n // keep the first element divider at 0 height so we can animate it to the correct height\n // when the next block comes in\n height: 0,\n },\n}))\n","import { ComponentType, useMemo } from 'react'\n\nimport { useChainPollingContext } from '../../../../../context/index.ts'\nimport { useChainIteratorParams, useChainIteratorStore } from '../../../../../hooks/index.ts'\nimport { BlockChainRenderProps, BlockComponentWithTxsProps } from '../../../../../types/index.ts'\nimport { useDynamicBlockComponents } from '../../../../block/index.ts'\nimport { useOnBlock } from '../../../hooks/index.ts'\n\n// Note: This is a hook but could easily be bundled up in a class with callbacks\nexport const useDynamicBlockRenderComponents = (\n BlockComponent: ComponentType<BlockComponentWithTxsProps>,\n blockChainRenderProps?: BlockChainRenderProps,\n) => {\n const { maxBlocks } = blockChainRenderProps ?? {}\n\n const chainIteratorParams = useMemo(() => blockChainRenderProps ?? {}, [blockChainRenderProps])\n\n const [params, paramsError] = useChainIteratorParams(chainIteratorParams)\n\n const { blockChainRenderComponents, onAddBlock } = useDynamicBlockComponents(BlockComponent, params, maxBlocks)\n\n const { head: liveHead } = useChainIteratorStore(params)\n\n const { pollingState, updatePollingState } = useChainPollingContext()\n\n const blocksWhilePaused = useOnBlock(blockChainRenderComponents[0]?.block.block, onAddBlock, liveHead, pollingState)\n\n return {\n errors: [paramsError],\n blockChainRenderComponents,\n blocksWhilePaused,\n updatePollingState,\n pollingState,\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport {\n BlockBoundWitness, EventingChainBlockNumberIterator, HeadEventArgs,\n XyoChainBlockNumberIterator,\n XyoChainIteratorParams,\n} from '@xylabs/sdk-xyo-chain-js'\n\nexport type Listener = (...args: Array<unknown>) => void\n\nexport type ChainIteratorStoreValues = { chainIterator: XyoChainBlockNumberIterator; error?: Error; head: BlockBoundWitness }\n\nexport class ChainIteratorStore {\n private _chainIterator: EventingChainBlockNumberIterator | undefined\n private _externalListeners: Listener[] = []\n private _internalUnsubscribes: WeakRef<() => void>[] = []\n private _values: ChainIteratorStoreValues | undefined\n\n get chainIterator(): EventingChainBlockNumberIterator {\n return assertEx(this._chainIterator, () => 'ChainIteratorStore has not been initialized')\n }\n\n get values(): ChainIteratorStoreValues {\n return assertEx(this._values, () => 'ChainIteratorStore values have not been initialized')\n }\n\n static async create(params: XyoChainIteratorParams): Promise<ChainIteratorStore> {\n // create the classes\n const instance = new ChainIteratorStore()\n const chainIterator = await XyoChainBlockNumberIterator.create(params)\n\n // set the chainIterator\n instance._chainIterator = chainIterator\n\n // set the initial values\n instance._values = {\n chainIterator,\n head: (await chainIterator.head()),\n }\n\n // set the internal listeners\n const headUpdatedListener = ({ blocks }: HeadEventArgs) => {\n instance._values = {\n chainIterator,\n head: blocks?.[0],\n }\n instance.emitChange()\n }\n\n // Add listener to the chainIterator\n const unsubscribe = chainIterator.on('headUpdated', headUpdatedListener)\n\n // track the internal listener\n const weakRefListener = new WeakRef(unsubscribe)\n instance._internalUnsubscribes.push(weakRefListener)\n\n return instance\n }\n\n cleanup() {\n for (const unsubscribeRef of this._internalUnsubscribes) {\n const unsubscribe = unsubscribeRef.deref()\n unsubscribe?.()\n }\n }\n\n getSnapshot(): Partial<ChainIteratorStoreValues> {\n return this.values\n }\n\n subscribe(onStoreChange: Listener) {\n this._externalListeners.push(onStoreChange)\n return () => {\n this._externalListeners = this._externalListeners.filter(l => l !== onStoreChange)\n }\n }\n\n private emitChange() {\n for (const listener of this._externalListeners) {\n listener()\n }\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport {\n BlockBoundWitness, findFirstMatching, isBlockBoundWitness,\n} from '@xylabs/sdk-xyo-chain-js'\nimport { ReadArchivist } from '@xyo-network/archivist-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\n\nimport { BlockChainIterator } from '../../types/index.ts'\n\nconst resolveUndefinedHead = async (chainArchivist: ReadArchivist) => {\n const firstMatching = assertEx(\n await findFirstMatching(chainArchivist, isBlockBoundWitness),\n () => 'No head found in archivist',\n )\n return assertEx(\n isBlockBoundWitness(firstMatching)\n ? firstMatching\n : undefined,\n () => `Expected a block bound witness: ${JSON.stringify(firstMatching)}`,\n )\n}\n\nexport const resolveDefinedHead = async (head: Hash, chainArchivist: ReadArchivist) => {\n // get the head from the chain archivist\n const [headPayload] = await chainArchivist.get([head])\n // if the head is undefined, we need to create a new one\n if (headPayload === undefined) {\n const [currentHead] = await new BoundWitnessBuilder<BlockBoundWitness>().build()\n return currentHead\n } else {\n // if the head is a block bound witness, we can use it\n return assertEx(isBlockBoundWitness(headPayload)\n ? headPayload\n : undefined, () => `Expected a block bound witness: ${JSON.stringify(headPayload)}`)\n }\n}\n\nexport const useChainIteratorParams = ({\n chainArchivist, chainInformation, head,\n}: BlockChainIterator) => {\n return usePromise(async () => {\n if (chainArchivist && chainInformation) {\n let currentHead: BlockBoundWitness\n currentHead = await (head === undefined ? resolveUndefinedHead(chainArchivist) : resolveDefinedHead(head, chainArchivist))\n return {\n chainArchivist, chainInformation, head: currentHead,\n }\n }\n }, [chainArchivist, chainInformation, head])\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { XyoChainIteratorParams } from '@xylabs/sdk-xyo-chain-js'\nimport {\n useEffect,\n useMemo, useRef, useSyncExternalStore,\n} from 'react'\n\nimport { ChainIteratorStore, ChainIteratorStoreValues } from './ChainIteratorStore.ts'\nimport { useChainIteratorUpdatingHead } from './useChainIteratorUpdatingHead.ts'\n\nconst stub = {} as Partial<ChainIteratorStoreValues>\n\n// Returns the latest head every time it changes\nexport const useChainIteratorStore = (chainIteratorParams?: XyoChainIteratorParams) => {\n const [chainIteratorStore] = usePromise(async () => {\n return chainIteratorParams ? await ChainIteratorStore.create(chainIteratorParams) : undefined\n }, [chainIteratorParams])\n\n const { chainIterator } = chainIteratorStore || {}\n const chainArchivist = chainIteratorParams?.chainArchivist\n\n // Update the head of the chain iterator\n const error = useChainIteratorUpdatingHead({ chainIterator, chainArchivist })\n\n useEffect(() => {\n return () => {\n if (chainIteratorStore) {\n chainIteratorStore.cleanup()\n }\n }\n }, [chainIteratorStore])\n\n const cachedSnapshot = useRef<Partial<ChainIteratorStoreValues>>({})\n\n const { getSnapShot, subscribe } = useMemo(() => {\n if (chainIteratorStore) {\n return {\n getSnapShot: () => {\n const snapshot = chainIteratorStore.getSnapshot()\n const newValues = {\n ...snapshot,\n error,\n }\n // Only update the cached snapshot if there is no cached iterator or the head has changed\n const noCachedValue = cachedSnapshot.current.chainIterator === undefined\n const newBlock = cachedSnapshot.current?.head?.block !== newValues.head?.block\n if (noCachedValue || newBlock) {\n cachedSnapshot.current = newValues\n return newValues\n }\n return cachedSnapshot.current\n },\n subscribe: chainIteratorStore.subscribe.bind(chainIteratorStore),\n }\n }\n // Return a default implementation to satisfy the hook interface\n return {\n getSnapShot: () => stub,\n subscribe: () => () => {},\n }\n }, [chainIteratorStore])\n\n return useSyncExternalStore(subscribe, getSnapShot)\n}\n","import { toHex } from '@xylabs/hex'\nimport { ChainBlockNumberIterator, findMostRecentBlock } from '@xylabs/sdk-xyo-chain-js'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { useEffect, useState } from 'react'\n\nimport { hexToBigInt } from '../../lib/index.ts'\n\nexport interface ChainIteratorUpdatingHeadParams {\n chainArchivist?: ArchivistInstance\n chainIterator?: ChainBlockNumberIterator\n interval?: number\n maxBlocks?: number\n}\n\n// Polls the chain archivist for new blocks and updates the chain iterator head\nexport const useChainIteratorUpdatingHead = ({\n chainIterator, interval = 500, maxBlocks, chainArchivist,\n}: ChainIteratorUpdatingHeadParams): Error | undefined => {\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n let pollArchivistTimeout: NodeJS.Timeout | undefined\n\n const pollingFunction = async () => {\n if (chainIterator && chainArchivist) {\n try {\n const currentHead = await chainIterator.head()\n const mostRecentBlock = await findMostRecentBlock(chainArchivist)\n if (currentHead && mostRecentBlock) {\n const currentBlockNumber = currentHead?.block ? hexToBigInt(currentHead.block) : BigInt(-1)\n const nextBlockNumber = hexToBigInt(mostRecentBlock.block)\n if (nextBlockNumber > currentBlockNumber) {\n console.debug('Found more recent head:', toHex(nextBlockNumber))\n console.debug('Updating head:', `${toHex(nextBlockNumber)}`)\n await chainIterator.updateHead(mostRecentBlock)\n console.debug('Updated head:', `${toHex(nextBlockNumber)}`)\n }\n }\n } catch (e) {\n setError(e as Error)\n console.error(e)\n }\n }\n\n // Schedule the next polling function\n pollArchivistTimeout = setTimeout(() => void pollingFunction(), interval)\n }\n\n // Start the polling function\n void pollingFunction()\n\n return () => clearInterval(pollArchivistTimeout)\n }, [interval, chainIterator, chainArchivist, maxBlocks])\n\n return error\n}\n","import { assertEx } from '@xylabs/assert'\nimport { usePromise } from '@xylabs/react-promise'\nimport {\n BlockBoundWitness, isBlockBoundWitness, XyoChainBlockNumberIterator, XyoChainIteratorParams,\n} from '@xylabs/sdk-xyo-chain-js'\n\nconst iterateChain = async (chainIteratorParams?: XyoChainIteratorParams, maxDepth?: number) => {\n const {\n chainArchivist, chainInformation, head,\n } = chainIteratorParams ?? {} as XyoChainIteratorParams\n\n if (chainArchivist && chainInformation && head) {\n const headPayload = assertEx(isBlockBoundWitness(head) ? head : null, () => 'Head is not a Block Bound Witness')\n // confirm the head is a block\n const headBlockBoundWitness = assertEx(isBlockBoundWitness(headPayload) ? headPayload : null, () => 'Invalid head block')\n // create the chain iterator\n const chainIterator = await XyoChainBlockNumberIterator.create({\n head: headBlockBoundWitness, chainInformation, chainArchivist,\n })\n\n // get head of the chain\n let block = await chainIterator.head()\n // create the blocks array\n const blocks: BlockBoundWitness[] = [block]\n\n // track the depth\n let depth = 1\n // iterate the chain\n while (block) {\n // get the next block\n const [, next] = await chainIterator.previous(block.block, 2)\n // if there is no next block, break\n if (!next) break\n // push the next block\n blocks.push(next)\n // set the next block as the current block\n block = next\n // increment the depth\n depth++\n // if max depth is set and we have reached it, break\n if (maxDepth && depth >= maxDepth) break\n }\n return blocks\n }\n}\n\nexport const useIterateChain = (\n chainIteratorParams?: XyoChainIteratorParams,\n maxDepth?: number,\n) => {\n return usePromise(async () => {\n return await iterateChain(chainIteratorParams, maxDepth)\n }, [chainIteratorParams, maxDepth])\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleIdentifier } from '@xyo-network/module-model'\nimport { useMemo } from 'react'\n\nimport { getChainArchivistFromBridge } from '../../../../../lib/index.ts'\nimport { BlockChainRenderBaseProps, BlockChainRenderProps } from '../../../../../types/index.ts'\n\n/** take blockChainRenderProps and remote archivist props and return with resolved chainArchivist */\nexport const useRemoteBlockChainRenderProps = (\n chainArchivistModuleId?: ModuleIdentifier,\n url?: string,\n blockChainRenderPropsArg?: BlockChainRenderProps,\n): BlockChainRenderBaseProps => {\n const [chainArchivist, chainArchivistError] = usePromise(async () => {\n if (url && chainArchivistModuleId) {\n return await getChainArchivistFromBridge({ url, chainArchivistModuleId })\n }\n }, [url, chainArchivistModuleId])\n\n const blockChainRenderProps: BlockChainRenderProps = useMemo(() => ({\n ...blockChainRenderPropsArg,\n chainArchivist,\n }), [blockChainRenderPropsArg, chainArchivist])\n\n return {\n blockChainRenderProps,\n error: chainArchivistError,\n }\n}\n","import { ErrorRender } from '@xylabs/react-error'\nimport { FlexCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { ChainProducersAnalyzer } from '@xylabs/sdk-xyo-chain-js'\nimport React, { useMemo } from 'react'\n\nimport { ChainAnalyzers, ChainAnalyzersProvider } from '../../../../../context/index.ts'\nimport { BlockChainRenderFlexboxProps } from '../../../../../types/index.ts'\nimport { BlockHeadingFlexbox } from '../../../../block/index.ts'\nimport { BlockListAnimated } from '../../../list/index.ts'\nimport { BlockChainPagination } from '../../../pagination/index.ts'\nimport { ChainAnalyzerStatsDialogFromContext } from '../../../stats/index.ts'\nimport { useStaticBlockRenderComponents } from '../hooks/index.ts'\n\nconst Base: React.FC<BlockChainRenderFlexboxProps> = ({ blockChainRenderProps, ...props }) => {\n const {\n blockComponents, errors, paginatedBlockComponents, onPageChange, page, pageSize,\n } = useStaticBlockRenderComponents(BlockHeadingFlexbox, blockChainRenderProps)\n\n return (\n <FlexCol alignItems=\"start\" gap={2} width=\"100%\" {...props}>\n {errors?.map((error, index) => <ErrorRender error={error} key={index} scope=\"StaticBlockchainFlexboxInner\" />)}\n {paginatedBlockComponents?.length\n ? (\n <FlexGrowRow justifyContent=\"space-between\" width=\"100%\">\n <ChainAnalyzerStatsDialogFromContext />\n <BlockChainPagination count={blockComponents?.length ?? 0} onPageChange={onPageChange} page={page} rowsPerPage={pageSize} />\n </FlexGrowRow>\n )\n : null}\n <BlockListAnimated blockChainRenderComponents={paginatedBlockComponents} />\n </FlexCol>\n )\n}\n\nconst WithAnalysis: React.FC<BlockChainRenderFlexboxProps> = ({ blockChainRenderProps, ...props }) => {\n const { chainInformation } = blockChainRenderProps ?? {}\n\n const analyzers = useMemo(() => {\n if (chainInformation) {\n return { producers: new ChainProducersAnalyzer(chainInformation.sharedSigner) } as ChainAnalyzers\n }\n }, [chainInformation])\n\n return (\n <ChainAnalyzersProvider analyzers={analyzers}>\n <StaticBlockchainRenderFlexBox.Base blockChainRenderProps={blockChainRenderProps} {...props} />\n </ChainAnalyzersProvider>\n )\n}\n\nexport const StaticBlockchainRenderFlexBox = {\n Base,\n WithAnalysis,\n}\n","import { ComponentType, useMemo } from 'react'\n\nimport { useChainIteratorParams, useIterateChain } from '../../../../../hooks/index.ts'\nimport { BlockChainRenderProps, BlockComponentWithTxsProps } from '../../../../../types/index.ts'\nimport { useStaticBlockComponents } from '../../../../block/index.ts'\nimport { useChainPagination } from '../../../pagination/index.ts'\n\nconst DEFAULT_PAGE_SIZE = 25\n\n// Note: This is a hook but could easily be bundled up in a class with callbacks\nexport const useStaticBlockRenderComponents = (BlockComponent: ComponentType<BlockComponentWithTxsProps>, blockChainRenderProps?: BlockChainRenderProps) => {\n const { maxBlocks } = blockChainRenderProps ?? {}\n const pageSize = blockChainRenderProps?.pageSize ?? DEFAULT_PAGE_SIZE\n\n const chainIteratorParams = useMemo(() => blockChainRenderProps ?? {}, [blockChainRenderProps])\n\n const [params, paramsError] = useChainIteratorParams(chainIteratorParams)\n\n const [blocks, blocksError] = useIterateChain(params, maxBlocks)\n\n const { blockComponents, errors: blockComponentsError } = useStaticBlockComponents(BlockComponent, params, blocks)\n\n const {\n onPageChange, page, paginatedBlockComponents,\n } = useChainPagination(pageSize, blockComponents)\n\n return {\n paginatedBlockComponents,\n blockComponents,\n errors: [paramsError, blocksError, blockComponentsError],\n onPageChange,\n page,\n pageSize,\n }\n}\n","import { Decorator } from '@storybook/react'\nimport { usePromise } from '@xylabs/react-promise'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { useEffect } from 'react'\n\nimport { getChainInformation } from '../lib/index.ts'\nimport { BlockChainRenderBaseProps } from '../types/index.ts'\nimport { ExampleBlockchainWithPayloads } from './ExampleBlockchainWithPayloads.ts'\n\nexport const ChainArchivistDecorator: Decorator = (Story, context) => {\n const [blockChainRenderProps, blockChainRenderPropsError] = usePromise(async () => {\n const chainArchivist = await MemoryArchivist.create({})\n await chainArchivist.insert(ExampleBlockchainWithPayloads)\n const { chainInformation } = await getChainInformation()\n return { chainArchivist, chainInformation }\n }, [])\n\n useEffect(() => {\n if (blockChainRenderPropsError) {\n console.error(blockChainRenderPropsError)\n }\n }, [blockChainRenderPropsError])\n\n const props = {\n ...context,\n args: {\n ...context.args,\n blockChainRenderProps: {\n ...(context.args.blockChainRenderProps as BlockChainRenderBaseProps),\n ...blockChainRenderProps,\n },\n },\n }\n\n return <Story {...props} />\n}\n","[\n {\n \"gas\": \"00\",\n \"block\": \"00\",\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": null,\n \"reward\": \"00\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\"\n ],\n \"payload_hashes\": [\n \"e0b8fbd763448f280bbb6fafecb9f86dbb3234e17ca149a7c480f0239e40a369\"\n ],\n \"payload_schemas\": [\n \"network.xyo.boundwitness\"\n ],\n \"previous_hashes\": [\n null\n ],\n \"step_hashes\": [],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"90706ca5484423a71b9f183c7d627b0cc024f36fafacd45865924625a3b44c15464be2501a6391d60c316722da5a55161cce57cce4659dbe815be2e949ddb9ee\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"06a0ff45eef22b7695c3064e74f056252edc4a3759c364f52cdbc3277ff05304\",\n \"_hash\": \"8941fb72cf598b420b874628e1df385aa1f1e1c31b2198bbba67c2bb2b01c3c3\",\n \"_sequence\": \"00000194ce6c23b3000000002b01c3c3\"\n },\n {\n \"tx\": \"6e2e5eada47ce2ca2561a064894cdf1e0191715fe9d7d9130720f385bdd80e6a\",\n \"addresses\": [\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [\n \"6e2e5eada47ce2ca2561a064894cdf1e0191715fe9d7d9130720f385bdd80e6a\",\n \"436e6c81f7f7f0947dae488ef131082f0422bf5524c86ef1ca301cd8a61cbdbd\"\n ],\n \"payload_schemas\": [\n \"network.xyo.chain.transaction\",\n \"network.xyo.chain.stake.intent\"\n ],\n \"previous_hashes\": [\n null\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"06ce0db2b252efb31a1e2420e0e3f79bb11f52552efa98c5f605a8f46c8d72fb156b5c6e586a2fe8e21c45ec1a9edbb7f72d0ed5aee808222ef9d6a6ddce72f5\"\n ],\n \"_dataHash\": \"e0b8fbd763448f280bbb6fafecb9f86dbb3234e17ca149a7c480f0239e40a369\",\n \"_hash\": \"7d426200f048374c5e97d46ecd407ac2a800b5a477c64d8b90e8d3002ff1a37c\",\n \"_sequence\": \"00000194ce6c23b3000000022ff1a37c\"\n },\n {\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"exp\": \"03e8\",\n \"gas\": \"00\",\n \"nbf\": \"00\",\n \"schema\": \"network.xyo.chain.transaction\",\n \"_dataHash\": \"6e2e5eada47ce2ca2561a064894cdf1e0191715fe9d7d9130720f385bdd80e6a\",\n \"_hash\": \"6e2e5eada47ce2ca2561a064894cdf1e0191715fe9d7d9130720f385bdd80e6a\",\n \"_sequence\": \"00000194ce6c23b300000003bdd80e6a\"\n },\n {\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"delegate\": \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\",\n \"exp\": \"03e8\",\n \"gas\": \"00\",\n \"intent\": \"producer\",\n \"nbf\": \"00\",\n \"schema\": \"network.xyo.chain.stake.intent\",\n \"_dataHash\": \"436e6c81f7f7f0947dae488ef131082f0422bf5524c86ef1ca301cd8a61cbdbd\",\n \"_hash\": \"436e6c81f7f7f0947dae488ef131082f0422bf5524c86ef1ca301cd8a61cbdbd\",\n \"_sequence\": \"00000194ce6c23b300000004a61cbdbd\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"01\",\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"8941fb72cf598b420b874628e1df385aa1f1e1c31b2198bbba67c2bb2b01c3c3\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"step_hashes\": [],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"8941fb72cf598b420b874628e1df385aa1f1e1c31b2198bbba67c2bb2b01c3c3\",\n \"e0b8fbd763448f280bbb6fafecb9f86dbb3234e17ca149a7c480f0239e40a369\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"68c8cc64d04a056009e77933280931c6963f8261dc0ea7f356ce19774f701cad3c319dd095cd3e68155cf487ad7b78e880cbcd3f5c085da43c5ce58ae82ea55e\",\n \"a62ff1c6563422ff9f69cb3388e5e6469ad023ceba01a841d5f412d694b1d1a7598d5f21c095631bc6a7359e84a15d8e41f1fac881c21bb72f80f22de5796bb3\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"6aa70ab35f9bea104ac9a908089183865af5db396da4824934965765418138cb\",\n \"_hash\": \"bb982348d34ca539b0cfc0265908ae9a8f78e0f0e509412d0387e70d2b78fdd5\",\n \"_sequence\": \"00000194ce6c5573000000002b78fdd5\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"02\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"bb982348d34ca539b0cfc0265908ae9a8f78e0f0e509412d0387e70d2b78fdd5\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"bb982348d34ca539b0cfc0265908ae9a8f78e0f0e509412d0387e70d2b78fdd5\",\n \"6aa70ab35f9bea104ac9a908089183865af5db396da4824934965765418138cb\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"b4f1dab15a5fb796307f09389c0c1d290bcbb302b1cf862c912564d253a70d465d4679d9d4ca49b26f9f1b98a10eb9cad63af456031f27a4184dee90dbd33f33\",\n \"3217d94f10ee8b80b9e58d25c02aeceac0e1a7849a573431b29c0a382298c23939df03ea17af1d50dda054d3c082b643a99135b6e6a63b047e41ffdd4a1bdc92\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"bd573bad63de66ba565b9c13f1860b3ca9279e7ca131d1b6f0ff4ac5a9734c89\",\n \"_hash\": \"49a609d18b08c7690f88fc7cf61c61c8ce67a3fe12f2034b64d8b8d0d07b76fd\",\n \"_sequence\": \"00000194ce6c558700000000d07b76fd\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"03\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"49a609d18b08c7690f88fc7cf61c61c8ce67a3fe12f2034b64d8b8d0d07b76fd\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"49a609d18b08c7690f88fc7cf61c61c8ce67a3fe12f2034b64d8b8d0d07b76fd\",\n \"bd573bad63de66ba565b9c13f1860b3ca9279e7ca131d1b6f0ff4ac5a9734c89\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"a2433c8196a651edb0234a39c3a72bb7ec1bc9d15e57863c2f19b86ecf6b443c02073cfbaf01abb8add371353924d2192b479baea07d3a1d9ffcaff05747f44c\",\n \"3ab4e3428ab9525e98bd2ffc5db13ff34a924afd8d70d37ec952eacd815b34643701b37d4babdacb04c6e01148e7e98a7240ff35d50e287062be676ffa583600\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"e39d6ae5561b9247ff265f7aeaa8a5266ba4283c93234a9f95b57eca936f059e\",\n \"_hash\": \"7621185cb5ba58f43b4c18524a64235896b43daa59fc8ac5850fb0b226a3c5fa\",\n \"_sequence\": \"00000194ce6c559d0000000026a3c5fa\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"04\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"7621185cb5ba58f43b4c18524a64235896b43daa59fc8ac5850fb0b226a3c5fa\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"7621185cb5ba58f43b4c18524a64235896b43daa59fc8ac5850fb0b226a3c5fa\",\n \"e39d6ae5561b9247ff265f7aeaa8a5266ba4283c93234a9f95b57eca936f059e\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"3bf15344e9d989096bee983e127979ed79630ea00421803159b20919decbd8a41c9e20b1beae9799df82e8df4d7fffa9d5146423519e9fcb40f614e07229a96e\",\n \"8727474bc81fa6084b0f12b646340e5fdd2b6fb1b20272e296507d6c188d4d3744175a49032203dee6634c414c5d22f536ff8b4b27cc7a757f80d0adf14506eb\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"c3d879697660bdbd7ac74d6de94e09c1be421ff8e3113d143f6ae9d42439948d\",\n \"_hash\": \"43ab28e90ab9eafb64ac78aadb678f3bea0a42ac59effb0b9316b4508ae144ae\",\n \"_sequence\": \"00000194ce6c55cc000000008ae144ae\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"05\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"43ab28e90ab9eafb64ac78aadb678f3bea0a42ac59effb0b9316b4508ae144ae\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"43ab28e90ab9eafb64ac78aadb678f3bea0a42ac59effb0b9316b4508ae144ae\",\n \"c3d879697660bdbd7ac74d6de94e09c1be421ff8e3113d143f6ae9d42439948d\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"6137b69ff485a6b32974158f413e518d9aafe807fd24b39f86a392be5a6d48947d99b6d4593ddbf4bf99c89b63c1e27d456c45c0073f3956301aeed0c1b0f573\",\n \"fcb1f572106838d4c08f0fa284088e3feb4e4097a41238563c07a9a761eeb44f49cf29f2be0bddb0308f764b3be2f4476752ef8d71bb0abe26b52ae53826ed80\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"e676447559314b93414d63de81587bb4fb9961146d062b45acc5f4cdfb053c0d\",\n \"_hash\": \"bbe26f0ef713f66ff93e6af71bc8ea76dde256b9d52576e9235ea64393eacfa4\",\n \"_sequence\": \"00000194ce6c55de0000000093eacfa4\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"06\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"bbe26f0ef713f66ff93e6af71bc8ea76dde256b9d52576e9235ea64393eacfa4\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"bbe26f0ef713f66ff93e6af71bc8ea76dde256b9d52576e9235ea64393eacfa4\",\n \"e676447559314b93414d63de81587bb4fb9961146d062b45acc5f4cdfb053c0d\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"d2a2dc7c8175493b601078dd404786b0bc7cf89984db055b694f55680ba191c353da34cd510c1b112d25e130c3a5907e0815d9c8b768028a3373bdbbc12c4bcb\",\n \"2a17a3e76c02d809c6a63577bf74df59350c9aa4ebe113e82e947717a35c4f2d5d43a9be55c5e435d8c935a4488f8cd46005ad9c64be95137381bca83101ff46\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"f5d163f7d5f83acca2852854b7e16b3eac3e902a5911d06b8efe49f4b89c96f6\",\n \"_hash\": \"571744030dd7f3eee79410a06d9476052e2462fc05d6789e2436beee9d5e6cd7\",\n \"_sequence\": \"00000194ce6c55ef000000009d5e6cd7\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"07\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"571744030dd7f3eee79410a06d9476052e2462fc05d6789e2436beee9d5e6cd7\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"571744030dd7f3eee79410a06d9476052e2462fc05d6789e2436beee9d5e6cd7\",\n \"f5d163f7d5f83acca2852854b7e16b3eac3e902a5911d06b8efe49f4b89c96f6\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"d6da88e37fbfc91c8d3abdcae01e87831ded21363840502f4062e0eca1f638dd22a544a981823b2772b6e8992f2c4595255693e97c7d4487ea3d4639389471d8\",\n \"292f780624cf8ec2c297e696ac781b1c8b744801bff14d36f9ccc14172e91b711875aeceadc3325373e32166e60addfd9bfa2f3e9cb4ee021938acfa7c0e9853\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"56b814364f08d5a4833781bf732be22c521669d304aa1e3dc9f230481b077076\",\n \"_hash\": \"ca2390800a8105fe9ec2a1be4da3a54048cde60685072ebc3d06a5974f112ddc\",\n \"_sequence\": \"00000194ce6c5603000000004f112ddc\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"08\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"ca2390800a8105fe9ec2a1be4da3a54048cde60685072ebc3d06a5974f112ddc\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"ca2390800a8105fe9ec2a1be4da3a54048cde60685072ebc3d06a5974f112ddc\",\n \"56b814364f08d5a4833781bf732be22c521669d304aa1e3dc9f230481b077076\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"ce20d68fcbab920b571fa50b130197a9e4ade4e61a588a1991fdca22074a0d8611f73eea4766e994c0c8f41d6627eff1b31fec396b9d19a070041f712ef6c905\",\n \"a1fe002589b83919bfddf169317424ec0e92d320626e58cd85171fc5feb5eaf310da79518b6465987d0b667f14799649d98a4534d5fd45ea1a14f5522729e3cb\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"3b9f4070e941952b3c8e6c8d3e88595bfccbf79532f5e972caee2f1f2cf49d60\",\n \"_hash\": \"3e1b4c1bf426b79d5960034ca0486af693d7c07131a015618c4189d45092938d\",\n \"_sequence\": \"00000194ce6c5616000000005092938d\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"09\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"3e1b4c1bf426b79d5960034ca0486af693d7c07131a015618c4189d45092938d\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"3e1b4c1bf426b79d5960034ca0486af693d7c07131a015618c4189d45092938d\",\n \"3b9f4070e941952b3c8e6c8d3e88595bfccbf79532f5e972caee2f1f2cf49d60\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"e5ef937ba2c8e87404a749236f93b3419bd385c55cb3756cafa1a27a87bd3d856128c6556ad7295014fb9d44df613c79aec86786621a4842c43df3770b3fad0f\",\n \"c7b2845e3044ac525fa350b62d00ad08f5f1b085778c1a412ad06e2ac388fc2e62f3245ba7711bf8fdd35a590cdd08a759e670e660d81a8181a48799e71cd667\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"ab02d31a1924c759ba590279215f46f839261c83a4ee21428c98e1ed0662ad1e\",\n \"_hash\": \"0e559002f163827f17e2dc1ea731e3b49a510f69e21e84ae9a9b38097c2c6d8b\",\n \"_sequence\": \"00000194ce6c562b000000007c2c6d8b\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"0a\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"0e559002f163827f17e2dc1ea731e3b49a510f69e21e84ae9a9b38097c2c6d8b\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"0e559002f163827f17e2dc1ea731e3b49a510f69e21e84ae9a9b38097c2c6d8b\",\n \"ab02d31a1924c759ba590279215f46f839261c83a4ee21428c98e1ed0662ad1e\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"411447d4f1a63f9128f6e79d8ba5f762000080b93f22036c0d59d015046edc343e6d07db08f3163517affea04b9c436d1310cbc2d66834d1669f14a3e92f9e99\",\n \"20c383dda3257b37789d69fd60831ebc8dd4f4831b6ecf64d4020fc1d1352bea41524f26cdb5acf6c8fd9fddac96e063f27ad2aa6b6bb428e42fdc058a0c590e\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"20877cacb9a372e87ad2dd6fdde231a460204c4ca20b70656d9b17c4c064a2b4\",\n \"_hash\": \"18d2ac1e45a5dba95452ece2a5500a66f7d8a81f447dcfd4e8c3e0f0244956a5\",\n \"_sequence\": \"00000194ce6c563f00000000244956a5\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"0b\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"18d2ac1e45a5dba95452ece2a5500a66f7d8a81f447dcfd4e8c3e0f0244956a5\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"18d2ac1e45a5dba95452ece2a5500a66f7d8a81f447dcfd4e8c3e0f0244956a5\",\n \"20877cacb9a372e87ad2dd6fdde231a460204c4ca20b70656d9b17c4c064a2b4\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"8f8bae654d13c6e44503d9feff0822ceccc26097588b38ea830b0eb873b0a7055de96c16ed8402e0d0e11c99c85c9101c3de40f9d59a4cba526edb93088af0e8\",\n \"939255f0774487857187582f5540fb54a8615df7bc12c7394664f62ca1292bb12404a32be0274d5486c3bff85f11a954a87870dff13c5dca4cf017092b749c61\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"e7ef06e06d8c389122a86352622d6cb6ad857ad236bf7baf5003505cb3044191\",\n \"_hash\": \"1ef6c1973ea8d32c46120cb8b7f5887971e2388f6f9f33d8c414dd4762dc2064\",\n \"_sequence\": \"00000194ce6c56520000000062dc2064\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"0c\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"1ef6c1973ea8d32c46120cb8b7f5887971e2388f6f9f33d8c414dd4762dc2064\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"1ef6c1973ea8d32c46120cb8b7f5887971e2388f6f9f33d8c414dd4762dc2064\",\n \"e7ef06e06d8c389122a86352622d6cb6ad857ad236bf7baf5003505cb3044191\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"bcc61e1b3e1596cb1376e280c9079da38a627a1f842c8259566d5e5c5375bfbd79de1df0d9fab34dc8f6ae4b19bd37cc871c013b96c7fa9b2a7931a0b1d935b5\",\n \"b4cee23a4c7ee5ef639c54bb5ac4eba46b5220209a4811bc0cfa3a2e6948b8fc62ee126f17e2d2fe593d7702a0a068fb693e8830cdf0b3d9c49af8e13f9192e1\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"a2a21c5c6202d9c48ca9fc2171e6ef14326cb0d962cb70658ebaf7d624051114\",\n \"_hash\": \"9205e229014c3af604f85908c7125021bebe23afca191f06e3f4235d4efc629a\",\n \"_sequence\": \"00000194ce6c5666000000004efc629a\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"0d\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"9205e229014c3af604f85908c7125021bebe23afca191f06e3f4235d4efc629a\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"9205e229014c3af604f85908c7125021bebe23afca191f06e3f4235d4efc629a\",\n \"a2a21c5c6202d9c48ca9fc2171e6ef14326cb0d962cb70658ebaf7d624051114\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"a4eeec82fcf9cd4ce3afc3f9f22e8ff1234e24d80672231be6320896a1b43de662a6d3d50cfe7636c5e677b64439dd0a7db3a342ecb517593a32d7ece3f0be43\",\n \"83142d0d1638ad21604c7cfac2c6889c0226785b0e0b499be67a7585086507982a2505e078be251f2b0c4c7a585ac804ebc8a5219019eeb4dfebb3a891d592ec\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"f7167dffc7b9b38a194c0bd63910a895ceb563a8c6be03f415d518607c390db0\",\n \"_hash\": \"a10ba8a25407dd27f14eb217f67df1105d5515b3bdb696ce6ef891813f6986c4\",\n \"_sequence\": \"00000194ce6c5679000000003f6986c4\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"0e\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"a10ba8a25407dd27f14eb217f67df1105d5515b3bdb696ce6ef891813f6986c4\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"a10ba8a25407dd27f14eb217f67df1105d5515b3bdb696ce6ef891813f6986c4\",\n \"f7167dffc7b9b38a194c0bd63910a895ceb563a8c6be03f415d518607c390db0\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"14512f03ddb432cce9d532f9dae6322bea007eae19a63f0621672a64f33c3160148f75810b12e135564c31e69429a468d4ce61f43f87c4edec9e5a0f18da0489\",\n \"f85cd4f1f046f67ef9e7793335c71841ae4a110b0b2d9c43fa6919cf1750f11566255b55d963ac7d5015c60456330f4c3f5be93fb601412118db63f15047df8e\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"dad7ed407788a57470e8699b065efb64d060d61c84803318c877148dd3710930\",\n \"_hash\": \"37b47da175bec1fa38724f154502f7581f35b11a4550fcbd153cbc231c9beb15\",\n \"_sequence\": \"00000194ce6c568b000000001c9beb15\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"0f\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"37b47da175bec1fa38724f154502f7581f35b11a4550fcbd153cbc231c9beb15\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"37b47da175bec1fa38724f154502f7581f35b11a4550fcbd153cbc231c9beb15\",\n \"dad7ed407788a57470e8699b065efb64d060d61c84803318c877148dd3710930\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"204a38fbba3325bd295c9d600de7f565394e199d4d3daf5ec52a911e0d55d40704d30c38ec470ba77b19f62fd5f8b1888dd00591a23575d8b92ac8fb14f11d5a\",\n \"7ab019d614974930a17bebfa9236e34742e932ab1b20007a86fa033674d2590303c7835b38694e2fb46f97d66e3e1b6b369cadc415f8a969c2cbc65e034b3f68\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"3b8244d7dfa8b111bda9ed05e072640cc2c917687116a9c6ba298ca9a46f9b9b\",\n \"_hash\": \"895b5bcbc9b5bcede1b0a0cb1eb6e9c0904be16d1a83ed99f2b03d74159f9761\",\n \"_sequence\": \"00000194ce6c569e00000000159f9761\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"10\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"895b5bcbc9b5bcede1b0a0cb1eb6e9c0904be16d1a83ed99f2b03d74159f9761\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"895b5bcbc9b5bcede1b0a0cb1eb6e9c0904be16d1a83ed99f2b03d74159f9761\",\n \"3b8244d7dfa8b111bda9ed05e072640cc2c917687116a9c6ba298ca9a46f9b9b\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"0698eb7fa459e13d5bfa42dec92d6251d52d281f7051e083ef73260373e126722a310bd15e2f2bc3e6f6e5aee3cc28b1bc1eb509733bd74fe5394d7bb7d75769\",\n \"60ccc8f298ebf66328654552a6243bd5a07f2c76207648c5378d6285c70be36a64de53bf90ae8657c6433f85c3cdc316ea0863cb1b9183cd1412cee878eeaec3\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"95285ec0d7b837371d5c8ad8ac75f609a5b83662531ffdd41770f6724f986d3a\",\n \"_hash\": \"3233cfb02d07056bf5dee59f6a6d1eeafe14543c2d23fd803bbf8ec8b45e6b07\",\n \"_sequence\": \"00000194ce6c56b000000000b45e6b07\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"11\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"3233cfb02d07056bf5dee59f6a6d1eeafe14543c2d23fd803bbf8ec8b45e6b07\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"3233cfb02d07056bf5dee59f6a6d1eeafe14543c2d23fd803bbf8ec8b45e6b07\",\n \"95285ec0d7b837371d5c8ad8ac75f609a5b83662531ffdd41770f6724f986d3a\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"c1283d36a6e2d185b693a43bbc1fdaff9e2bfa84e181fbc88af09a4a1be3da932fd2f36425ff7018b274770819e4ef595488d98e2dd749adeb7d96040df0ff7e\",\n \"d32940d3c605451e905e3b15ac8af91e21949c5225d57cce9460a399166abd3a5b8b9fd8aecdb6a66287159ec5c398ea6fbdc6d050ff873e389735b22689fc6a\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"1f6e0444db7aed7987da40568b9b4b8745a09cb1ef4990f48130ecf348180559\",\n \"_hash\": \"43f699190a88330c6ba56898c1bf127b22fc8c258649a2d324fe356b3a35c97a\",\n \"_sequence\": \"00000194ce6c56c3000000003a35c97a\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"12\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"43f699190a88330c6ba56898c1bf127b22fc8c258649a2d324fe356b3a35c97a\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"43f699190a88330c6ba56898c1bf127b22fc8c258649a2d324fe356b3a35c97a\",\n \"1f6e0444db7aed7987da40568b9b4b8745a09cb1ef4990f48130ecf348180559\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"57ca539d055446d42c10a9a7cc16eb9ad798f0ffc02797b5e5b86dba1c1922615334ebc50f8dfcc8fd8f65687eba174f6c0f59b964cc968ac25a3ec24753e256\",\n \"7e8c60ab8f4c81b35a8130fb24d2994cb1ee770044fbad78408017f8a3eb99d87975683da39312e3c09332e8ca87698d37b23120b912d6d134dcbcff207ce56e\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"65f08790dae44321153a654a1144cdf95c38b022cef43554c9fa2dd69cf08e6e\",\n \"_hash\": \"9234b1ce806eaeed40cdb73be7a9ea52da9cf0a14f9aeb8840e76001f7961901\",\n \"_sequence\": \"00000194ce6c56d500000000f7961901\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"13\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"9234b1ce806eaeed40cdb73be7a9ea52da9cf0a14f9aeb8840e76001f7961901\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"9234b1ce806eaeed40cdb73be7a9ea52da9cf0a14f9aeb8840e76001f7961901\",\n \"65f08790dae44321153a654a1144cdf95c38b022cef43554c9fa2dd69cf08e6e\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"5fd6239bb7a02125b4520968e9663490cf1715d6228da01f38dcb7b24dcf728033615584097645fc25deb8f43ce6d119a0640b510d94e46090d552a828f7a502\",\n \"bc206b48140d888e41a88bd876fbb372a38787c689cbd1fd38c1dcb118a41ae42b6dabfcd1b18575b75b9269191c6a5db57ea1c25bae1c19901197c377ce1b4c\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"01f2f68e9b9acd29d4753153b38a2653c18ab4cea1987128450b7e765e732a96\",\n \"_hash\": \"76c0969f037ac00c3bab93e22d93e8e3435fbedf4aec3d774a44525db3992ff3\",\n \"_sequence\": \"00000194ce6c56e800000000b3992ff3\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"14\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"76c0969f037ac00c3bab93e22d93e8e3435fbedf4aec3d774a44525db3992ff3\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"76c0969f037ac00c3bab93e22d93e8e3435fbedf4aec3d774a44525db3992ff3\",\n \"01f2f68e9b9acd29d4753153b38a2653c18ab4cea1987128450b7e765e732a96\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"810c841e88c02136091c1a11bf0576dab10ad7bcc9f5a9b5afb3fb576892ffc943867a648039e75189196f9223970be22a1ece3b3a12cea181b00698298b1f60\",\n \"a7c643e107c14078e118d3a774eb4bda0026e6f71f1718aef75c0e465fae08d7019b6581ac78af13ce77afc0a3d55f19125244032bca6c8b752d68f013914179\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"cd3c26f44f5ff54629435cbefad5675d35a0a6ac30f90ddcc0a019636badd229\",\n \"_hash\": \"6ac8eeec3cc617c0f0122f204532738ce3e37a484276077d77e5b33697fd3ed0\",\n \"_sequence\": \"00000194ce6c56fb0000000097fd3ed0\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"15\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"6ac8eeec3cc617c0f0122f204532738ce3e37a484276077d77e5b33697fd3ed0\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"6ac8eeec3cc617c0f0122f204532738ce3e37a484276077d77e5b33697fd3ed0\",\n \"cd3c26f44f5ff54629435cbefad5675d35a0a6ac30f90ddcc0a019636badd229\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"756c13167fe50b8d157e91e4b6a2076c08b97b65a2dda532245aac621ca0deb105efa55c04f74b0a3fa3e313395202f89c8c2a877c2ce10d2c6b5594536754e7\",\n \"7905e47b9eb2246f1ead1bcf39d79d7c8404c0ba7449e9bdd22635bb56464e1e09d1dad5af42aaf7de37b3c243ac4efce7eb179573f6970a56fd2c4d36f9d3a5\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"95005616a375da9043e72a254f21a875ef86880097ae143d27153d3355902933\",\n \"_hash\": \"3f069f39b6cf2abfc8dbd4bfd87102cb6d1e37fd1b9db725f2e7ad830f536878\",\n \"_sequence\": \"00000194ce6c570f000000000f536878\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"16\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"3f069f39b6cf2abfc8dbd4bfd87102cb6d1e37fd1b9db725f2e7ad830f536878\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"3f069f39b6cf2abfc8dbd4bfd87102cb6d1e37fd1b9db725f2e7ad830f536878\",\n \"95005616a375da9043e72a254f21a875ef86880097ae143d27153d3355902933\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"b5ea56c6e18508acd65397a62e74ded64b25c312e7e5b6952aa1be5f06eae26912d9667b3720b32bd560434ae155bfb9207896ff87a42818895add9fa058ae7d\",\n \"cf49aac7a482f840360d16d563b97d0a99939657688c034aaa63e6fea889b144539a5780e06a144f7990ad40d26a50a4159895bbb1a301c7703d01474978aa89\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"3226916718274d0125b19592652af1a6ddf3515fb44172f996858659e51a5821\",\n \"_hash\": \"c179c3f577d8083f21bc7ab85c20a142ac5670ee5fd68fb44185bfa7bdf639c0\",\n \"_sequence\": \"00000194ce6c572300000000bdf639c0\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"17\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"c179c3f577d8083f21bc7ab85c20a142ac5670ee5fd68fb44185bfa7bdf639c0\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"c179c3f577d8083f21bc7ab85c20a142ac5670ee5fd68fb44185bfa7bdf639c0\",\n \"3226916718274d0125b19592652af1a6ddf3515fb44172f996858659e51a5821\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"b98cdbe19c35088571ede1874d2bc3bf607ddb9da47d02b655102c54e8db87e21322c64cffd4c188f2779b2f4716003b1bafabc19e38a3efe0a0557926fef71e\",\n \"066af736a17fd844887c82a76e36a9e0b0da65ba5c3dd5b88428231525e1b68b1c716406b5b0490e399988adb5e110d539aab0fc77bd7f378e82f4964b98401a\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"162d6b50b65f3d8287d3b4b8fd037eec347950c9a80586c1daab1cab74d2186a\",\n \"_hash\": \"99caea80ee8899f71e987dbd7e5ad38bfbb928a0e70402744c42a1c1b812a07e\",\n \"_sequence\": \"00000194ce6c573600000000b812a07e\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"18\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"99caea80ee8899f71e987dbd7e5ad38bfbb928a0e70402744c42a1c1b812a07e\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"99caea80ee8899f71e987dbd7e5ad38bfbb928a0e70402744c42a1c1b812a07e\",\n \"162d6b50b65f3d8287d3b4b8fd037eec347950c9a80586c1daab1cab74d2186a\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"8d471a97f3b296ba9ba4e0f0ec1699ee753c6dd9af5e21f44669d53b5a022afa5a78e980856f57c59fed7cb911ece898570320a143c6a3b2560a519e6992acc6\",\n \"ddd872e4080ffbbcdd08b0c42c92c5c79f07b2c7b6eafeb9d88d679fdda992826494cec84699ab6fca8d59b59ca8b9cf5811239290fa077507278402019206de\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"e1163f1594b798250bfe5b2a7fb4fa63c0de0fdfd1707f61102cbf2820c1315d\",\n \"_hash\": \"6d7feb729bc8f4eef8e33a5c6c20a8fe0d318eb159577e8cb6e197520063c29b\",\n \"_sequence\": \"00000194ce6c5749000000000063c29b\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"19\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"6d7feb729bc8f4eef8e33a5c6c20a8fe0d318eb159577e8cb6e197520063c29b\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"6d7feb729bc8f4eef8e33a5c6c20a8fe0d318eb159577e8cb6e197520063c29b\",\n \"e1163f1594b798250bfe5b2a7fb4fa63c0de0fdfd1707f61102cbf2820c1315d\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"80f5da1904d45fc67ab08191f9fb6d2eac05f861a3f471ff4b0022a8aa8b8c3d5495f02ef3069e859d12a4cb9f1c62ce854fea48460aae223a83f998b34d0209\",\n \"aed4dd76381760258732c9d73aeec46f57f390fbc707b20a7db91e2738bf8f212ae2e94b786023460fff9e9e69aa83ca6a064fb0317151a1b87880a01859db75\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"38ac65443d058d5ee3d11c18bf0e3f207180e2684d53ebcbe39ffa38c6c9f80b\",\n \"_hash\": \"59b0935a6860769178480c8f04e60b4e2936be978b8ed553da5def0c2e115203\",\n \"_sequence\": \"00000194ce6c575c000000002e115203\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"1a\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"59b0935a6860769178480c8f04e60b4e2936be978b8ed553da5def0c2e115203\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"59b0935a6860769178480c8f04e60b4e2936be978b8ed553da5def0c2e115203\",\n \"38ac65443d058d5ee3d11c18bf0e3f207180e2684d53ebcbe39ffa38c6c9f80b\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"73eb2fba37e98bf55ebc734b4b0abde762a537ded767d3b2d8b5287c530cde0700e0ce091f73d04880fbbb41fc2e3d1a04218363a6a5179ad8344ad70f3afad8\",\n \"a7d1d94503453c5ce20a5980d260939e842c235380d52cdfdb8c80466b7b21873d4ef54393c9721e0ee2e2d68da12516ecc00fd3e486a6857704e4e74f6fb843\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"e4c6920199d1dc441a140c17da5be12b52c537d7d358cabc8928aea109007ab8\",\n \"_hash\": \"06d8f99316f9aa7bbebe4174ae7b8d2d2dc45c2c1dbdb1baaa512f262de68058\",\n \"_sequence\": \"00000194ce6c576e000000002de68058\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"1b\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"06d8f99316f9aa7bbebe4174ae7b8d2d2dc45c2c1dbdb1baaa512f262de68058\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"06d8f99316f9aa7bbebe4174ae7b8d2d2dc45c2c1dbdb1baaa512f262de68058\",\n \"e4c6920199d1dc441a140c17da5be12b52c537d7d358cabc8928aea109007ab8\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"01098c656b063efdab0867cd2aadc06a8c773cbb62319f50d29d3f2b9319a4457f729e6b3a2a064078e223e98384ccde74eb87b721a65b12ae0666364d1922d1\",\n \"72e237cfb04add3023feb36c726e40437d16575e646a6ec71534b06d12dd5adf7cdb9a8d9514aebceead5b9bee08b94bcfa1429bc8de26428658502165afb095\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"78dc39caaa697488517d8c663085ff0dd450140bcd93701fe49a267ea980d08d\",\n \"_hash\": \"eb49cac37db77d58293e71dd23d5500a817c36ac4c4f3e8607d3e71c495c41e3\",\n \"_sequence\": \"00000194ce6c578100000000495c41e3\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"1c\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"eb49cac37db77d58293e71dd23d5500a817c36ac4c4f3e8607d3e71c495c41e3\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"eb49cac37db77d58293e71dd23d5500a817c36ac4c4f3e8607d3e71c495c41e3\",\n \"78dc39caaa697488517d8c663085ff0dd450140bcd93701fe49a267ea980d08d\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"81dc16747f5c00fb64ac251e470c3822c4a351cd0d657d965348e105d160ef4a2b9d812d37df94acc7c542a8d5c2e4a79022bc83489b495acad9e2993c5f3004\",\n \"bf8908cfbd64a62b8a5a87772e3e44ac0317304266be1fdf85421a194ee4a2535bff02bd7bd9fcbdcac995517db905156643179598752c18a9ffbf36c3b45be0\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"e9bf3f0c6f7842961e99f32226cb04c54d90c9cdd8ddd6003f32dce341b59c84\",\n \"_hash\": \"463ff71001b80845d58c7baafae221a9213091321c22c3e4778e185aa0236a3a\",\n \"_sequence\": \"00000194ce6c579500000000a0236a3a\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"1d\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"463ff71001b80845d58c7baafae221a9213091321c22c3e4778e185aa0236a3a\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"463ff71001b80845d58c7baafae221a9213091321c22c3e4778e185aa0236a3a\",\n \"e9bf3f0c6f7842961e99f32226cb04c54d90c9cdd8ddd6003f32dce341b59c84\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"b7d3aca05357a73f7434d37a067e0a060f1bb4d069375c707d7f5474f1b040f205fea48cd681169d4f8c202e24053895c072f1f8a360fb6785f32f2a1da4cff1\",\n \"a06e996ccc16e37b707390194e2736e49e842172063f2d89a7cd5b604e266ea261be2b30a94516c97c0f39317b6b7ba240a03b412dc4e6ccde54a88353c8a23f\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"00e9f351a2c668e452e46272a857a6dfdd2c6a7bd025aea86fbb2c3c7eb5dfcd\",\n \"_hash\": \"1091e127bb0eb4a1df41fb53957cd12f2557fb9b512852a9c21365297893bdf2\",\n \"_sequence\": \"00000194ce6c57a8000000007893bdf2\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"1e\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"1091e127bb0eb4a1df41fb53957cd12f2557fb9b512852a9c21365297893bdf2\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"1091e127bb0eb4a1df41fb53957cd12f2557fb9b512852a9c21365297893bdf2\",\n \"00e9f351a2c668e452e46272a857a6dfdd2c6a7bd025aea86fbb2c3c7eb5dfcd\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"7bcc7f4a6605fb7c99817b59f10b3d77e33230f294c4877b010225d7c12e2da3052ab15a03427baaa55e4565972a309ea422e9dc624739616f7515a7b4c8d7b9\",\n \"b2085f1423a4f847a70c8dccaf2a1574d00d1102b5ec493b64b81d3bc94a98c863ec71a8f5c5cb358ebdc8295623185c11b6688982ba6cd96db5b02ab4b6c7e0\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"c95575f19e9ea08ef90d6ccaf010f7ed64cf194fd9fc713f9d4c7267160b50b2\",\n \"_hash\": \"c3b27870f2c5e5c0ea86e16d7681994033d9c6db81d3c1d2e5817bd53b7eff62\",\n \"_sequence\": \"00000194ce6c57bc000000003b7eff62\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"1f\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"c3b27870f2c5e5c0ea86e16d7681994033d9c6db81d3c1d2e5817bd53b7eff62\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"c3b27870f2c5e5c0ea86e16d7681994033d9c6db81d3c1d2e5817bd53b7eff62\",\n \"c95575f19e9ea08ef90d6ccaf010f7ed64cf194fd9fc713f9d4c7267160b50b2\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"8023f6d0e6c34389a07323492f700af79c642f0f807f3bd917c5cb3c486b33002c39fc5b29dd161516ce67ce0b00cea02aff9cabe76d608bc9a6a2b9beb231ff\",\n \"d008f23ac16998053d44a9bce6d10a6dd46935e33fb999ed8e3779c61742ae0d0967228ed8745b2fff81470ff4a4badd99d12c8b7725698d963b1d55048cb4cf\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"9a00482ab8d76f796d4aa465b1a10669b5ef0f0d72d9dce7043003ed0dd737fb\",\n \"_hash\": \"0b124a776804a1a165b1ba90182fe91c07c30436452dd8271b799dd8fb29a0f7\",\n \"_sequence\": \"00000194ce6c57ce00000000fb29a0f7\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"20\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"0b124a776804a1a165b1ba90182fe91c07c30436452dd8271b799dd8fb29a0f7\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"0b124a776804a1a165b1ba90182fe91c07c30436452dd8271b799dd8fb29a0f7\",\n \"9a00482ab8d76f796d4aa465b1a10669b5ef0f0d72d9dce7043003ed0dd737fb\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"b3c642ead1de7a0a5ecb755cefd3c188faf5c29afccfd5f5331f469fed94f86477b4fc82318fab45d083628630f3913487ad1bdba47cc355a70365fb4ca4cfe0\",\n \"72d0373fbef34d837186495476fe0cc75d58ace97232588dfe2535cd81e683dc2439e02d38720fb3f7695d295c8eed04824d9fb9cb97a3324111d1631daaf9d6\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"ab24cc87c3adadfdd1d8a366d3c9b573eeed9df24d0c953c0432a50e46ea3d57\",\n \"_hash\": \"e9db7723032a299503705e0af4866e0143182b4a66b38e7a29fa2bb2b23082d3\",\n \"_sequence\": \"00000194ce6c57e100000000b23082d3\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"21\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"e9db7723032a299503705e0af4866e0143182b4a66b38e7a29fa2bb2b23082d3\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"e9db7723032a299503705e0af4866e0143182b4a66b38e7a29fa2bb2b23082d3\",\n \"ab24cc87c3adadfdd1d8a366d3c9b573eeed9df24d0c953c0432a50e46ea3d57\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"01dfc5df1ee478d8bf79a3f7513d03eb030a3330d60fc99db9faf80143e1efaa1ef07a11985702eb15709d9d30d28faa4dce7aa2079da5beb097bd7392b2d941\",\n \"e5895279d7081f2857619e2d1ba3efd0416888745e9d7b08033e610708b4d97378cb6788d523cfd1e9dc463f53de64b98cad326d9332e22b4bc561ecfd5b8ab3\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"0b29b106ac95dbc161735998a4a97ea806d5a5ca424cde0a8fa198d02dab91f7\",\n \"_hash\": \"ed39e4d4440402c1e974cdb95da8b34052440ccc48d80627161dbf6955cd6da5\",\n \"_sequence\": \"00000194ce6c57f40000000055cd6da5\"\n },\n {\n \"gas\": \"00\",\n \"block\": \"22\",\n \"step_hashes\": [],\n \"chain\": \"2aae728afd1777b79c34d79c4523797f9d9965b0\",\n \"previous\": \"ed39e4d4440402c1e974cdb95da8b34052440ccc48d80627161dbf6955cd6da5\",\n \"reward\": \"7530\",\n \"addresses\": [\n \"d01885faa18c18ee20982bdf499b6152981a84c0\",\n \"4019a3fd9e96337e00d598a6a13fb5a37d5f9018\"\n ],\n \"payload_hashes\": [],\n \"payload_schemas\": [],\n \"previous_hashes\": [\n \"ed39e4d4440402c1e974cdb95da8b34052440ccc48d80627161dbf6955cd6da5\",\n \"0b29b106ac95dbc161735998a4a97ea806d5a5ca424cde0a8fa198d02dab91f7\"\n ],\n \"schema\": \"network.xyo.boundwitness\",\n \"$signatures\": [\n \"0b38f2eaade2eb2cb54050708d34543a308b5db9758bc7fc397c9f8b660e89d41e4ebb24318a58b2286b395571a901d747c5257eff9c8b73ea66a464e6c8583c\",\n \"b69429bd5845bf2e9ae74fd5d2ee0909977fcdd1f82efaaae182feb7db7b1e4703a8da7e16712d6a492a898fab28024a5d5f715ef596c90a377f9faee40ae752\"\n ],\n \"$epoch\": 0,\n \"_dataHash\": \"e1e28cc241f509ab3e40e8db3720169aafca9c6977113f1991e84df9cdaaf43a\",\n \"_hash\": \"664ac8088c1036206af47f9317ce7d1eaaed800a4179f4f2b075cc6c3925587f\",\n \"_sequence\": \"00000194ce6c5805000000003925587f\"\n }\n]","import { Decorator } from '@storybook/react'\nimport { delay } from '@xylabs/delay'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isBlockBoundWitness } from '@xylabs/sdk-xyo-chain-js'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { Payload } from '@xyo-network/payload-model'\n\nimport { getChainInformation } from '../lib/index.ts'\nimport { BlockChainRenderBaseProps } from '../types/index.ts'\nimport { ExampleBlockchainWithPayloads } from './ExampleBlockchainWithPayloads.ts'\n\nlet chainArchivistRef: MemoryArchivist | undefined\n\nexport const ChainArchivistDelayedInsertDecorator: Decorator = (Story, context) => {\n const [chainArchivist] = usePromise(async () => {\n if (chainArchivistRef) {\n return chainArchivistRef\n } else {\n chainArchivistRef = await MemoryArchivist.create({})\n return chainArchivistRef\n }\n }, [])\n\n usePromise(async () => {\n if (chainArchivist) {\n // track the next set of payloads for the next block\n const nextBlockPayloads: Payload[] = []\n\n for (const payload of ExampleBlockchainWithPayloads) {\n if (isBlockBoundWitness(payload)) {\n // if we have a block, insert the block and subsequent payloads\n nextBlockPayloads.push(payload)\n\n // debug was we are inserting\n // console.log('pre-insert block', nextBlockPayloads.map(payload => isBlockBoundWitness(payload) ? payload.block : null).filter(Boolean))\n\n // insert the block and subsequent payloads\n await chainArchivist.insert(nextBlockPayloads)\n console.log('inserted block')\n\n // clear the array\n nextBlockPayloads.length = 0\n\n // we know we are gonna get a new block, so simulate the delay\n await delay(1000)\n } else {\n nextBlockPayloads.push(payload)\n }\n }\n }\n }, [chainArchivist])\n\n const [blockChainRenderProps] = usePromise(async () => {\n const { chainInformation } = await getChainInformation()\n return { chainArchivist, chainInformation }\n }, [chainArchivist])\n\n const props = {\n ...context,\n args: {\n ...context.args,\n blockChainRenderProps: {\n ...(context.args.blockChainRenderProps as BlockChainRenderBaseProps),\n ...blockChainRenderProps,\n },\n },\n }\n\n return <Story {...props} />\n}\n","import { Decorator } from '@storybook/react'\nimport { assertEx } from '@xylabs/assert'\nimport { usePromise } from '@xylabs/react-promise'\nimport {\n findFirstMatching, isBlockBoundWitness, XyoChainBlockNumberIterator,\n} from '@xylabs/sdk-xyo-chain-js'\n\nimport { ChainInfoProvider } from '../context/index.ts'\nimport {\n BridgedChainArchivistParams, getChainArchivistFromBridge, getChainInformation,\n} from '../lib/index.ts'\n\nconst archivistConfig: BridgedChainArchivistParams = {\n url: 'http://localhost:8080',\n chainArchivistModuleId: 'XYOPublic:XYOChain:Chain',\n}\n\nexport const ChainInfoContextDecorator: Decorator = (Story, context) => {\n const [chainInformationResponse] = usePromise(async () => {\n return await getChainInformation()\n }, [])\n\n const { chainInformation } = chainInformationResponse ?? {}\n\n const [chainArchivist] = usePromise(async () => {\n return await getChainArchivistFromBridge(archivistConfig)\n }, [])\n\n const [chainIterator] = usePromise(async () => {\n if (chainArchivist && chainInformation) {\n const firstMatch = assertEx(await findFirstMatching(chainArchivist), () => `No head found in archivist: ${chainArchivist.id} `)\n const head = assertEx(isBlockBoundWitness(firstMatch) ? firstMatch : undefined, () => `Expected a block bound witness: ${JSON.stringify(firstMatch)}`)\n return await XyoChainBlockNumberIterator.create({\n chainArchivist, chainInformation, head,\n })\n }\n }, [chainArchivist, chainInformation])\n\n return (\n <ChainInfoProvider chainArchivist={chainArchivist} chainInformation={chainInformation} chainIterator={chainIterator}>\n <Story {...context} />\n </ChainInfoProvider>\n )\n}\n"],"mappings":"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","names":["BWVerification","HashHeadingPaper","FlexCol","FlexRow","usePayloadHash","React","createContextEx","ChainAnalyzersContext","hydrateBlock","PayloadBuilder","useCallback","useMemo","useState","ChainAnalyzersProvider","analyzers","analyzersProp","children","analyzersState","setAnalyzersState","useState","statsUpdated","setStatsUpdated","Date","now","useMemo","addAnalyzers","useCallback","prev","onBlock","chainArchivist","block","hash","PayloadBuilder","hydratedBlock","hydrateBlock","analyzer","Object","values","value","provided","ChainAnalyzersContext","Provider","useContextEx","useChainAnalyzersContext","required","useContextEx","ChainAnalyzersContext","createContextEx","ChainInfoContext","React","useEffect","useMemo","useState","ChainInfoProvider","children","chainArchivist","chainArchivistProp","chainInformation","chainInformationProp","chainIterator","chainIteratorProp","setChainArchivist","useState","setChainInformation","setChainIterator","updateChainArchivist","updateChainInformation","updateChainIterator","useEffect","chainState","useMemo","provided","React","ChainInfoContext","Provider","value","createContextEx","ChainPollingContext","useCallback","useMemo","useState","ChainPollingProvider","children","pollingState","pollingStateProp","setPollingState","useState","updatePollingState","useCallback","newPollingState","value","useMemo","provided","ChainPollingContext","Provider","useContextEx","useChainPollingContext","required","useContextEx","ChainPollingContext","assertEx","asArchivistInstance","HttpBridge","HttpBridgeConfigSchema","getChainArchivistFromBridge","params","url","chainArchivistModuleId","config","schema","HttpBridgeConfigSchema","client","bridge","HttpBridge","create","resolved","resolve","mod","assertEx","asArchivistInstance","HDWallet","id","sharedAccountPhrase","sharedAccountPath","getChainInformation","sharedSignerAccount","HDWallet","fromPhrase","chainInformation","sharedSigner","address","hexFromHexString","hexToBigInt","hex","BigInt","hexFromHexString","prefix","Button","FormControl","TextField","FlexCol","React","ChainTransactionBuilder","onSubmitTx","handleSubmit","event","preventDefault","formData","FormData","currentTarget","chainTx","chain","get","gas","nbf","exp","React","form","onSubmit","style","width","FlexCol","gap","FormControl","fullWidth","TextField","label","name","required","Button","type","variant","FormControl","FormHelperText","TextField","React","useState","ChainTransactionNetwork","network","onNetworkChange","props","error","setError","useState","handleChange","event","url","URL","target","value","undefined","console","React","FormControl","fullWidth","TextField","label","name","onChange","required","FormHelperText","sx","color","Alert","Grid2","Typography","axios","ErrorRender","FlexGrowCol","buildTransaction","hexToBigInt","Account","ArchivistInsertQuerySchema","QueryBoundWitnessBuilder","PayloadBuilder","React","useState","BETA_PENDING_TRANSACTIONS_ARCHIVIST","SubmitChainTransaction","network","setNetwork","useState","URL","result","setResult","error","setError","onSubmitTx","chainTx","Error","randomAccount","Account","random","transactionBoundWitness","buildTransaction","chain","BigInt","gas","hexToBigInt","nbf","exp","insertQuery","PayloadBuilder","schema","ArchivistInsertQuerySchema","build","queryBoundWitness","QueryBoundWitnessBuilder","payloads","query","signer","response","axios","post","href","data","errors","map","e","message","join","onNetworkChange","url","React","Grid2","container","size","xs","sm","md","FlexGrowCol","alignItems","gap","ChainTransactionNetwork","ChainTransactionBuilder","length","Alert","severity","ErrorRender","Typography","variant","pre","JSON","stringify","Difference","Chip","Icon","useMemo","TransactionCountChip","transactions","sx","props","label","useMemo","length","Chip","avatar","Icon","Difference","title","undefined","display","alignItems","justifyContent","ContentCopy","ContentCopyIcon","Paid","Alert","AlertTitle","Collapse","Snackbar","Typography","ErrorRender","FlexGrowCol","FlexGrowRow","FlexRow","QuickTipButton","React","Fragment","useMemo","useState","TransactionsQuickTipButton","block","chainArchivist","props","transactions","transactionsError","useTxsFromBlock","copied","setCopied","useState","showError","setShowError","useMemo","onCopy","transactionHash","navigator","clipboard","writeText","setTimeout","React","QuickTipButton","Icon","Paid","disabled","length","hoverText","disableDialog","dialogProps","fullWidth","maxWidth","FlexGrowCol","gap","alignItems","map","transaction","hash","Fragment","key","FlexGrowRow","justifyContent","ContentCopyIcon","sx","cursor","onClick","Typography","overflow","textOverflow","whiteSpace","_hash","FlexRow","Collapse","in","unmountOnExit","Alert","AlertTitle","Snackbar","open","onClose","ErrorRender","error","scope","useRef","useState","useAnchorElement","anchorEl","setAnchorEl","useState","anchorRef","useRef","open","Boolean","handleClick","event","currentTarget","handleClose","useEvent","useBlockHeadingEvents","args","useEvent","useMemo","useBlockProducer","block","chainInformation","useMemo","producer","addresses","find","address","sharedSigner","isBlockBoundWitness","useState","blockProducer","block","chainInformation","addresses","find","address","sharedSigner","isTransactionBoundWitness","PayloadBuilder","txsFromBlock","chainArchivist","block","payloads","get","payload_hashes","transactionPayloads","filter","payload","isTransactionBoundWitness","PayloadBuilder","hashPairs","buildBlockChainRenderComponent","BlockComponent","blockComponentProps","chainArchivist","block","remainingProps","blockTxs","txsFromBlock","txHashes","map","_","hash","item","child","transactions","key","buildBlockHeadingComponent","BlockHeadingFlexbox","useDynamicBlockComponents","BlockComponent","params","maxBlocks","chainArchivist","chainInformation","blockChainRenderComponents","setBlockChainRenderComponents","useState","onBlock","useChainAnalyzersContext","onAddBlock","block","isBlockBoundWitness","blockComponentProps","newBlockComponent","buildBlockChainRenderComponent","blockComponents","newBlockComponents","length","pop","usePromise","useStaticBlockComponents","BlockComponent","params","blocks","onBlock","useChainAnalyzersContext","blockComponents","blockComponentsError","usePromise","resolvedBlockWithStorage","chainArchivist","chainInformation","Promise","all","map","block","blockComponentProps","defaultExpanded","buildBlockChainRenderComponent","errors","usePromise","useTxsFromBlock","chainArchivist","block","usePromise","txsFromBlock","Divider","Stack","React","LinkedDivider","React","Stack","className","justifyContent","sx","width","height","Divider","orientation","flexItem","borderRightWidth","transition","MoreVert","IconButton","Menu","BWJsonMenuItem","BWPreviousHashMenuItem","BlockMenuExpanded","block","anchorEl","anchorRef","open","handleClick","handleClose","useAnchorElement","IconButton","ref","size","onClick","MoreVert","fontSize","Menu","anchorOrigin","horizontal","vertical","onClose","BWPreviousHashMenuItem","boundwitness","dense","onDialogClose","BWJsonMenuItem","Chip","EthAddress","BlockiesAvatar","useMemo","BlockProducerChip","block","chainInformation","props","blockProducer","useMemo","producer","addresses","find","address","sharedSigner","shortedBlockProducer","EthAddress","parse","toShortString","avatar","undefined","BlockiesAvatar","blockiesOptions","seed","Chip","label","title","BlockHeadingFlexbox","block","defaultExpanded","chainInformation","transactions","hash","usePayloadHash","blockHeadingRef","blockHeadingListener","useBlockHeadingEvents","pollingState","useChainPollingContext","expanded","handleTransactionCountClick","event","stopPropagation","JSON","stringify","React","FlexCol","className","alignItems","ref","onClick","LinkedDivider","HashHeadingPaper","heading","hexToBigInt","toString","paperProps","sx","p","width","AdornmentEnd","FlexRow","gap","BlockProducerChip","TransactionCountChip","e","BWVerification","iconColors","boundwitness","span","style","display","transition","maxWidth","BlockMenuExpanded","identiconProps","size","Link","TableCell","Tooltip","React","useEvent","useLinkedBlockItem","noun","data","ref","dispatch","useEvent","handleClick","event","preventDefault","console","warn","BlockNumberTableCell","block","linked","props","ref","handleClick","useLinkedBlockItem","blockNumberBigInt","hexToBigInt","toString","React","TableCell","Tooltip","title","span","Link","onClick","sx","cursor","Avatar","Chip","TableCell","Tooltip","Identicon","usePayloadHash","React","BlockHashTableCell","block","identiconProps","linked","props","hash","usePayloadHash","ref","handleClick","useLinkedBlockItem","shortenedHash","slice","React","TableCell","Tooltip","title","Chip","avatar","Avatar","sx","background","Identicon","size","value","label","onClick","undefined","Code","Button","Dialog","DialogActions","DialogContent","DialogTitle","IconButton","TableCell","ellipsize","FlexRow","JsonViewerEx","usePayloadHash","React","useState","BlockJsonViewTableCell","block","props","open","setOpen","useState","onClose","hash","usePayloadHash","title","ellipsize","React","TableCell","FlexRow","sx","width","IconButton","onClick","Code","Dialog","DialogTitle","DialogContent","JsonViewerEx","value","DialogActions","display","flexDirection","justifyContent","Button","variant","TableCell","Tooltip","FlexRow","React","BlockProducerTableCell","block","chainInformation","linked","producerChipProps","props","ref","handleClick","useLinkedBlockItem","JSON","stringify","producer","useBlockProducer","React","TableCell","Tooltip","title","FlexRow","sx","width","BlockProducerChip","onClick","undefined","Error","Link","TableCell","Tooltip","React","BlockTransactionCountTableCell","block","chainArchivist","linked","props","txs","error","useTxsFromBlock","ref","handleClick","useLinkedBlockItem","JSON","stringify","React","TableCell","span","Tooltip","title","message","Error","color","Link","onClick","sx","cursor","length","TableCell","BWVerification","FlexRow","React","BlockVerificationTableCell","block","linked","props","ref","handleClick","useLinkedBlockItem","React","TableCell","FlexRow","sx","width","BWVerification","onClick","undefined","iconColors","boundwitness","TableBody","TableCell","TableHead","TableRow","TableEx","forwardRef","BlockchainTableEx","children","props","ref","align","displayName","TableRow","useMemo","BlockChainTableRow","block","chainInformation","linked","props","defaultTableCellProps","useMemo","TableRow","BlockHashTableCell","BlockNumberTableCell","BlockTransactionCountTableCell","BlockProducerTableCell","BlockVerificationTableCell","BlockJsonViewTableCell","Autorenew","Pause","Alert","AlertTitle","Grow","Icon","IconButton","Tooltip","FlexRow","React","memo","QueryStats","Dialog","DialogContent","DialogTitle","IconButton","useState","ListItem","styled","Typography","ErrorRender","FlexCol","isChainSummaryProducers","useMemo","Table","TableBody","TableCell","TableHead","TableRow","useTheme","BlockiesAvatar","React","ChainProducerStatsTable","producers","props","theme","useTheme","React","Table","TableHead","TableRow","TableCell","TableBody","map","producer","key","address","BlockiesAvatar","blockiesOptions","seed","sx","height","spacing","width","blocksProduced","toString","rewardsEarned","BlockProducerStatsFlexbox","payload","props","producer","producerError","useMemo","isChainSummaryProducers","undefined","Error","producersArray","Object","values","producers","FlexCol","alignItems","gap","ErrorRender","error","scope","Typography","fontSize","ChainProducerStatsTable","StyledListItem","styled","ListItem","paddingTop","paddingBottom","ChainAnalyzerStatsDialog","props","analyzers","statsUpdated","useChainAnalyzersContext","Dialog","DialogTitle","DialogContent","Object","entries","map","id","analyzer","div","key","BlockProducerStatsFlexbox","payload","result","ChainAnalyzerStatsDialogFromContext","open","setOpen","useState","handleClose","IconButton","onClick","QueryStats","onClose","alpha","createSvgIcon","keyframes","styled","PulseSvgIcon","svg","viewBox","version","xmlns","g","transform","circle","className","cx","cy","r","pulse1","pulse2","StyledPulseSvgIcon","theme","animation","fill","palette","success","main","divider","PollingControlsFlexbox","blocksBehind","pollingState","setPollingState","sharedAddress","paused","running","React","FlexRow","justifyContent","width","gap","IconButton","onClick","title","Pause","Autorenew","ChainAnalyzerStatsDialogFromContext","Grow","in","Tooltip","Alert","sx","py","px","cursor","severity","AlertTitle","mb","Icon","StyledPulseSvgIcon","className","MemoizedPollingControlsFlexbox","memo","Button","Dialog","DialogActions","DialogContent","React","TransactionsDialog","props","React","Dialog","DialogContent","DialogActions","Button","variant","onClick","e","onClose","useEffect","useRef","useOnBlock","initialHead","onAddBlock","liveHead","pollingState","blocksWhilePaused","useRef","lastLiveHead","useEffect","current","block","isNewBlock","push","length","TablePaginationActions","React","BlockChainPagination","count","onPageChange","page","rowsPerPage","React","TablePaginationActions","useMemo","useState","useChainPagination","pageSize","blockComponents","page","setPage","useState","paginatedBlockComponents","useMemo","startIndex","endIndex","slice","onPageChange","_event","newPage","ErrorRender","FlexCol","ChainProducersAnalyzer","React","useMemo","AnimatedList","styled","FlexCol","BlockListWrapperFlexBox","name","visibility","height","BlockListAnimated","blockChainRenderComponents","BlockListWrapperFlexBox","alignItems","width","AnimatedList","fullWidth","items","useMemo","assertEx","XyoChainBlockNumberIterator","ChainIteratorStore","_chainIterator","_externalListeners","_internalUnsubscribes","_values","chainIterator","assertEx","values","create","params","instance","XyoChainBlockNumberIterator","head","headUpdatedListener","blocks","emitChange","unsubscribe","on","weakRefListener","WeakRef","push","cleanup","unsubscribeRef","deref","getSnapshot","subscribe","onStoreChange","filter","l","listener","assertEx","usePromise","findFirstMatching","isBlockBoundWitness","BoundWitnessBuilder","resolveUndefinedHead","chainArchivist","firstMatching","assertEx","findFirstMatching","isBlockBoundWitness","undefined","JSON","stringify","resolveDefinedHead","head","headPayload","get","currentHead","BoundWitnessBuilder","build","useChainIteratorParams","chainInformation","usePromise","usePromise","useEffect","useMemo","useRef","useSyncExternalStore","toHex","findMostRecentBlock","useEffect","useState","useChainIteratorUpdatingHead","chainIterator","interval","maxBlocks","chainArchivist","error","setError","useState","useEffect","pollArchivistTimeout","pollingFunction","currentHead","head","mostRecentBlock","findMostRecentBlock","currentBlockNumber","block","hexToBigInt","BigInt","nextBlockNumber","console","debug","toHex","updateHead","e","setTimeout","clearInterval","stub","useChainIteratorStore","chainIteratorParams","chainIteratorStore","usePromise","ChainIteratorStore","create","undefined","chainIterator","chainArchivist","error","useChainIteratorUpdatingHead","useEffect","cleanup","cachedSnapshot","useRef","getSnapShot","subscribe","useMemo","snapshot","getSnapshot","newValues","noCachedValue","current","newBlock","head","block","bind","useSyncExternalStore","assertEx","usePromise","isBlockBoundWitness","XyoChainBlockNumberIterator","iterateChain","chainIteratorParams","maxDepth","chainArchivist","chainInformation","head","headPayload","assertEx","isBlockBoundWitness","headBlockBoundWitness","chainIterator","XyoChainBlockNumberIterator","create","block","blocks","depth","next","previous","push","useIterateChain","usePromise","useDynamicBlockRenderComponents","BlockComponent","blockChainRenderProps","maxBlocks","chainIteratorParams","useMemo","params","paramsError","useChainIteratorParams","blockChainRenderComponents","onAddBlock","useDynamicBlockComponents","head","liveHead","useChainIteratorStore","pollingState","updatePollingState","useChainPollingContext","blocksWhilePaused","useOnBlock","block","errors","usePromise","useMemo","useRemoteBlockChainRenderProps","chainArchivistModuleId","url","blockChainRenderPropsArg","chainArchivist","chainArchivistError","usePromise","getChainArchivistFromBridge","blockChainRenderProps","useMemo","error","Base","blockChainRenderProps","props","errors","blockChainRenderComponents","blocksWhilePaused","pollingState","updatePollingState","useDynamicBlockRenderComponents","BlockHeadingFlexbox","React","FlexCol","alignItems","map","error","index","ErrorRender","key","scope","MemoizedPollingControlsFlexbox","blocksBehind","length","setPollingState","sharedAddress","chainInformation","sharedSignerAccount","address","BlockListAnimated","WithAnalysis","analyzers","useMemo","producers","ChainProducersAnalyzer","sharedSigner","ChainAnalyzersProvider","ChainPollingProvider","DynamicBlockchainRenderFlexbox","WithRemote","url","chainArchivistModuleId","blockChainRenderPropsArg","useRemoteBlockChainRenderProps","ErrorRender","FlexCol","FlexGrowRow","ChainProducersAnalyzer","React","useMemo","useMemo","DEFAULT_PAGE_SIZE","useStaticBlockRenderComponents","BlockComponent","blockChainRenderProps","maxBlocks","pageSize","chainIteratorParams","useMemo","params","paramsError","useChainIteratorParams","blocks","blocksError","useIterateChain","blockComponents","errors","blockComponentsError","useStaticBlockComponents","onPageChange","page","paginatedBlockComponents","useChainPagination","Base","blockChainRenderProps","props","blockComponents","errors","paginatedBlockComponents","onPageChange","page","pageSize","useStaticBlockRenderComponents","BlockHeadingFlexbox","React","FlexCol","alignItems","gap","width","map","error","index","ErrorRender","key","scope","length","FlexGrowRow","justifyContent","ChainAnalyzerStatsDialogFromContext","BlockChainPagination","count","rowsPerPage","BlockListAnimated","blockChainRenderComponents","WithAnalysis","chainInformation","analyzers","useMemo","producers","ChainProducersAnalyzer","sharedSigner","ChainAnalyzersProvider","StaticBlockchainRenderFlexBox","usePromise","MemoryArchivist","useEffect","ChainArchivistDecorator","Story","context","blockChainRenderProps","blockChainRenderPropsError","usePromise","chainArchivist","MemoryArchivist","create","insert","ExampleBlockchainWithPayloads","chainInformation","getChainInformation","useEffect","console","error","props","args","delay","usePromise","isBlockBoundWitness","MemoryArchivist","chainArchivistRef","ChainArchivistDelayedInsertDecorator","Story","context","chainArchivist","usePromise","MemoryArchivist","create","nextBlockPayloads","payload","ExampleBlockchainWithPayloads","isBlockBoundWitness","push","insert","console","log","length","delay","blockChainRenderProps","chainInformation","getChainInformation","props","args","assertEx","usePromise","findFirstMatching","isBlockBoundWitness","XyoChainBlockNumberIterator","archivistConfig","url","chainArchivistModuleId","ChainInfoContextDecorator","Story","context","chainInformationResponse","usePromise","getChainInformation","chainInformation","chainArchivist","getChainArchivistFromBridge","chainIterator","firstMatch","assertEx","findFirstMatching","id","head","isBlockBoundWitness","undefined","JSON","stringify","XyoChainBlockNumberIterator","create","ChainInfoProvider"]}
|