From 72f5ff2aff570cb67bffb292d4197e9b976bb4a7 Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:38:46 -0500 Subject: [PATCH 01/12] refactor: remove ipfs and second signature from default fees --- .../mainsail/source/crypto/networks/mainnet/milestones.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/mainsail/source/crypto/networks/mainnet/milestones.ts b/packages/mainsail/source/crypto/networks/mainnet/milestones.ts index 9b333f6b..004fd302 100644 --- a/packages/mainsail/source/crypto/networks/mainnet/milestones.ts +++ b/packages/mainsail/source/crypto/networks/mainnet/milestones.ts @@ -13,16 +13,14 @@ export const milestones = [ staticFees: { delegateRegistration: 2_500_000_000, delegateResignation: 2_500_000_000, - usernameRegistration: 2_500_000_000, - usernameResignation: 2_500_000_000, htlcClaim: 0, htlcLock: 10_000_000, htlcRefund: 0, - ipfs: 500_000_000, multiPayment: 10_000_000, multiSignature: 500_000_000, - secondSignature: 500_000_000, transfer: 10_000_000, + usernameRegistration: 2_500_000_000, + usernameResignation: 2_500_000_000, vote: 100_000_000, }, }, From dfff855b954a748cdebbd8dc41023e1cbc262177 Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:39:02 -0500 Subject: [PATCH 02/12] chore: remove unused imports --- packages/mainsail/source/coin.provider.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/mainsail/source/coin.provider.ts b/packages/mainsail/source/coin.provider.ts index 8183d4e9..46a8eaa7 100644 --- a/packages/mainsail/source/coin.provider.ts +++ b/packages/mainsail/source/coin.provider.ts @@ -12,13 +12,11 @@ import { ServiceProvider as CoreCryptoMultipaymentTransfer } from "@mainsail/cry import { ServiceProvider as CoreCryptoTransactionMultiSignature } from "@mainsail/crypto-transaction-multi-signature-registration"; import { ServiceProvider as CoreCryptoTransactionTransfer, - TransferBuilder, } from "@mainsail/crypto-transaction-transfer"; import { ServiceProvider as CoreCryptoTransactionUsernameRegistration } from "@mainsail/crypto-transaction-username-registration"; import { ServiceProvider as CoreCryptoTransactionUsernameResignation } from "@mainsail/crypto-transaction-username-resignation"; import { ServiceProvider as CoreCryptoTransactionValidatorRegistration, - ValidatorRegistrationBuilder, } from "@mainsail/crypto-transaction-validator-registration"; import { ServiceProvider as CoreCryptoTransactionValidatorResignation } from "@mainsail/crypto-transaction-validator-resignation"; import { ServiceProvider as CoreCryptoTransactionVote } from "@mainsail/crypto-transaction-vote"; From 80a81fa147b283e22cc7050febc4957005c37b20 Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:39:31 -0500 Subject: [PATCH 03/12] refactor: remove ipfs and second signature from search filters --- packages/mainsail/source/client.service.ts | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/packages/mainsail/source/client.service.ts b/packages/mainsail/source/client.service.ts index 264acc1f..2ecee69b 100644 --- a/packages/mainsail/source/client.service.ts +++ b/packages/mainsail/source/client.service.ts @@ -181,11 +181,11 @@ export class ClientService extends Services.AbstractClientService { }; const mappings: Record = { + address: "address", cursor: "page", limit: "limit", memo: "vendorField", orderBy: "orderBy", - address: "address", recipientId: "recipientId", senderId: "senderId", senderPublicKey: "senderPublicKey", @@ -219,14 +219,6 @@ export class ClientService extends Services.AbstractClientService { type: Enums.TransactionType.DelegateResignation, typeGroup: Enums.TransactionTypeGroup.Core, }, - usernameRegistration: { - type: Enums.TransactionType.UsernameRegistration, - typeGroup: Enums.TransactionTypeGroup.Core, - }, - usernameResignation: { - type: Enums.TransactionType.UsernameResignation, - typeGroup: Enums.TransactionTypeGroup.Core, - }, multiPayment: { type: Enums.TransactionType.MultiPayment, typeGroup: Enums.TransactionTypeGroup.Core, @@ -235,14 +227,18 @@ export class ClientService extends Services.AbstractClientService { type: Enums.TransactionType.MultiSignature, typeGroup: Enums.TransactionTypeGroup.Core, }, - secondSignature: { - type: Enums.TransactionType.SecondSignature, - typeGroup: Enums.TransactionTypeGroup.Core, - }, transfer: { type: Enums.TransactionType.Transfer, typeGroup: Enums.TransactionTypeGroup.Core, }, + usernameRegistration: { + type: Enums.TransactionType.UsernameRegistration, + typeGroup: Enums.TransactionTypeGroup.Core, + }, + usernameResignation: { + type: Enums.TransactionType.UsernameResignation, + typeGroup: Enums.TransactionTypeGroup.Core, + }, vote: { type: Enums.TransactionType.Vote, typeGroup: Enums.TransactionTypeGroup.Core, From 79c04072b8111668ee0553e4a10f3ca310ac64d8 Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:40:30 -0500 Subject: [PATCH 04/12] refactor: throw error when using an ipfs or second signature dto method --- packages/mainsail/source/confirmed-transaction.dto.ts | 2 +- packages/mainsail/source/signed-transaction.dto.ts | 6 +++--- packages/mainsail/source/transaction-type.service.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/mainsail/source/confirmed-transaction.dto.ts b/packages/mainsail/source/confirmed-transaction.dto.ts index 9dfe5e34..bb23a3ef 100644 --- a/packages/mainsail/source/confirmed-transaction.dto.ts +++ b/packages/mainsail/source/confirmed-transaction.dto.ts @@ -91,7 +91,7 @@ export class ConfirmedTransactionData extends DTO.AbstractConfirmedTransactionDa } public override isSecondSignature(): boolean { - return TransactionTypeService.isSecondSignature(this.data); + throw new Exceptions.NotImplemented(this.constructor.name, this.isSecondSignature.name); } public override isUsernameRegistration(): boolean { diff --git a/packages/mainsail/source/signed-transaction.dto.ts b/packages/mainsail/source/signed-transaction.dto.ts index c4eec11a..a0914259 100644 --- a/packages/mainsail/source/signed-transaction.dto.ts +++ b/packages/mainsail/source/signed-transaction.dto.ts @@ -2,8 +2,8 @@ import { Contracts, DTO, Exceptions, IoC } from "@ardenthq/sdk"; import { BigNumber } from "@ardenthq/sdk-helpers"; import { DateTime } from "@ardenthq/sdk-intl"; import { Utils } from "@mainsail/crypto-transaction"; - import { Application } from "@mainsail/kernel"; + import { BindingType } from "./coin.contract.js"; import { Hash } from "./crypto/hash.js"; import { TransactionTypeService } from "./transaction-type.service.js"; @@ -59,7 +59,7 @@ export class SignedTransactionData } public override isSecondSignature(): boolean { - return TransactionTypeService.isSecondSignature(this.signedData); + return false; } public override isUsernameRegistration(): boolean { @@ -145,7 +145,7 @@ export class SignedTransactionData const signatures: string[] = this.signedData.signatures ?? ([] as string[]); for (const signature of signatures) { - const publicKeyIndex: number = parseInt(signature.slice(0, 2), 16); + const publicKeyIndex: number = Number.parseInt(signature.slice(0, 2), 16); const partialSignature: string = signature.slice(2, 130); const publicKey: string = transaction.multiSignature.publicKeys[publicKeyIndex]; diff --git a/packages/mainsail/source/transaction-type.service.ts b/packages/mainsail/source/transaction-type.service.ts index 2db942ec..5786bf3d 100644 --- a/packages/mainsail/source/transaction-type.service.ts +++ b/packages/mainsail/source/transaction-type.service.ts @@ -8,7 +8,7 @@ export class TransactionTypeService { } public static isSecondSignature(data: TransactionData): boolean { - return TransactionTypeService.#typeGroup(data) === 1 && data.type === 1; + throw new Exceptions.NotImplemented(this.constructor.name, this.isSecondSignature.name); } public static isDelegateRegistration(data: TransactionData): boolean { From 19f16c0700d56b4ba893d774f57a1677966448fc Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:41:24 -0500 Subject: [PATCH 05/12] refactor: remove ipfs and second signature from other validators and helpers --- packages/mainsail/source/crypto/enums.ts | 1 - .../source/crypto/interfaces/transactions.ts | 6 ---- .../source/crypto/transactions/signer.ts | 11 ------- .../source/crypto/transactions/verifier.ts | 30 ++++--------------- packages/mainsail/source/fee.service.ts | 2 -- 5 files changed, 5 insertions(+), 45 deletions(-) diff --git a/packages/mainsail/source/crypto/enums.ts b/packages/mainsail/source/crypto/enums.ts index 27502326..90ebddc7 100644 --- a/packages/mainsail/source/crypto/enums.ts +++ b/packages/mainsail/source/crypto/enums.ts @@ -1,6 +1,5 @@ export enum TransactionType { Transfer = 0, - SecondSignature = 1, DelegateRegistration = 2, Vote = 3, MultiSignature = 4, diff --git a/packages/mainsail/source/crypto/interfaces/transactions.ts b/packages/mainsail/source/crypto/interfaces/transactions.ts index debd5f6c..de15d244 100644 --- a/packages/mainsail/source/crypto/interfaces/transactions.ts +++ b/packages/mainsail/source/crypto/interfaces/transactions.ts @@ -38,7 +38,6 @@ export interface ITransactionAsset { votes?: string[]; multiSignatureLegacy?: IMultiSignatureLegacyAsset; multiSignature?: IMultiSignatureAsset; - ipfs?: string; payments?: IMultiPaymentItem[]; } @@ -63,7 +62,6 @@ export interface ITransactionData { id?: string; signature?: string; - secondSignature?: string; signSignature?: string; signatures?: string[]; @@ -94,14 +92,11 @@ export interface ITransactionJson { id?: string; signature?: string; - secondSignature?: string; signSignature?: string; signatures?: string[]; blockId?: string; sequence?: number; - - ipfsHash?: string; } export interface ISchemaValidationResult { @@ -139,6 +134,5 @@ export interface ISerializeOptions { acceptLegacyVersion?: boolean; disableVersionCheck?: boolean; excludeSignature?: boolean; - excludeSecondSignature?: boolean; excludeMultiSignature?: boolean; } diff --git a/packages/mainsail/source/crypto/transactions/signer.ts b/packages/mainsail/source/crypto/transactions/signer.ts index 24eb1e8f..00ab9578 100644 --- a/packages/mainsail/source/crypto/transactions/signer.ts +++ b/packages/mainsail/source/crypto/transactions/signer.ts @@ -20,17 +20,6 @@ export class Signer { return signature; } - public static secondSign(transaction: ITransactionData, keys: IKeyPair): string { - const hash: Buffer = Utils.toHash(transaction, { excludeSecondSignature: true }); - const signature: string = Hash.signSchnorr(hash, keys); - - if (!transaction.secondSignature) { - transaction.secondSignature = signature; - } - - return signature; - } - public static async multiSign( transaction: MainsailContracts.Crypto.TransactionData, keys: IKeyPair, diff --git a/packages/mainsail/source/crypto/transactions/verifier.ts b/packages/mainsail/source/crypto/transactions/verifier.ts index 5c761d9f..8399e525 100644 --- a/packages/mainsail/source/crypto/transactions/verifier.ts +++ b/packages/mainsail/source/crypto/transactions/verifier.ts @@ -1,17 +1,17 @@ +import { DateTime } from "@ardenthq/sdk-intl"; + import { DuplicateParticipantInMultiSignatureError, InvalidMultiSignatureAssetError } from "../errors.js"; +import { Hash } from "../hash.js"; import { IMultiSignatureAsset, ISchemaValidationResult, ITransactionData, IVerifyOptions, } from "../interfaces/index.js"; - -import { DateTime } from "@ardenthq/sdk-intl"; -import { Hash } from "../hash.js"; -import { TransactionTypeFactory } from "./types/factory.js"; -import { Utils } from "./utils.js"; import { configManager } from "../managers/index.js"; import { validator } from "../validation/index.js"; +import { TransactionTypeFactory } from "./types/factory.js"; +import { Utils } from "./utils.js"; export class Verifier { public static verify(data: ITransactionData, options?: IVerifyOptions): boolean { @@ -22,24 +22,6 @@ export class Verifier { return Verifier.verifyHash(data, options?.disableVersionCheck); } - public static verifySecondSignature( - transaction: ITransactionData, - publicKey: string, - options?: IVerifyOptions, - ): boolean { - const secondSignature: string | undefined = transaction.secondSignature || transaction.signSignature; - - if (!secondSignature) { - return false; - } - - const hash: Buffer = Utils.toHash(transaction, { - disableVersionCheck: options?.disableVersionCheck, - excludeSecondSignature: true, - }); - return this.internalVerifySignature(hash, secondSignature, publicKey); - } - public static verifySignatures(transaction: ITransactionData, multiSignature: IMultiSignatureAsset): boolean { if (!multiSignature) { throw new InvalidMultiSignatureAssetError(); @@ -50,7 +32,6 @@ export class Verifier { const hash: Buffer = Utils.toHash(transaction, { excludeMultiSignature: true, - excludeSecondSignature: true, excludeSignature: true, }); @@ -97,7 +78,6 @@ export class Verifier { const hash: Buffer = Utils.toHash(data, { disableVersionCheck, - excludeSecondSignature: true, excludeSignature: true, }); diff --git a/packages/mainsail/source/fee.service.ts b/packages/mainsail/source/fee.service.ts index 6c73eefc..a5e56217 100644 --- a/packages/mainsail/source/fee.service.ts +++ b/packages/mainsail/source/fee.service.ts @@ -26,10 +26,8 @@ export class FeeService extends Services.AbstractFeeService { return { delegateRegistration: this.#transform("validatorRegistration", 1, staticFees, dynamicFees), delegateResignation: this.#transform("validatorResignation", 1, staticFees, dynamicFees), - ipfs: this.#transform("ipfs", 1, staticFees, dynamicFees), multiPayment: this.#transform("multiPayment", 1, staticFees, dynamicFees), multiSignature: this.#transform("multiSignature", 1, staticFees, dynamicFees), - secondSignature: this.#transform("secondSignature", 1, staticFees, dynamicFees), transfer: this.#transform("transfer", 1, staticFees, dynamicFees), usernameRegistration: this.#transform("usernameRegistration", 1, staticFees, dynamicFees), usernameResignation: this.#transform("usernameResignation", 1, staticFees, dynamicFees), From 8f51986a6e46660ae1b926ae2270a2b1f25cf24e Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:51:35 -0500 Subject: [PATCH 06/12] fix: transaction deserializer --- .../source/crypto/transactions/deserializer.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/mainsail/source/crypto/transactions/deserializer.ts b/packages/mainsail/source/crypto/transactions/deserializer.ts index 501dcccf..8e30307d 100644 --- a/packages/mainsail/source/crypto/transactions/deserializer.ts +++ b/packages/mainsail/source/crypto/transactions/deserializer.ts @@ -80,12 +80,6 @@ export class Deserializer { return marker === 255; }; - // Second Signature - if (buf.getRemainderLength() && !beginningMultiSignature()) { - const secondSignatureLength: number = currentSignatureLength(); - transaction.secondSignature = buf.readBuffer(secondSignatureLength).toString("hex"); - } - // Multi Signatures if (buf.getRemainderLength() && beginningMultiSignature()) { buf.jump(1); @@ -106,17 +100,13 @@ export class Deserializer { transaction.signature = buf.readBuffer(64).toString("hex"); } - if (canReadNonMultiSignature()) { - transaction.secondSignature = buf.readBuffer(64).toString("hex"); - } - if (buf.getRemainderLength()) { if (buf.getRemainderLength() % 65 === 0) { transaction.signatures = []; const count: number = buf.getRemainderLength() / 65; const publicKeyIndexes: { [index: number]: boolean } = {}; - for (let i = 0; i < count; i++) { + for (let index = 0; index < count; index++) { const multiSignaturePart: string = buf.readBuffer(65).toString("hex"); const publicKeyIndex: number = Number.parseInt(multiSignaturePart.slice(0, 2), 16); From 09df8e3654d578c839a8bf83fb4329fcde31aeed Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:53:01 -0500 Subject: [PATCH 07/12] fix: transaction signer --- packages/mainsail/source/crypto/transactions/signer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mainsail/source/crypto/transactions/signer.ts b/packages/mainsail/source/crypto/transactions/signer.ts index 00ab9578..393f03f7 100644 --- a/packages/mainsail/source/crypto/transactions/signer.ts +++ b/packages/mainsail/source/crypto/transactions/signer.ts @@ -6,8 +6,8 @@ import { Utils } from "./utils.js"; export class Signer { public static sign(transaction: ITransactionData, keys: IKeyPair, options?: ISerializeOptions): string { - if (!options || (options.excludeSignature === undefined && options.excludeSecondSignature === undefined)) { - options = { excludeSecondSignature: true, excludeSignature: true, ...options }; + if (!options || options.excludeSignature === undefined) { + options = { excludeSignature: true, ...options }; } const hash: Buffer = Utils.toHash(transaction, options); From 97ad9f06e98da1fe976794faa30358bd7eb2853e Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:54:17 -0500 Subject: [PATCH 08/12] fix: transaction type schemas --- .../crypto/transactions/types/schemas.ts | 64 ++++++------------- 1 file changed, 19 insertions(+), 45 deletions(-) diff --git a/packages/mainsail/source/crypto/transactions/types/schemas.ts b/packages/mainsail/source/crypto/transactions/types/schemas.ts index 2076ffc9..ffcc622e 100644 --- a/packages/mainsail/source/crypto/transactions/types/schemas.ts +++ b/packages/mainsail/source/crypto/transactions/types/schemas.ts @@ -1,6 +1,7 @@ -import { TransactionType } from "../../enums.js"; import deepmerge from "deepmerge"; +import { TransactionType } from "../../enums.js"; + const signedTransaction = { anyOf: [ { required: ["id", "signature"] }, @@ -23,11 +24,9 @@ export const transactionBaseSchema: Record = { id: { anyOf: [{ $ref: "transactionId" }, { type: "null" }] }, network: { $ref: "networkByte" }, nonce: { bignumber: { minimum: 0 } }, - secondSignature: { $ref: "alphanumeric" }, senderPublicKey: { $ref: "publicKey" }, signSignature: { $ref: "alphanumeric" }, signature: { $ref: "alphanumeric" }, - version: { enum: [1, 2] }, signatures: { additionalItems: false, items: { allOf: [{ maxLength: 130, minLength: 130 }, { $ref: "alphanumeric" }] }, @@ -36,8 +35,9 @@ export const transactionBaseSchema: Record = { type: "array", uniqueItems: true, }, - timestamp: { type: "integer", minimum: 0 }, + timestamp: { minimum: 0, type: "integer" }, typeGroup: { minimum: 0, type: "integer" }, + version: { enum: [1, 2] }, }, then: { required: ["type", "senderPublicKey", "fee", "amount", "timestamp"] }, type: "object", @@ -70,32 +70,6 @@ export const transfer = extend(transactionBaseSchema, { required: ["recipientId"], }); -export const secondSignature = extend(transactionBaseSchema, { - $id: "secondSignature", - properties: { - amount: { bignumber: { maximum: 0, minimum: 0 } }, - asset: { - properties: { - signature: { - properties: { - publicKey: { - $ref: "publicKey", - }, - }, - required: ["publicKey"], - type: "object", - }, - }, - required: ["signature"], - type: "object", - }, - fee: { bignumber: { minimum: 1 } }, - secondSignature: { type: "null" }, - type: { transactionType: TransactionType.SecondSignature }, - }, - required: ["asset"], -}); - export const delegateRegistration = extend(transactionBaseSchema, { $id: "delegateRegistration", properties: { @@ -150,8 +124,8 @@ export const vote = extend(transactionBaseSchema, { votes: { additionalItems: false, items: { $ref: "walletVote" }, - minItems: 1, maxItems: 2, + minItems: 1, type: "array", }, }, @@ -180,10 +154,10 @@ export const multiSignature = extend(transactionBaseSchema, { }, publicKeys: { additionalItems: false, - minItems: 1, items: { $ref: "publicKey" }, - type: "array", maxItems: 16, + minItems: 1, + type: "array", uniqueItems: true, }, }, @@ -220,24 +194,24 @@ export const multiSignatureLegacy = extend(transactionBaseSchemaNoSignatures, { properties: { multiSignatureLegacy: { properties: { - lifetime: { - minimum: 1, - type: "integer", - maximum: 72, - }, keysgroup: { - minItems: 1, - type: "array", additionalItems: false, - maxItems: 16, items: { - allOf: [{ minimum: 67, type: "string", maximum: 67, transform: ["toLowerCase"] }], + allOf: [{ maximum: 67, minimum: 67, transform: ["toLowerCase"], type: "string" }], }, + maxItems: 16, + minItems: 1, + type: "array", }, - min: { - type: "integer", + lifetime: { + maximum: 72, minimum: 1, + type: "integer", + }, + min: { maximum: { $data: "1/keysgroup/length" }, + minimum: 1, + type: "integer", }, }, required: ["keysgroup", "min", "lifetime"], @@ -270,11 +244,11 @@ export const multiPayment = extend(transactionBaseSchema, { payments: { additionalItems: false, items: { - required: ["amount", "recipientId"], properties: { amount: { bignumber: { minimum: 1 } }, recipientId: { $ref: "address" }, }, + required: ["amount", "recipientId"], type: "object", }, minItems: 2, From 9060f2e1a38a8ef57079d07a15b7eaa753504515 Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:56:22 -0500 Subject: [PATCH 09/12] fix: remove second signature leftovers --- .../mainsail/source/crypto/transactions/serializer.ts | 8 +------- .../source/crypto/transactions/types/transaction.ts | 4 ---- packages/mainsail/source/multi-signature.signer.ts | 5 ----- packages/mainsail/source/transaction.service.ts | 5 ++--- packages/mainsail/source/wallet.dto.ts | 4 ---- 5 files changed, 3 insertions(+), 23 deletions(-) diff --git a/packages/mainsail/source/crypto/transactions/serializer.ts b/packages/mainsail/source/crypto/transactions/serializer.ts index 2dc1da6d..04b527a0 100644 --- a/packages/mainsail/source/crypto/transactions/serializer.ts +++ b/packages/mainsail/source/crypto/transactions/serializer.ts @@ -89,13 +89,7 @@ export class Serializer { if (transaction.signature && !options.excludeSignature) { buf.writeBuffer(Buffer.from(transaction.signature, "hex")); } - - const secondSignature: string | undefined = transaction.secondSignature || transaction.signSignature; - - if (secondSignature && !options.excludeSecondSignature) { - buf.writeBuffer(Buffer.from(secondSignature, "hex")); - } - + if (transaction.signatures && !options.excludeMultiSignature) { buf.writeBuffer(Buffer.from(transaction.signatures.join(""), "hex")); } diff --git a/packages/mainsail/source/crypto/transactions/types/transaction.ts b/packages/mainsail/source/crypto/transactions/types/transaction.ts index 976cc18c..3c7f746b 100644 --- a/packages/mainsail/source/crypto/transactions/types/transaction.ts +++ b/packages/mainsail/source/crypto/transactions/types/transaction.ts @@ -49,10 +49,6 @@ export abstract class Transaction implements ITransaction { return Verifier.verify(this.data, options); } - public verifySecondSignature(publicKey: string): boolean { - return Verifier.verifySecondSignature(this.data, publicKey); - } - public verifySchema(): ISchemaValidationResult { return Verifier.verifySchema(this.data); } diff --git a/packages/mainsail/source/multi-signature.signer.ts b/packages/mainsail/source/multi-signature.signer.ts index 222a0dcf..a093d357 100644 --- a/packages/mainsail/source/multi-signature.signer.ts +++ b/packages/mainsail/source/multi-signature.signer.ts @@ -93,10 +93,6 @@ export class MultiSignatureSigner { Transactions.Signer.sign(transaction, signingKeys); } - if (confirmKeys) { - Transactions.Signer.secondSign(transaction, confirmKeys); - } - if (signatory.actsWithLedger()) { transaction.signature = await this.#signWithLedger(transaction, signatory); } @@ -170,7 +166,6 @@ export class MultiSignatureSigner { // @ts-ignore Transactions.Serializer.getBytes(transaction, { excludeMultiSignature, - excludeSecondSignature: true, excludeSignature: true, }), ); diff --git a/packages/mainsail/source/transaction.service.ts b/packages/mainsail/source/transaction.service.ts index fd823971..60e69535 100644 --- a/packages/mainsail/source/transaction.service.ts +++ b/packages/mainsail/source/transaction.service.ts @@ -1,7 +1,7 @@ import { Contracts, IoC, Services, Signatories } from "@ardenthq/sdk"; import { BigNumber } from "@ardenthq/sdk-helpers"; import { Contracts as MainsailContracts } from "@mainsail/contracts"; -import { TransactionBuilder, Utils } from "@mainsail/crypto-transaction"; +import { Utils } from "@mainsail/crypto-transaction"; import { MultiSignatureBuilder } from "@mainsail/crypto-transaction-multi-signature-registration"; import { UsernameRegistrationBuilder } from "@mainsail/crypto-transaction-username-registration"; import { ValidatorRegistrationBuilder } from "@mainsail/crypto-transaction-validator-registration"; @@ -11,9 +11,9 @@ import { Application } from "@mainsail/kernel"; import { BindingType } from "./coin.contract.js"; import { applyCryptoConfiguration } from "./config.js"; import { Identities, Interfaces, Transactions } from "./crypto/index.js"; +import { BuilderFactory } from "./crypto/transactions/index.js"; import { MultiSignatureSigner } from "./multi-signature.signer.js"; import { Request } from "./request.js"; -import { BuilderFactory } from "./crypto/transactions/index.js"; export class TransactionService extends Services.AbstractTransactionService { readonly #ledgerService!: Services.LedgerService; @@ -343,7 +343,6 @@ export class TransactionService extends Services.AbstractTransactionService { transaction.data.signature = await this.#ledgerService.signTransaction( input.signatory.signingKey(), Transactions.Serializer.getBytes(transaction.data, { - excludeSecondSignature: true, excludeSignature: true, }), ); diff --git a/packages/mainsail/source/wallet.dto.ts b/packages/mainsail/source/wallet.dto.ts index 0ac5b38f..318a4a3b 100644 --- a/packages/mainsail/source/wallet.dto.ts +++ b/packages/mainsail/source/wallet.dto.ts @@ -72,10 +72,6 @@ export class WalletData extends DTO.AbstractWalletData implements Contracts.Wall return !!this.#getProperty(["multiSignature", "attributes.multiSignature"]); } - public override isSecondSignature(): boolean { - return !!this.#getProperty(["secondPublicKey", "attributes.secondPublicKey"]); - } - #getProperty(keys: string[]): T | undefined { for (const key of keys) { if (has(this.data, key)) { From d27204781a12a7330383e7075951fe6bacf8a3d0 Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 08:59:19 -0500 Subject: [PATCH 10/12] fix: static fees --- packages/mainsail/source/crypto/networks/mainnet/milestones.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/mainsail/source/crypto/networks/mainnet/milestones.ts b/packages/mainsail/source/crypto/networks/mainnet/milestones.ts index 004fd302..8c6f9d8b 100644 --- a/packages/mainsail/source/crypto/networks/mainnet/milestones.ts +++ b/packages/mainsail/source/crypto/networks/mainnet/milestones.ts @@ -16,8 +16,10 @@ export const milestones = [ htlcClaim: 0, htlcLock: 10_000_000, htlcRefund: 0, + ipfs: 500_000_000, multiPayment: 10_000_000, multiSignature: 500_000_000, + secondSignature: 500_000_000, transfer: 10_000_000, usernameRegistration: 2_500_000_000, usernameResignation: 2_500_000_000, From 410bc104acafb492e08082a23517b5e9d1b83e7b Mon Sep 17 00:00:00 2001 From: Juan Patricio Marroquin Date: Tue, 19 Nov 2024 09:01:05 -0500 Subject: [PATCH 11/12] fix: static fees --- packages/mainsail/source/fee.service.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/mainsail/source/fee.service.ts b/packages/mainsail/source/fee.service.ts index a5e56217..6c73eefc 100644 --- a/packages/mainsail/source/fee.service.ts +++ b/packages/mainsail/source/fee.service.ts @@ -26,8 +26,10 @@ export class FeeService extends Services.AbstractFeeService { return { delegateRegistration: this.#transform("validatorRegistration", 1, staticFees, dynamicFees), delegateResignation: this.#transform("validatorResignation", 1, staticFees, dynamicFees), + ipfs: this.#transform("ipfs", 1, staticFees, dynamicFees), multiPayment: this.#transform("multiPayment", 1, staticFees, dynamicFees), multiSignature: this.#transform("multiSignature", 1, staticFees, dynamicFees), + secondSignature: this.#transform("secondSignature", 1, staticFees, dynamicFees), transfer: this.#transform("transfer", 1, staticFees, dynamicFees), usernameRegistration: this.#transform("usernameRegistration", 1, staticFees, dynamicFees), usernameResignation: this.#transform("usernameResignation", 1, staticFees, dynamicFees), From 798c7b9eef265c1b7d8558a2ed91423f985fd7a8 Mon Sep 17 00:00:00 2001 From: patricio0312rev Date: Tue, 19 Nov 2024 14:03:43 +0000 Subject: [PATCH 12/12] style: resolve style guide violations --- packages/mainsail/source/coin.provider.ts | 8 ++------ .../mainsail/source/crypto/transactions/serializer.ts | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/mainsail/source/coin.provider.ts b/packages/mainsail/source/coin.provider.ts index 46a8eaa7..6c17a804 100644 --- a/packages/mainsail/source/coin.provider.ts +++ b/packages/mainsail/source/coin.provider.ts @@ -10,14 +10,10 @@ import { ServiceProvider as CoreCryptoSignatureSchnorr } from "@mainsail/crypto- import { ServiceProvider as CoreCryptoTransaction } from "@mainsail/crypto-transaction"; import { ServiceProvider as CoreCryptoMultipaymentTransfer } from "@mainsail/crypto-transaction-multi-payment"; import { ServiceProvider as CoreCryptoTransactionMultiSignature } from "@mainsail/crypto-transaction-multi-signature-registration"; -import { - ServiceProvider as CoreCryptoTransactionTransfer, -} from "@mainsail/crypto-transaction-transfer"; +import { ServiceProvider as CoreCryptoTransactionTransfer } from "@mainsail/crypto-transaction-transfer"; import { ServiceProvider as CoreCryptoTransactionUsernameRegistration } from "@mainsail/crypto-transaction-username-registration"; import { ServiceProvider as CoreCryptoTransactionUsernameResignation } from "@mainsail/crypto-transaction-username-resignation"; -import { - ServiceProvider as CoreCryptoTransactionValidatorRegistration, -} from "@mainsail/crypto-transaction-validator-registration"; +import { ServiceProvider as CoreCryptoTransactionValidatorRegistration } from "@mainsail/crypto-transaction-validator-registration"; import { ServiceProvider as CoreCryptoTransactionValidatorResignation } from "@mainsail/crypto-transaction-validator-resignation"; import { ServiceProvider as CoreCryptoTransactionVote } from "@mainsail/crypto-transaction-vote"; import { ServiceProvider as CoreCryptoValidation } from "@mainsail/crypto-validation"; diff --git a/packages/mainsail/source/crypto/transactions/serializer.ts b/packages/mainsail/source/crypto/transactions/serializer.ts index 04b527a0..d5654142 100644 --- a/packages/mainsail/source/crypto/transactions/serializer.ts +++ b/packages/mainsail/source/crypto/transactions/serializer.ts @@ -89,7 +89,7 @@ export class Serializer { if (transaction.signature && !options.excludeSignature) { buf.writeBuffer(Buffer.from(transaction.signature, "hex")); } - + if (transaction.signatures && !options.excludeMultiSignature) { buf.writeBuffer(Buffer.from(transaction.signatures.join(""), "hex")); }