DAB: Internet Computer Registries, Starting with the NFT List 🎨

DAB provides seamless access to IC data that many apps/UI’s need to surface. Such as lists of NFT’s, tokens, canister/Dapp metadata, and more. The first one is the NFT list in DAB’s V0.1.0!

DAB
DAB — An open internet service.
6 min readSep 17, 2021

--

Meet DAB (short for decentralized address book). An open internet service for NFT, Token, Canister, and Dapp registries/lists any app can consume to auto-surface a user’s assets, names of canisters they are interacting with, etc. in their user interface, making assets and canisters easily discoverable, with metadata that makes them descriptive and human-readable (and safer to interact with).

We’re following best practices from networks like Ethereum (e.g. Tokenlists), but keeping the lists & data in canisters and soon turning it into a trustless, community-run open internet service. Starting today, with V0.1.0 and the NFT List.

DAB V0.1.0 — The NFT List & DAB-js 🎨

Meet DAB’s NFT list. It’s a registry canister with a list of Internet Computer NFTs (of any standard) that grows over time as new collections appear in the ecosystem.

Apps can integrate into this list to auto-surface all NFTs a user owns in all listed collections, at once, and allow them to interact with these assets (view, transfer, etc.) without having to integrate each collection manually into their apps (or force users to manually add each NFT they own ).

The best part? This list can support any NFT standard, because the DAB-js library wraps the standards of listed assets (EXT, ICPunks, Departure Labs, etc..) into a common JS interface apps use to interact with all assets, using the SAME common methods. No need for custom integrations.

How do you integrate DAB into your App? 🧰

To make it easy to integrate DAB into any IC app/UI/website, we created the DAB-js library! It’s a simple tool that provides all the methods to query DAB, as well as the wrapped methods to interact with assets (transfer, details, etc.)

This is the first version of the DAB-js library and its standard wrapper. We will continue to add features, and wrap more of the standard’s features in the future (e.g. list/delist NFTs).

Current NFTs on the List & Submitting More!🎨

We’ve added ICPunks, all currently listed EXT collections on Entrepot (Cronic, wearables, Starverse, wrapped IC Drip, Wrapped ICPunks, ICP News, ICMojis, ICPuzzle, Wing). You can always find the current list in DAB’s repo.

Soon, we will add collections using Departure Labs NFT standard; and we are in talks with every announced -but not released- collection (ICPuppies, Internet Astronauts, etc…) which will be added as well 😎

Submit an NFT Collection to the List:

Working on a new NFT collection and want it added to DAB’s list or saw one that we missed and want us to add it in? Fill out this form:

At the moment submissions are manually handled by the DAB team (aka the Fleek team), but the process will be automated and made community-governed in the future.

Why are we building DAB? 👾

There are many objectives behind us building DAB, being composability and interoperability on the Internet Computer the top picks. But still, there are four big important reasons behind this project:

1. Improving Discoverability & Trust for IC Assets 🔌

If you are building an app that interacts with tokens, NFTs, etc. on the IC, there is no easy way to surface multiple assets for a user at once. You need to manually integrate calls to each token and NFT into your platform. That takes time, manually adding new assets over time, and building integrations based on the standard of each NFT/token.

DAB solves that by creating open lists of assets (NFTs, tokens, etc…) that any app/UI can query to auto-surface the token balances and NFTs a user owns in one call, instead of calling each collection/ledger individually.

TL;DR: A wallet app, like Plug, can make one call to check a Principal ID’s assets, and DAB will return that identity’s owned NFTs and token balances from all assets listed in DAB at once. As new assets are added to the lists, they are also automatically added/supported by the app.

In the future, we can do the same thing with canister/Dapp lists as well, with registries that take Canister IDs and associate useful metadata on top of them (name, description, logo, etc.), that apps/UIs can query and surface to improve their user’s experience with human-readable metadata.

2. Allowing Plug-n-play Integration to Multiple IC Standards 🤝

The second challenge you will face when integrating with Tokens & NFTs is dealing with different standards/interfaces that allow your users to interact with these assets (transfer NFTs, send tokens, etc.).

It’s early in the ecosystem, and there are no set standards regarding token or NFT interfaces. This means that if you want to integrate ICPunks and Cronics into your app (they use different NFT standards), you need to build two integrations, one for each standard.

We believe that marrying one standard over another creates siloed and disconnected user experiences, where different apps support different NFT/Tokens standards and can’t communicate or interoperate with each other. That’s missing out on the magic of Web3, composability.

We’re at an exploratory stage on the Internet Computer, and new creative standards with new dope features only the IC can enable are being built. Instead of marrying one standard over another, and creating siloed experiences we don’t only want to help them thrive, but to make it easy to integrate them all at once.

That’s why DAB’s lists are standard agnostic. From EXT to Departure Lab’s to ICPunk’s NFT standards (as well as any other that appears in the future), any standards are welcome to DAB’s list.

And to help them integrate them all, regardless of the standard, the DAB-js library wraps these standard interfaces into a common universal interface that translates the calls for you to the corresponding format.

With DAB, you can call a common method (e.g. “transfer”) to transfer any NFT on the list, and the DAB-js library takes care of translating each call to the proper format for each standard (EXT, ICPunks, etc.) depending on the collection you’re interacting with.

We started with NFTs today (we’ll wrap more NFT interfaces soon), and we’ll do the same thing for fungible tokens when the fungible token list for DAB comes out 🔥

3. Integrating Assets & Standards from other Blockchains 🧠

But we’re not just thinking about how to make a flexible and plug-n-play experience for Internet Computer assets. After all, bridges for Ethereum and Bitcoin are coming.

The multi-standard ecosystem is inevitable! And once roads open between these blockchains and the IC, we want to help bring support for those hundreds of assets, and their standards (ERC20, ERC-721, etc…) to the IC in an easy-to-use way.

That’s one of the hidden potentials of DAB’s JS standard wrapper. In the future, we can wrap any standard, even Ethereum’s.

We’ll be able to give any IC app plug-n-play support to assets in Ethereum without having to make custom integrations, and use the same common methods (e.g. “transfer”) to interact with BOTH IC and Ethereum assets.

The potential of wrapping standards into a universal/common interface is gigantic! It starts with helping the Internet Computer assets be composable and compatible across any interface, and it ends with bringing plug-n-play support for assets from other chains into the IC 🔥

Wrapping it up 🗞️

Without a doubt, there are a lot of cool things we’ve got in mind for DAB, and we can’t wait to see how its potential plays out. Right now, we want to hear more feedback from the community!

Feel free to let us know what you think here, on Twitter, or Discord, and we invite all devs on the IC to visit DAB’s repo on GitHub to make feature/improvement suggestions at will. All feedback is welcome.

We’ll call it a day, for now, thanks for hopping on this release!

--

--

DAB
DAB — An open internet service.

DAB is an Internet Computer open internet service for NFT, token, canister, and Dapp registries.