diff --git a/packages/core/package.json b/packages/core/package.json index a4a7e989086..d4552a413bd 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -61,7 +61,7 @@ "typescript": "^4.7.4" }, "dependencies": { - "@cardano-ogmios/client": "5.5.2", + "@cardano-ogmios/client": "5.5.5", "@cardano-sdk/util": "^0.5.0", "@emurgo/cardano-serialization-lib-browser": "11.0.5", "@emurgo/cardano-serialization-lib-nodejs": "11.0.5", diff --git a/packages/core/src/Cardano/types/Block.ts b/packages/core/src/Cardano/types/Block.ts index 3829860ca8d..f51dea20653 100644 --- a/packages/core/src/Cardano/types/Block.ts +++ b/packages/core/src/Cardano/types/Block.ts @@ -1,3 +1,5 @@ +import { CSL } from '../..'; +import { Ed25519PublicKey } from '.'; import { Hash28ByteBase16, Hash32ByteBase16, OpaqueString, typedBech32 } from '../util/primitives'; import { InvalidStringError } from '../../errors'; import { Lovelace } from './Value'; @@ -31,6 +33,7 @@ export type BlockId = Hash32ByteBase16<'BlockId'>; export interface PartialBlockHeader { blockNo: BlockNo; slot: Slot; + /** Block header hash */ hash: BlockId; } @@ -74,18 +77,46 @@ export const SlotLeader = (value: string): SlotLeader => { } }; -export interface Block { +/** + * Get Bech32 encoded VRF verification key from base64 encoded string + * + * @param value is a Base64 string + * @returns Bech32 encoded vrf_vk + */ +export const VrfVkBech32FromBase64 = (value: string) => + VrfVkBech32(CSL.VRFVKey.from_bytes(Buffer.from(value, 'base64')).to_bech32('vrf_vk')); + +/** Minimal Block type meant as a base for the more complete version `Block` */ +// TODO: optionals (except previousBlock) are there because they are not calculated for Byron yet. +// Remove them once calculation is done and remove the Required from interface Block +export interface BlockMinimal { header: PartialBlockHeader; + /** Byron blocks fee not calculated yet */ + fees?: Lovelace; + totalOutput: Lovelace; + txCount: number; + /** Byron blocks size not calculated yet */ + size?: BlockSize; + previousBlock?: BlockId; + vrf?: VrfVkBech32; + /** + * This is the operational cold verification key of the stake pool + * Leaving as undefined for Byron blocks until we figure out how/if we can use the genesisKey field + */ + issuerVk?: Ed25519PublicKey; +} + +export interface Block + extends Required>, + Pick { + /** + * In case of blocks produced by BFT nodes, the SlotLeader the issuerVk hash + * For blocks produced by stake pools, it is the Bech32 encoded value of issuerVk hash + */ + slotLeader: SlotLeader; date: Date; epoch: EpochNo; epochSlot: number; - slotLeader: SlotLeader; - size: BlockSize; - txCount: number; - totalOutput: Lovelace; - fees: Lovelace; - vrf: VrfVkBech32; - previousBlock?: BlockId; nextBlock?: BlockId; confirmations: number; } diff --git a/packages/core/src/Ogmios/index.ts b/packages/core/src/Ogmios/index.ts new file mode 100644 index 00000000000..277ec49dea7 --- /dev/null +++ b/packages/core/src/Ogmios/index.ts @@ -0,0 +1,6 @@ +import * as Ogmios from '@cardano-ogmios/client'; + +export * as ogmiosToCore from './ogmiosToCore'; +export * as Ogmios from '@cardano-ogmios/client'; +export { Schema } from '@cardano-ogmios/client'; +export type OgmiosTypescriptLib = typeof Ogmios; diff --git a/packages/core/src/Ogmios/ogmiosToCore/index.ts b/packages/core/src/Ogmios/ogmiosToCore/index.ts new file mode 100644 index 00000000000..64e7ec20cbc --- /dev/null +++ b/packages/core/src/Ogmios/ogmiosToCore/index.ts @@ -0,0 +1 @@ +export * from './ogmiosToCore'; diff --git a/packages/core/src/Ogmios/ogmiosToCore/ogmiosToCore.ts b/packages/core/src/Ogmios/ogmiosToCore/ogmiosToCore.ts new file mode 100644 index 00000000000..6bb1b890600 --- /dev/null +++ b/packages/core/src/Ogmios/ogmiosToCore/ogmiosToCore.ts @@ -0,0 +1,171 @@ +import { BigIntMath } from '@cardano-sdk/util'; +import { Schema, isByronStandardBlock } from '@cardano-ogmios/client'; + +import { Cardano, Ogmios } from '../..'; + +type KeysOfUnion = T extends T ? keyof T : never; +/** + * Ogmios has actual block under a property named like the era (e.g. `block.alonzo`). + * This type creates a union with all the properties. It is later used in + * [exhaustive switches](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#exhaustiveness-checking) + * to make sure all block types are handled and future blocks types will generate compile time errors. + */ +type BlockKind = KeysOfUnion; +type OgmiosBlockType = + | Schema.BlockAllegra + | Schema.BlockAlonzo + | Schema.BlockBabbage + | Schema.StandardBlock + | Schema.BlockMary + | Schema.BlockShelley; + +type CommonBlock = Exclude; + +interface Block { + block: B; + kind: T; +} + +type BlockAndKind = + | Block + | Block + | Block + | Block + | Block + | Block; + +/** + * @returns + * - {BlockAndKind} that unlocks type narrowing in switch statements based on `kind`. + * Another advantage of using switch is using exhaustive check of case branches, making sure that future new + * block kinds will cause compilation errors, instead of silently fail or runtime errors. + * - `null` if `block` is the ByronEpochBoundaryBlock. This block can be skipped + */ +// eslint-disable-next-line complexity +const getBlockAndKind = (block: Schema.Block): BlockAndKind | null => { + let propName: BlockKind = 'alonzo'; + if (Ogmios.isAllegraBlock(block)) propName = 'allegra'; + if (Ogmios.isAlonzoBlock(block)) propName = 'alonzo'; + if (Ogmios.isBabbageBlock(block)) propName = 'babbage'; + if (Ogmios.isByronBlock(block)) propName = 'byron'; + if (Ogmios.isMaryBlock(block)) propName = 'mary'; + if (Ogmios.isShelleyBlock(block)) propName = 'shelley'; + + // If it complains because a branch is not handled, please add logic for the new block type. + switch (propName) { + case 'allegra': + return { block: (block as Schema.Allegra).allegra, kind: 'allegra' }; + case 'alonzo': + return { block: (block as Schema.Alonzo).alonzo, kind: 'alonzo' }; + case 'babbage': + return { block: (block as Schema.Babbage).babbage, kind: 'babbage' }; + case 'byron': + // Return `null` if it is the EBB block to signal that it can be skipped + return isByronStandardBlock(block) ? { block: block.byron, kind: 'byron' } : null; + case 'mary': + return { block: (block as Schema.Mary).mary, kind: 'mary' }; + case 'shelley': + return { block: (block as Schema.Shelley).shelley, kind: 'shelley' }; + default: { + // will fail at compile time if not all branches are handled + // eslint-disable-next-line sonarjs/prefer-immediate-return + const _exhaustiveCheck: never = propName; + return _exhaustiveCheck; + } + } +}; + +// Mappers that apply to all Block types +const mapBlockHeight = (block: OgmiosBlockType): number => block.header.blockHeight; +const mapBlockSlot = (block: OgmiosBlockType): number => block.header.slot; +const mapPreviousBlock = (block: OgmiosBlockType): Cardano.BlockId => Cardano.BlockId(block.header.prevHash); + +// Mappers specific to Byron block properties +const mapByronHash = (block: Schema.StandardBlock): Cardano.BlockId => Cardano.BlockId(block.hash); +const mapByronTotalOutputs = (block: Schema.StandardBlock): bigint => + BigIntMath.sum( + block.body.txPayload.map(({ body: { outputs } }) => BigIntMath.sum(outputs.map(({ value: { coins } }) => coins))) + ); +const mapByronTxCount = (block: Schema.StandardBlock): number => block.body.txPayload.length; + +// Mappers for the rest of Block types +const mapCommonTxCount = (block: CommonBlock): number => block.body.length; +const mapCommonHash = (block: CommonBlock): Cardano.BlockId => Cardano.BlockId(block.headerHash); +const mapCommonTotalOutputs = (block: CommonBlock): Cardano.Lovelace => + BigIntMath.sum( + block.body.map(({ body: { outputs } }) => BigIntMath.sum(outputs.map(({ value: { coins } }) => coins))) + ); +const mapCommonBlockSize = (block: CommonBlock): number => block.header.blockSize; +const mapCommonFees = (block: CommonBlock): Cardano.Lovelace => + block.body.map(({ body: { fee } }) => fee).reduce((prev, current) => prev + current, 0n); +// This is the VRF verification key, An Ed25519 verification key. +const mapCommonVrf = (block: CommonBlock): Cardano.VrfVkBech32 => Cardano.VrfVkBech32FromBase64(block.header.issuerVrf); +// SlotLeader is the producer pool id. It can be calculated from the issuer verification key +// which is actually the cold verification key +const mapCommonSlotLeader = (block: CommonBlock): Cardano.Ed25519PublicKey => + Cardano.Ed25519PublicKey(block.header.issuerVk); + +export const mapByronBlock = (block: Schema.StandardBlock): Cardano.BlockMinimal => ({ + fees: undefined, // TODO: figure out how to calculate fees + header: { + blockNo: mapBlockHeight(block), + hash: mapByronHash(block), + slot: mapBlockSlot(block) + }, + // TODO: use the genesisKey to provide a value here, but it needs more work. Leaving as undefined for now + issuerVk: undefined, + previousBlock: mapPreviousBlock(block), + // TODO: calculate byron blocksize by transforming into CSL Block object + size: undefined, + totalOutput: mapByronTotalOutputs(block), + txCount: mapByronTxCount(block), + vrf: undefined // no vrf key for byron. DbSync doesn't have one either +}); + +export const mapCommonBlock = (block: CommonBlock): Cardano.BlockMinimal => ({ + fees: mapCommonFees(block), + header: { + blockNo: mapBlockHeight(block), + hash: mapCommonHash(block), + slot: mapBlockSlot(block) + }, + issuerVk: mapCommonSlotLeader(block), + previousBlock: mapPreviousBlock(block), + size: mapCommonBlockSize(block), + totalOutput: mapCommonTotalOutputs(block), + txCount: mapCommonTxCount(block), + vrf: mapCommonVrf(block) +}); + +/** + * Translate `Ogmios` block to `Cardano.BlockMinimal` + * + * @param ogmiosBlock the block to translate into a `Cardano.BlockMinimal` + * @returns + * - {Cardano.BlockMinimal} a minimal block type encompassing information extracted from Ogmios block type. + * - `null` if `block` is the ByronEpochBoundaryBlock. This block can be skipped. + */ +export const getBlock = (ogmiosBlock: Schema.Block): Cardano.BlockMinimal | null => { + const b = getBlockAndKind(ogmiosBlock); + if (!b) return null; + + switch (b.kind) { + case 'byron': { + return mapByronBlock(b.block); + } + case 'babbage': + case 'allegra': + case 'alonzo': + case 'mary': + case 'shelley': { + return mapCommonBlock(b.block); + } + default: { + // eslint-disable-next-line sonarjs/prefer-immediate-return + const _exhaustiveCheck: never = b; + return _exhaustiveCheck; + } + } +}; + +// byron-shelley-allegra-mary-alonzo-babbage diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 87d4bea9015..73e4647d6be 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -5,3 +5,4 @@ export * from './CSL'; export * from './util'; export * from './errors'; export * from './CardanoNode'; +export * from './Ogmios'; diff --git a/packages/core/test/Ogmios/ogmiosToCore.test.ts b/packages/core/test/Ogmios/ogmiosToCore.test.ts new file mode 100644 index 00000000000..caf8bc0c9d1 --- /dev/null +++ b/packages/core/test/Ogmios/ogmiosToCore.test.ts @@ -0,0 +1,133 @@ +import { Cardano, ogmiosToCore } from '../../src'; + +import { + mockAllegraBlock, + mockAlonzoBlock, + mockBabbageBlock, + mockByronBlock, + mockMaryBlock, + mockShelleyBlock +} from './testData'; + +describe('ogmiosToCore', () => { + it('can translate from byron block', () => { + // using https://preprod.cardanoscan.io/block/42 as source of truth + expect(ogmiosToCore.getBlock(mockByronBlock)).toEqual({ + fees: undefined, + header: { + blockNo: 42, + hash: Cardano.BlockId('5c3103bd0ff5ea85a62b202a1d2500cf3ebe0b9d793ed09e7febfe27ef12c968'), + slot: 77_761 + }, + issuerVk: undefined, + previousBlock: Cardano.BlockId('dd8d7559a9b6c1177c0f5a328eb82967af68155d58cbcdc0a59de39a38aaf3f0'), + // got size: 626 by querying the postgres db populated by db-sync. + // Using size: undefined until we can calculate it + size: undefined, + totalOutput: 0n, + txCount: 0, + vrf: undefined + }); + }); + + it('can translate from shelley block', () => { + // using https://preprod.cardanoscan.io/block/1087 as source of truth + expect(ogmiosToCore.getBlock(mockShelleyBlock)).toEqual({ + fees: 0n, + header: { + blockNo: 1087, + hash: Cardano.BlockId('071fceb6c20a412b9a9b57baedfe294e3cd9de641cd44c4cf8d0d56217e083ac'), + slot: 107_220 + }, + issuerVk: Cardano.Ed25519PublicKey('8b0960d234bda67d52432c5d1a26aca2bfb5b9a09f966d9592a7bf0c728a1ecd'), + previousBlock: Cardano.BlockId('8d5d930981710fc8c6ca9fc8e0628665283f7efb28c7e6bddeee2d289f012dee'), + // got size by querying the postgres db populated by db-sync + size: 3, + totalOutput: 0n, + txCount: 0, + // vrf from https://preprod.cexplorer.io/block/071fceb6c20a412b9a9b57baedfe294e3cd9de641cd44c4cf8d0d56217e083ac + vrf: Cardano.VrfVkBech32('vrf_vk15c2edf9h66wllthgvyttzhzwrngq0rvd0wchzqlw8qray60fq5usfngf29') + }); + }); + + it('can translate from allegra block', () => { + // Verify data extracted from mock structure + const ogmiosBlock = mockAllegraBlock.allegra; + expect(ogmiosToCore.getBlock(mockAllegraBlock)).toEqual({ + fees: ogmiosBlock.body[0].body.fee, + header: { + blockNo: ogmiosBlock.header.blockHeight, + hash: Cardano.BlockId(ogmiosBlock.headerHash), + slot: ogmiosBlock.header.slot + }, + issuerVk: Cardano.Ed25519PublicKey(ogmiosBlock.header.issuerVk), + previousBlock: Cardano.BlockId(ogmiosBlock.header.prevHash), + size: ogmiosBlock.header.blockSize, + totalOutput: 0n, + txCount: ogmiosBlock.body.length, + vrf: Cardano.VrfVkBech32FromBase64(ogmiosBlock.header.issuerVrf) + }); + }); + + it('can translate from mary block', () => { + // Verify data extracted from mock structure + const ogmiosBlock = mockMaryBlock.mary; + expect(ogmiosToCore.getBlock(mockMaryBlock)).toEqual({ + fees: ogmiosBlock.body[0].body.fee + ogmiosBlock.body[1].body.fee, + header: { + blockNo: ogmiosBlock.header.blockHeight, + hash: Cardano.BlockId(ogmiosBlock.headerHash), + slot: ogmiosBlock.header.slot + }, + issuerVk: Cardano.Ed25519PublicKey(ogmiosBlock.header.issuerVk), + previousBlock: Cardano.BlockId(ogmiosBlock.header.prevHash), + size: ogmiosBlock.header.blockSize, + totalOutput: + ogmiosBlock.body[0].body.outputs[0].value.coins + + ogmiosBlock.body[1].body.outputs[0].value.coins + + ogmiosBlock.body[1].body.outputs[1].value.coins, + txCount: ogmiosBlock.body.length, + vrf: Cardano.VrfVkBech32FromBase64(ogmiosBlock.header.issuerVrf) + }); + }); + + it('can translate from alonzo block', () => { + // using https://preprod.cardanoscan.io/block/100000 as source of truth + expect(ogmiosToCore.getBlock(mockAlonzoBlock)).toEqual({ + fees: 202_549n, + header: { + blockNo: 100_000, + hash: Cardano.BlockId('514f8be63ef25c46bee47a90658977f815919c06222c0b480be1e29efbd72c49'), + slot: 5_481_752 + }, + issuerVk: Cardano.Ed25519PublicKey('a9d974fd26bfaf385749113f260271430276bed6ef4dad6968535de6778471ce'), + + previousBlock: Cardano.BlockId('518a24a3fb0cc6ee1a31668a63994e4dbda70ede5ff13be494a3b4c1bb7709c8'), + // got size by querying the postgres db populated by db-sync + size: 836, + totalOutput: 8_287_924_709n, + txCount: 1, + // vrf from https://preprod.cexplorer.io/block/514f8be63ef25c46bee47a90658977f815919c06222c0b480be1e29efbd72c49 + vrf: Cardano.VrfVkBech32('vrf_vk1p8s5ysf7dgsvfrw0p0q7zczdytkxc95zsq3p9sfshk9s3z86jfdql5fdft') + }); + }); + + it('can translate from babbage block', () => { + // Verify data extracted from mock structure + const ogmiosBlock = mockBabbageBlock.babbage; + expect(ogmiosToCore.getBlock(mockBabbageBlock)).toEqual({ + fees: ogmiosBlock.body[0].body.fee, + header: { + blockNo: ogmiosBlock.header.blockHeight, + hash: Cardano.BlockId(ogmiosBlock.headerHash), + slot: ogmiosBlock.header.slot + }, + issuerVk: Cardano.Ed25519PublicKey(ogmiosBlock.header.issuerVk), + previousBlock: Cardano.BlockId(ogmiosBlock.header.prevHash), + size: ogmiosBlock.header.blockSize, + totalOutput: ogmiosBlock.body[0].body.outputs[0].value.coins, + txCount: ogmiosBlock.body.length, + vrf: Cardano.VrfVkBech32FromBase64(ogmiosBlock.header.issuerVrf) + }); + }); +}); diff --git a/packages/core/test/Ogmios/testData.ts b/packages/core/test/Ogmios/testData.ts new file mode 100644 index 00000000000..6b2221221bd --- /dev/null +++ b/packages/core/test/Ogmios/testData.ts @@ -0,0 +1,660 @@ +/* eslint-disable max-len */ +import { Ogmios } from '../../src'; + +// Mock data extracted using ogmios chain-sync api from the preprod network +export const mockByronBlock: Ogmios.Schema.Byron = { + byron: { + body: { dlgPayload: [], txPayload: [], updatePayload: { proposal: null, votes: [] } }, + hash: '5c3103bd0ff5ea85a62b202a1d2500cf3ebe0b9d793ed09e7febfe27ef12c968', + header: { + blockHeight: 42, + genesisKey: + '63e55a8f421a31eab4fa85a342be61884978124f9c5ac2aaee6b9f4cee30b9ed91e80e80325a840c857bbd8b1ddcd656a261b90c6730480c3612fd4ccf6e8b20', + prevHash: 'dd8d7559a9b6c1177c0f5a328eb82967af68155d58cbcdc0a59de39a38aaf3f0', + proof: { + delegation: 'afc0da64183bf2664f3d4eec7238d524ba607faeeab24fc100eb861dba69971b', + update: '4e66280cd94d591072349bec0a3090a53aa945562efb6d08d56e53654b0e4098', + utxo: { + number: 0, + root: '0e5751c026e543b2e8ab2eb06099daa1d1e5df47778f7787faab45cdf12fe3a8', + witnessesHash: 'afc0da64183bf2664f3d4eec7238d524ba607faeeab24fc100eb861dba69971b' + } + }, + protocolMagicId: 1, + protocolVersion: { major: 2, minor: 0, patch: 0 }, + signature: { + dlgCertificate: { + delegateVk: + '618b625df30de53895ff29e7a3770dca56c2ff066d4aa05a6971905deecef6dbb7dd10ea1f9175e5293eadec97bf16b167af379a7b3ed4af032cd07b99ecc1ea', + epoch: 0, + issuerVk: + '63e55a8f421a31eab4fa85a342be61884978124f9c5ac2aaee6b9f4cee30b9ed91e80e80325a840c857bbd8b1ddcd656a261b90c6730480c3612fd4ccf6e8b20', + signature: 'yjjmiOdZGDtX0IymVoJIuRyN3YHlbQ0xw/Oibso1dUOHxfMB7wF9r65FOpN1fTmg4tMm6+Wc8x1cGyL8hhasAA==' + }, + signature: 'k8f+GE++0EqaU15eHwyRmjx1q4PkKYsGYNn5+4+HqyIhUJp+U3c8UCQfGJzJkmPXNuBpYwNpMqR0dlyFFo06AQ==' + }, + slot: 77_761, + softwareVersion: { appName: 'cardano-sl', number: 1 } + } + } +}; + +export const mockShelleyBlock: Ogmios.Schema.Shelley = { + shelley: { + body: [], + header: { + blockHash: '1033376be025cb705fd8dd02eda11cc73975a062b5d14ffd74d6ff69e69a2ff7', + blockHeight: 1087, + blockSize: 3, + issuerVk: '8b0960d234bda67d52432c5d1a26aca2bfb5b9a09f966d9592a7bf0c728a1ecd', + issuerVrf: 'phWWpLfWnf+u6GEWsVxOHNAHjY17sXED7jgH0mnpBTk=', + leaderValue: { + output: 'ZF97DP3S397Nfq92ONpp71blPUGj0cbYQVo97NMHeGBYPWd4EaWZ84ZaMLzfJhMZUjQFEGIqu1Ud9IHESeDWlA==', + proof: + 'epv9SsB1F5Qxl+c+ICvg5zVlcl3KoxRsjUYLTEB2/HFVO2axpas3yxdl3dogc/FjDnSywZuABeo6mlzbqinTB1gb0OJEi94409TxnMh4kQk=' + }, + nonce: { + output: '91OdoWjut1k57TgBVwn8skB+vaW41UPjhIat9FxkeqwjJmjFwleniCd6lt1/jPoK7kM9CTGjjeMlM0Hx1PpyBQ==', + proof: + 'FoVPvE8WXWZPGV6N34UKGO4eYqTq9nJ9HXYYNcRwRMStIFU1IcXycZYfQDbQmBNM4G8MoGbkLwtjmQNof/Gkt/fgQaenzuR2AYQ16Y0TxAk=' + }, + opCert: { + count: 0, + hotVk: 'ZE19caAXs+5318K36Z6qxqgqa+BbMorotBNPORRoWlY=', + kesPeriod: 0, + sigma: 'JFL7hL7IjPzyuTcPLNDVmbPolzSbH+NyGkzP6hsPeSCMtzX0ZgoDGLCfgw8Iw3rxdyg8VypMklmG2Pzv3iGVBg==' + }, + prevHash: '8d5d930981710fc8c6ca9fc8e0628665283f7efb28c7e6bddeee2d289f012dee', + protocolVersion: { major: 3, minor: 0 }, + signature: + '3nZG/HqNVVrPk5AMIt36PXFU4aKE2r0PDWFPq6+3j9wwg6YohJSFbHdE2BJjWN/WKbqCwUD17o3OB05EiFh7BJy4fKozuTpJrsr2GXgzR+UrtygDE3xR+WPp8JF5JAWkXrMD8fuRnwrYi1QUE7ApMl1220qkkgqisPSS9omTNbuNNUkaayjsNJC7q2X0rK67Mz/fybA7NQ8KSlynEshQeXe9CrE13qpm0xM1HgnbRLx+cqin4vCxjD/dLppQdrv3F9a3Jez0HbjO3EMZR1QpCr4dasw26Bv5omfdmnqeot48N42t1S7LIjXneFCBBkWA/L+4wPcet9eo8vlRYchpKRpb4+GReHk+B8BhigH6dqTtiQP97+dr/guRX+bPso/zlg2H1zTJFGHEZlkQuvabNVQ7rtGdCVbDNFnpJoXxvPJRXOK3U7xREuPQwM6RKTmUYgC/g4C3jAM1nWtbrpy+3wYZlRayG6z/vR4Bc1FXMGzImVvJciiGNB73MEPaLUJkZ8Sq84PdB5uKVn6OLd3EtDUHdDLzv+j47ErAPPuTx4FsnMvRXRQsi9M008/XE/jKqp7vKuuWGDVPOC7bpjhvLA==', + slot: 107_220 + }, + headerHash: '071fceb6c20a412b9a9b57baedfe294e3cd9de641cd44c4cf8d0d56217e083ac' + } +}; + +export const mockAlonzoBlock: Ogmios.Schema.Alonzo = { + alonzo: { + body: [ + { + body: { + certificates: [], + collaterals: [], + fee: 202_549n, + inputs: [ + { index: 0, txId: '1a3380c51384d151b876de02b7a4c5ca7eda7b1d1d744660aee4647516fd9a81' }, + { index: 1, txId: '1a3380c51384d151b876de02b7a4c5ca7eda7b1d1d744660aee4647516fd9a81' } + ], + mint: { assets: {}, coins: 0n }, + network: null, + outputs: [ + { + address: 'addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc', + datum: null, + datumHash: null, + value: { assets: {}, coins: 999_978n } + }, + { + address: 'addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc', + datum: null, + datumHash: null, + value: { assets: {}, coins: 8_286_924_731n } + } + ], + requiredExtraSignatures: [], + scriptIntegrityHash: null, + update: null, + validityInterval: { invalidBefore: null, invalidHereafter: 5_581_748 }, + withdrawals: {} + }, + id: 'bb81604e09c4530ad02de6b80a0c13d82949fb307402dd0c2b447e211bdc621d', + inputSource: 'inputs', + metadata: { + body: { + blob: { + '674': { + map: [ + { + k: { string: 'msg' }, + v: { + list: [ + { string: 'Auto-Loop-Transaction #338666 by ATADA' }, + { string: '' }, + { string: 'Live Epoch 16, we have 061h 17m 32s left until the next one' }, + { string: "It's Montag - 22 August 2022 - 12:42:28 in Austria" }, + { string: '' }, + { string: '📈 The current ADA Price on Kraken is: $0.451502 / ADA' }, + { string: '' }, + { string: 'A random Zen-Quote for you: 🙏' }, + { string: 'There are three classes of people: those who see. Those who see' }, + { string: 'when they are shown. Those who do not see. - Leonardo da Vinci' }, + { string: '' }, + { string: 'Node-Revision: 950c4e222086fed5ca53564e642434ce9307b0b9' }, + { string: '' }, + { string: 'PreProd-Chain is awesome, have some fun! 😍' }, + { string: ' Best regards, Martin :-)' } + ] + } + } + ] + } + }, + scripts: [] + }, + hash: '0ad6d4a6e10182157142994b2cce2aebee9406e3e2be31bfb1574ed2409a71dc' + }, + raw: 'hKUAgoJYIBozgMUThNFRuHbeArekxcp+2nsdHXRGYK7kZHUW/ZqBAIJYIBozgMUThNFRuHbeArekxcp+2nsdHXRGYK7kZHUW/ZqBAQGCglgdYFLmPyLFEH7XdrcPe5IkiwJVL9CPPnR7x0UJlEEaAA9CKoJYHWBS5j8ixRB+13a3D3uSJIsCVS/Qjz50e8dFCZRBGwAAAAHt8G+7AhoAAxc1AxoAVSu0B1ggCtbUpuEBghVxQplLLM4q6+6UBuPivjG/sVdO0kCacdyhAIGCWCB0LYrzVDNJtbGPPLoo8jstbkZbnBNsQuH65rI5D1ZUJ1hASE0MJCvCQBY6GshFaPv4cNg8//csJTLCrLUdEqIium57YzPIgSPubgTKeMPGHC1ZMuogYsWQk6lfzEw1w0EyBvXZAQOhAKEZAqKhY21zZ494JkF1dG8tTG9vcC1UcmFuc2FjdGlvbiAjMzM4NjY2IGJ5IEFUQURBYHg7TGl2ZSBFcG9jaCAxNiwgd2UgaGF2ZSAwNjFoIDE3bSAzMnMgbGVmdCB1bnRpbCB0aGUgbmV4dCBvbmV4Mkl0J3MgTW9udGFnIC0gMjIgQXVndXN0IDIwMjIgLSAxMjo0MjoyOCBpbiBBdXN0cmlhYHg48J+TiCBUaGUgY3VycmVudCBBREEgUHJpY2Ugb24gS3Jha2VuIGlzOiAkMC40NTE1MDIgLyBBREFgeCBBIHJhbmRvbSBaZW4tUXVvdGUgZm9yIHlvdTog8J+Zj3g/VGhlcmUgYXJlIHRocmVlIGNsYXNzZXMgb2YgcGVvcGxlOiB0aG9zZSB3aG8gc2VlLiBUaG9zZSB3aG8gc2VleD53aGVuIHRoZXkgYXJlIHNob3duLiBUaG9zZSB3aG8gZG8gbm90IHNlZS4gLSBMZW9uYXJkbyBkYSBWaW5jaWB4N05vZGUtUmV2aXNpb246IDk1MGM0ZTIyMjA4NmZlZDVjYTUzNTY0ZTY0MjQzNGNlOTMwN2IwYjlgeC1QcmVQcm9kLUNoYWluIGlzIGF3ZXNvbWUsIGhhdmUgc29tZSBmdW4hIPCfmI14GSBCZXN0IHJlZ2FyZHMsIE1hcnRpbiA6LSk=', + witness: { + bootstrap: [], + datums: {}, + redeemers: {}, + scripts: {}, + signatures: { + '742d8af3543349b5b18f3cba28f23b2d6e465b9c136c42e1fae6b2390f565427': + 'SE0MJCvCQBY6GshFaPv4cNg8//csJTLCrLUdEqIium57YzPIgSPubgTKeMPGHC1ZMuogYsWQk6lfzEw1w0EyBg==' + } + } + } + ], + header: { + blockHash: '81f6f3ded8f36d7a2c2ca7ce2e17e92ed1c89a10614ce3809147e00c62737be2', + blockHeight: 100_000, + blockSize: 836, + issuerVk: 'a9d974fd26bfaf385749113f260271430276bed6ef4dad6968535de6778471ce', + issuerVrf: 'CeFCQT5qIMSNzwvB4WBNIuxsFoKAIhLBML2LCIj6klo=', + leaderValue: { + output: 'AFDmQN+gYm96xAXIPUC2xxydypzSwqAXls3zO59QANqqORSy1kudgcx5rhatWwIsezanVHdTGgN7u3/2w9O1hw==', + proof: + '1JXMj5k6O+rFp070XnPkgvZB7oPmcv7iPOYTiMZyKRYNSIPTt45+VQqTPMqJYqDVblVMK+fX/2IGaZLjqbZ4k3E1b8PXV6Qc5Dz87hxq9AI=' + }, + nonce: { + output: 'FyuHnIpMWP7WL0W+O1+ME20w9nXwLX7lDY2Erw06ooEM7+vXnGAsRz1rfSnR4OmOO820Qpt8HvTUpi/XRgAKFw==', + proof: + 'GLq7HB8ieEIJ4Ibnd/c1+llYsF7kzGXDgtjwzwCv3z6YFk2Y+FlEmv0+Ro1P2hm/s654hd8XHZkaa/51ZACkClwfYhLVxYsiTzpkrrZuiAI=' + }, + opCert: { + count: 0, + hotVk: 'ysODGAjAo6l3jFFhqfsy10OYCuDBhPp3y3n0uKdy5rI=', + kesPeriod: 0, + sigma: 'RjhSh4wwXa0vokE78kBsN2W52PxEDRa8ZJykaTZg3rPzgBvMGtsv/XeAesGBl1pEJYkF59voPnSUYqg+4ugIBg==' + }, + prevHash: '518a24a3fb0cc6ee1a31668a63994e4dbda70ede5ff13be494a3b4c1bb7709c8', + protocolVersion: { major: 7, minor: 2 }, + signature: + '4tQuhpOv/vlwSHuhsiYh0M7bbTnH2fss3C9pAvQmWZ07ZG1ADzlFE7oe4a5Gm1lhoqeLQbTE4gJbemsM6ppaAE+K3XZfRhjOM6TwRMJKjeu37aCvGRGKgRg9vZmXrglVAX6GjThReulcxrhmotP+3SrovbP9Ip48ZMbfqxF1ZHQ6odHxnVcc65Mr6lIM8fLnhwxrDKdmN1E0ItzqAbSGVQgeFTqd+RM5r6EPoYkY028Q1o30sPH09a+Ub7qACDHpwHiVlOGolUlAnkks00hY5lvOL9awe4w2bhahOEwixaCChsj6IA1cDAYhWD+6ZK1crxJGOPMoZJ2OXnhmnvYO6eshfDGVbwT+qnssvL6g0TdZzA4Rk6YcLTd9UWLHIt977deE6ZRhiRORRA5Zmv7aFThYGaDwIM9MTxrVtMb87xEJXT2WElA72r39H8vnz7UIeKcw3vLldwmGVTcmH0Y0qUCey+y0mDXAIIYkx0530AmPbOz/nAcOhfSJdL9lPfiPK61Nm/kU13a/OOvdFi26Cg5NKFsmDkGJEvGQj+eBmYcyAwtBRiJbpudUJ6/mdYEtPUz0SFgjnPDXUThJs4LYdA==', + slot: 5_481_752 + }, + headerHash: '514f8be63ef25c46bee47a90658977f815919c06222c0b480be1e29efbd72c49' + } +}; + +export const mockAlonzoBlockEmptyBody: Ogmios.Schema.Alonzo = { + alonzo: { + body: [], + header: { + blockHash: '29571d16f081709b3c48651860077bebf9340abb3fc7133443c54f1f5a5edcf1', + blockHeight: 23_000, + blockSize: 4, + issuerVk: '9691ed9d98a5b79d5bc46c4496a6dba7e103f668f525c8349b6b92676cb3eae4', + issuerVrf: '6knkZSxGC57m2q/vyZnKZn++XrXXp66rvf9v4ZwaPJ8=', + leaderValue: { + output: 'AwPhdFUfEYbokiJq1cjwieRXR8r5/QpEj2SXdyzgs86T9dX4tdZCrSSmTHTWroIWjbxSqjoH+ttov1jymhk3JQ==', + proof: + 'tx5VXLJtU7zbTH/mhU7vCiGt2AFA287y/OzGXNu1NGre0juZPbEsLNgY9BaO9AMg3FPLmu39O+Ka4xOp0ewL0EwbLmIc8iXLGysAqYN3MwE=' + }, + nonce: { + output: 'jdnCzYdUjUpxzT4Hb3j3U0E9+XX/Fip5eSknNcin5wlTVoBGIJI9yul5bfCs8LdXFuupdRRZpZHcmWnFcJShlQ==', + proof: + '/6l+pabQB4QlQWR8kKMjplgnDyBQj2efijEhHj9nzF1HNkgeY642La8069fEuFvojXVszcBcC23u1Qg8csC2HIGKRm7WwnOBkTXPQLbNMAU=' + }, + opCert: { + count: 0, + hotVk: '5493ENKPo6J9IQ56RhQAHh/vnih8nEdv04SBWXz8VN8=', + kesPeriod: 0, + sigma: '3T+5K94zX11ty1Ha8pje6tbyoWTgeMS441rtY1UB5pbS/oPugKt4E0qUTeIOx50FzHAuuJ6qcXEYsXuhryt/Dw==' + }, + prevHash: 'e08f4606b4da6226261ba3f7c95e16f9d4ef57a3800c9e42aba908939dd759d9', + protocolVersion: { major: 6, minor: 0 }, + signature: + 'PuxzmKb+HPYKp/i8qusmz1Wr5Npx7G6Fi38flIQ2mq8/aXv12T0isyk0ZrxQJ7Su00IdCjWzru5eszlQ1Fh4A7jhuEBC7a2a7+d/J+nS4BbW51VMAVkpFvMuhkI53f5bZReEaNUowh6FIHzYZD+LAPwE83S3sfpM4tFqwC/lklC5ekjzQXB8ZThou0/+y1VaTWsM5vRDtoFg1tua5PH+l/56FOIJC2ff8ZUM2fPr8z3mGcCPl4A8Xi6WS3Lu0pw5Kdn0ExkkIu0flpnHi8uKYiyf7ifJgCOcCBjppr5lIm9CABPBJjBrbD7GDAJPQCopp3GWcV1AIbDYgUkz7zGsQm1sC5Ilz5CRqFN2dyDiodvLeO6s8Cf3Veb6TTLSceoWRz7z7eOjcPwGddHq783xyoHff0OiojvfmNEks5fC/sP3eWnLfpK3ii1mB+p01T8epBtd3fGwsMZBQ9VDpsnovvRHJgfFLY1PrMzTFp8h5jVIQ9gVAzue7z/Vfi20QKIzz3nA5arNY3WDUEmJe128fvjIUifXO6J1XHcu1vitHCledw4FGlzDyA/fWOwlv4rs1LxqAvUtZt1k67f8lBtaaA==', + slot: 3_900_835 + }, + headerHash: '1b1af00bfa1ecdf2844bb9a3fb703e57d5854d077f444cbddefa7c107c908040' + } +}; + +// Data from ogmios test data +export const mockAllegraBlock: Ogmios.Schema.Allegra = { + allegra: { + body: [ + { + body: { + certificates: [], + fee: 724n, + inputs: [{ index: 2, txId: '03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314' }], + outputs: [], + update: { epoch: 57_293, proposal: {} }, + validityInterval: { invalidBefore: null, invalidHereafter: 79_985 }, + withdrawals: {} + }, + id: '8ba812bad0c356ec842365720acb4a4ea18f03d40b03ad1cc785426170d542f5', + metadata: { + body: { + blob: { '2': { list: [{ int: 9_798_604_473_814_314_674n }, { bytes: '7a43' }] } }, + scripts: [ + { native: 'b5ae663aaea8e500157bdf4baafd6f5ba0ce5759f7cd4101fc132f54' }, + { native: 'a646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a' }, + { + native: { + all: [ + { any: [] }, + '58e1b65718531b42494610c506cef10ff031fa817a8ff75c0ab180e7', + { any: [{ expiresAt: 15_272 }] }, + { startsAt: 44_521 }, + { startsAt: 91_998 } + ] + } + } + ] + }, + hash: 'ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25' + }, + raw: 'g6YAgYJYIAMXCi51l7e349hMBTkdE5pisVfnh4bYwILync9MERMUAgGAAhkC1AMaAAE4cQaCoBnfzQdYIO4VWs6cQCkgdMtq/4yczdJzyBZI/xFJ7za86m67ij4logCCglggiNacI7VLJ/JTqlGXFFi9IbXXAKkfAv6iNzv3bmnTOsFYQLej5LvyQ1sxt1RvfiFztIokFgDyUzxiFFGLJPa/jc3Xo1nryRrlzuIYtCO5vqoSUa7Gp/ykZmGCO4+uxz4euYKCWCAMa+ZqZpp+WY1JusIIo3YPcC7S9ZNp9O+/S+8+JamUKFhAUoOamH2dMBoP4TGfLCtH/e+UeWtnQArGF1JwiTTE/2N4pdC8aAP+pj9Qc+mn+DDrP0+GMa2OEP5j+OsZ6uPK8QKFhFgg5zHRhxzJIvbaxJ4xMMA/3XBsVl4snWTAK25amlI5umdYQG9zd3F5bXhzd2V5bmN3YmhkaW56Z3lnaGFjZHNlYWp1bXVvdHR0eW9oaWJ1Ym5jdHR6bmV1a2dnbG1qdml1aW9Evrp2J0RKfmTJhFgg8PX/pDLnk24fRwkqqAWtNPGYvSsAuvsZULQdyGS0eHRYQGl1c2J0Y3p3cGppYXphaW9qYnlqZHhzZGZqdGl5aGl2Z2p4ZXhyd2dlcXdjZm9sZmF2Ynlib3R2ZXlibWVrb2xAQnRQhFggUB0hoDiDKjfR0c7Bd2l620mJVOP6QxVJgQjJykjQ5RtYQBD21s0wtG5e7hq/l8Z89CbiN2rEEJRcEBgj87Oyif6kIprlJJk/N1XL865plJJyxGE6Azq1JffWWg/IVp9flXhEBndwA0CEWCC5mr4xcA8HyqYLGsb39V8A5ckm3qBsAkUaiO7+noGi+lhAZG9zbnpqaXZ0aWVrbGt1dGZiaHVycHdiY2phbHRjZXdpYWxqdXRlc2FvdGFhem16dXZwdWJxZWF1dHFibm90ZUGCQTOEWCDPsKmIUWNkAQdV/ksAmC3TfMZ4+tT+Z7v3uP+Fry2keFhAwMMYEVUlWj+nr4N/2RpZmhxUNDgeajgjmyZg8ivHs3iC31dsgHu9OFJ1tWZHxwayT8nWtSAIPE+GW9T0trFgeUHMQSyCoQKCG4f7otqMQW6yQnpDg4IAWBy1rmY6rqjlABV730uq/W9boM5XWffNQQH8Ey9UggBYHKZGR0uPVDEmFQa2wnPTB8dWmk62yWtC3UopUgqCAYWCAoCCAFgcWOG2VxhTG0JJRhDFBs7xD/Ax+oF6j/dcCrGA54ICgYIFGTuoggQZremCBBoAAWde', + witness: { + bootstrap: [ + { + addressAttributes: 'Sn5kyQ==', + chainCode: 'beba7627', + key: 'e731d1871cc922f6dac49e3130c03fdd706c565e2c9d64c02b6e5a9a5239ba67', + signature: 'b3N3cXlteHN3ZXluY3diaGRpbnpneWdoYWNkc2VhanVtdW90dHR5b2hpYnVibmN0dHpuZXVrZ2dsbWp2aXVpbw==' + }, + { + addressAttributes: 'dFA=', + chainCode: null, + key: 'f0f5ffa432e7936e1f47092aa805ad34f198bd2b00bafb1950b41dc864b47874', + signature: 'aXVzYnRjendwamlhemFpb2pieWpkeHNkZmp0aXloaXZnanhleHJ3Z2Vxd2Nmb2xmYXZieWJvdHZleWJtZWtvbA==' + }, + { + addressAttributes: null, + chainCode: '06777003', + key: '501d21a038832a37d1d1cec177697adb498954e3fa4315498108c9ca48d0e51b', + signature: 'EPbWzTC0bl7uGr+Xxnz0JuI3asQQlFwQGCPzs7KJ/qQimuUkmT83VcvzrmmUknLEYToDOrUl99ZaD8hWn1+VeA==' + }, + { + addressAttributes: 'Mw==', + chainCode: '82', + key: 'b99abe31700f07caa60b1ac6f7f55f00e5c926dea06c02451a88eefe9e81a2fa', + signature: 'ZG9zbnpqaXZ0aWVrbGt1dGZiaHVycHdiY2phbHRjZXdpYWxqdXRlc2FvdGFhem16dXZwdWJxZWF1dHFibm90ZQ==' + }, + { + addressAttributes: 'LA==', + chainCode: 'cc', + key: 'cfb0a988516364010755fe4b00982dd37cc678fad4fe67bbf7b8ff85af2da478', + signature: 'wMMYEVUlWj+nr4N/2RpZmhxUNDgeajgjmyZg8ivHs3iC31dsgHu9OFJ1tWZHxwayT8nWtSAIPE+GW9T0trFgeQ==' + } + ], + scripts: {}, + signatures: { + '0c6be66a669a7e598d49bac208a3760f702ed2f59369f4efbf4bef3e25a99428': + 'UoOamH2dMBoP4TGfLCtH/e+UeWtnQArGF1JwiTTE/2N4pdC8aAP+pj9Qc+mn+DDrP0+GMa2OEP5j+OsZ6uPK8Q==', + '88d69c23b54b27f253aa51971458bd21b5d700a91f02fea2373bf76e69d33ac1': + 't6Pku/JDWzG3VG9+IXO0iiQWAPJTPGIUUYsk9r+NzdejWevJGuXO4hi0I7m+qhJRrsan/KRmYYI7j67HPh65gg==' + } + } + } + ], + header: { + blockHash: '03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314', + blockHeight: 13, + blockSize: 503, + issuerVk: '60337a64656bf2646f66c90ab4a546bbf3c3f5f8f00bf06fcc1d9f7d01d924f6', + issuerVrf: 'nIRtRLQUxE0H2Z5U0DvE94YKiT3ISOUzW8oBPl8h2lA=', + leaderValue: { + output: 'RhkcpJCfqui0ksnrpt7kV9S1NEMsrC/w+0BpswUyhm8i+Dcb5/2tGE7Rbmr1mO5cKapCtwwXJiAZozrYWO3wOQ==', + proof: + 'vVZ7Pzx5hTsa2iTBvbnVA4+xRIaD0/kNe1uC95zskUQFVcQ5k5k2IUPtkKnKH8q8qWrgZSWcbVM3wEOpXzq3olLrdWlseKdkObh5ObLy/w4=' + }, + nonce: { + output: 'C0vcKTwQRIMJCVDbDSmjTsBiKfzMvbweRg6PhHRKrJ0Wzp4TmbVMREZbAH8B+JO8XXsbo5yz6/KhkFngJSULBA==', + proof: + 'T08Xle7VEJ/DcQFs+5j6j4eJuov1t8w+E0QVBghQsBdma2BX79smiGbFviHqNoUWho0ZxpHBwrnVMuJt+z/VxUGEsz/KmHi87aA0rUzOJQ0=' + }, + opCert: { + count: 1, + hotVk: 'lE8fWiClGVIGkGvy6IqxUhnqFPc5Jkhsr+GNNaJhe7k=', + kesPeriod: 1, + sigma: 'emQIwhlN83mtldrYI2orhkk6CSzO79ohGMIoZldBOSv2WZ7suQ1yeymQXvkbdjsmQptX/S2gSNXNoLt6AFgcCQ==' + }, + prevHash: 'bb30a42c1e62f0afda5f0a4e8a562f7a13a24cea00ee81917b86b89e801314aa', + protocolVersion: { major: 0, minor: 0 }, + signature: + 'ghmQHjsix7e6begTi1VxLsqciECKFjnHWSl1RePg4bY+4H0NPdeHD6Rda46rDHorfB54xiVM9xh+mXJfbWC+DittNEdQBsnS70eV3uHWsdgoIba+pSgQKNap98X1C/hrVqOFS/9VxXkvZFQy00cHiXCApbjkrz81hmb/jQpUXsAY6vOj+MafwkWoePsuHoez6WvFdLgPH+81f6Oynj7RMI652xDCaFUjrHAlgiLBz3HlG+blms2pGrR+tPKvlnmMpPehzkJTh/NKgCZKARIRLfzxo48pBKS7K/RnXOiwPV7ROoJC0aF5ojWST3dxMP4AoTuJqT85HAl/wnce0jg9Z2Ab5ZpIaJ4hq+SWN8IxFvwVg2C3ADN60fQ+3fR5S84H6rrfTQkjJ5tr7kGCBgJX5sgVGCqjgqTbmGNCp8PiPA+tWXt/JRgSMiw/RFzVq0bei8jGz13MT2fM3S5Vz4DfglDEATOYtm2bB66+ny3Xi2JqfDvLiIeNMHl7KGhkTJvoGXpzdQB19BzBshvG2g+e0T9Wf+QIrZ11ScfaVoi7vQ/KjljBxZhgrWJwxH/HWYri2JK2wF2y7T7jTlMER8pnGQ==', + slot: 9 + }, + headerHash: 'bb30a42c1e62f0afda5f0a4e8a562f7a13a24cea00ee81917b86b89e801314aa' + } +}; + +export const mockMaryBlock: Ogmios.Schema.Mary = { + mary: { + body: [ + { + body: { + certificates: [ + { stakeKeyRegistration: 'b5ae663aaea8e500157bdf4baafd6f5ba0ce5759f7cd4101fc132f54' }, + { + genesisDelegation: { + delegateKeyHash: 'a646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a', + verificationKeyHash: '0d94e174732ef9aae73f395ab44507bfa983d65023c11a951f0c32e4', + vrfVerificationKeyHash: '03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314' + } + } + ], + fee: 125n, + inputs: [{ index: 0, txId: '0268be9dbd0446eaa217e1dec8f399249305e551d7fc1437dd84521f74aa621c' }], + mint: { assets: { a646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a: -1n }, coins: 0n }, + outputs: [ + { + address: + 'EqGAuA8vHnNpWh2vRvJSVMGRnu1r5SnDHJMQcHB1vbMSvMxgA8qwpMpsRJeSk2KaTZgJRTKwgDrLNaCQFVK1WisAZLVQ5oXZT6dqLDHDryZAkgwgZqf6S8x', + value: { assets: {}, coins: 2n } + } + ], + update: null, + validityInterval: { invalidBefore: 30_892, invalidHereafter: null }, + withdrawals: { stake1uyxefct5wvh0n2h88uu44dz9q7l6nq7k2q3uzx54ruxr9eq8cjal2: 157n } + }, + id: 'f138917a172058f68c93de999592c5fb7cafc9265add9723eb2e8b9c12654654', + metadata: null, + raw: 'g6cAgYJYIAJovp29BEbqohfh3sjzmSSTBeVR1/wUN92EUh90qmIcAAGBglhXgtgYWE2DWBxGUQ+/G19B/lOoSXpmwK8MYRGJS6lnhClyVAfbogFYIlggeHZ2dnhud3d4dHdrcGxzemFnYnZhbWp5dmRpY2hwdXgCRRrLg+d6ABqgcWz5AgIYfQSCggCCAFgcta5mOq6o5QAVe99Lqv1vW6DOV1n3zUEB/BMvVIQFWBwNlOF0cy75quc/OVq0RQe/qYPWUCPBGpUfDDLkWBymRkdLj1QxJhUGtsJz0wfHVppOtslrQt1KKVIKWCADFwoudZe3t+PYTAU5HROaYrFX54eG2MCC8p3PTBETFAWhWB3hDZThdHMu+arnPzlatEUHv6mD1lAjwRqVHwwy5BidCBl4rAmhWBymRkdLj1QxJhUGtsJz0wfHVppOtslrQt1KKVIKoUAgogGBggKDggUZOHCCBRoAAV2pgwMAgAKDhFggNdJZ7TrTK9pHsL8qTwSUQPfCmOHGkZUYtVzHXiawZxZYQHFpeW93amxodWRvZ2hjbWJwc3piYmhhaWFmdHZxYmxrenpramVhYnJlenllY3JudnRsaXh3a213b2F0cGtkcmJCV9dE/0dj0YRYILofhoA3rTUZT3Gf6WSvFFCcv59hGhVanRpSre2atK4CWEApDhGuXal8MytAql+eZJpC5l+mBtIXNaWERkQ9iBYcPi810DAqMOHwRV69PbzuEhMIme/qXJ23s9ahf0k9MwTWQEMYmh6EWCADXQxlKPxc+EJhXFsy+gMbSjmZ6cm8bEQ1vs5b08/95VhAYWlubnB1eWFqbGtkdHp3ZW1heHd6aWRybWZscGxxeXp4ZGt1ZXlxanNtcXB3a3dkb3pwY3JnZXBpdXd0bmh4Z0Izb0H7gqIAGxVoXr1IsurhAoVCCgNCLGhgQBv0tvwFaCFI0YGCBBkbAA==', + witness: { + bootstrap: [ + { + addressAttributes: '/0dj0Q==', + chainCode: '57d7', + key: '35d259ed3ad32bda47b0bf2a4f049440f7c298e1c6919518b55cc75e26b06716', + signature: 'cWl5b3dqbGh1ZG9naGNtYnBzemJiaGFpYWZ0dnFibGt6emtqZWFicmV6eWVjcm52dGxpeHdrbXdvYXRwa2RyYg==' + }, + { + addressAttributes: 'GJoe', + chainCode: null, + key: 'ba1f868037ad35194f719fe964af14509cbf9f611a155a9d1a52aded9ab4ae02', + signature: 'KQ4Rrl2pfDMrQKpfnmSaQuZfpgbSFzWlhEZEPYgWHD4vNdAwKjDh8EVevT287hITCJnv6lydt7PWoX9JPTME1g==' + }, + { + addressAttributes: '+w==', + chainCode: '336f', + key: '035d0c6528fc5cf842615c5b32fa031b4a3999e9c9bc6c4435bece5bd3cffde5', + signature: 'YWlubnB1eWFqbGtkdHp3ZW1heHd6aWRybWZscGxxeXp4ZGt1ZXlxanNtcXB3a3dkb3pwY3JnZXBpdXd0bmh4Zw==' + } + ], + scripts: { + a5de7cbbbfdda912df57b236dde5d44c12dbd50bd1f2a7da565d700b: { + native: { any: [{ expiresAt: 14_448 }, { expiresAt: 89_513 }, { '0': [] }] } + } + }, + signatures: {} + } + }, + { + body: { + certificates: [ + { + poolRegistration: { + cost: 810n, + id: 'pool15erywju02scjv9gxkmp885c8catf5n4ke9459h2299fq57u9c3e', + margin: '0/1', + metadata: null, + owners: ['3542acb3a64d80c29302260d62c3b87a742ad14abf855ebc6733081e'], + pledge: 525n, + relays: [], + rewardAccount: 'stake_test1uz66ue36465w2qq40005h2hadad6pnjht8mu6sgplsfj74q9f9d7l', + vrf: 'bb30a42c1e62f0afda5f0a4e8a562f7a13a24cea00ee81917b86b89e801314aa' + } + } + ], + fee: 720n, + inputs: [ + { index: 0, txId: '0268be9dbd0446eaa217e1dec8f399249305e551d7fc1437dd84521f74aa621c' }, + { index: 0, txId: 'ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25' } + ], + mint: { assets: { '0d94e174732ef9aae73f395ab44507bfa983d65023c11a951f0c32e4': 1n }, coins: 0n }, + outputs: [ + { + address: 'addr_test1grs2w9p3nqfv8amnhgzwchtt8l7dt2kc2qrgqkcy0vyz2sgqqqqs2wje25', + value: { assets: { '0d94e174732ef9aae73f395ab44507bfa983d65023c11a951f0c32e4': 2n }, coins: 2n } + }, + { + address: 'addr1g8s2w9p3nqfv8amnhgzwchtt8l7dt2kc2qrgqkcy0vyz2sgqqqqqx8489p', + value: { assets: { e0a714319812c3f773ba04ec5d6b3ffcd5aad85006805b047b082541: 2n }, coins: 1n } + } + ], + update: { epoch: 91_022, proposal: {} }, + validityInterval: { invalidBefore: null, invalidHereafter: 83_856 }, + withdrawals: { + stake_test17z66ue36465w2qq40005h2hadad6pnjht8mu6sgplsfj74qvpedfl: 608n, + stake17x66ue36465w2qq40005h2hadad6pnjht8mu6sgplsfj74qttn0dz: 324n + } + }, + id: '77c4a3c21573c57f0599499bc780de457c35c1d95bfb7e2370d3328b49327117', + metadata: { + body: { blob: { '1': { int: -16_613_019_303_347_710_699n }, '2': { bytes: '6573' } }, scripts: [] }, + hash: 'ae85d245a3d00bfde01f59f3c4fe0b4bfae1cb37e9cf91929eadcea4985711de' + }, + raw: 'g6kAgoJYIAJovp29BEbqohfh3sjzmSSTBeVR1/wUN92EUh90qmIcAIJYIO4VWs6cQCkgdMtq/4yczdJzyBZI/xFJ7za86m67ij4lAAGCglggQOCnFDGYEsP3c7oE7F1rP/zVqthQBoBbBHsIJUEAAAGCAqFYHA2U4XRzLvmq5z85WrRFB7+pg9ZQI8EalR8MMuShQAKCWCBB4KcUMZgSw/dzugTsXWs//NWq2FAGgFsEewglQQAAAIIBoVgc4KcUMZgSw/dzugTsXWs//NWq2FAGgFsEewglQaFAAgIZAtADGgABR5AEgYoDWBymRkdLj1QxJhUGtsJz0wfHVppOtslrQt1KKVIKWCC7MKQsHmLwr9pfCk6KVi96E6JM6gDugZF7hriegBMUqhkCDRkDKtgeggABWB3gta5mOq6o5QAVe99Lqv1vW6DOV1n3zUEB/BMvVIFYHDVCrLOmTYDCkwImDWLDuHp0KtFKv4VevGczCB6A9gWiWB3wta5mOq6o5QAVe99Lqv1vW6DOV1n3zUEB/BMvVBkCYFgd8bWuZjquqOUAFXvfS6r9b1ugzldZ981BAfwTL1QZAUQGgqAaAAFjjgdYIK6F0kWj0Av94B9Z88T+C0v64cs36c+Rkp6tzqSYVxHeCaFYHA2U4XRzLvmq5z85WrRFB7+pg9ZQI8EalR8MMuShQAGiAIOCWCCwBfDgl2DCNxt8yNaotn3Qugn3Hy/r3JzXlCUfGFZzKVhAVjYvpOSGRTBrgKkud+Op2bFZa/KdFFa9sWaFJUjBbM1o3PB7a+CGEYNhzUSLaFtjpPFK78t0eIAGXt27bVOTx4JYIJe6hbW+rdA8irfqJgpT9zzUe4fZwu9iuY+b0jk0v/hSWECENEZfj4FjBvN3KMJO+zSVZHDFpCNQMjgGh1Kq0sK+xZDB1qBKdOHxuS3N+IfIrfDraM+8a5heBsK4wTgz3wRTglggGc/QF0GZKFivqhqLmfJiJzi0wDpouSgwJ2QLlDGBxLZYQJZi+foJl1bYw4dGPnS4Y71JeuIlU3UbcNIEje1+3SUHEfO08numSgjQNpNLrJVay6KpmonDHQEDroWkjZXFszcBg4IAWBxKzydzkXx7VHxXan/xENK6VzPB8cqc3GWa6jpWggGDggBYHL0Dn5VvSzAvOrb8fEusM1ClQPRK+BqEkhlN0sKCAoWCBRk3QYIAWByxa1b17AZL5qw8q2A1766Gs2bMPcSg1XFgPXDlggBYHKZGR0uPVDEmFQa2wnPTB8dWmk62yWtC3UopUgqCAFgcWOG2VxhTG0JJRhDFBs7xD/Ax+oF6j/dcCrGA54IEGgABE2eDAwCCggGEggBYHKZGR0uPVDEmFQa2wnPTB8dWmk62yWtC3UopUgqCAFgcduYH2yoxyaLDJ2HSQxoYalUMwyH3nNjWqCspuIIAWBzgpxQxmBLD93O6BOxdaz/81arYUAaAWwR7CCVBggBYHLWuZjquqOUAFXvfS6r9b1ugzldZ981BAfwTL1SDAwKFggBYHOCnFDGYEsP3c7oE7F1rP/zVqthQBoBbBHsIJUGCAFgc4KcUMZgSw/dzugTsXWs//NWq2FAGgFsEewglQYIAWBwNlOF0cy75quc/OVq0RQe/qYPWUCPBGpUfDDLkggBYHDVCrLOmTYDCkwImDWLDuHp0KtFKv4VevGczCB6CAFgcZfxwml4Bm4q6dvaXfByHcOSzb6dvQ078WIdHt4IAWBwNlOF0cy75quc/OVq0RQe/qYPWUCPBGpUfDDLkgqIBO+aNTQluv2rqAkJlc4A=', + witness: { + bootstrap: [], + scripts: { + '4afe6bb5d653d742fd39a93285f6817312662ea627143639bd548ee5': { + native: '4acf2773917c7b547c576a7ff110d2ba5733c1f1ca9cdc659aea3a56' + }, + '8dd8c0b8c1e0c91de6f0bba3e2058235bbd3cf826e8a5b4e146207b8': { + native: { + all: [ + 'bd039f956f4b302f3ab6fc7c4bac3350a540f44af81a8492194dd2c2', + { + any: [ + { expiresAt: 14_145 }, + 'b16b56f5ec064be6ac3cab6035efae86b366cc3dc4a0d571603d70e5', + 'a646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a', + '58e1b65718531b42494610c506cef10ff031fa817a8ff75c0ab180e7', + { startsAt: 70_503 } + ] + }, + { + '0': [ + { + all: [ + 'a646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a', + '76e607db2a31c9a2c32761d2431a186a550cc321f79cd8d6a82b29b8', + 'e0a714319812c3f773ba04ec5d6b3ffcd5aad85006805b047b082541', + 'b5ae663aaea8e500157bdf4baafd6f5ba0ce5759f7cd4101fc132f54' + ] + }, + { + '2': [ + 'e0a714319812c3f773ba04ec5d6b3ffcd5aad85006805b047b082541', + 'e0a714319812c3f773ba04ec5d6b3ffcd5aad85006805b047b082541', + '0d94e174732ef9aae73f395ab44507bfa983d65023c11a951f0c32e4', + '3542acb3a64d80c29302260d62c3b87a742ad14abf855ebc6733081e', + '65fc709a5e019b8aba76f6977c1c8770e4b36fa76f434efc588747b7' + ] + } + ] + } + ] + } + }, + d9e0c75fb59dba0a82897cf42bb81ad4dba7ca78159b7b1b9f5ee56e: { + native: '0d94e174732ef9aae73f395ab44507bfa983d65023c11a951f0c32e4' + } + }, + signatures: { + '19cfd01741992858afaa1a8b99f2622738b4c03a68b9283027640b943181c4b6': + 'lmL5+gmXVtjDh0Y+dLhjvUl64iVTdRtw0gSN7X7dJQcR87Tye6ZKCNA2k0uslVrLoqmaicMdAQOuhaSNlcWzNw==', + '97ba85b5beadd03c8ab7ea260a53f73cd47b87d9c2ef62b98f9bd23934bff852': + 'hDRGX4+BYwbzdyjCTvs0lWRwxaQjUDI4BodSqtLCvsWQwdagSnTh8bktzfiHyK3w62jPvGuYXgbCuME4M98EUw==', + b005f0e09760c2371b7cc8d6a8b67dd0ba09f71f2febdc9cd794251f18567329: + 'VjYvpOSGRTBrgKkud+Op2bFZa/KdFFa9sWaFJUjBbM1o3PB7a+CGEYNhzUSLaFtjpPFK78t0eIAGXt27bVOTxw==' + } + } + } + ], + header: { + blockHash: 'bb30a42c1e62f0afda5f0a4e8a562f7a13a24cea00ee81917b86b89e801314aa', + blockHeight: 20, + blockSize: 243, + issuerVk: '60337a64656bf2646f66c90ab4a546bbf3c3f5f8f00bf06fcc1d9f7d01d924f6', + issuerVrf: 'nIRtRLQUxE0H2Z5U0DvE94YKiT3ISOUzW8oBPl8h2lA=', + leaderValue: { + output: 'MG69pkhk7nsRHRKPRAcTmCe/uglD8lVMmktQXnb1NdbYZEB8SA2YU0GXNq97li+s8VciXD4oiNbaeTJ/C/9D+w==', + proof: + 'vazur4eDSrWa1Ej0D4oJkYD+p/5lnB6KV2814zX2U70tlnMG21reO8TjRutmz48lxGEA+UVCgLdgjmgkZW9OEdQeNDel0a90UDHi3xfO4gI=' + }, + nonce: { + output: '7iNfV5Ud/689t4ZH7sq1+ZG2cFCgvQjGk09PW0znFROzt3VB/QcTsTB1+6ZnnxYMhsQ2A0JHnF2y+5aXf6Glag==', + proof: + 'QoU+Mgu8U0syFzaFyIFD7+AE0+AIgodtJzNOuhdHluPD7P0yV6Ss76S7rol8hIX7/BOZERZZBp3M6CFy2vat0yYVEKpy1SR3fCHdGriV3Q8=' + }, + opCert: { + count: 1, + hotVk: 'lE8fWiClGVIGkGvy6IqxUhnqFPc5Jkhsr+GNNaJhe7k=', + kesPeriod: 1, + sigma: 'emQIwhlN83mtldrYI2orhkk6CSzO79ohGMIoZldBOSv2WZ7suQ1yeymQXvkbdjsmQptX/S2gSNXNoLt6AFgcCQ==' + }, + prevHash: 'ae85d245a3d00bfde01f59f3c4fe0b4bfae1cb37e9cf91929eadcea4985711de', + protocolVersion: { major: 0, minor: 0 }, + signature: + 'OvOjILwJ2nrmtwXLyWBt/R/k0T8u3WZW59wHKvdegnC0f3jU9wWTMrDs5vrupA0osJkYi3yXc3c98WjdCdslACttNEdQBsnS70eV3uHWsdgoIba+pSgQKNap98X1C/hrVqOFS/9VxXkvZFQy00cHiXCApbjkrz81hmb/jQpUXsAY6vOj+MafwkWoePsuHoez6WvFdLgPH+81f6Oynj7RMI652xDCaFUjrHAlgiLBz3HlG+blms2pGrR+tPKvlnmMpPehzkJTh/NKgCZKARIRLfzxo48pBKS7K/RnXOiwPV7ROoJC0aF5ojWST3dxMP4AoTuJqT85HAl/wnce0jg9Z2Ab5ZpIaJ4hq+SWN8IxFvwVg2C3ADN60fQ+3fR5S84H6rrfTQkjJ5tr7kGCBgJX5sgVGCqjgqTbmGNCp8PiPA+tWXt/JRgSMiw/RFzVq0bei8jGz13MT2fM3S5Vz4DfglDEATOYtm2bB66+ny3Xi2JqfDvLiIeNMHl7KGhkTJvoGXpzdQB19BzBshvG2g+e0T9Wf+QIrZ11ScfaVoi7vQ/KjljBxZhgrWJwxH/HWYri2JK2wF2y7T7jTlMER8pnGQ==', + slot: 3 + }, + headerHash: 'ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25' + } +}; + +export const mockBabbageBlock: Ogmios.Schema.Babbage = { + babbage: { + body: [ + { + body: { + certificates: [ + { moveInstantaneousRewards: { pot: 'reserves', value: 712n } }, + { + poolRegistration: { + cost: 290n, + id: 'pool1kkhxvw4w4rjsq9tmma964lt0twsvu46e7lx5zq0uzvh4ge9n0hc', + margin: '1/2', + metadata: { hash: '62797465737472696e67', url: 'text' }, + owners: [], + pledge: 229n, + relays: [ + { ipv4: '192.0.2.1', ipv6: '2001:db8::1', port: null }, + { hostname: 'foo.example.com', port: null } + ], + rewardAccount: 'stake_test1urs2w9p3nqfv8amnhgzwchtt8l7dt2kc2qrgqkcy0vyz2sgcp89zz', + vrf: 'ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25' + } + } + ], + collateralReturn: null, + collaterals: [{ index: 2, txId: '0268be9dbd0446eaa217e1dec8f399249305e551d7fc1437dd84521f74aa621c' }], + fee: 58n, + inputs: [], + mint: { + assets: { + 'e0a714319812c3f773ba04ec5d6b3ffcd5aad85006805b047b082541.00': -1n, + 'e0a714319812c3f773ba04ec5d6b3ffcd5aad85006805b047b082541.01': 2n + }, + coins: 0n + }, + network: 'mainnet', + outputs: [ + { + address: 'addr1vxnyv36t3a2rzfs4q6mvyu7nqlr4dxjwkmykkskafg54yzsv3uzfs', + datum: null, + datumHash: null, + script: { 'plutus:v2': '46010000220011' }, + value: { assets: {}, coins: 2n } + } + ], + references: [{ index: 1, txId: '03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314' }], + requiredExtraSignatures: [ + '0d94e174732ef9aae73f395ab44507bfa983d65023c11a951f0c32e4', + 'a646474b8f5431261506b6c273d307c7569a4eb6c96b42dd4a29520a' + ], + scriptIntegrityHash: null, + totalCollateral: null, + update: { epoch: 51_884, proposal: {} }, + validityInterval: { invalidBefore: 78_202, invalidHereafter: null }, + withdrawals: { stake1uxnyv36t3a2rzfs4q6mvyu7nqlr4dxjwkmykkskafg54yzssmuy4z: 724n } + }, + id: 'c32a4a4f5a4b540d4f79730ca0c658d9a8400be2173e0ba1dc8471004c1cb0db', + inputSource: 'collaterals', + metadata: { + body: { blob: { '2': { string: '\u0013' } }, scripts: [{ native: { startsAt: 63_725 } }] }, + hash: 'bb30a42c1e62f0afda5f0a4e8a562f7a13a24cea00ee81917b86b89e801314aa' + }, + raw: 'hK0AgA2BglggAmi+nb0ERuqiF+HeyPOZJJMF5VHX/BQ33YRSH3SqYhwCEoGCWCADFwoudZe3t+PYTAU5HROaYrFX54eG2MCC8p3PTBETFAEBgaMAWB1hpkZHS49UMSYVBrbCc9MHx1aaTrbJa0LdSilSCgECA9gYSoICR0YBAAAiABECGDoEgoIGggAZAsiKA1gcta5mOq6o5QAVe99Lqv1vW6DOV1n3zUEB/BMvVFgg7hVazpxAKSB0y2r/jJzN0nPIFkj/EUnvNrzqbruKPiUY5RkBItgeggECWB3g4KcUMZgSw/dzugTsXWs//NWq2FAGgFsEewglQYCChAD2RMAAAgFQuA0BIAAAAAAAAAAAAQAAAIMB9m9mb28uZXhhbXBsZS5jb22CZHRleHRKYnl0ZXN0cmluZwWhWB3hpkZHS49UMSYVBrbCc9MHx1aaTrbJa0LdSilSChkC1AaCoBnKrAgaAAExeg6CWBwNlOF0cy75quc/OVq0RQe/qYPWUCPBGpUfDDLkWBymRkdLj1QxJhUGtsJz0wfHVppOtslrQt1KKVIKCaFYHOCnFDGYEsP3c7oE7F1rP/zVqthQBoBbBHsIJUGiQQAgQQECB1gguzCkLB5i8K/aXwpOilYvehOiTOoA7oGRe4a4noATFKoPAaQAgoJYIGebir0TeXKUddocUw3ajcG/kXfs6uRJoKFeTxb0U5m+WECj4qLER4r+fNc0+lk84z8GhBJVZW3DHTrP9IiEzpR41WMU3Wuoco3kF0E6eYq26H9oX7kX+DALOXco8IYxwW45glggI4KH8+qadGUTrL7irrHpgNn+6tKb+BV7d1ZDf/vo7ltYQB5jl3NCXAz6Y3bXMmUA78V02bh6+6Ipak4SFXrYMXbOcwBgCpIb7WCHYAs6EY6pBXRqYs/pBknqKqAPRhQqrXsCgoRYIN5G+59S2KIp487cYAAlZKPSMwnb8h36q9OEhcRThBmyWEA/bQiht6t4GKeL6NSOqCiw6ZdiWKTKOBV/Yo/k3h8yak70A8QNA0iGTedyWb6aXGBq8gsp6+f2rrWUrEAXdyiqQU1AhFgg/Bop7T8KTBpANimIMc4ReiO2txSruoPQoJPQg54ZPDlYQD8ZhN7Vs1GYvPzqpNX0SybLjmqlnN505Xiwb5NRvbF1YxYjdPGZmAQj5S3ebIt+Qr9MoSDdv1VyQbmlm3MICf5BIEGZA4FHRgEAACIAEQWBhAAAo0FgAp8go0GcIEOGpIJE4hvZNiAgBKD/o6RDWu2QBAJCsHohBSNAn0FNQps/BED/oJ8DQAH/oiIjQEG02GaCGNqfI0FEAwJBPv9CBOGh2GaCGQGTnyP/oIIbU6MuMeloUY0bQeo2j4HZDq302QEDogChAmETAYGCBBn47Q==', + witness: { + bootstrap: [ + { + addressAttributes: null, + chainCode: '4d', + key: 'de46fb9f52d8a229e3cedc60002564a3d23309dbf21dfaabd38485c4538419b2', + signature: 'P20IobereBini+jUjqgosOmXYlikyjgVf2KP5N4fMmpO9APEDQNIhk3nclm+mlxgavILKevn9q61lKxAF3coqg==' + }, + { + addressAttributes: 'mQ==', + chainCode: '20', + key: 'fc1a29ed3f0a4c1a4036298831ce117a23b6b714abba83d0a093d0839e193c39', + signature: 'PxmE3tWzUZi8/Oqk1fRLJsuOaqWc3nTleLBvk1G9sXVjFiN08ZmYBCPlLd5si35Cv0yhIN2/VXJBuaWbcwgJ/g==' + } + ], + datums: {}, + redeemers: { + 'spend:0': { + // eslint-disable-next-line @typescript-eslint/no-loss-of-precision + executionUnits: { memory: 6_026_711_518_256_058_765, steps: 4_749_668_747_002_318_509 }, + redeemer: + 'a34160029f20a3419c204386a48244e21bd936202004a0ffa3a4435aed90040242b07a210523409f414d429b3f0440ffa09f034001ffa222234041b4d8668218da9f2341440302413eff4204e1a1d866821901939f23ffa0' + } + }, + scripts: { + c370d10724c6b5a2448af41238e024ad470c0139da7f4b8527a47d74: { 'plutus:v1': '46010000220011' } + }, + signatures: { + '679b8abd1379729475da1c530dda8dc1bf9177eceae449a0a15e4f16f45399be': + 'o+KixEeK/nzXNPpZPOM/BoQSVWVtwx06z/SIhM6UeNVjFN1rqHKN5BdBOnmKtuh/aF+5F/gwCzl3KPCGMcFuOQ==', + '238287f3ea9a746513acbee2aeb1e980d9feead29bf8157b7756437ffbe8ee5b': + 'HmOXc0JcDPpjdtcyZQDvxXTZuHr7oilqThIVetgxds5zAGAKkhvtYIdgCzoRjqkFdGpiz+kGSeoqoA9GFCqtew==' + } + } + } + ], + header: { + blockHash: 'ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25', + blockHeight: 4, + blockSize: 2, + issuerVk: 'f6cc957f17046ce6de24c81d08e9381608ed1acc083284916252f76f65643eae', + issuerVrf: '201dQhvqwG+GvMtkb82ZCuFP6tdT9q7raxceTE4ZGgI=', + opCert: { + count: 2, + hotVk: 'vcLibo61JkBlWdVGpIrF+Yp1t5z8+tS+iivBMgSt5jc=', + kesPeriod: 2, + sigma: 'xoYNFRrDJscAfzn8fQee5chdcKOTNuWyxB2YpYcR5RVJa2WqlRDz45dl52pxhF5EhZVU8d+8bOX8tsE9GHYNzw==' + }, + prevHash: 'ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25', + protocolVersion: { major: 589, minor: 287 }, + signature: + 'o/4wLT96VPSLAtgCnKwTVtzj/Y60RVI+UyiB0YlDgR9FEubrCBs5Vr5V1fHQjqLQxa3wOSZut68V/hOPkjkGBkzbFMFzyaA6/603+koIYbf1rU9oYIYDMjk4QlGlqAI8GuYHTy4K7XSIJ5FyJAXBNNvLhbHBky/v3RBNPSupMfGJjEgW0VYpBvbDlV7V+UidY+bhLInuHFflQYlMWCD8xsYihqnZ1fCyMmQQ2hxQ6HusMCMnkGps3kG8hlrd8/4SqoD8B8y/TsHBy0/4rZGaVq+xLvo+kmEcLDAPhenkCZBAx8OJIth9ZFsvL0Az8HOBzwPLrhMOHuzoFZkgEZnY1jt3tu26XE9bNfyRWxqUUlB8/595HjBH9LLoEHrVqQsjjR2qJZEXLRkRslnQjdArMAM2NmyJWFQlkIbP2tjC9XYxRHQguDIcTZWETHki6WlqtqveKhCExbVBt43Yr8RlI6p2r4fwgI57tASpY8PU+KQI/p96i29tH0WhrK2tpqkpNm1YlnJPkYZhlVAEMaafmEp8BkTZ29/AVAnSrHgMGYp+2kLbFfUTuvFQVAAydem0bgLIjD4mm+fomvDIO8b8Rw==', + slot: 6, + vrfInput: { + output: 'Pooas3OURUCUH+bHH0RGWFDdrkiJO4oXp5i47rOq6r1ONAE/ZQCj+YRkip+WYUqz9XCJpaT2zRPP+rBFq6Ohzw==', + proof: + '7YBbi3PmQzRxAJR0Rb0a6wozKDOHYPqANMpkOee5M8AAdtf00kPw/BhyvVIZCZt7/yRto5YqH8JJG2XakEkDS47GNQ7VfbDubXiSx7XTyAA=' + } + }, + headerHash: 'ee155ace9c40292074cb6aff8c9ccdd273c81648ff1149ef36bcea6ebb8a3e25' + } +}; diff --git a/packages/e2e/package.json b/packages/e2e/package.json index aeeba35bb81..35f2f2b2cfd 100644 --- a/packages/e2e/package.json +++ b/packages/e2e/package.json @@ -66,7 +66,7 @@ }, "dependencies": { "@cardano-foundation/ledgerjs-hw-app-cardano": "5.0.0", - "@cardano-ogmios/client": "^5.5.2", + "@cardano-ogmios/client": "^5.5.5", "@cardano-sdk/blockfrost": "^0.5.0", "@cardano-sdk/cardano-services": "^0.5.0", "@cardano-sdk/cardano-services-client": "^0.5.0", diff --git a/packages/golden-test-generator/src/AddressBalance/getOnChainAddressBalances.ts b/packages/golden-test-generator/src/AddressBalance/getOnChainAddressBalances.ts index f2c7c436e42..a684cecad5d 100644 --- a/packages/golden-test-generator/src/AddressBalance/getOnChainAddressBalances.ts +++ b/packages/golden-test-generator/src/AddressBalance/getOnChainAddressBalances.ts @@ -59,13 +59,16 @@ export const getOnChainAddressBalances = ( | Ogmios.Schema.BlockShelley | Ogmios.Schema.BlockAllegra | Ogmios.Schema.BlockMary - | Ogmios.Schema.BlockAlonzo; + | Ogmios.Schema.BlockAlonzo + | Ogmios.Schema.BlockBabbage; let blockBody: + undefined | Ogmios.Schema.StandardBlock['body']['txPayload'] | Ogmios.Schema.BlockShelley['body'] | Ogmios.Schema.BlockAllegra['body'] | Ogmios.Schema.BlockMary['body'] - | Ogmios.Schema.BlockAlonzo['body']; + | Ogmios.Schema.BlockAlonzo['body'] + | Ogmios.Schema.BlockBabbage['body']; if (Ogmios.isByronStandardBlock(block)) { b = block.byron as Ogmios.Schema.StandardBlock; blockBody = b.body.txPayload; @@ -81,6 +84,9 @@ export const getOnChainAddressBalances = ( } else if (Ogmios.isAlonzoBlock(block)) { b = block.alonzo as Ogmios.Schema.BlockAlonzo; blockBody = b.body; + } else if (Ogmios.isBabbageBlock(block)) { + b = block.babbage as Ogmios.Schema.BlockBabbage; + blockBody = b.body; } else if (Ogmios.isByronEpochBoundaryBlock(block)) { b = block.byron as Ogmios.Schema.BlockByron; } else { @@ -92,7 +98,7 @@ export const getOnChainAddressBalances = ( options.onBlock(currentBlock); } if (blockBody) { - for (const tx of blockBody!) { + for (const tx of blockBody) { for (const output of tx.body.outputs) { if (trackedAddressBalances[output.address] !== undefined) { const addressBalance = { ...trackedAddressBalances[output.address] }; diff --git a/packages/ogmios/package.json b/packages/ogmios/package.json index 70636e6bd5c..fe343abcee4 100644 --- a/packages/ogmios/package.json +++ b/packages/ogmios/package.json @@ -61,7 +61,7 @@ "ws": "^8.5.0" }, "dependencies": { - "@cardano-ogmios/client": "5.5.2", + "@cardano-ogmios/client": "5.5.5", "@cardano-sdk/core": "^0.5.0", "@cardano-sdk/util": "^0.5.0", "buffer": "5.7.1", diff --git a/packages/wallet/package.json b/packages/wallet/package.json index 1d340177942..d2fa380986d 100644 --- a/packages/wallet/package.json +++ b/packages/wallet/package.json @@ -52,7 +52,7 @@ "test:e2e": "shx echo 'test:e2e' command not implemented yet" }, "devDependencies": { - "@cardano-ogmios/client": "5.5.2", + "@cardano-ogmios/client": "5.5.5", "@cardano-sdk/ogmios": "^0.5.0", "@cardano-sdk/util-dev": "^0.4.1", "@types/node": "14.18.12", diff --git a/yarn-project.nix b/yarn-project.nix index 024bffe12b3..ad9f987aecf 100644 --- a/yarn-project.nix +++ b/yarn-project.nix @@ -199,7 +199,7 @@ cacheEntries = { "object-hash@npm:2.2.0" = { filename = "object-hash-npm-2.2.0-d97a921cc1-55ba841e3a.zip"; sha512 = "55ba841e3adce9c4f1b9b46b41983eda40f854e0d01af2802d3ae18a7085a17168d6b81731d43fdf1d6bcbb3c9f9c56d22c8fea992203ad90a38d7d919bc28f1"; }; "@types/pbkdf2@npm:3.1.0" = { filename = "@types-pbkdf2-npm-3.1.0-9fa74ff7fb-d15024b195.zip"; sha512 = "d15024b1957c21cf3b8887329d9bd8dfde754cf13a09d76ae25f1391cfc62bb8b8d7b760773c5dbaa748172fba8b3e0c3dbe962af6ccbd69b76df12a48dfba40"; }; "get-random-values@npm:2.0.0" = { filename = "get-random-values-npm-2.0.0-bb4f5d9318-c11c3cb7e6.zip"; sha512 = "c11c3cb7e61f5d17f3b9070a03d1756781b8a985926cb2dcf68ecf966f01fbfdcedf13e3362525acb28689a1971cebec0691ac542990c1bb7b873bbf95ed9a3f"; }; -"@cardano-ogmios/client@npm:5.5.2" = { filename = "@cardano-ogmios-client-npm-5.5.2-6798ed531e-717db95079.zip"; sha512 = "717db950795dbaa3915c71270ade7a3531d29807e27f152d03221e3ecc435819853cbf9d77b7ca18e39a7a5a60bac1e9fc675a8452209b315461ae8bd5fbdc6b"; }; +"@cardano-ogmios/client@npm:5.5.5" = { filename = "@cardano-ogmios-client-npm-5.5.5-9ad8c8bfe7-a1e9673408.zip"; sha512 = "a1e9673408c510ab66292edd5ae993e65da72c5388f93ed0f9c10e368bc0d723d8733445be89ea13c651e0b30d3cb9298c8bca81efcbc071c0a4edd9a7a7851d"; }; "jest-diff@npm:26.6.2" = { filename = "jest-diff-npm-26.6.2-06ca2a96ca-d00d297f31.zip"; sha512 = "d00d297f31e1ac0252127089892432caa7a11c69bde29cf3bb6c7a839c8afdb95cf1fd401f9df16a4422745da2e6a5d94b428b30666a2540c38e1c5699915c2d"; }; "pretty-format@npm:26.6.2" = { filename = "pretty-format-npm-26.6.2-6edfcf7149-e3b808404d.zip"; sha512 = "e3b808404d7e1519f0df1aa1f25cee0054ab475775c6b2b8c5568ff23194a92d54bf93274139b6f584ca70fd773be4eaa754b0e03f12bb0a8d1426b07f079976"; }; "pkg-dir@npm:4.2.0" = { filename = "pkg-dir-npm-4.2.0-2b5d0a8d32-9863e3f351.zip"; sha512 = "9863e3f35132bf99ae1636d31ff1e1e3501251d480336edb1c211133c8d58906bed80f154a1d723652df1fda91e01c7442c2eeaf9dc83157c7ae89087e43c8d6"; }; @@ -236,7 +236,7 @@ cacheEntries = { "bunyan@npm:1.8.15" = { filename = "bunyan-npm-1.8.15-e130eb0235-a479e0787c.zip"; sha512 = "a479e0787c3a0b6565b54bd15f0b6c729d624c5aba53523e140e49e279b7a78508df93000e758bf6d02361117d6b4e6e5fc1d5ece05366fb6c4ba41bf1ac7d52"; }; "@ledgerhq/hw-transport-node-hid-noevents@npm:6.27.3" = { filename = "@ledgerhq-hw-transport-node-hid-noevents-npm-6.27.3-7f13b56bb5-e1dbc4c097.zip"; sha512 = "e1dbc4c0975b41f355b49b2b9ea8d7c833905ce63d10fb42b41e7462604184a3b91a91bae1d606c6ceea0548c9908877d67cdca9cb863e7bffbae21b5c839d9c"; }; "pbkdf2@npm:3.1.2" = { filename = "pbkdf2-npm-3.1.2-d67bbb584f-2c950a100b.zip"; sha512 = "2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c92"; }; -"@cardano-ogmios/schema@npm:5.5.2" = { filename = "@cardano-ogmios-schema-npm-5.5.2-67e8a157c7-4536856e83.zip"; sha512 = "4536856e83f1b9821a62bcaa6238373494290db2e2d1736acbce5be3c6188ab0d94efc949d0e22f9cd8f20b0433261e48a19e6654b0dd71478fb2600885c64aa"; }; +"@cardano-ogmios/schema@npm:5.5.5" = { filename = "@cardano-ogmios-schema-npm-5.5.5-cee17c9c2a-d7b14361e5.zip"; sha512 = "d7b14361e5eb65cfa62801d7cef8d8b6d5dfbb50056a1352dc2e267e3cec1a1606384e5c542de3b214434b19b97736bfaf3399749ed5918a324a46897bdc5d18"; }; "@types/json-bigint@npm:1.0.1" = { filename = "@types-json-bigint-npm-1.0.1-1fbfe75fdf-b39e55a811.zip"; sha512 = "b39e55a811f554bd25f1d991bc4fc70655216dff466f21f97160097573a4bc7b478c1907aa5194c79022c115f509f8e4712083c51f57665e7a2de7412ff7801f"; }; "isomorphic-ws@npm:4.0.1" = { filename = "isomorphic-ws-npm-4.0.1-aa39192848-d7190eadef.zip"; sha512 = "d7190eadefdc28bdb93d67b5f0c603385aaf87724fa2974abb382ac1ec9756ed2cfb27065cbe76122879c2d452e2982bc4314317f3d6c737ddda6c047328771a"; }; "nanoid@npm:3.3.2" = { filename = "nanoid-npm-3.3.2-8c41a1931d-376717f068.zip"; sha512 = "376717f0685251fad77850bd84c6b8d57837c71eeb1c05be7c742140cc1835a5a2953562add05166d6dbc8fb65f3fdffa356213037b967a470e1691dc3e7b9cc"; }; @@ -1249,6 +1249,7 @@ cacheEntries = { "@lerna/symlink-dependencies@npm:5.2.0" = { filename = "@lerna-symlink-dependencies-npm-5.2.0-a6aa998578-4a00e85ac8.zip"; sha512 = "4a00e85ac8bd63896834978cd6d380fecb4093098f09e7d53112b4543ea3ab70b563c24467748c6a4d1e77a25cb0a463f2a3284339bf7366eacff9f1d2ca6593"; }; "slice-ansi@npm:3.0.0" = { filename = "slice-ansi-npm-3.0.0-d9999864af-5ec6d022d1.zip"; sha512 = "5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24"; }; "minipass-fetch@npm:2.1.0" = { filename = "minipass-fetch-npm-2.1.0-300ce55188-1334732859.zip"; sha512 = "1334732859a3f7959ed22589bafd9c40384b885aebb5932328071c33f86b3eb181d54c86919675d1825ab5f1c8e4f328878c863873258d113c29d79a4b0c9c9f"; }; +"fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=18f3a7" = { filename = "fsevents-patch-3340e2eb10-8.zip"; sha512 = "edbd0fd80be379c14409605f77e52fdc78a119e17f875e8b90a220c3e5b29e54a1477c21d91fd30b957ea4866406dc3ff87b61432d2840ff8866b309e5866140"; }; "toidentifier@npm:1.0.1" = { filename = "toidentifier-npm-1.0.1-f759712599-952c29e2a8.zip"; sha512 = "952c29e2a85d7123239b5cfdd889a0dde47ab0497f0913d70588f19c53f7e0b5327c95f4651e413c74b785147f9637b17410ac8c846d5d4a20a5a33eb6dc3a45"; }; "har-schema@npm:2.0.0" = { filename = "har-schema-npm-2.0.0-3a318c0ca5-d8946348f3.zip"; sha512 = "d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b"; }; "@babel/helper-plugin-utils@npm:7.17.12" = { filename = "@babel-helper-plugin-utils-npm-7.17.12-49129e950f-4813cf0ddb.zip"; sha512 = "4813cf0ddb0f143de032cb88d4207024a2334951db330f8216d6fa253ea320c02c9b2667429ef1a34b5e95d4cfbd085f6cb72d418999751c31d0baf2422cc61d"; }; diff --git a/yarn.lock b/yarn.lock index c95e39b924c..5a57274032a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1665,11 +1665,11 @@ __metadata: languageName: node linkType: hard -"@cardano-ogmios/client@npm:5.5.2, @cardano-ogmios/client@npm:^5.5.2": - version: 5.5.2 - resolution: "@cardano-ogmios/client@npm:5.5.2" +"@cardano-ogmios/client@npm:5.5.5, @cardano-ogmios/client@npm:^5.5.5": + version: 5.5.5 + resolution: "@cardano-ogmios/client@npm:5.5.5" dependencies: - "@cardano-ogmios/schema": 5.5.2 + "@cardano-ogmios/schema": 5.5.5 "@cardanosolutions/json-bigint": ^1.0.0 "@types/json-bigint": ^1.0.1 cross-fetch: ^3.1.4 @@ -1678,14 +1678,14 @@ __metadata: nanoid: ^3.1.31 ts-custom-error: ^3.2.0 ws: ^7.4.6 - checksum: 717db950795dbaa3915c71270ade7a3531d29807e27f152d03221e3ecc435819853cbf9d77b7ca18e39a7a5a60bac1e9fc675a8452209b315461ae8bd5fbdc6b + checksum: a1e9673408c510ab66292edd5ae993e65da72c5388f93ed0f9c10e368bc0d723d8733445be89ea13c651e0b30d3cb9298c8bca81efcbc071c0a4edd9a7a7851d languageName: node linkType: hard -"@cardano-ogmios/schema@npm:5.5.2": - version: 5.5.2 - resolution: "@cardano-ogmios/schema@npm:5.5.2" - checksum: 4536856e83f1b9821a62bcaa6238373494290db2e2d1736acbce5be3c6188ab0d94efc949d0e22f9cd8f20b0433261e48a19e6654b0dd71478fb2600885c64aa +"@cardano-ogmios/schema@npm:5.5.5": + version: 5.5.5 + resolution: "@cardano-ogmios/schema@npm:5.5.5" + checksum: d7b14361e5eb65cfa62801d7cef8d8b6d5dfbb50056a1352dc2e267e3cec1a1606384e5c542de3b214434b19b97736bfaf3399749ed5918a324a46897bdc5d18 languageName: node linkType: hard @@ -1798,7 +1798,7 @@ __metadata: version: 0.0.0-use.local resolution: "@cardano-sdk/core@workspace:packages/core" dependencies: - "@cardano-ogmios/client": 5.5.2 + "@cardano-ogmios/client": 5.5.5 "@cardano-sdk/util": ^0.5.0 "@emurgo/cardano-serialization-lib-browser": 11.0.5 "@emurgo/cardano-serialization-lib-nodejs": 11.0.5 @@ -1848,7 +1848,7 @@ __metadata: "@babel/preset-env": ^7.18.2 "@babel/preset-typescript": ^7.17.12 "@cardano-foundation/ledgerjs-hw-app-cardano": 5.0.0 - "@cardano-ogmios/client": ^5.5.2 + "@cardano-ogmios/client": ^5.5.5 "@cardano-sdk/blockfrost": ^0.5.0 "@cardano-sdk/cardano-services": ^0.5.0 "@cardano-sdk/cardano-services-client": ^0.5.0 @@ -2018,7 +2018,7 @@ __metadata: version: 0.0.0-use.local resolution: "@cardano-sdk/ogmios@workspace:packages/ogmios" dependencies: - "@cardano-ogmios/client": 5.5.2 + "@cardano-ogmios/client": 5.5.5 "@cardano-sdk/core": ^0.5.0 "@cardano-sdk/util": ^0.5.0 "@types/node": 14.18.12 @@ -2095,7 +2095,7 @@ __metadata: version: 0.0.0-use.local resolution: "@cardano-sdk/wallet@workspace:packages/wallet" dependencies: - "@cardano-ogmios/client": 5.5.2 + "@cardano-ogmios/client": 5.5.5 "@cardano-sdk/core": ^0.5.0 "@cardano-sdk/dapp-connector": ^0.5.0 "@cardano-sdk/input-selection": ^0.5.0