changeVerifiedPubkey static method

Future<List<TransactionInstruction>> changeVerifiedPubkey({
  1. required SolanaRPC rpc,
  2. required String twitterHandle,
  3. required SolAddress currentVerifiedPubkey,
  4. required SolAddress newVerifiedPubkey,
  5. required SolAddress payerKey,
})

Change the verified pubkey for a given twitter handle

Implementation

static Future<List<TransactionInstruction>> changeVerifiedPubkey({
  required SolanaRPC rpc,
  required String twitterHandle,
  required SolAddress currentVerifiedPubkey,
  required SolAddress newVerifiedPubkey,
  required SolAddress payerKey,
}) async {
  final hashedTwitterHandle =
      NameServiceProgramUtils.getHashedName(twitterHandle);
  final twitterHandleRegistryKey =
      NameServiceProgramUtils.getNameAccountProgram(
    hashedName: hashedTwitterHandle,
    nameParent: NameServiceProgramConst.twitterRootPrentRegisteryKey,
  );

  final List<TransactionInstruction> instructions = [
    NameServiceProgram.transfer(
      nameAccountKey: twitterHandleRegistryKey,
      layout: NameServiceTransferLayout(newOwnerKey: newVerifiedPubkey),
      currentNameOwnerKey: currentVerifiedPubkey,
    ),
    await NameServiceProgramHelper.deleteNameRegistry(
      rpc: rpc,
      name: currentVerifiedPubkey.address,
      refundTargetKey: payerKey,
      nameClass: NameServiceProgramConst.twitterVerificationAuthority,
      nameParent: NameServiceProgramConst.twitterRootPrentRegisteryKey,
    ),
    ...await createReverseTwitterRegistry(
      rpc: rpc,
      twitterHandle: twitterHandle,
      twitterRegistryKey: twitterHandleRegistryKey,
      verifiedPubkey: newVerifiedPubkey,
      payerKey: payerKey,
    )
  ];

  return instructions;
}