compileV0 method
CompiledMessage
compileV0({
- required String recentBlockhash,
- required Ed25519HDPublicKey feePayer,
- List<
AddressLookupTableAccount> addressLookupTableAccounts = const [],
Implementation
CompiledMessage compileV0({
required String recentBlockhash,
required Ed25519HDPublicKey feePayer,
List<AddressLookupTableAccount> addressLookupTableAccounts = const [],
}) {
final compiledKeys =
CompiledKeys.compile(instructions: instructions, payer: feePayer);
final addressTableLookups = <MessageAddressTableLookup>[];
final writableKeys = <Ed25519HDPublicKey>[];
final readonlyKeys = <Ed25519HDPublicKey>[];
for (final lookupTable in addressLookupTableAccounts) {
final extractResult = compiledKeys.extractTableLookup(lookupTable);
if (extractResult != null) {
final addressTableLookup = extractResult.lookup;
final writable = extractResult.keys.writable;
final readonly = extractResult.keys.readonly;
addressTableLookups.add(addressTableLookup);
writableKeys.addAll(writable);
readonlyKeys.addAll(readonly);
}
}
final messageComponents = compiledKeys.getMessageComponents();
final staticAccountKeys = messageComponents.publicKeys;
final accountKeys = MessageAccountKeys(
staticAccountKeys: staticAccountKeys,
accountKeysFromLookups: LoadedAddresses(
writable: writableKeys,
readonly: readonlyKeys,
),
);
final messageInstructions = accountKeys.compileInstructions(instructions);
return CompiledMessage.v0(
header: messageComponents.header,
accountKeys: staticAccountKeys,
recentBlockhash: recentBlockhash,
instructions: messageInstructions,
addressTableLookups: addressTableLookups,
);
}