createProgramAddress static method

Future<Ed25519HDPublicKey> createProgramAddress({
  1. required Iterable<int> seeds,
  2. required Ed25519HDPublicKey programId,
})

Derives a program address from seeds and a program ID.

Implementation

static Future<Ed25519HDPublicKey> createProgramAddress({
  required Iterable<int> seeds,
  required Ed25519HDPublicKey programId,
}) async {
  final seedBytes = seeds
      .followedBy(programId.bytes)
      .followedBy(_magicWord)
      .toList(growable: false);
  final data = await _computeHash(seedBytes);
  if (isPointOnEd25519Curve(data)) {
    throw const FormatException(
      'failed to create address with provided seeds',
    );
  }

  return Ed25519HDPublicKey(data);
}