Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions modules/sdk-coin-hbar/src/hbar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -751,6 +751,15 @@ export class Hbar extends BaseCoin {
});
break;

case 'cryptoUpdateAccount':
const updateParams = txJson.instructionsData.params;
outputs.push({
address: updateParams.accountId,
amount: '0',
memo,
});
break;

default:
throw new Error('Transaction format outside of cryptoTransfer not supported for explanation.');
}
Expand Down
65 changes: 65 additions & 0 deletions modules/sdk-coin-hbar/test/unit/hbar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,71 @@ describe('Hedera Hashgraph:', function () {
explain.changeAmount.should.equal('0');
});

it('should explain an account update (staking) transaction', async function () {
const sourceAccountId = '0.0.81320';
const factory = getBuilderFactory('thbar');
const txBuilder = factory.getAccountUpdateBuilder();
txBuilder.fee({ fee: '1000000000' });
txBuilder.source({ address: sourceAccountId });
txBuilder.stakedNodeId(3);
txBuilder.declineStakingReward(false);
txBuilder.node({ nodeId: '0.0.2345' });
txBuilder.startTime('1596110493.372646570');
const tx = await txBuilder.build();
const txHex = tx.toBroadcastFormat();

const explain = await basecoin.explainTransaction({
txHex,
feeInfo: {
size: 1000,
fee: 1160407,
feeRate: 1160407,
},
});

explain.id.should.equal(sourceAccountId + '@1596110493.372646570');
explain.outputAmount.should.equal('0');
explain.timestamp.should.equal('1596110493.372646570');
explain.outputs.length.should.equal(1);
explain.outputs[0].amount.should.equal('0');
explain.outputs[0].address.should.equal(sourceAccountId);
explain.outputs[0].memo.should.equal('');
explain.fee.should.equal(1160407);
explain.changeAmount.should.equal('0');
});

it('should explain an unstake (account update with nodeId -1) transaction', async function () {
const sourceAccountId = '0.0.81320';
const factory = getBuilderFactory('thbar');
const txBuilder = factory.getAccountUpdateBuilder();
txBuilder.fee({ fee: '1000000000' });
txBuilder.source({ address: sourceAccountId });
txBuilder.stakedNodeId(-1);
txBuilder.node({ nodeId: '0.0.2345' });
txBuilder.startTime('1596110493.372646570');
const tx = await txBuilder.build();
const txHex = tx.toBroadcastFormat();

const explain = await basecoin.explainTransaction({
txHex,
feeInfo: {
size: 1000,
fee: 1160407,
feeRate: 1160407,
},
});

explain.id.should.equal(sourceAccountId + '@1596110493.372646570');
explain.outputAmount.should.equal('0');
explain.timestamp.should.equal('1596110493.372646570');
explain.outputs.length.should.equal(1);
explain.outputs[0].amount.should.equal('0');
explain.outputs[0].address.should.equal(sourceAccountId);
explain.outputs[0].memo.should.equal('');
explain.fee.should.equal(1160407);
explain.changeAmount.should.equal('0');
});

it('should verify isWalletAddress', async function () {
const baseAddress = '0.0.41098';
const validAddress1 = '0.0.41098?memoId=1';
Expand Down
Loading