Solana Multi Name Service Protocol Solver.
currently integrated:
- All ANS domains.
- SNS domain.
- More to come.
the example below is a replica of the tests in tests
folder
// constants
const RPC_URL = '';
const owner = new PublicKey('owner pubkey');
const domain = 'miester.abc';
// initialize
const connection = new Connection(RPC_URL);
const solver = new TldSolve(connection);
// retrieves userAccount main domain or favorite domain in sns.
const mainDomain = await solver.getMainDomain(owner);
// { nameAccount: "9YzfCEHb62bQ47snUyjkxhC9Eb6y7CSodK3m8CKWstjV", tld: ".abc", domain: "miester" }
// or
// { nameAccount: "ErBfMkE1YJiqG1wxBr6TAG15WrTtcrWS3pZbEKKFRmUr", tld: ".sol", domain: "miester" }
// resolves any domain name to its raw state.
const nameRecordState = await solver.resolveDomain(domain);
// returns a NameRecordHeader state.
// retrieve owner of a particular domain
const owner = await solver.getOwnerFromDomain(domain);
// returns a owner pubkey
// retrieve nameAccount of domain
const nameAccount = await solver.getNameAccountFromDomain(domain);
// returns a nameAccount pubkey
// list of name account pubkeys owned by user (add protocol as a second argument for a specific protocol)
// Protocol.ANS | Protocol.SNS | Protocol.ALL
const ownerDomains = await solver.getAllDomainsFromUser(owner);
// returns a list of name accounts pubkeys
// list of name account pubkeys owned by user for a specific tld.
// works with any ANS and SNS domains.
// (no dot needed)
const ownerDomains = await solver.getAllDomainsFromUserFromTld(owner, tld);
// returns a list of name accounts pubkeys
// reverse lookup for nameAccount public key, to retrieve domain name.
// works for both ANS and SNS.
// known parentAccount in most cases is the TldHouse Account. leave empty for SNS.
const [AbcTldHouse] = findTldHouse('.abc');
const domain = await solver.reverseLookupNameAccountWithKnownParent(
nameAccount,
AbcTldHouse,
);
// domain name
// reverse lookup for nameAccount public key, based on Protocol.
// Protocol.ANS | Protocol.SNS | Protocol.ALL
const domain = await solver.reverseLookupNameAccount(nameAccount);
// domain name
TLD => parentAccountKey
.bonk => 2j6gC6MMrnw4JJpAKR5FyyUFdxxvdZdG2sg4FrqfyWi5
.poor => 8err4ThuTiZo9LbozHAvMrzXUmyPWj9urnMo38vC6FdQ
.abc => 3pSeaEVTcKLkXPCpZHDpHUMWAogYFZgKSiVtyvqcgo8a
- fork repo, make a new branch.
- install dependencies
yarn
- add changes. please comment your code as much as you can.
- follow the code style of the project, including indentation.
- add tests in tests/ folder and do
yarn test
- add or change the documentation as needed.
- do a PR.