Ed25519ProgramLayout.fromPublicKey constructor
Ed25519ProgramLayout.fromPublicKey({})
Create an ed25519 instruction with a public key and signature. the signature must be a buffer of 64 bytes.
Implementation
factory Ed25519ProgramLayout.fromPublicKey({
required SolanaPublicKey publicKey,
required List<int> message,
required List<int> signature,
int? instructionIndex,
}) {
if (signature.length != Ed25519ProgramConst.signatureLen) {
throw MessageException("invalid signature length.", details: {
"Excepted": Ed25519ProgramConst.signatureLen,
"length": signature.length
});
}
final int index = instructionIndex ?? mask16;
final publicKeyOffset = _layout.span;
final signatureOffset = publicKeyOffset + publicKey.toBytes(false).length;
final messageDataOffset = signatureOffset + signature.length;
return Ed25519ProgramLayout._(
numSignatures: 1,
padding: 0,
signatureOffset: signatureOffset,
signatureInstructionIndex: index,
publicKeyOffset: publicKeyOffset,
publicKeyInstructionIndex: index,
messageDataOffset: messageDataOffset,
messageDataSize: message.length,
messageInstructionIndex: index,
publicKey: publicKey,
message: message,
signature: signature,
);
}