getTransactionInfo method
Implementation
Future<XRPTransactionInfo> getTransactionInfo(
String adress,
) async {
final serverInfoRequest = await networkClient.postHTTP('', {
"method": "server_info",
"params": [{}],
"id": "dontcare",
"jsonrpc": "2.0"
});
final serverInfo = serverInfoRequest.data['result']['info'] as Map;
late Map<String, dynamic> accountData;
try {
accountData = await getAccountInfo(adress);
} catch (err) {
if (err is Map) {
throw Exception(err['result']["error_message"]);
}
rethrow;
}
final networkId = serverInfo['network_id'] as int;
final sequence = accountData['account_data']['Sequence'] as int;
//Fee calculation
final baseFee = serverInfo["validated_ledger"]["base_fee_xrp"] as double;
final serverLoadFactor = serverInfo["load_factor"] ?? 1;
const feeCushion = 1.2;
double fee = baseFee * serverLoadFactor * feeCushion;
const maxFeeXRP = 2.0;
fee = min(fee, maxFeeXRP);
final String feeString =
XrpFormatter.xrpToDrops(double.parse(fee.toStringAsFixed(6)))
.toString();
// LatestValidatedLedgerSequence calculation
final ledgerSequenceRequest = await networkClient.postHTTP('', {
"method": "ledger",
"params": [
{
"ledger_index": "validated",
"transactions": false,
"expand": false,
"owner_funds": false
}
]
});
final ledgerIndex =
ledgerSequenceRequest.data['result']['ledger_index'] as int;
const ledgerOffset = 20;
final lastLedgerSequence = ledgerIndex + ledgerOffset;
return XRPTransactionInfo(
lastLedgerSequence: lastLedgerSequence,
fee: feeString,
sequence: sequence,
networkId: networkId,
);
}