Implementation
Future<int> getNonce(String accountId, String contractId) async {
XdrLedgerKey ledgerKey = XdrLedgerKey(XdrLedgerEntryType.CONTRACT_DATA);
ledgerKey.contractID = XdrHash(Util.hexToBytes(contractId));
Address address = Address.forAccountId(accountId);
XdrSCVal nonceKeyVal =
XdrSCVal.forObject(XdrSCObject.forNonceKey(address.toXdr()));
ledgerKey.contractDataKey = nonceKeyVal;
GetLedgerEntryResponse response =
await getLedgerEntry(ledgerKey.toBase64EncodedXdrString());
if (!response.isErrorResponse &&
response.ledgerEntryDataXdr != null &&
response.ledgerEntryDataXdr!.contractData != null) {
XdrSCObject? obj = response.ledgerEntryDataXdr!.contractData!.val.obj;
if (obj != null && obj.u64 != null) {
return obj.u64!.uint64;
}
}
return 0;
}