Resolution
Resolution is a library for interacting with blockchain domain names. It can be used to retrieve payment addresses, IPFS hashes for decentralized websites, and GunDB usernames for decentralized chat.
Resolution is primarily built and maintained by Unstoppable Domains.
Resoultion supports decentralized domains across three main zones:
- Crypto Name Service (CNS)
- Zilliqa Name Service (ZNS)
- Ethereum Name Service (ENS)
For more information, see our detailed API Referrence.
Installing Resolution
Resolution can be installed with either yarn
or npm
.
yarn add @unstoppabledomains/resolution
npm install @unstoppabledomains/resolution --save
If you're interested in resolving domains via the command line, see our CLI section.
Using Resolution
Create a new project.
mkdir resolution && cd $_
yarn init -y
yarn add @unstoppabledomains/resolution
Look up a domain's crypto address
Create a new file in your project, address.js
.
const { default: Resolution } = require('@unstoppabledomains/resolution');
const resolution = new Resolution();
function resolve(domain, currency) {
resolution
.addr(domain, currency)
.then((address) => console.log(domain, 'resolves to', address))
.catch(console.error);
}
resolve('brad.crypto', 'ETH');
resolve('brad.zil', 'ZIL');
Execute the script.
$ node address.js
brad.crypto resolves to 0x8aaD44321A86b170879d7A244c1e8d360c99DdA8
brad.zil resolves to zil1yu5u4hegy9v3xgluweg4en54zm8f8auwxu0xxj
Find the IPFS hash for a decentralized website
Create a new file in your project, ipfs_hash.js
.
const { default: Resolution } = require('@unstoppabledomains/resolution');
const resolution = new Resolution();
function resolveIpfsHash(domain) {
resolution
.ipfsHash(domain)
.then((hash) =>
console.log(
`You can access this website via a public IPFS gateway: https://gateway.ipfs.io/ipfs/${hash}`
)
)
.catch(console.error);
}
resolveIpfsHash('homecakes.crypto');
Execute the script.
$ node ipfs_hash.js
You can access this website via a public IPFS gateway: https://gateway.ipfs.io/ipfs/QmVJ26hBrwwNAPVmLavEFXDUunNDXeFSeMPmHuPxKe6dJv
Find a GunDB username
Create a new file in your project, gundb.js
.
const { default: Resolution } = require('@unstoppabledomains/resolution');
const resolution = new Resolution();
function resolveGunDbRecords(domain) {
resolution
.chatId(domain)
.then((id) => console.log(`Domain ${domain} has a GunDB chat ID: ${id}`))
.catch(console.error);
}
resolveGunDbRecords('homecakes.crypto');
Execute the script.
$ node gundb.js
Domain homecakes.crypto has a GunDB chat ID: 0x47992daf742acc24082842752fdc9c875c87c56864fee59d8b779a91933b159e48961566eec6bd6ce3ea2441c6cb4f112d0eb8e8855cc9cf7647f0d9c82f00831c
Command Line Interface
To use resolution via the command line install the package globally.
yarn global add @unstoppabledomains/resolution
npm install -g @unstoppabledomains/resolution
By default, the CLI uses https://main-rpc.linkpool.io as its primary gateway to the Ethereum blockchain. If you'd like to override this default and set another provider you can do so using the -C
flag.
For example:
resolution -C url:https://main-rpc.linkpool.io/
Use the -h
or --help
flag to see all the available CLI options.
Error Handling
When resolution encounters an error it returns the error code instead of stopping the process. Keep an eye out for return values like RECORD_NOT_FOUND
.
Development
Use these commands to set up a local development environment (macOS Terminal or Linux shell).
-
Install nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash
-
Install concrete version of node.js
nvm install 12.12.0
-
Install yarn
npm install -g yarn
-
Clone the repository
git clone https://github.com/unstoppabledomains/resolution.git
cd resolution
-
Install dependencies
yarn install
Internal network config
Internal network config
can be updated by running yarn network-config:pull
task and committing updated file.