Skip to content

Commit 5c69895

Browse files
author
Lazy Nina
committed
Add transcoder for stake transaction metadata. Add support for approve component for this new txn type.
1 parent 34af38b commit 5c69895

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

src/app/approve/approve.component.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import {
3939
TransactionSpendingLimit,
4040
TransactionMetadataRegisterAsValidator,
4141
TransactionMetadataUnregisterAsValidator,
42+
TransactionMetadataStake,
4243
} from '../../lib/deso/transaction';
4344
import { ExtraData } from '../../types/identity';
4445
import { AccountService } from '../account.service';
@@ -597,6 +598,18 @@ export class ApproveComponent implements OnInit {
597598
case TransactionMetadataUnregisterAsValidator:
598599
description = 'unregister as a validator';
599600
break;
601+
case TransactionMetadataStake:
602+
const stakeMetadata = this.transaction
603+
.metadata as TransactionMetadataStake;
604+
const stakeValidatorPublicKey = this.base58KeyCheck(
605+
stakeMetadata.validatorPublicKey
606+
);
607+
publicKeys = [stakeValidatorPublicKey];
608+
const stakeAmountNanos = this.hexNanosToUnitString(
609+
stakeMetadata.stakeAmountNanos
610+
);
611+
description = `stake ${stakeAmountNanos} $DESO to ${stakeValidatorPublicKey}`;
612+
break;
600613
}
601614

602615
// Set the transaction description based on the description populated with public keys.
@@ -617,6 +630,8 @@ export class ApproveComponent implements OnInit {
617630
return bs58check.encode(Buffer.from([...prefix, ...keyBytes]));
618631
}
619632

633+
// TODO: create hexBaseUnitsToUnitString function to support proper
634+
// DAO Coin base unit conversions.
620635
hexNanosToUnitString(nanos: Buffer): string {
621636
return this.nanosToUnitString(parseInt(nanos.toString('hex'), 16));
622637
}

src/app/identity.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import {
3737
TransactionMetadataUpdateProfile,
3838
TransactionMetadataRegisterAsValidator,
3939
TransactionMetadataUnregisterAsValidator,
40+
TransactionMetadataStake,
4041
} from '../lib/deso/transaction';
4142
import { SwalHelper } from '../lib/helpers/swal-helper';
4243
import { AccessLevel, PublicUserInfo } from '../types/identity';
@@ -522,6 +523,7 @@ export class IdentityService {
522523
case TransactionMetadataDAOCoinLimitOrder:
523524
case TransactionMetadataRegisterAsValidator:
524525
case TransactionMetadataUnregisterAsValidator:
526+
case TransactionMetadataStake:
525527
return AccessLevel.Full;
526528

527529
case TransactionMetadataFollow:

src/lib/deso/transaction.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,18 @@ export class TransactionMetadataRegisterAsValidator extends TransactionMetadata
609609

610610
export class TransactionMetadataUnregisterAsValidator extends TransactionMetadata {}
611611

612+
export class TransactionMetadataStake extends TransactionMetadata {
613+
@Transcode(VarBuffer)
614+
validatorPublicKey: Buffer = Buffer.alloc(0);
615+
616+
@Transcode(Uint8)
617+
rewardMethod: number = 0;
618+
619+
// TODO: We may want a better way to handle uint256s.
620+
@Transcode(Optional(VarBuffer))
621+
stakeAmountNanos: Buffer = Buffer.alloc(0);
622+
}
623+
612624
export const TransactionTypeMetadataMap = {
613625
1: TransactionMetadataBlockReward,
614626
2: TransactionMetadataBasicTransfer,
@@ -644,6 +656,7 @@ export const TransactionTypeMetadataMap = {
644656
33: TransactionMetadataNewMessage,
645657
34: TransactionMetadataRegisterAsValidator,
646658
35: TransactionMetadataUnregisterAsValidator,
659+
36: TransactionMetadataStake,
647660
};
648661

649662
export class Transaction extends BinaryRecord {

0 commit comments

Comments
 (0)