loadContractCodeForContractId method
- String contractId
Loads the contract code entry (including source code - wasm bytes) for a given contract id.
Implementation
Future<XdrContractCodeEntry?> loadContractCodeForContractId(
String contractId) async {
XdrLedgerKey ledgerKey = XdrLedgerKey(XdrLedgerEntryType.CONTRACT_DATA);
ledgerKey.contractData = XdrLedgerKeyContractData(
Address.forContractId(contractId).toXdr(),
XdrSCVal.forLedgerKeyContractInstance(),
XdrContractDataDurability.PERSISTENT);
GetLedgerEntryResponse ledgerEntryResponse =
await getLedgerEntry(ledgerKey.toBase64EncodedXdrString());
if (ledgerEntryResponse.ledgerEntryData != null) {
XdrLedgerEntryData ledgerEntryData =
XdrLedgerEntryData.fromBase64EncodedXdrString(
ledgerEntryResponse.ledgerEntryData!);
if (ledgerEntryData.contractData != null &&
ledgerEntryData
.contractData?.val.instance?.executable.wasmHash !=
null) {
String wasmId = Util.bytesToHex(ledgerEntryData
.contractData!.val.instance!.executable.wasmHash!.hash);
return await (loadContractCodeForWasmId(wasmId));
}
}
return null;
}