Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
@unstoppabledomains/resolution
Advanced tools
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.
Resolution supports decentralized domains across three main zones:
Zilliqa Name Service (ZNS)
.zil
Ethereum Name Service (ENS)
.eth
.kred
.xyz
.luxe
Unstoppable Name Service (UNS)
.crypto
.nft
.blockchain
.bitcoin
.coin
.wallet
.888
.dao
.x
For more information, see our detailed API Referrence.
Note: Ethereum Name Service requires installing additional packages otherwise library throws error when trying to resolve ENS domain.
"bip44-constants": "^8.0.5"
"@ensdomains/address-encoder": ">= 0.1.x <= 0.2.x"
"content-hash": "^2.5.2"
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.
Create a new project.
mkdir resolution && cd $_
yarn init -y
yarn add @unstoppabledomains/resolution
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);
}
function resolveMultiChain(domain, currency, chain) {
resolution
.multiChainAddr(domain, currency, chain)
.then((address) => console.log(domain, 'resolves to', address, version))
.catch(console.error);
}
resolve('brad.crypto', 'ETH');
resolve('brad.zil', 'ZIL');
resolveMultiChain('brad.crypto', 'USDT', 'ERC20');
resolveMultiChain('brad.crypto', 'USDT', 'OMNI');
Execute the script.
$ node address.js
brad.crypto resolves to 0x8aaD44321A86b170879d7A244c1e8d360c99DdA8
brad.zil resolves to zil1yu5u4hegy9v3xgluweg4en54zm8f8auwxu0xxj
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
Create a new file in your project, custom-resolution.js
.
const { default: Resolution } = require('@unstoppabledomains/resolution');
const resolution = new Resolution();
function resolveCustomRecord(domain, record) {
resolution
.records(domain, [record])
.then((value) => console.log(`Domain ${domain} ${record} is: ${value}`))
.catch(console.error);
}
resolveCustomRecord('homecakes.crypto', 'custom.record.value');
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 Infura 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 --ethereum-url
flag.
For example:
resolution --ethereum-url https://mainnet.infura.io/v3/${secret} -d udtestdev-usdt.crypto -a
Use the -h
or --help
flag to see all the available CLI options.
Resolution provides zero-configuration experience by using built-in
production-ready Infura endpoint by default.
Default Ethereum provider is free to use without restrictions and rate-limits
for CNS (.crypto domains)
resolution.
To resolve ENS
domains on production it's recommended to change Ethereum
provider.
Default provider can be changed by changing constructor options
new Resolution(options)
or by using one of the factory methods:
Resolution.infura()
Resolution.fromWeb3Version1Provider()
Resolution.fromEthersProvider()
To see all constructor options and factory methods check Unstoppable API reference.
In some scenarios system might not be flexible enough to easy distinguish between various Ethereum testnets on compile time.
For this case Resolution library provide a special async constructor which should be waited for
await Resolution.autonetwork(options)
. This method makes a JSON RPC "net_version" call to the provider to get the network id.
This method configures only Ens and Cns, Zns is supported only on Zilliqa mainnet which is going to be used in any cases. You can provide a configured provider or a blockchain url as in the following example:
await Resolution.autonetwork({
cns: {provider},
ens: {url}
});
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
.
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
$ yarn network-config:pull
$ yarn resolver-keys:pull
$ yarn config:pull
Once your app has a working Unstoppable Domains integration, register it here. Registered apps appear on the Unstoppable Domains homepage and Applications page — putting your app in front of tens of thousands of potential customers per day.
Also, every week we select a newly-integrated app to feature in the Unstoppable Update newsletter. This newsletter is delivered to straight into the inbox of ~100,000 crypto fanatics — all of whom could be new customers to grow your business.
Join our discord community and ask questions.
6.0.2
Resolution#owner
method doesn't throw an error in case of empty resolverFAQs
Domain Resolution for blockchain domains
The npm package @unstoppabledomains/resolution receives a total of 5,292 weekly downloads. As such, @unstoppabledomains/resolution popularity was classified as popular.
We found that @unstoppabledomains/resolution demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.