getTwitterHandleandRegistryKeyViaFilters static method

Future<ReverseTwitterRegistryAccount> getTwitterHandleandRegistryKeyViaFilters({
  1. required SolanaRPC rpc,
  2. required SolAddress verifiedPubkey,
})

Uses the RPC node filtering feature, execution speed may vary

Implementation

static Future<ReverseTwitterRegistryAccount>
    getTwitterHandleandRegistryKeyViaFilters({
  required SolanaRPC rpc,
  required SolAddress verifiedPubkey,
}) async {
  final filteredAccounts = await rpc.request(SolanaRPCGetProgramAccounts(
      account: NameServiceProgramConst.programId,
      filters: [
        RPCMemcmpFilterConfig(
            offset: 0,
            bytes:
                NameServiceProgramConst.twitterRootPrentRegisteryKey.address),
        RPCMemcmpFilterConfig(offset: 32, bytes: verifiedPubkey.address),
        RPCMemcmpFilterConfig(
            offset: 64,
            bytes:
                NameServiceProgramConst.twitterVerificationAuthority.address),
      ]));

  for (final account in filteredAccounts) {
    final accountBytes = account.toBytesData();
    if (accountBytes.length >
        NameRegistryAccountUtils.hiddenDataOffset + 32) {
      return ReverseTwitterRegistryAccount.fromAccountBytes(accountBytes);
    }
  }
  throw Exception('Registry not found.');
}