Skip to content

Commit

Permalink
Merge pull request #12 from blooo-io/fix/LDG-677-configurebaker-boole…
Browse files Browse the repository at this point in the history
…an-flag

fix(LDG-677): added suspended boolean to the configureBaker method
  • Loading branch information
GuilaneDen authored Jan 31, 2025
2 parents 3fa619a + dfb895c commit 8025a92
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 13 deletions.
21 changes: 19 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -320,7 +336,7 @@ const tx = {
const { signature } = await ccd.signTransferWithScheduleAndMemo(tx, "44/919/0/0/0/0");
```

### SignConfigureDelegation
### signConfigureDelegation

#### Parameters-SignConfigureDelegation

Expand Down Expand Up @@ -365,7 +381,7 @@ const tx = {
const { signature } = await ccd.signConfigureDelegation(tx, "44/919/0/0/0/0");
```

### SignConfigureBaker
### signConfigureBaker

#### Parameters-SignConfigureBaker

Expand Down Expand Up @@ -405,6 +421,7 @@ const configureBaker = {
transactionFeeCommission: 10,
bakingRewardCommission: 10,
finalizationRewardCommission: 10,
suspended: true
};

const tx = {
Expand Down
12 changes: 6 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
11 changes: 9 additions & 2 deletions src/Concordium.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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.");

Expand Down
10 changes: 8 additions & 2 deletions src/serialization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down Expand Up @@ -316,15 +318,19 @@ 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)]);
const payloadAggregationKeys = keys.subarray(KEYS_ELECTION_AND_SIGNATURE_LENGTH);
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 };
};

/**
Expand Down

0 comments on commit 8025a92

Please sign in to comment.