Skip to content

Commit baebef7

Browse files
committed
fix(core): info action proposal procedure serialization and de-serialization
1 parent f85fb55 commit baebef7

File tree

4 files changed

+17
-11
lines changed

4 files changed

+17
-11
lines changed

packages/core/src/Serialization/TransactionBody/ProposalProcedure/InfoAction.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { CborReader, CborWriter } from '../../CBOR';
33
import { GovernanceActionKind } from './GovernanceActionKind';
44
import { HexBlob, InvalidArgumentError } from '@cardano-sdk/util';
55

6+
const EMBEDDED_GROUP_SIZE = 1;
7+
68
/**
79
* Represents an action that has no direct effect on the blockchain,
810
* but serves as an on-chain record or informative notice.
@@ -22,6 +24,7 @@ export class InfoAction {
2224

2325
// CDDL
2426
// info_action = 6
27+
writer.writeStartArray(EMBEDDED_GROUP_SIZE);
2528
writer.writeInt(GovernanceActionKind.Info);
2629
return writer.encodeAsHex();
2730
}
@@ -35,6 +38,14 @@ export class InfoAction {
3538
static fromCbor(cbor: HexBlob): InfoAction {
3639
const reader = new CborReader(cbor);
3740

41+
const length = reader.readStartArray();
42+
43+
if (length !== EMBEDDED_GROUP_SIZE)
44+
throw new InvalidArgumentError(
45+
'cbor',
46+
`Expected an array of ${EMBEDDED_GROUP_SIZE} elements, but got an array of ${length} elements`
47+
);
48+
3849
const kind = Number(reader.readUInt());
3950

4051
if (kind !== GovernanceActionKind.Info)

packages/core/src/Serialization/TransactionBody/ProposalProcedure/ProposalProcedure.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as Cardano from '../../../Cardano';
22
import { Anchor } from '../../Common/Anchor';
3-
import { CborReader, CborReaderState, CborWriter } from '../../CBOR';
3+
import { CborReader, CborWriter } from '../../CBOR';
44
import { GovernanceActionKind } from './GovernanceActionKind';
55
import { HardForkInitiationAction } from './HardForkInitiationAction';
66
import { HexBlob, InvalidStateError } from '@cardano-sdk/util';
@@ -116,15 +116,10 @@ export class ProposalProcedure {
116116

117117
const actionReader = new CborReader(actionCbor);
118118

119-
let kind;
120-
let action;
119+
actionReader.readStartArray();
121120

122-
if (actionReader.peekState() === CborReaderState.UnsignedInteger) {
123-
kind = Number(actionReader.readInt());
124-
} else {
125-
actionReader.readStartArray();
126-
kind = Number(actionReader.readInt());
127-
}
121+
let action;
122+
const kind = Number(actionReader.readInt());
128123

129124
switch (kind) {
130125
case GovernanceActionKind.ParameterChange:

packages/core/test/Serialization/TransactionBody/ProposalProcedure/InfoAction.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { HexBlob } from '@cardano-sdk/util';
44
import { InfoAction } from '../../../../src/Serialization';
55

66
// Test data used in the following tests was generated with the cardano-serialization-lib
7-
const cbor = HexBlob('06');
7+
const cbor = HexBlob('8106');
88
const core = {
99
__typename: Cardano.GovernanceActionType.info_action
1010
} as Cardano.InfoAction;

packages/core/test/Serialization/TransactionBody/ProposalProcedure/ProposalProcedure.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { HexBlob } from '@cardano-sdk/util';
44
import { ProposalProcedure } from '../../../../src/Serialization';
55

66
const infoActionCbor = HexBlob(
7-
'841a000f4240581de1cb0ec2692497b458e46812c8a5bfa2931d1a2d965a99893828ec810f06827668747470733a2f2f7777772e736f6d6575726c2e696f58200000000000000000000000000000000000000000000000000000000000000000'
7+
'841a000f4240581de1cb0ec2692497b458e46812c8a5bfa2931d1a2d965a99893828ec810f8106827668747470733a2f2f7777772e736f6d6575726c2e696f58200000000000000000000000000000000000000000000000000000000000000000'
88
);
99

1010
const infoActionCore = {

0 commit comments

Comments
 (0)