From dfb895cb8f6217bdc8d4e5ae91408ed6104d5a77 Mon Sep 17 00:00:00 2001 From: GuilaneDen <83951892+GuilaneDen@users.noreply.github.com> Date: Fri, 24 Jan 2025 09:16:10 +0100 Subject: [PATCH] fix(LDG-677): added suspended boolean to the configureBaker method --- README.md | 21 +++++++++++++++++++-- package-lock.json | 12 ++++++------ package.json | 2 +- src/Concordium.ts | 11 +++++++++-- src/serialization.ts | 10 ++++++++-- 5 files changed, 43 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 6f17964..e090104 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,22 @@ npm install @blooo/hw-app-concordium * [Parameters](#parameters-signtransferwithscheduleandmemo) * [Return](#return-signtransferwithscheduleandmemo) * [Examples](#examples-signtransferwithscheduleandmemo) + * [signConfigureDelegation](#signConfigureDelegation) + * [Parameters](#parameters-signConfigureDelegation) + * [Return](#return-signConfigureDelegation) + * [Examples](#examples-signConfigureDelegation) + * [signConfigureBaker](#signConfigureBaker) + * [Parameters](#parameters-signConfigureBaker) + * [Return](#return-signConfigureBaker) + * [Examples](#examples-signConfigureBaker) + * [signRegisterData](#SignRegisterData) + * [Parameters](#parameters-SignRegisterData) + * [Return](#return-SignRegisterData) + * [Examples](#examples-SignRegisterData) + * [signTransferToPublic](#SignTransferToPublic) + * [Parameters](#parameters-SignTransferToPublic) + * [Return](#return-SignTransferToPublic) + * [Examples](#examples-SignTransferToPublic) * [signDeployModule](#signdeploymodule) * [Parameters](#parameters-signdeploymodule) * [Return](#return-signdeploymodule) @@ -320,7 +336,7 @@ const tx = { const { signature } = await ccd.signTransferWithScheduleAndMemo(tx, "44/919/0/0/0/0"); ``` -### SignConfigureDelegation +### signConfigureDelegation #### Parameters-SignConfigureDelegation @@ -365,7 +381,7 @@ const tx = { const { signature } = await ccd.signConfigureDelegation(tx, "44/919/0/0/0/0"); ``` -### SignConfigureBaker +### signConfigureBaker #### Parameters-SignConfigureBaker @@ -405,6 +421,7 @@ const configureBaker = { transactionFeeCommission: 10, bakingRewardCommission: 10, finalizationRewardCommission: 10, + suspended: true }; const tx = { diff --git a/package-lock.json b/package-lock.json index 10ee41e..ca26828 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,16 @@ { "name": "@blooo/hw-app-concordium", - "version": "6.29.4", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@blooo/hw-app-concordium", - "version": "6.29.4", + "version": "1.0.0", "license": "Apache-2.0", "dependencies": { "@concordium/common-sdk": "^9.5.3", - "@concordium/web-sdk": "^8.1.0", + "@concordium/web-sdk": "^9.0.0", "@ledgerhq/errors": "^6.19.1", "@ledgerhq/hw-transport": "^6.31.4", "bip32-path": "^0.4.2", @@ -591,9 +591,9 @@ } }, "node_modules/@concordium/web-sdk": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@concordium/web-sdk/-/web-sdk-8.1.0.tgz", - "integrity": "sha512-fjRZm51vcAgbhOtloEUhnwXsxPyq2ZF77oHGFseEeGSyO/+1ctw4lfT+TfFYPumBhtr2Gin/As7tXW81ouBLkQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@concordium/web-sdk/-/web-sdk-9.0.0.tgz", + "integrity": "sha512-4/kAhk0ePVKI4PWpaP2w9fr5KuPx0+5TCFTyIzK9UGJprwj8heYgG7Tqg2uzBNAAR3+FK/vO/4pYdMvh2zTbYw==", "dependencies": { "@concordium/rust-bindings": "^3.2.1", "@grpc/grpc-js": "^1.9.4", diff --git a/package.json b/package.json index bc7c11d..1df0b4a 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "license": "Apache-2.0", "dependencies": { "@concordium/common-sdk": "^9.5.3", - "@concordium/web-sdk": "^8.1.0", + "@concordium/web-sdk": "^9.0.0", "@ledgerhq/errors": "^6.19.1", "@ledgerhq/hw-transport": "^6.31.4", "bip32-path": "^0.4.2", diff --git a/src/Concordium.ts b/src/Concordium.ts index 76e6ebf..dcc6e2f 100644 --- a/src/Concordium.ts +++ b/src/Concordium.ts @@ -42,6 +42,7 @@ const P1_AGGREGATION_KEY = 0x02; const P1_URL_LENGTH = 0x03; const P1_URL = 0x04; const P1_COMMISSION_FEE = 0x05; +const P1_SUSPENDED = 0x06; const P1_FIRST_CHUNK = 0x00; const P1_INITIAL_WITH_MEMO = 0x01; @@ -448,7 +449,7 @@ export default class Concordium { */ async signConfigureBaker(txn: IConfigureBakerTransaction, path: string): Promise<{ signature: string[] }> { - const { payloadHeaderKindAndBitmap, payloadFirstBatch, payloadAggregationKeys, payloadUrlLength, payloadURL, payloadCommissionFee } = serializeConfigureBaker(txn, path); + const { payloadHeaderKindAndBitmap, payloadFirstBatch, payloadAggregationKeys, payloadUrlLength, payloadURL, payloadCommissionFee, payloadSuspended } = serializeConfigureBaker(txn, path); let response; @@ -482,12 +483,18 @@ export default class Concordium { NONE, payloadURL ); - response = await this.sendToDevice( + await this.sendToDevice( INS.SIGN_CONFIGURE_BAKER, P1_COMMISSION_FEE, NONE, payloadCommissionFee ); + response = await this.sendToDevice( + INS.SIGN_CONFIGURE_BAKER, + P1_SUSPENDED, + NONE, + payloadSuspended + ); if (response.length === 1) throw new Error("User has declined."); diff --git a/src/serialization.ts b/src/serialization.ts index 27c2395..73fd6b0 100644 --- a/src/serialization.ts +++ b/src/serialization.ts @@ -20,6 +20,7 @@ const BITMAP_LENGTH = 2; const STAKING_PAYLOAD_LENGTH = 8; const RESTAKE_EARNINGS_PAYLOAD_LENGTH = 1; const OPEN_FOR_DELEGATION_PAYLOAD_LENGTH = 1; +const SUSPENDED_LENGTH = 1; // Key-related constants const KEYS_AGGREGATION_LENGTH = 160; @@ -268,7 +269,7 @@ export const serializeConfigureDelegation = (txn: IConfigureDelegationTransactio * @param {string} path - The BIP32 path as a string. * @returns {{ payloadHeaderKindAndBitmap: Buffer, payloadFirstBatch: Buffer, payloadAggregationKeys: Buffer, payloadUrlLength: Buffer, payloadURL: Buffer, payloadCommissionFee: Buffer }} - An object containing serialized payloads. */ -export const serializeConfigureBaker = (txn: IConfigureBakerTransaction, path: string): { payloadHeaderKindAndBitmap: Buffer, payloadFirstBatch: Buffer, payloadAggregationKeys: Buffer, payloadUrlLength: Buffer, payloadURL: Buffer, payloadCommissionFee: Buffer } => { +export const serializeConfigureBaker = (txn: IConfigureBakerTransaction, path: string): { payloadHeaderKindAndBitmap: Buffer, payloadFirstBatch: Buffer, payloadAggregationKeys: Buffer, payloadUrlLength: Buffer, payloadURL: Buffer, payloadCommissionFee: Buffer, payloadSuspended: Buffer } => { let stake: Buffer = Buffer.alloc(0); let restakeEarnings: Buffer = Buffer.alloc(0); let openForDelegation: Buffer = Buffer.alloc(0); @@ -278,6 +279,7 @@ export const serializeConfigureBaker = (txn: IConfigureBakerTransaction, path: s let transactionFeeCommission: Buffer = Buffer.alloc(0); let bakingRewardCommission: Buffer = Buffer.alloc(0); let finalizationRewardCommission: Buffer = Buffer.alloc(0); + let suspended: Buffer = Buffer.alloc(0); let offset: number = 0; const txSerialized = serializeAccountTransaction(txn); @@ -316,6 +318,9 @@ export const serializeConfigureBaker = (txn: IConfigureBakerTransaction, path: s if (txn.payload.hasOwnProperty('finalizationRewardCommission')) { finalizationRewardCommission = txSerialized.subarray(offset, offset + FINALIZATION_REWARD_COMMISSION_LENGTH); } + if (txn.payload.hasOwnProperty('suspended')) { + suspended = txSerialized.subarray(offset, offset + SUSPENDED_LENGTH); + } const payloadHeaderKindAndBitmap = serializeTransactionPayloadsWithDerivationPath(path, headerKindAndBitmap); const payloadFirstBatch = Buffer.concat([stake, restakeEarnings, openForDelegation, keys.subarray(0, KEYS_ELECTION_AND_SIGNATURE_LENGTH)]); @@ -323,8 +328,9 @@ export const serializeConfigureBaker = (txn: IConfigureBakerTransaction, path: s const payloadUrlLength = metadataUrl; const payloadURL = url; const payloadCommissionFee = Buffer.concat([transactionFeeCommission, bakingRewardCommission, finalizationRewardCommission]); + const payloadSuspended = suspended; - return { payloadHeaderKindAndBitmap: payloadHeaderKindAndBitmap[0], payloadFirstBatch, payloadAggregationKeys, payloadUrlLength, payloadURL, payloadCommissionFee }; + return { payloadHeaderKindAndBitmap: payloadHeaderKindAndBitmap[0], payloadFirstBatch, payloadAggregationKeys, payloadUrlLength, payloadURL, payloadCommissionFee, payloadSuspended }; }; /**