@@ -31,8 +31,8 @@ class TxBuilder {
31
31
32
32
// fetch recent relevant data from chain
33
33
final runtimeVersion = await _getRuntimeVersion ();
34
- final blockNumber = await _getBlockNumber ();
35
- final blockHash = await _getBlockHash (blockNumber : blockNumber );
34
+ final finalizedHash = await _getLatestFinalizedHash ();
35
+ final blockNumber = await _getBlockNumber (hash : finalizedHash );
36
36
final genesisHash = await _getBlockHash (blockNumber: 0 );
37
37
final accountInfo = await encointerKusama.query.system.account (pair.publicKey.bytes);
38
38
@@ -49,7 +49,7 @@ class TxBuilder {
49
49
specVersion: runtimeVersion.specVersion,
50
50
transactionVersion: runtimeVersion.transactionVersion,
51
51
genesisHash: genesisHash,
52
- blockHash: blockHash ,
52
+ blockHash: finalizedHash ,
53
53
blockNumber: blockNumber,
54
54
eraPeriod: 64 ,
55
55
nonce: accountInfo.nonce,
@@ -85,8 +85,15 @@ class TxBuilder {
85
85
return hash.replaceFirst ('0x' , '' );
86
86
}
87
87
88
- Future <int > _getBlockNumber () async {
89
- final block = await provider.send ('chain_getBlock' , []);
88
+ Future <String > _getLatestFinalizedHash () async {
89
+ final hash = (await provider.send ('chain_getFinalizedHead' , [])).result as String ;
90
+ return hash.replaceFirst ('0x' , '' );
91
+ }
92
+
93
+ Future <int > _getBlockNumber ({String ? hash}) async {
94
+ final params = hash != null ? [hash.replaceFirst ('0x' , '' )] : < String > [];
95
+
96
+ final block = await provider.send ('chain_getBlock' , params);
90
97
91
98
// ignore: avoid_dynamic_calls
92
99
final blockNumber = int .parse (block.result['block' ]['header' ]['number' ] as String );
0 commit comments