A fully decentralized Web3 name service on Hedera Hashgraph.
npm install @kabuto-sh/ns> The only full decentralized Web3 name service on Hedera Hashgraph.
``sh`
npm install @kabuto-sh/ns
Before using KNS, you need to set the Signer that will be used
to sign and execute transactions against the network.
`ts
import { KNS } from "@kabuto-sh/ns";
const kns = new KNS({
network: "mainnet", // or "testnet"
});
// NOTE: setProvider takes anything that implements the Signer interface
// from HIP-338
kns.setSigner(yourSigner);
`
Register the name, if available.
Mints the authorization NFT to the configured signer.
`ts`
await kns.registerName("example.hh", { years: 3 });
The registration price is explained on https://ns.kabuto.sh. The
price is fixed to a USD value. To check the spot price in HBARs, you
can use the getRegisterPriceHbar function.
`ts`
const priceInHbar = await kns.getRegisterPriceHbar("example.hh");
Note that getRegisterPriceHbar does not check for domain
availability.
In order to perform any setX or deleteX functionsexample.hh
on a name (e.g., ) your signer must be the owner
of the authorization NFT.
`ts
// example.hh --> _
await kns.setText("example.hh", "Hello World");
// foo.example.hh --> _
await kns.setText("foo.example.hh", "Bar");
`
Address records are keyed by the SLIP-44 coin type.
`ts
// example.hh (HBAR) --> _
await kns.setAddress("example.hh", 3030, "0.0.2020");
// example.hh (ETH) --> _
await kns.setAddress(
"example.hh",
60,
"0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
);
`
`ts`
// example.hh (HBAR) --> _
await kns.setHederaAddress("example.hh", "0.0.2020");
Retrieve the metadata for a name, if available.
Throws NameNotFoundError if not available.
`ts`
const {
serialNumber, // serial number in the NFT for this TLD
ownerAccountId, // account ID that owns this name
expirationTime, // time that the name ownership will expire
} = await kns.getName("example.hh");
Retrieve all text and address records for a name, if available.
Throws NameNotFoundError if not available.
`ts`
const {
text, // array of { name, text }
address, // array of { name, coinType, address }
} = await kns.getAll("example.hh");
Retrieve a text for a name, if available.
Throws NameNotFoundError if not available.
`ts`
const text = await kns.getText("example.hh");
Retrieve an address record for a name and coin type, if available.
Throws NameNotFoundError if not available.
`ts`
// address is x.y.z
// 3030 is Hedera
const address = await kns.getAddress("example.hh", 3030);
Retrieve a HBAR address record for a name, if available.
Throws NameNotFoundError if not available.
`ts`
// address is an @hashgraph/sdk.AccountId
const address = await kns.getHederaAddress("example.hh");
Lookup names for a given address record and coin type.
`ts`
// returns array of names as x.y
const names: string[] = await kns.findNamesByAddress(3030, "0.0.1001");
Lookup names for a given HNAR address record.
`ts``
// returns array of names as x.y
const names: string[] = await kns.findNamesByHederaAddress(myAccountId);
Licensed under the Apache license, version 2.0 (LICENSE
or
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license,
shall be licensed as above, without any additional terms or conditions.