Skip to content

Commit ae6cab5

Browse files
spkjpfaustbrian
authored andcommitted
feat(core-transactions): versioned transaction types
1 parent 84c4788 commit ae6cab5

File tree

88 files changed

+960
-741
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+960
-741
lines changed

__tests__/unit/crypto/transactions/builders/transactions/delegate-registration.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import "jest-extended";
22

33
import { configManager } from "@packages/crypto/src/managers";
44
import { TransactionType } from "@packages/crypto/src/enums";
5-
import { DelegateRegistrationTransaction, Utils } from "@packages/crypto/src/transactions";
5+
import { Utils } from "@packages/crypto/src/transactions";
6+
import { Two } from "@packages/crypto/src/transactions/types";
67
import { BuilderFactory } from "@packages/crypto/src/transactions/builders";
78
import { DelegateRegistrationBuilder } from "@packages/crypto/src/transactions/builders/transactions/delegate-registration";
89
import { BigNumber } from "@packages/crypto/src/utils";
@@ -49,7 +50,7 @@ describe("Delegate Registration Transaction", () => {
4950
it("should have its specific properties", () => {
5051
expect(builder).toHaveProperty("data.type", TransactionType.DelegateRegistration);
5152
expect(builder).toHaveProperty("data.amount", BigNumber.ZERO);
52-
expect(builder).toHaveProperty("data.fee", DelegateRegistrationTransaction.staticFee());
53+
expect(builder).toHaveProperty("data.fee", Two.DelegateRegistrationTransaction.staticFee());
5354
expect(builder).toHaveProperty("data.recipientId", undefined);
5455
expect(builder).toHaveProperty("data.senderPublicKey", undefined);
5556
expect(builder).toHaveProperty("data.asset", { delegate: {} });

__tests__/unit/crypto/transactions/builders/transactions/delegate-resignation.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import "jest-extended";
22

33
import { configManager } from "@packages/crypto/src/managers";
44
import { TransactionType } from "@packages/crypto/src/enums";
5-
import { DelegateResignationTransaction } from "@packages/crypto/src/transactions/";
65
import { BuilderFactory } from "@packages/crypto/src/transactions/builders";
76
import { DelegateResignationBuilder } from "@packages/crypto/src/transactions/builders/transactions/delegate-resignation";
87
import { BigNumber } from "@packages/crypto/src/utils";
8+
import { Two } from "@packages/crypto/src/transactions/types";
99

1010
import { Generators } from "@packages/core-test-framework/src";
1111

@@ -40,7 +40,7 @@ describe("Delegate Resignation Transaction", () => {
4040
it("should have its specific properties", () => {
4141
expect(builder).toHaveProperty("data.type", TransactionType.DelegateResignation);
4242
expect(builder).toHaveProperty("data.amount", BigNumber.ZERO);
43-
expect(builder).toHaveProperty("data.fee", DelegateResignationTransaction.staticFee());
43+
expect(builder).toHaveProperty("data.fee", Two.DelegateResignationTransaction.staticFee());
4444
expect(builder).toHaveProperty("data.senderPublicKey", undefined);
4545
});
4646

__tests__/unit/crypto/transactions/builders/transactions/htlc-claim.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { configManager } from "@packages/crypto/src/managers";
44
import { TransactionType } from "@packages/crypto/src/enums";
55
import { BuilderFactory } from "@packages/crypto/src/transactions";
66
import { HtlcClaimBuilder } from "@packages/crypto/src/transactions/builders/transactions/htlc-claim";
7-
import { HtlcClaimTransaction } from "@packages/crypto/src/transactions/types/htlc-claim";
7+
import { Two } from "@packages/crypto/src/transactions/types";
88
import { BigNumber } from "@packages/crypto/src/utils";
99

1010
import { Generators } from "@packages/core-test-framework/src";
@@ -22,7 +22,7 @@ beforeEach(() => {
2222
describe("Htlc claim Transaction", () => {
2323
it("should have its specific properties", () => {
2424
expect(builder).toHaveProperty("data.type", TransactionType.HtlcClaim);
25-
expect(builder).toHaveProperty("data.fee", HtlcClaimTransaction.staticFee());
25+
expect(builder).toHaveProperty("data.fee", Two.HtlcClaimTransaction.staticFee());
2626
expect(builder).toHaveProperty("data.amount", BigNumber.make(0));
2727
expect(builder).toHaveProperty("data.asset", {});
2828
});

__tests__/unit/crypto/transactions/builders/transactions/htlc-lock.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { configManager } from "@packages/crypto/src/managers";
44
import { HtlcLockExpirationType, TransactionType } from "@packages/crypto/src/enums";
55
import { BuilderFactory } from "@packages/crypto/src/transactions";
66
import { HtlcLockBuilder } from "@packages/crypto/src/transactions/builders/transactions/htlc-lock";
7-
import { HtlcLockTransaction } from "@packages/crypto/src/transactions/types/htlc-lock";
7+
import { Two } from "@packages/crypto/src/transactions/types";
88

99
import { Generators } from "@packages/core-test-framework/src";
1010

@@ -23,7 +23,7 @@ beforeEach(() => {
2323
describe("Htlc lock Transaction", () => {
2424
it("should have its specific properties", () => {
2525
expect(builder).toHaveProperty("data.type", TransactionType.HtlcLock);
26-
expect(builder).toHaveProperty("data.fee", HtlcLockTransaction.staticFee());
26+
expect(builder).toHaveProperty("data.fee", Two.HtlcLockTransaction.staticFee());
2727
expect(builder).toHaveProperty("data.asset", {});
2828
});
2929

__tests__/unit/crypto/transactions/builders/transactions/htlc-refund.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { configManager } from "@packages/crypto/src/managers";
44
import { TransactionType } from "@packages/crypto/src/enums";
55
import { BuilderFactory } from "@packages/crypto/src/transactions";
66
import { HtlcRefundBuilder } from "@packages/crypto/src/transactions/builders/transactions/htlc-refund";
7-
import { HtlcRefundTransaction } from "@packages/crypto/src/transactions/types/htlc-refund";
7+
import { Two } from "@packages/crypto/src/transactions/types";
88
import { BigNumber } from "@packages/crypto/src/utils";
99

1010
import { Generators } from "@packages/core-test-framework/src";
@@ -22,7 +22,7 @@ beforeEach(() => {
2222
describe("Htlc refund Transaction", () => {
2323
it("should have its specific properties", () => {
2424
expect(builder).toHaveProperty("data.type", TransactionType.HtlcRefund);
25-
expect(builder).toHaveProperty("data.fee", HtlcRefundTransaction.staticFee());
25+
expect(builder).toHaveProperty("data.fee", Two.HtlcRefundTransaction.staticFee());
2626
expect(builder).toHaveProperty("data.amount", BigNumber.make(0));
2727
expect(builder).toHaveProperty("data.asset", {});
2828
});

__tests__/unit/crypto/transactions/builders/transactions/ipfs.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import "jest-extended";
33
import { configManager } from "@packages/crypto/src/managers";
44
import { Utils } from "@arkecosystem/crypto";
55
import { TransactionType } from "@packages/crypto/src/enums";
6-
import { BuilderFactory, IpfsTransaction } from "@packages/crypto/src/transactions";
6+
import { BuilderFactory } from "@packages/crypto/src/transactions";
7+
import { Two } from "@packages/crypto/src/transactions/types";
78
import { IPFSBuilder } from "@packages/crypto/src/transactions/builders/transactions/ipfs";
89

910
import { Generators } from "@packages/core-test-framework/src";
@@ -21,7 +22,7 @@ beforeEach(() => {
2122
describe("IPFS Transaction", () => {
2223
it("should have its specific properties", () => {
2324
expect(builder).toHaveProperty("data.type", TransactionType.Ipfs);
24-
expect(builder).toHaveProperty("data.fee", IpfsTransaction.staticFee());
25+
expect(builder).toHaveProperty("data.fee", Two.IpfsTransaction.staticFee());
2526
expect(builder).toHaveProperty("data.amount", Utils.BigNumber.make(0));
2627
expect(builder).toHaveProperty("data.asset", {});
2728
});

__tests__/unit/crypto/transactions/builders/transactions/multi-payment.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ import "jest-extended";
33
import { configManager } from "@packages/crypto/src/managers";
44
import { TransactionType } from "@packages/crypto/src/enums";
55
import { MaximumPaymentCountExceededError } from "@packages/crypto/src/errors";
6-
import { BuilderFactory, MultiPaymentTransaction } from "@packages/crypto/src/transactions";
6+
import { BuilderFactory } from "@packages/crypto/src/transactions";
77
import { MultiPaymentBuilder } from "@packages/crypto/src/transactions/builders/transactions/multi-payment";
8+
import { Two } from "@packages/crypto/src/transactions/types";
89
import { BigNumber } from "@packages/crypto/src/utils";
910

1011
import { Generators } from "@packages/core-test-framework/src";
@@ -22,7 +23,7 @@ beforeEach(() => {
2223
describe("Multi Payment Transaction", () => {
2324
it("should have its specific properties", () => {
2425
expect(builder).toHaveProperty("data.type", TransactionType.MultiPayment);
25-
expect(builder).toHaveProperty("data.fee", MultiPaymentTransaction.staticFee());
26+
expect(builder).toHaveProperty("data.fee", Two.MultiPaymentTransaction.staticFee());
2627
expect(builder).toHaveProperty("data.asset.payments", []);
2728
expect(builder).toHaveProperty("data.vendorField", undefined);
2829
});

__tests__/unit/crypto/transactions/builders/transactions/multi-signature.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import "jest-extended";
33
import { configManager } from "@packages/crypto/src/managers";
44
import { TransactionType } from "@packages/crypto/src/enums";
55
import { TransactionVersionError } from "@packages/crypto/src/errors";
6-
import { BuilderFactory, MultiSignatureRegistrationTransaction } from "@packages/crypto/src/transactions";
6+
import { BuilderFactory } from "@packages/crypto/src/transactions";
7+
import { Two } from "@packages/crypto/src/transactions/types";
78
import { MultiSignatureBuilder } from "@packages/crypto/src/transactions/builders/transactions/multi-signature";
89
import * as Utils from "@packages/crypto/src/utils";
910

@@ -71,7 +72,7 @@ describe("Multi Signature Transaction", () => {
7172
});
7273

7374
describe("multiSignatureAsset", () => {
74-
const multiSignatureFee = MultiSignatureRegistrationTransaction.staticFee();
75+
const multiSignatureFee = Two.MultiSignatureRegistrationTransaction.staticFee();
7576
const multiSignature = {
7677
publicKeys: ["key a", "key b", "key c"],
7778
min: 1,

__tests__/unit/crypto/transactions/builders/transactions/second-signature.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { configManager } from "@packages/crypto/src/managers";
44
import { Utils } from "@arkecosystem/crypto";
55
import { TransactionType } from "@packages/crypto/src/enums";
66
import { Keys } from "@packages/crypto/src/identities";
7-
import { BuilderFactory, SecondSignatureRegistrationTransaction } from "@packages/crypto/src/transactions";
7+
import { BuilderFactory } from "@packages/crypto/src/transactions";
8+
import { Two } from "@packages/crypto/src/transactions/types";
89
import { SecondSignatureBuilder } from "@packages/crypto/src/transactions/builders/transactions/second-signature";
910

1011
import { Factories, Generators } from "@packages/core-test-framework/src";
@@ -36,7 +37,7 @@ describe("Second Signature Transaction", () => {
3637

3738
it("should have its specific properties", () => {
3839
expect(builder).toHaveProperty("data.type", TransactionType.SecondSignature);
39-
expect(builder).toHaveProperty("data.fee", SecondSignatureRegistrationTransaction.staticFee());
40+
expect(builder).toHaveProperty("data.fee", Two.SecondSignatureRegistrationTransaction.staticFee());
4041
expect(builder).toHaveProperty("data.amount", Utils.BigNumber.make(0));
4142
expect(builder).toHaveProperty("data.recipientId", undefined);
4243
expect(builder).toHaveProperty("data.senderPublicKey", undefined);

__tests__/unit/crypto/transactions/builders/transactions/transfer.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import { configManager } from "@packages/crypto/src/managers";
66
import { TransactionType } from "@packages/crypto/src/enums";
77
import { Keys, WIF } from "@packages/crypto/src/identities";
88
import { devnet } from "@packages/crypto/src/networks";
9-
import { BuilderFactory, TransferTransaction } from "@packages/crypto/src/transactions";
9+
import { BuilderFactory } from "@packages/crypto/src/transactions";
10+
import { Two } from "@packages/crypto/src/transactions/types";
1011
import { TransferBuilder } from "@packages/crypto/src/transactions/builders/transactions/transfer";
1112

1213
import { Factories, Generators } from "@packages/core-test-framework/src";
@@ -102,7 +103,7 @@ describe("Transfer Transaction", () => {
102103

103104
it("should have its specific properties", () => {
104105
expect(builder).toHaveProperty("data.type", TransactionType.Transfer);
105-
expect(builder).toHaveProperty("data.fee", TransferTransaction.staticFee());
106+
expect(builder).toHaveProperty("data.fee", Two.TransferTransaction.staticFee());
106107
expect(builder).toHaveProperty("data.amount", Utils.BigNumber.make(0));
107108
expect(builder).toHaveProperty("data.recipientId", undefined);
108109
expect(builder).toHaveProperty("data.senderPublicKey", undefined);

__tests__/unit/crypto/transactions/builders/transactions/vote.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import { Factories, Generators } from "@packages/core-test-framework/src";
55
import { configManager } from "@packages/crypto/src/managers";
66
import { TransactionType } from "@packages/crypto/src/enums";
77
import { Keys } from "@packages/crypto/src/identities";
8-
import { BuilderFactory, VoteTransaction } from "@packages/crypto/src/transactions";
8+
import { BuilderFactory } from "@packages/crypto/src/transactions";
9+
import { Two } from "@packages/crypto/src/transactions/types";
910
import { VoteBuilder } from "@packages/crypto/src/transactions/builders/transactions/vote";
1011
import * as Utils from "@packages/crypto/src/utils";
1112

@@ -48,7 +49,7 @@ describe("Vote Transaction", () => {
4849

4950
it("should have its specific properties", () => {
5051
expect(builder).toHaveProperty("data.type", TransactionType.Vote);
51-
expect(builder).toHaveProperty("data.fee", VoteTransaction.staticFee());
52+
expect(builder).toHaveProperty("data.fee", Two.VoteTransaction.staticFee());
5253
expect(builder).toHaveProperty("data.amount", Utils.BigNumber.make(0));
5354
expect(builder).toHaveProperty("data.recipientId", undefined);
5455
expect(builder).toHaveProperty("data.senderPublicKey", undefined);

__tests__/unit/crypto/transactions/transaction.test.ts

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,10 @@ import "jest-extended";
33
import { configManager } from "../../../../packages/crypto/src/managers";
44
import { devnet } from "../../../../packages/crypto/src/networks";
55
import {
6-
DelegateRegistrationTransaction,
7-
DelegateResignationTransaction,
8-
IpfsTransaction,
9-
MultiPaymentTransaction,
10-
MultiSignatureRegistrationTransaction,
11-
SecondSignatureRegistrationTransaction,
126
TransactionFactory,
13-
TransferTransaction,
14-
VoteTransaction,
157
} from "../../../../packages/crypto/src/transactions";
168
import { BigNumber } from "../../../../packages/crypto/src/utils";
9+
import { Two } from "../../../../packages/crypto/src/transactions/types";
1710

1811
describe("Transaction", () => {
1912
describe("should deserialize correctly some tests transactions", () => {
@@ -145,38 +138,38 @@ describe("Transaction", () => {
145138
configManager.setHeight(100000000);
146139

147140
let { staticFees } = configManager.getMilestone().fees;
148-
expect(TransferTransaction.staticFee()).toEqual(BigNumber.make(1234));
149-
expect(SecondSignatureRegistrationTransaction.staticFee()).toEqual(
141+
expect(Two.TransferTransaction.staticFee()).toEqual(BigNumber.make(1234));
142+
expect(Two.SecondSignatureRegistrationTransaction.staticFee()).toEqual(
150143
BigNumber.make(staticFees.secondSignature),
151144
);
152-
expect(DelegateRegistrationTransaction.staticFee()).toEqual(
145+
expect(Two.DelegateRegistrationTransaction.staticFee()).toEqual(
153146
BigNumber.make(staticFees.delegateRegistration),
154147
);
155-
expect(VoteTransaction.staticFee()).toEqual(BigNumber.make(staticFees.vote));
156-
expect(MultiSignatureRegistrationTransaction.staticFee()).toEqual(
148+
expect(Two.VoteTransaction.staticFee()).toEqual(BigNumber.make(staticFees.vote));
149+
expect(Two.MultiSignatureRegistrationTransaction.staticFee()).toEqual(
157150
BigNumber.make(staticFees.multiSignature),
158151
);
159-
expect(IpfsTransaction.staticFee()).toEqual(BigNumber.make(staticFees.ipfs));
160-
expect(MultiPaymentTransaction.staticFee()).toEqual(BigNumber.make(staticFees.multiPayment));
161-
expect(DelegateResignationTransaction.staticFee()).toEqual(BigNumber.make(staticFees.delegateResignation));
152+
expect(Two.IpfsTransaction.staticFee()).toEqual(BigNumber.make(staticFees.ipfs));
153+
expect(Two.MultiPaymentTransaction.staticFee()).toEqual(BigNumber.make(staticFees.multiPayment));
154+
expect(Two.DelegateResignationTransaction.staticFee()).toEqual(BigNumber.make(staticFees.delegateResignation));
162155

163156
configManager.setHeight(1);
164157
staticFees = configManager.getMilestone().fees.staticFees;
165158

166-
expect(TransferTransaction.staticFee()).toEqual(BigNumber.make(staticFees.transfer));
167-
expect(SecondSignatureRegistrationTransaction.staticFee()).toEqual(
159+
expect(Two.TransferTransaction.staticFee()).toEqual(BigNumber.make(staticFees.transfer));
160+
expect(Two.SecondSignatureRegistrationTransaction.staticFee()).toEqual(
168161
BigNumber.make(staticFees.secondSignature),
169162
);
170-
expect(DelegateRegistrationTransaction.staticFee()).toEqual(
163+
expect(Two.DelegateRegistrationTransaction.staticFee()).toEqual(
171164
BigNumber.make(staticFees.delegateRegistration),
172165
);
173-
expect(VoteTransaction.staticFee()).toEqual(BigNumber.make(staticFees.vote));
174-
expect(MultiSignatureRegistrationTransaction.staticFee()).toEqual(
166+
expect(Two.VoteTransaction.staticFee()).toEqual(BigNumber.make(staticFees.vote));
167+
expect(Two.MultiSignatureRegistrationTransaction.staticFee()).toEqual(
175168
BigNumber.make(staticFees.multiSignature),
176169
);
177-
expect(IpfsTransaction.staticFee()).toEqual(BigNumber.make(staticFees.ipfs));
178-
expect(MultiPaymentTransaction.staticFee()).toEqual(BigNumber.make(staticFees.multiPayment));
179-
expect(DelegateResignationTransaction.staticFee()).toEqual(BigNumber.make(staticFees.delegateResignation));
170+
expect(Two.IpfsTransaction.staticFee()).toEqual(BigNumber.make(staticFees.ipfs));
171+
expect(Two.MultiPaymentTransaction.staticFee()).toEqual(BigNumber.make(staticFees.multiPayment));
172+
expect(Two.DelegateResignationTransaction.staticFee()).toEqual(BigNumber.make(staticFees.delegateResignation));
180173

181174
devnet.milestones.pop();
182175
});

packages/core-api/src/controllers/node.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export class NodeController extends Controller {
102102

103103
const handler: Handlers.TransactionHandler = await this.app
104104
.get<Handlers.Registry>(Container.Identifiers.TransactionHandlerRegistry)
105-
.get(result.type, result.typeGroup);
105+
.get(result);
106106
groupedByTypeGroup[result.typeGroup][handler.getConstructor().key] = {
107107
avg: result.avg,
108108
max: result.max,

packages/core-api/src/controllers/transactions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export class TransactionsController extends Controller {
114114

115115
public async types(request: Hapi.Request, h: Hapi.ResponseToolkit) {
116116
const activatedTransactionHandlers: Handlers.TransactionHandler[] = await this.app
117-
.get<any>(Container.Identifiers.TransactionHandlerRegistry)
117+
.get<Handlers.Registry>(Container.Identifiers.TransactionHandlerRegistry)
118118
.getActivatedTransactionHandlers();
119119
const typeGroups: Record<string | number, Record<string, number>> = {};
120120

@@ -141,7 +141,7 @@ export class TransactionsController extends Controller {
141141

142142
public async schemas(request: Hapi.Request, h: Hapi.ResponseToolkit) {
143143
const activatedTransactionHandlers: Handlers.TransactionHandler[] = await this.app
144-
.get<any>(Container.Identifiers.TransactionHandlerRegistry)
144+
.get<Handlers.Registry>(Container.Identifiers.TransactionHandlerRegistry)
145145
.getActivatedTransactionHandlers();
146146
const schemasByType: Record<string, Record<string, any>> = {};
147147

0 commit comments

Comments
 (0)