From 07f7dab076df7f8c494958e666588376abeb73d3 Mon Sep 17 00:00:00 2001 From: Mircea Hasegan Date: Mon, 15 Apr 2024 18:26:44 +0200 Subject: [PATCH 1/5] feat(core): align conway new protocol params --- packages/core/src/Cardano/types/ProtocolParameters.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/core/src/Cardano/types/ProtocolParameters.ts b/packages/core/src/Cardano/types/ProtocolParameters.ts index d1557a97821..5eaa68c3816 100644 --- a/packages/core/src/Cardano/types/ProtocolParameters.ts +++ b/packages/core/src/Cardano/types/ProtocolParameters.ts @@ -112,9 +112,11 @@ export interface PoolVotingThresholds { committeeNormal: Fraction; commiteeNoConfidence: Fraction; hardForkInitiation: Fraction; + securityRelevantParamVotingThreshold: Fraction; } -export interface DelegateRepresentativeThresholds extends PoolVotingThresholds { +export interface DelegateRepresentativeThresholds + extends Omit { updateConstitution: Fraction; ppNetworkGroup: Fraction; ppEconomicGroup: Fraction; @@ -127,19 +129,20 @@ type NewProtocolParamsInConway = { poolVotingThresholds: PoolVotingThresholds; dRepVotingThresholds: DelegateRepresentativeThresholds; minCommitteeSize: number; - committeeTermLimit: number; + committeeTermLimit: EpochNo; governanceActionValidityPeriod: EpochNo; governanceActionDeposit: number; dRepDeposit: number; dRepInactivityPeriod: EpochNo; + minFeeRefScriptCostPerByte: string; }; type ConwayProtocolParameters = BabbageProtocolParameters & NewProtocolParamsInConway; export type ProtocolParameters = ConwayProtocolParameters; -// Even tho extraEntropy was deprecated on babbage era, it is still present in the ProtocolParametersUpdate structure -// since this structure is backward compatible with all eras. +// Even tho extraEntropy was deprecated on babbage era, and protocolVersion was deprecated in conway era, +// they are still present in the ProtocolParametersUpdate structure since this structure is backward compatible with all eras. export type ProtocolParametersUpdate = Partial>; export type GenesisDelegateKeyHash = Crypto.Hash28ByteBase16; From 0a3257e6d27c564e0bdae3f806c89bea0f9a683d Mon Sep 17 00:00:00 2001 From: Mircea Hasegan Date: Mon, 15 Apr 2024 18:26:51 +0200 Subject: [PATCH 2/5] feat(core): update serialization with new protocol params update fields --- .../Update/PoolVotingThresholds.ts | 30 +++++++++++++++---- .../Update/ProtocolParamUpdate.ts | 24 ++++++++++++++- .../ParameterChangeAction.test.ts | 5 ++-- .../Update/PoolVotingThresholds.test.ts | 14 +++++++-- .../Update/ProtocolParamUpdate.test.ts | 15 ++++++---- 5 files changed, 71 insertions(+), 17 deletions(-) diff --git a/packages/core/src/Serialization/Update/PoolVotingThresholds.ts b/packages/core/src/Serialization/Update/PoolVotingThresholds.ts index ba2c08ec3f2..27bf247f617 100644 --- a/packages/core/src/Serialization/Update/PoolVotingThresholds.ts +++ b/packages/core/src/Serialization/Update/PoolVotingThresholds.ts @@ -3,7 +3,7 @@ import { CborReader, CborWriter } from '../CBOR'; import { HexBlob, InvalidArgumentError } from '@cardano-sdk/util'; import { UnitInterval } from '../Common'; -const POOL_VOTING_THRESHOLDS_SIZE = 4; +const POOL_VOTING_THRESHOLDS_SIZE = 5; /** * Governance actions are ratified through on-chain voting. Different @@ -17,6 +17,7 @@ export class PoolVotingThresholds { #committeeNormal: UnitInterval; #committeeNoConfidence: UnitInterval; #hardForkInitiation: UnitInterval; + #securityRelevantParamVotingThreshold: UnitInterval; #originalBytes: HexBlob | undefined = undefined; /** @@ -35,12 +36,14 @@ export class PoolVotingThresholds { motionNoConfidence: UnitInterval, committeeNormal: UnitInterval, committeeNoConfidence: UnitInterval, - hardForkInitiation: UnitInterval + hardForkInitiation: UnitInterval, + securityRelevantParamVotingThreshold: UnitInterval ) { this.#motionNoConfidence = motionNoConfidence; this.#committeeNormal = committeeNormal; this.#committeeNoConfidence = committeeNoConfidence; this.#hardForkInitiation = hardForkInitiation; + this.#securityRelevantParamVotingThreshold = securityRelevantParamVotingThreshold; } /** @@ -59,6 +62,7 @@ export class PoolVotingThresholds { // , unit_interval ; committee normal // , unit_interval ; committee no confidence // , unit_interval ; hard fork initiation + // , unit_interval ; security relevant parameter voting threshold // ] writer.writeStartArray(POOL_VOTING_THRESHOLDS_SIZE); @@ -66,6 +70,7 @@ export class PoolVotingThresholds { writer.writeEncodedValue(Buffer.from(this.#committeeNormal.toCbor(), 'hex')); writer.writeEncodedValue(Buffer.from(this.#committeeNoConfidence.toCbor(), 'hex')); writer.writeEncodedValue(Buffer.from(this.#hardForkInitiation.toCbor(), 'hex')); + writer.writeEncodedValue(Buffer.from(this.#securityRelevantParamVotingThreshold.toCbor(), 'hex')); return writer.encodeAsHex(); } @@ -91,6 +96,7 @@ export class PoolVotingThresholds { const committeeNormal = UnitInterval.fromCbor(HexBlob.fromBytes(reader.readEncodedValue())); const committeeNoConfidence = UnitInterval.fromCbor(HexBlob.fromBytes(reader.readEncodedValue())); const hardForkInitiation = UnitInterval.fromCbor(HexBlob.fromBytes(reader.readEncodedValue())); + const securityRelevantParamVotingThreshold = UnitInterval.fromCbor(HexBlob.fromBytes(reader.readEncodedValue())); reader.readEndArray(); @@ -98,7 +104,8 @@ export class PoolVotingThresholds { motionNoConfidence, committeeNormal, committeeNoConfidence, - hardForkInitiation + hardForkInitiation, + securityRelevantParamVotingThreshold ); thresholds.#originalBytes = cbor; @@ -107,7 +114,7 @@ export class PoolVotingThresholds { } /** - * Creates a Core PoolVotingThresholdsSHOLDS_SIZE object from the current PoolVotingThresholds object. + * Creates a Core PoolVotingThresholds object from the current PoolVotingThresholds object. * * @returns The Core Prices object. */ @@ -116,7 +123,8 @@ export class PoolVotingThresholds { commiteeNoConfidence: this.#committeeNoConfidence.toCore(), committeeNormal: this.#committeeNormal.toCore(), hardForkInitiation: this.#hardForkInitiation.toCore(), - motionNoConfidence: this.#motionNoConfidence.toCore() + motionNoConfidence: this.#motionNoConfidence.toCore(), + securityRelevantParamVotingThreshold: this.#securityRelevantParamVotingThreshold.toCore() }; } @@ -130,7 +138,8 @@ export class PoolVotingThresholds { UnitInterval.fromCore(core.motionNoConfidence), UnitInterval.fromCore(core.committeeNormal), UnitInterval.fromCore(core.commiteeNoConfidence), - UnitInterval.fromCore(core.hardForkInitiation) + UnitInterval.fromCore(core.hardForkInitiation), + UnitInterval.fromCore(core.securityRelevantParamVotingThreshold) ); } @@ -223,4 +232,13 @@ export class PoolVotingThresholds { hardForkInitiation(): UnitInterval { return this.#hardForkInitiation; } + + /** + * Gets the security relevant parameter voting threshold + * + * @returns security relevant parameter voting threshold. + */ + securityRelevantParamVotingThreshold(): UnitInterval { + return this.#securityRelevantParamVotingThreshold; + } } diff --git a/packages/core/src/Serialization/Update/ProtocolParamUpdate.ts b/packages/core/src/Serialization/Update/ProtocolParamUpdate.ts index 17c26f3d93e..083f391046f 100644 --- a/packages/core/src/Serialization/Update/ProtocolParamUpdate.ts +++ b/packages/core/src/Serialization/Update/ProtocolParamUpdate.ts @@ -46,6 +46,7 @@ export class ProtocolParamUpdate { #governanceActionDeposit: number | undefined; #drepDeposit: number | undefined; #drepInactivityPeriod: number | undefined; + #minFeeRefScriptCostPerByte: UnitInterval | undefined; #originalBytes: HexBlob | undefined = undefined; /** @@ -90,6 +91,7 @@ export class ProtocolParamUpdate { // , ? 30: coin ; governance action deposit // , ? 31: coin ; DRep deposit // , ? 32: epoch ; DRep inactivity period + // , ? 33: nonnegative_interval ; MinFee RefScriptCostPerByte // } writer.writeStartMap(this.#getMapSize()); @@ -254,6 +256,12 @@ export class ProtocolParamUpdate { writer.writeInt(32n); writer.writeInt(this.#drepInactivityPeriod); } + + if (this.#minFeeRefScriptCostPerByte) { + writer.writeInt(33n); + writer.writeEncodedValue(Buffer.from(this.#minFeeRefScriptCostPerByte.toCbor(), 'hex')); + } + return writer.encodeAsHex(); } @@ -373,6 +381,9 @@ export class ProtocolParamUpdate { case 32n: params.#drepInactivityPeriod = Number(reader.readInt()); break; + case 33n: + params.#minFeeRefScriptCostPerByte = UnitInterval.fromCbor(HexBlob.fromBytes(reader.readEncodedValue())); + break; } } @@ -392,7 +403,7 @@ export class ProtocolParamUpdate { return { coinsPerUtxoByte: this.#adaPerUtxoByte ? Number(this.#adaPerUtxoByte) : undefined, collateralPercentage: this.#collateralPercentage, - committeeTermLimit: this.#committeeTermLimit, + committeeTermLimit: this.#committeeTermLimit ? Cardano.EpochNo(this.#committeeTermLimit) : undefined, costModels: this.#costModels?.toCore(), dRepDeposit: this.#drepDeposit, dRepInactivityPeriod: this.#drepInactivityPeriod ? Cardano.EpochNo(this.#drepInactivityPeriod) : undefined, @@ -414,6 +425,9 @@ export class ProtocolParamUpdate { minCommitteeSize: this.#minCommitteeSize, minFeeCoefficient: this.#minFeeA ? Number(this.#minFeeA) : undefined, minFeeConstant: this.#minFeeB ? Number(this.#minFeeB) : undefined, + minFeeRefScriptCostPerByte: this.#minFeeRefScriptCostPerByte + ? this.#minFeeRefScriptCostPerByte.toFloat().toString() + : undefined, minPoolCost: this.#minPoolCost ? Number(this.#minPoolCost) : undefined, monetaryExpansion: this.#expansionRate ? this.#expansionRate.toFloat().toString() : undefined, poolDeposit: this.#poolDeposit ? Number(this.#poolDeposit) : undefined, @@ -485,6 +499,9 @@ export class ProtocolParamUpdate { params.#governanceActionDeposit = parametersUpdate.governanceActionDeposit; params.#drepDeposit = parametersUpdate.dRepDeposit; params.#drepInactivityPeriod = parametersUpdate.dRepInactivityPeriod; + params.#minFeeRefScriptCostPerByte = parametersUpdate.minFeeRefScriptCostPerByte + ? UnitInterval.fromFloat(Number(parametersUpdate.minFeeRefScriptCostPerByte)) + : undefined; return params; } @@ -1177,6 +1194,10 @@ export class ProtocolParamUpdate { return this.#drepInactivityPeriod; } + minFeeRefScriptCostPerByte(): UnitInterval | undefined { + return this.#minFeeRefScriptCostPerByte; + } + /** * Gets the size of the serialized map. * @@ -1217,6 +1238,7 @@ export class ProtocolParamUpdate { if (this.#governanceActionDeposit !== undefined) ++mapSize; if (this.#drepDeposit !== undefined) ++mapSize; if (this.#drepInactivityPeriod !== undefined) ++mapSize; + if (this.#minFeeRefScriptCostPerByte !== undefined) ++mapSize; return mapSize; } diff --git a/packages/core/test/Serialization/TransactionBody/ProposalProcedure/ParameterChangeAction.test.ts b/packages/core/test/Serialization/TransactionBody/ProposalProcedure/ParameterChangeAction.test.ts index 0124495e229..49fc156636e 100644 --- a/packages/core/test/Serialization/TransactionBody/ProposalProcedure/ParameterChangeAction.test.ts +++ b/packages/core/test/Serialization/TransactionBody/ProposalProcedure/ParameterChangeAction.test.ts @@ -7,7 +7,7 @@ import { ParameterChangeAction } from '../../../../src/Serialization'; // Test data used in the following tests was generated with the cardano-serialization-lib const cbor = HexBlob( - '8400825820000000000000000000000000000000000000000000000000000000000000000003b8200018640118c80219012c03190190041901f4051a001e8480061a0bebc200071903200819038409d81e8201020ad81e8201030bd81e8201040cd81e8201050d8201582000000000000000000000000000000000000000000000000000000000000000000e820103101903e8111988b812a20098a61a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0374f693194a1f0a0198af1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0223accc0a1a0374f693194a1f0a1a02515e841980b30a1382d81e820102d81e82010214821b00000001000000001b000000010000000015821b00000001000000001b0000000100000000161903ba1719035418181864181984d81e820000d81e820101d81e820202d81e820303181a8ad81e820000d81e820101d81e820202d81e820303d81e820404d81e820505d81e820606d81e820707d81e820808d81e820909181b1864181c18c8181d19012c181e1903e8181f1907d01820191388581c8293d319ef5b3ac72366dd28006bd315b715f7e7cfcbd3004129b80d' + '8400825820000000000000000000000000000000000000000000000000000000000000000003b8200018640118c80219012c03190190041901f4051a001e8480061a0bebc200071903200819038409d81e8201020ad81e8201030bd81e8201040cd81e8201050d8201582000000000000000000000000000000000000000000000000000000000000000000e820103101903e8111988b812a20098a61a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0374f693194a1f0a0198af1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0223accc0a1a0374f693194a1f0a1a02515e841980b30a1382d81e820102d81e82010214821b00000001000000001b000000010000000015821b00000001000000001b0000000100000000161903ba1719035418181864181985d81e820000d81e820101d81e820202d81e820303d81e820101181a8ad81e820000d81e820101d81e820202d81e820303d81e820404d81e820505d81e820606d81e820707d81e820808d81e820909181b1864181c18c8181d19012c181e1903e8181f1907d01820191388581c8293d319ef5b3ac72366dd28006bd315b715f7e7cfcbd3004129b80d' ); const vasilPlutusV1Costmdls = [ @@ -84,7 +84,8 @@ const core = { commiteeNoConfidence: { denominator: 2, numerator: 2 }, committeeNormal: { denominator: 1, numerator: 1 }, hardForkInitiation: { denominator: 3, numerator: 3 }, - motionNoConfidence: { denominator: 0, numerator: 0 } + motionNoConfidence: { denominator: 0, numerator: 0 }, + securityRelevantParamVotingThreshold: { denominator: 1, numerator: 1 } }, prices: { memory: 0.5, steps: 0.5 }, protocolVersion: { major: 1, minor: 3 }, diff --git a/packages/core/test/Serialization/Update/PoolVotingThresholds.test.ts b/packages/core/test/Serialization/Update/PoolVotingThresholds.test.ts index d0d15859dec..88656a34859 100644 --- a/packages/core/test/Serialization/Update/PoolVotingThresholds.test.ts +++ b/packages/core/test/Serialization/Update/PoolVotingThresholds.test.ts @@ -1,16 +1,18 @@ /* eslint-disable sonarjs/no-duplicate-string */ +import { Cardano } from '../../../src'; import { HexBlob } from '@cardano-sdk/util'; import { PoolVotingThresholds } from '../../../src/Serialization'; // Test data used in the following tests was generated with the cardano-serialization-lib -const cbor = HexBlob('84d81e820000d81e820101d81e820202d81e820303'); +const cbor = HexBlob('85d81e820000d81e820101d81e820202d81e820303d81e820101'); -const core = { +const core: Cardano.PoolVotingThresholds = { commiteeNoConfidence: { denominator: 2, numerator: 2 }, committeeNormal: { denominator: 1, numerator: 1 }, hardForkInitiation: { denominator: 3, numerator: 3 }, - motionNoConfidence: { denominator: 0, numerator: 0 } + motionNoConfidence: { denominator: 0, numerator: 0 }, + securityRelevantParamVotingThreshold: { denominator: 1, numerator: 1 } }; describe('PoolVotingThresholds', () => { @@ -21,6 +23,9 @@ describe('PoolVotingThresholds', () => { expect(thresholds.committeeNormal().toCore()).toEqual(core.committeeNormal); expect(thresholds.hardForkInitiation().toCore()).toEqual(core.hardForkInitiation); expect(thresholds.motionNoConfidence().toCore()).toEqual(core.motionNoConfidence); + expect(thresholds.securityRelevantParamVotingThreshold().toCore()).toEqual( + core.securityRelevantParamVotingThreshold + ); }); it('can decode PoolVotingThresholds from Core', () => { @@ -30,6 +35,9 @@ describe('PoolVotingThresholds', () => { expect(thresholds.committeeNormal().toCore()).toEqual(core.committeeNormal); expect(thresholds.hardForkInitiation().toCore()).toEqual(core.hardForkInitiation); expect(thresholds.motionNoConfidence().toCore()).toEqual(core.motionNoConfidence); + expect(thresholds.securityRelevantParamVotingThreshold().toCore()).toEqual( + core.securityRelevantParamVotingThreshold + ); }); it('can encode PoolVotingThresholds to CBOR', () => { diff --git a/packages/core/test/Serialization/Update/ProtocolParamUpdate.test.ts b/packages/core/test/Serialization/Update/ProtocolParamUpdate.test.ts index 1df145fcc58..0e724f8bbde 100644 --- a/packages/core/test/Serialization/Update/ProtocolParamUpdate.test.ts +++ b/packages/core/test/Serialization/Update/ProtocolParamUpdate.test.ts @@ -1,4 +1,5 @@ /* eslint-disable sonarjs/no-duplicate-string */ +import { Cardano } from '../../../src'; import { EpochNo, PlutusLanguageVersion } from '../../../src/Cardano'; import { HexBlob } from '@cardano-sdk/util'; import { ProtocolParamUpdate } from '../../../src/Serialization/Update/ProtocolParamUpdate'; @@ -34,7 +35,7 @@ const cbor = HexBlob( ); const conwayCbor = HexBlob( - 'b8200018640118c80219012c03190190041901f4051a001e8480061a0bebc200071903200819038409d81e8201020ad81e8201030bd81e8201040cd81e8201050d8201582000000000000000000000000000000000000000000000000000000000000000000e820103101903e8111988b812a20098a61a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0374f693194a1f0a0198af1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0223accc0a1a0374f693194a1f0a1a02515e841980b30a1382d81e820102d81e82010214821b00000001000000001b000000010000000015821b00000001000000001b0000000100000000161903ba1719035418181864181984d81e820000d81e820101d81e820202d81e820303181a8ad81e820000d81e820101d81e820202d81e820303d81e820404d81e820505d81e820606d81e820707d81e820808d81e820909181b1864181c18c8181d19012c181e1903e8181f1907d01820191388' + 'b8210018640118c80219012c03190190041901f4051a001e8480061a0bebc200071903200819038409d81e8201020ad81e8201030bd81e8201040cd81e8201050d8201582000000000000000000000000000000000000000000000000000000000000000000e820103101903e8111988b812a20098a61a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0374f693194a1f0a0198af1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0223accc0a1a0374f693194a1f0a1a02515e841980b30a1382d81e820102d81e82010214821b00000001000000001b000000010000000015821b00000001000000001b0000000100000000161903ba1719035418181864181985d81e820000d81e820101d81e820202d81e820303d81e820101181a8ad81e820000d81e820101d81e820202d81e820303d81e820404d81e820505d81e820606d81e820707d81e820808d81e820909181b1864181c18c8181d19012c181e1903e8181f1907d018201913881821d81e82185902' ); const core = { @@ -67,10 +68,10 @@ const core = { treasuryExpansion: '0.25' }; -const conwayCore = { +const conwayCore: Cardano.ProtocolParametersUpdate = { coinsPerUtxoByte: 35_000, collateralPercentage: 852, - committeeTermLimit: 200, + committeeTermLimit: EpochNo(200), costModels: new Map([ [PlutusLanguageVersion.V1, vasilPlutusV1Costmdls], [PlutusLanguageVersion.V2, vasilPlutusV2Costmdls] @@ -104,6 +105,7 @@ const conwayCore = { minCommitteeSize: 100, minFeeCoefficient: 100, minFeeConstant: 200, + minFeeRefScriptCostPerByte: '44.5', minPoolCost: 1000, monetaryExpansion: '0.3333333333333333', poolDeposit: 200_000_000, @@ -113,7 +115,8 @@ const conwayCore = { commiteeNoConfidence: { denominator: 2, numerator: 2 }, committeeNormal: { denominator: 1, numerator: 1 }, hardForkInitiation: { denominator: 3, numerator: 3 }, - motionNoConfidence: { denominator: 0, numerator: 0 } + motionNoConfidence: { denominator: 0, numerator: 0 }, + securityRelevantParamVotingThreshold: { denominator: 1, numerator: 1 } }, prices: { memory: 0.5, steps: 0.5 }, protocolVersion: { major: 1, minor: 3 }, @@ -226,8 +229,10 @@ describe('ProtocolParamUpdate', () => { commiteeNoConfidence: { denominator: 2, numerator: 2 }, committeeNormal: { denominator: 1, numerator: 1 }, hardForkInitiation: { denominator: 3, numerator: 3 }, - motionNoConfidence: { denominator: 0, numerator: 0 } + motionNoConfidence: { denominator: 0, numerator: 0 }, + securityRelevantParamVotingThreshold: { denominator: 1, numerator: 1 } }); + expect(proposedParams.minFeeRefScriptCostPerByte()?.toFloat()).toEqual(44.5); }); // eslint-disable-next-line max-statements From 8226fd95aa8241b50d3787cf9dfb5eee80abdde3 Mon Sep 17 00:00:00 2001 From: Mircea Hasegan Date: Mon, 15 Apr 2024 18:25:59 +0200 Subject: [PATCH 3/5] feat(cardano-services): network info provider new protocol params --- .../src/NetworkInfo/DbSyncNetworkInfoProvider/mappers.ts | 6 ++++-- .../src/NetworkInfo/DbSyncNetworkInfoProvider/types.ts | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/cardano-services/src/NetworkInfo/DbSyncNetworkInfoProvider/mappers.ts b/packages/cardano-services/src/NetworkInfo/DbSyncNetworkInfoProvider/mappers.ts index 6042d74ec33..d5b7b1cd980 100644 --- a/packages/cardano-services/src/NetworkInfo/DbSyncNetworkInfoProvider/mappers.ts +++ b/packages/cardano-services/src/NetworkInfo/DbSyncNetworkInfoProvider/mappers.ts @@ -67,11 +67,12 @@ export const toProtocolParams = ({ governance_action_validity_period, governance_action_deposit, drep_deposit, - drep_inactivity_period + drep_inactivity_period, + min_fee_ref_script_cost_per_byte }: ProtocolParamsModel): Cardano.ProtocolParameters => ({ coinsPerUtxoByte: Number(coins_per_utxo_size), collateralPercentage: collateral_percent, - committeeTermLimit: Number(committee_term_limit), + committeeTermLimit: Cardano.EpochNo(committee_term_limit), costModels: mapCostModels(costs), dRepDeposit: Number(drep_deposit), dRepInactivityPeriod: Cardano.EpochNo(drep_inactivity_period), @@ -96,6 +97,7 @@ export const toProtocolParams = ({ minCommitteeSize: Number(min_committee_size), minFeeCoefficient: min_fee_a, minFeeConstant: min_fee_b, + minFeeRefScriptCostPerByte: String(min_fee_ref_script_cost_per_byte), minPoolCost: Number(min_pool_cost), monetaryExpansion: String(monetary_expand_rate), poolDeposit: Number(pool_deposit), diff --git a/packages/cardano-services/src/NetworkInfo/DbSyncNetworkInfoProvider/types.ts b/packages/cardano-services/src/NetworkInfo/DbSyncNetworkInfoProvider/types.ts index 4cab44e7aed..f893e08bdd2 100644 --- a/packages/cardano-services/src/NetworkInfo/DbSyncNetworkInfoProvider/types.ts +++ b/packages/cardano-services/src/NetworkInfo/DbSyncNetworkInfoProvider/types.ts @@ -42,6 +42,7 @@ export interface ProtocolParamsModel { max_bh_size: number; optimal_pool_count: number; influence: number; + min_fee_ref_script_cost_per_byte: number; monetary_expand_rate: number; treasury_growth_rate: number; decentralisation: number; From 86bba7bb905e0dd6ba67d779cf0485b17ee7e909 Mon Sep 17 00:00:00 2001 From: Mircea Hasegan Date: Wed, 17 Apr 2024 09:49:24 +0200 Subject: [PATCH 4/5] fix(core)!: typo commiteeNoConfidence committeeNoConfidence --- packages/core/src/Cardano/types/ProtocolParameters.ts | 2 +- .../core/src/Serialization/Update/DrepVotingThresholds.ts | 4 ++-- .../core/src/Serialization/Update/PoolVotingThresholds.ts | 4 ++-- .../ProposalProcedure/ParameterChangeAction.test.ts | 4 ++-- .../Serialization/Update/DrepVotingThresholds.test.ts | 6 +++--- .../Serialization/Update/PoolVotingThresholds.test.ts | 6 +++--- .../test/Serialization/Update/ProtocolParamUpdate.test.ts | 8 ++++---- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/core/src/Cardano/types/ProtocolParameters.ts b/packages/core/src/Cardano/types/ProtocolParameters.ts index 5eaa68c3816..cd9dd9c1e29 100644 --- a/packages/core/src/Cardano/types/ProtocolParameters.ts +++ b/packages/core/src/Cardano/types/ProtocolParameters.ts @@ -110,7 +110,7 @@ type BabbageProtocolParameters = Omit { it('can decode DrepVotingThresholds from CBOR', () => { const thresholds = DrepVotingThresholds.fromCbor(cbor); - expect(thresholds.committeeNoConfidence().toCore()).toEqual(core.commiteeNoConfidence); + expect(thresholds.committeeNoConfidence().toCore()).toEqual(core.committeeNoConfidence); expect(thresholds.committeeNormal().toCore()).toEqual(core.committeeNormal); expect(thresholds.hardForkInitiation().toCore()).toEqual(core.hardForkInitiation); expect(thresholds.motionNoConfidence().toCore()).toEqual(core.motionNoConfidence); @@ -40,7 +40,7 @@ describe('DrepVotingThresholds', () => { it('can decode DrepVotingThresholds from Core', () => { const thresholds = DrepVotingThresholds.fromCore(core); - expect(thresholds.committeeNoConfidence().toCore()).toEqual(core.commiteeNoConfidence); + expect(thresholds.committeeNoConfidence().toCore()).toEqual(core.committeeNoConfidence); expect(thresholds.committeeNormal().toCore()).toEqual(core.committeeNormal); expect(thresholds.hardForkInitiation().toCore()).toEqual(core.hardForkInitiation); expect(thresholds.motionNoConfidence().toCore()).toEqual(core.motionNoConfidence); diff --git a/packages/core/test/Serialization/Update/PoolVotingThresholds.test.ts b/packages/core/test/Serialization/Update/PoolVotingThresholds.test.ts index 88656a34859..c9236c8c766 100644 --- a/packages/core/test/Serialization/Update/PoolVotingThresholds.test.ts +++ b/packages/core/test/Serialization/Update/PoolVotingThresholds.test.ts @@ -8,7 +8,7 @@ import { PoolVotingThresholds } from '../../../src/Serialization'; const cbor = HexBlob('85d81e820000d81e820101d81e820202d81e820303d81e820101'); const core: Cardano.PoolVotingThresholds = { - commiteeNoConfidence: { denominator: 2, numerator: 2 }, + committeeNoConfidence: { denominator: 2, numerator: 2 }, committeeNormal: { denominator: 1, numerator: 1 }, hardForkInitiation: { denominator: 3, numerator: 3 }, motionNoConfidence: { denominator: 0, numerator: 0 }, @@ -19,7 +19,7 @@ describe('PoolVotingThresholds', () => { it('can decode PoolVotingThresholds from CBOR', () => { const thresholds = PoolVotingThresholds.fromCbor(cbor); - expect(thresholds.committeeNoConfidence().toCore()).toEqual(core.commiteeNoConfidence); + expect(thresholds.committeeNoConfidence().toCore()).toEqual(core.committeeNoConfidence); expect(thresholds.committeeNormal().toCore()).toEqual(core.committeeNormal); expect(thresholds.hardForkInitiation().toCore()).toEqual(core.hardForkInitiation); expect(thresholds.motionNoConfidence().toCore()).toEqual(core.motionNoConfidence); @@ -31,7 +31,7 @@ describe('PoolVotingThresholds', () => { it('can decode PoolVotingThresholds from Core', () => { const thresholds = PoolVotingThresholds.fromCore(core); - expect(thresholds.committeeNoConfidence().toCore()).toEqual(core.commiteeNoConfidence); + expect(thresholds.committeeNoConfidence().toCore()).toEqual(core.committeeNoConfidence); expect(thresholds.committeeNormal().toCore()).toEqual(core.committeeNormal); expect(thresholds.hardForkInitiation().toCore()).toEqual(core.hardForkInitiation); expect(thresholds.motionNoConfidence().toCore()).toEqual(core.motionNoConfidence); diff --git a/packages/core/test/Serialization/Update/ProtocolParamUpdate.test.ts b/packages/core/test/Serialization/Update/ProtocolParamUpdate.test.ts index 0e724f8bbde..b5a6e37bb69 100644 --- a/packages/core/test/Serialization/Update/ProtocolParamUpdate.test.ts +++ b/packages/core/test/Serialization/Update/ProtocolParamUpdate.test.ts @@ -79,7 +79,7 @@ const conwayCore: Cardano.ProtocolParametersUpdate = { dRepDeposit: 2000, dRepInactivityPeriod: EpochNo(5000), dRepVotingThresholds: { - commiteeNoConfidence: { denominator: 2, numerator: 2 }, + committeeNoConfidence: { denominator: 2, numerator: 2 }, committeeNormal: { denominator: 1, numerator: 1 }, hardForkInitiation: { denominator: 4, numerator: 4 }, motionNoConfidence: { denominator: 0, numerator: 0 }, @@ -112,7 +112,7 @@ const conwayCore: Cardano.ProtocolParametersUpdate = { poolInfluence: '0.5', poolRetirementEpochBound: 800, poolVotingThresholds: { - commiteeNoConfidence: { denominator: 2, numerator: 2 }, + committeeNoConfidence: { denominator: 2, numerator: 2 }, committeeNormal: { denominator: 1, numerator: 1 }, hardForkInitiation: { denominator: 3, numerator: 3 }, motionNoConfidence: { denominator: 0, numerator: 0 }, @@ -214,7 +214,7 @@ describe('ProtocolParamUpdate', () => { expect(proposedParams.drepDeposit()).toEqual(2000); expect(proposedParams.drepInactivityPeriod()).toEqual(5000); expect(proposedParams.drepVotingThresholds()?.toCore()).toEqual({ - commiteeNoConfidence: { denominator: 2, numerator: 2 }, + committeeNoConfidence: { denominator: 2, numerator: 2 }, committeeNormal: { denominator: 1, numerator: 1 }, hardForkInitiation: { denominator: 4, numerator: 4 }, motionNoConfidence: { denominator: 0, numerator: 0 }, @@ -226,7 +226,7 @@ describe('ProtocolParamUpdate', () => { updateConstitution: { denominator: 3, numerator: 3 } }); expect(proposedParams.poolVotingThresholds()?.toCore()).toEqual({ - commiteeNoConfidence: { denominator: 2, numerator: 2 }, + committeeNoConfidence: { denominator: 2, numerator: 2 }, committeeNormal: { denominator: 1, numerator: 1 }, hardForkInitiation: { denominator: 3, numerator: 3 }, motionNoConfidence: { denominator: 0, numerator: 0 }, From dd3a43b5d217dad798a91a988d01f6a4001784e8 Mon Sep 17 00:00:00 2001 From: Mircea Hasegan Date: Wed, 17 Apr 2024 15:23:50 +0200 Subject: [PATCH 5/5] feat: serialize only valid conway params in gov action --- packages/core/src/Cardano/types/Governance.ts | 4 ++-- .../core/src/Cardano/types/ProtocolParameters.ts | 6 +++--- .../Serialization/Update/ProtocolParamUpdate.ts | 14 +++++++++----- .../ParameterChangeAction.test.ts | 10 ++++++---- packages/util-dev/src/mockProviders/mockData.ts | 2 +- 5 files changed, 21 insertions(+), 15 deletions(-) diff --git a/packages/core/src/Cardano/types/Governance.ts b/packages/core/src/Cardano/types/Governance.ts index 268fae39655..92df6798c4b 100644 --- a/packages/core/src/Cardano/types/Governance.ts +++ b/packages/core/src/Cardano/types/Governance.ts @@ -2,7 +2,7 @@ import * as Crypto from '@cardano-sdk/crypto'; import { Credential, CredentialType, RewardAccount } from '../Address'; import { EpochNo, Fraction, ProtocolVersion, TransactionId } from '.'; import { Lovelace } from './Value'; -import { ProtocolParametersUpdate } from './ProtocolParameters'; +import { ProtocolParametersUpdateConway } from './ProtocolParameters'; export type Anchor = { url: string; @@ -43,7 +43,7 @@ export type Constitution = { export type ParameterChangeAction = { __typename: GovernanceActionType.parameter_change_action; governanceActionId: GovernanceActionId | null; - protocolParamUpdate: ProtocolParametersUpdate; + protocolParamUpdate: ProtocolParametersUpdateConway; policyHash: Crypto.Hash28ByteBase16 | null; }; diff --git a/packages/core/src/Cardano/types/ProtocolParameters.ts b/packages/core/src/Cardano/types/ProtocolParameters.ts index cd9dd9c1e29..a47a960a17c 100644 --- a/packages/core/src/Cardano/types/ProtocolParameters.ts +++ b/packages/core/src/Cardano/types/ProtocolParameters.ts @@ -137,13 +137,13 @@ type NewProtocolParamsInConway = { minFeeRefScriptCostPerByte: string; }; -type ConwayProtocolParameters = BabbageProtocolParameters & NewProtocolParamsInConway; - -export type ProtocolParameters = ConwayProtocolParameters; +export type ProtocolParameters = BabbageProtocolParameters & NewProtocolParamsInConway; +export type ConwayProtocolParameters = Omit; // Even tho extraEntropy was deprecated on babbage era, and protocolVersion was deprecated in conway era, // they are still present in the ProtocolParametersUpdate structure since this structure is backward compatible with all eras. export type ProtocolParametersUpdate = Partial>; +export type ProtocolParametersUpdateConway = Partial; export type GenesisDelegateKeyHash = Crypto.Hash28ByteBase16; export type ProposedProtocolParameterUpdates = Map; diff --git a/packages/core/src/Serialization/Update/ProtocolParamUpdate.ts b/packages/core/src/Serialization/Update/ProtocolParamUpdate.ts index 083f391046f..169258bd675 100644 --- a/packages/core/src/Serialization/Update/ProtocolParamUpdate.ts +++ b/packages/core/src/Serialization/Update/ProtocolParamUpdate.ts @@ -446,7 +446,9 @@ export class ProtocolParamUpdate { * * @param parametersUpdate core parametersUpdate object. */ - static fromCore(parametersUpdate: Cardano.ProtocolParametersUpdate) { + static fromCore( + parametersUpdate: T + ) { const params = new ProtocolParamUpdate(); params.#minFeeA = parametersUpdate.minFeeCoefficient ? BigInt(parametersUpdate.minFeeCoefficient) : undefined; @@ -470,14 +472,10 @@ export class ProtocolParamUpdate { ? UnitInterval.fromFloat(Number(parametersUpdate.decentralizationParameter)) : undefined; params.#minPoolCost = parametersUpdate.minPoolCost ? BigInt(parametersUpdate.minPoolCost) : undefined; - params.#protocolVersion = parametersUpdate.protocolVersion - ? ProtocolVersion.fromCore(parametersUpdate.protocolVersion) - : undefined; params.#maxValueSize = parametersUpdate.maxValueSize; params.#maxTxSize = parametersUpdate.maxTxSize; params.#collateralPercentage = parametersUpdate.collateralPercentage; params.#maxCollateralInputs = parametersUpdate.maxCollateralInputs; - params.#extraEntropy = parametersUpdate.extraEntropy ? HexBlob(parametersUpdate.extraEntropy) : undefined; params.#costModels = parametersUpdate.costModels ? Costmdls.fromCore(parametersUpdate.costModels) : undefined; params.#executionCosts = parametersUpdate.prices ? ExUnitPrices.fromCore(parametersUpdate.prices) : undefined; params.#maxTxExUnits = parametersUpdate.maxExecutionUnitsPerTransaction @@ -503,6 +501,12 @@ export class ProtocolParamUpdate { ? UnitInterval.fromFloat(Number(parametersUpdate.minFeeRefScriptCostPerByte)) : undefined; + const { protocolVersion, extraEntropy } = parametersUpdate as unknown as Cardano.ProtocolParametersUpdate; + if (protocolVersion !== undefined || extraEntropy !== undefined) { + params.#protocolVersion = protocolVersion ? ProtocolVersion.fromCore(protocolVersion) : undefined; + params.#extraEntropy = extraEntropy ? HexBlob(extraEntropy) : undefined; + } + return params; } diff --git a/packages/core/test/Serialization/TransactionBody/ProposalProcedure/ParameterChangeAction.test.ts b/packages/core/test/Serialization/TransactionBody/ProposalProcedure/ParameterChangeAction.test.ts index 10e9c8fa1db..56c056ca747 100644 --- a/packages/core/test/Serialization/TransactionBody/ProposalProcedure/ParameterChangeAction.test.ts +++ b/packages/core/test/Serialization/TransactionBody/ProposalProcedure/ParameterChangeAction.test.ts @@ -7,7 +7,7 @@ import { ParameterChangeAction } from '../../../../src/Serialization'; // Test data used in the following tests was generated with the cardano-serialization-lib const cbor = HexBlob( - '8400825820000000000000000000000000000000000000000000000000000000000000000003b8200018640118c80219012c03190190041901f4051a001e8480061a0bebc200071903200819038409d81e8201020ad81e8201030bd81e8201040cd81e8201050d8201582000000000000000000000000000000000000000000000000000000000000000000e820103101903e8111988b812a20098a61a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0374f693194a1f0a0198af1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0223accc0a1a0374f693194a1f0a1a02515e841980b30a1382d81e820102d81e82010214821b00000001000000001b000000010000000015821b00000001000000001b0000000100000000161903ba1719035418181864181985d81e820000d81e820101d81e820202d81e820303d81e820101181a8ad81e820000d81e820101d81e820202d81e820303d81e820404d81e820505d81e820606d81e820707d81e820808d81e820909181b1864181c18c8181d19012c181e1903e8181f1907d01820191388581c8293d319ef5b3ac72366dd28006bd315b715f7e7cfcbd3004129b80d' + '8400825820000000000000000000000000000000000000000000000000000000000000000003b81f0018640118c80219012c03190190041901f4051a001e8480061a0bebc200071903200819038409d81e8201020ad81e8201030bd81e8201040cd81e8201050d820158200000000000000000000000000000000000000000000000000000000000000000101903e8111988b812a20098a61a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0374f693194a1f0a0198af1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0223accc0a1a0374f693194a1f0a1a02515e841980b30a1382d81e820102d81e82010214821b00000001000000001b000000010000000015821b00000001000000001b0000000100000000161903ba1719035418181864181985d81e820000d81e820101d81e820202d81e820303d81e820101181a8ad81e820000d81e820101d81e820202d81e820303d81e820404d81e820505d81e820606d81e820707d81e820808d81e820909181b1864181c18c8181d19012c181e1903e8181f1907d01820191388581c8293d319ef5b3ac72366dd28006bd315b715f7e7cfcbd3004129b80d' ); const vasilPlutusV1Costmdls = [ @@ -36,12 +36,15 @@ const vasilPlutusV2Costmdls = [ const core = { __typename: Cardano.GovernanceActionType.parameter_change_action, - governanceActionId: { actionIndex: 3, id: '0000000000000000000000000000000000000000000000000000000000000000' }, + governanceActionId: { + actionIndex: 3, + id: Cardano.TransactionId('0000000000000000000000000000000000000000000000000000000000000000') + }, policyHash: Hash28ByteBase16('8293d319ef5b3ac72366dd28006bd315b715f7e7cfcbd3004129b80d'), protocolParamUpdate: { coinsPerUtxoByte: 35_000, collateralPercentage: 852, - committeeTermLimit: 200, + committeeTermLimit: Cardano.EpochNo(200), costModels: new Map([ [PlutusLanguageVersion.V1, vasilPlutusV1Costmdls], [PlutusLanguageVersion.V2, vasilPlutusV2Costmdls] @@ -88,7 +91,6 @@ const core = { securityRelevantParamVotingThreshold: { denominator: 1, numerator: 1 } }, prices: { memory: 0.5, steps: 0.5 }, - protocolVersion: { major: 1, minor: 3 }, stakeKeyDeposit: 2_000_000, treasuryExpansion: '0.25' } diff --git a/packages/util-dev/src/mockProviders/mockData.ts b/packages/util-dev/src/mockProviders/mockData.ts index b655b625052..5a6d7a703b2 100644 --- a/packages/util-dev/src/mockProviders/mockData.ts +++ b/packages/util-dev/src/mockProviders/mockData.ts @@ -42,7 +42,7 @@ export const protocolParameters = { prices: { memory: 0.0577, steps: 0.000_007_21 }, protocolVersion: { major: 5, minor: 0 }, stakeKeyDeposit: 2_000_000 -} as Cardano.ProtocolParameters; +} as Required; export const epochRewards = [ {