Skip to content

Commit d285c78

Browse files
author
Tomislav Horaček
authored
[DDW-512] Implement dynamic TTL for HW transactions (#2331)
* [DDW-512] Introduce dynamic TTL for HW transactions * [DDW-512] Code improvements
1 parent 2d00d07 commit d285c78

File tree

8 files changed

+26
-10
lines changed

8 files changed

+26
-10
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Changelog
1414

1515
### Chores
1616

17+
- Implemented dynamic TTL calculation for hardware wallets transactions ([PR 2331](https://github.com/input-output-hk/daedalus/pull/2331))
1718
- Added link to connecting issues support article on the hardware wallet "Pairing" dialog ([PR 2336](https://github.com/input-output-hk/daedalus/pull/2336))
1819
- Updated recovery phrase entry ([PR 2334](https://github.com/input-output-hk/daedalus/pull/2334))
1920
- Adjusted sorting of table values on the "Rewards" screen ([PR 2333](https://github.com/input-output-hk/daedalus/pull/2333))

source/renderer/app/api/api.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2010,11 +2010,13 @@ export default class AdaApi {
20102010
localTip: {
20112011
epoch: get(nodeTip, 'epoch_number', 0),
20122012
slot: get(nodeTip, 'slot_number', 0),
2013+
absoluteSlotNumber: get(nodeTip, 'absolute_slot_number', 0),
20132014
},
20142015
networkTip: networkTip
20152016
? {
2016-
epoch: get(networkTip, 'epoch_number', null),
2017-
slot: get(networkTip, 'slot_number', null),
2017+
epoch: get(networkTip, 'epoch_number', 0),
2018+
slot: get(networkTip, 'slot_number', 0),
2019+
absoluteSlotNumber: get(networkTip, 'absolute_slot_number', 0),
20182020
}
20192021
: null,
20202022
nextEpoch: nextEpoch

source/renderer/app/api/network/types.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
// @flow
22
export type TipInfo = {
3-
epoch: ?number,
4-
slot: ?number,
3+
epoch: number,
4+
slot: number,
5+
absoluteSlotNumber: number,
56
};
67

78
export type NextEpoch = {

source/renderer/app/api/utils/patchAdaApi.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,12 @@ export default (api: AdaApi) => {
4949
localTip: {
5050
epoch: get(node_tip, 'epoch_number', 0),
5151
slot: get(node_tip, 'slot_number', 0),
52+
absoluteSlotNumber: get(node_tip, 'absolute_slot_number', 0),
5253
},
5354
networkTip: {
5455
epoch: get(network_tip, 'epoch_number', null),
5556
slot: get(network_tip, 'slot_number', null),
57+
absoluteSlotNumber: get(network_tip, 'absolute_slot_number', 0),
5658
},
5759
nextEpoch: {
5860
// N+1 epoch
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export const PENDING_TIME_LIMIT = 10 * 60 * 1000; // 10 minutes | unit: milliseconds
2+
export const TIME_TO_LIVE = 2 * 60 * 60; // 2 hours | unit: seconds (7200)

source/renderer/app/stores/HardwareWalletsStore.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
isTrezorEnabled,
1515
isLedgerEnabled,
1616
} from '../config/hardwareWalletsConfig';
17+
import { TIME_TO_LIVE } from '../config/txnsConfig';
1718
import {
1819
getHardwareWalletTransportChannel,
1920
getExtendedPublicKeyChannel,
@@ -1151,13 +1152,14 @@ export default class HardwareWalletsStore extends Store {
11511152
}
11521153

11531154
const { isMainnet } = this.environment;
1155+
const ttl = this._getTtl();
11541156

11551157
try {
11561158
const signedTransaction = await signTransactionTrezorChannel.request({
11571159
inputs: inputsData,
11581160
outputs: outputsData,
11591161
fee: formattedAmountToLovelace(fee.toString()).toString(),
1160-
ttl: '150000000',
1162+
ttl: ttl.toString(),
11611163
networkId: isMainnet
11621164
? HW_SHELLEY_CONFIG.NETWORK.MAINNET.networkId
11631165
: HW_SHELLEY_CONFIG.NETWORK.TESTNET.networkId,
@@ -1290,9 +1292,8 @@ export default class HardwareWalletsStore extends Store {
12901292
});
12911293

12921294
const certificatesData = await Promise.all(_certificatesData);
1293-
12941295
const fee = formattedAmountToLovelace(flatFee.toString());
1295-
const ttl = 150000000;
1296+
const ttl = this._getTtl();
12961297
const withdrawals = [];
12971298
const metadataHashHex = null;
12981299
const { isMainnet } = this.environment;
@@ -1738,6 +1739,13 @@ export default class HardwareWalletsStore extends Store {
17381739
return type;
17391740
};
17401741

1742+
_getTtl = (): number => {
1743+
const { networkTip } = this.stores.networkStatus;
1744+
const absoluteSlotNumber = get(networkTip, 'absoluteSlotNumber', 0);
1745+
const ttl = absoluteSlotNumber + TIME_TO_LIVE;
1746+
return ttl;
1747+
};
1748+
17411749
_setHardwareWalletLocalData = async ({
17421750
walletId,
17431751
data,

storybook/stories/nodes/status/Diagnostics.stories.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ storiesOf('Nodes|Status', module)
6767
280719
6868
)}
6969
nodeConnectionError={null}
70-
localTip={{ epoch: 123, slot: 13400 }}
71-
networkTip={{ epoch: 123, slot: 13400 }}
70+
localTip={{ epoch: 123, slot: 13400, absoluteSlotNumber: 15000000 }}
71+
networkTip={{ epoch: 123, slot: 13400, absoluteSlotNumber: 15000000 }}
7272
localBlockHeight={number('localBlockHeight', 280719)}
7373
networkBlockHeight={number('networkBlockHeight', 42539)}
7474
isCheckingSystemTime={boolean('isCheckingSystemTime', true)}
@@ -109,7 +109,7 @@ storiesOf('Nodes|Status', module)
109109
280719
110110
)}
111111
nodeConnectionError={null}
112-
localTip={{ epoch: 123, slot: 13400 }}
112+
localTip={{ epoch: 123, slot: 13400, absoluteSlotNumber: 15000000 }}
113113
networkTip={null}
114114
localBlockHeight={number('localBlockHeight', 280719)}
115115
networkBlockHeight={number('networkBlockHeight', 42539)}

storybook/stories/staking/DelegationCenter.stories.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const walletSyncedStateRestoring = {
3131
const networkTip: TipInfo = {
3232
epoch: 1232,
3333
slot: 123,
34+
absoluteSlotNumber: 15000000,
3435
};
3536

3637
const nextEpochDate = new Date();

0 commit comments

Comments
 (0)