Name Registry
The registry stores information about the domain name. It is made of two things:
- The header
- The data
The data for a domain name is always prefixed by the header.

Below is the structure of the header in both Rust and JS:
#![allow(unused)] fn main() { /// The layout of the remaining bytes in the account data are determined by the record `class` #[derive(Clone, Debug, BorshSerialize, BorshDeserialize, PartialEq)] pub struct NameRecordHeader { // Names are hierarchical. `parent_name` contains the account address of the parent // name, or `Pubkey::default()` if no parent exists. pub parent_name: Pubkey, // The owner of this name pub owner: Pubkey, // The class of data this account represents (DNS record, twitter handle, SPL Token name/symbol, etc) // // If `Pubkey::default()` the data is unspecified. pub class: Pubkey, } }
export class NameRegistryState {
parentName: PublicKey;
owner: PublicKey;
class: PublicKey;
data: Buffer | undefined;
static HEADER_LEN = 96;
static schema: Schema = new Map([
[
NameRegistryState,
{
kind: "struct",
fields: [
["parentName", [32]],
["owner", [32]],
["class", [32]],
],
},
],
]);
constructor(obj: {
parentName: Uint8Array;
owner: Uint8Array;
class: Uint8Array;
}) {
this.parentName = new PublicKey(obj.parentName);
this.owner = new PublicKey(obj.owner);
this.class = new PublicKey(obj.class);
}