Skip to main content

Yat record categories

note

The Yat categories are a superset of the Power ups on the y.at website. Currently only redirects (Category 0x4001) are supported on y.at.

Yat record types#

Yat record types are grouped together according to the type of data they store. The data types are classified according to their category class, and each class has multiple data types grouped under it, each with a different tag.

Tags are unsigned 16-bit integers, or two bytes. The higher byte (2nd byte in little-endian format) indicates the data class, and the lower order byte describes the category.

The following is not an exhaustive list, and will very likely be expanded as time goes on.

Category classes#

ValueData class
0x00 - 0x0fTari records
0x10 - 0x3fCryptocurrency addresses
0x40Internet addresses / urls
0x41 - 0x42DNS records
0x50 - 0x5fText records (excl social media handles)
0x60Social media handles
0x61Location data

Category tags#

Tari categories#

ClassTagType / SizeDescription
0x000x0032 bytesRegistered Tari public key for this yat
0x000x0132 bytesModifiers to apply to the EmojiId prior to rendering for display
0x000x02Description for this EmojiId
0x000x03Expiration date for this EmojiId
0x000x04Redirect address for emoji URL. Browser will be redirected appending original URI path
0x000x05Nickname for this EmojiId
0x000x06The preferred display representation for this EmojiId
0x010x01Tari public key
0x010x02Tari Schnorr signature (R,s)

Cryptocurrency addresses#

Cryptocurrencies that have their own protocol have a designated Tag value. There is a structured, pipe | delimited value for addresses.

address|description|signature|default

Examples:

0x1003 = bc1q4ywsw6ktuxmnz4qx0h3uh44m324443hv4mn9vc|My Coffee Collection|OptionalSignature|t0x1003 = bc1q4ywsw6ktuxmnz4qx0h3uh44m324443hv4mn9vc
ClassTagType / SizeDescription
0x100x0169 bytesMonero standard address
0x100x0269 bytesMonero sub address
0x100x0334 bytesBitcoin address
0x100x04Ethereum address
0x100x10Binance Coin
0x100x12Cardano
0x100x13Dogecoin
0x100x14XRP
0x100x15Polkadot
0x100x16Internet Computer
0x100x17Bitcoin Cash
0x100x19Litecoin
0x100x1CStellar
0x100x1DSolana
0x100x1EVeChain
0x100x1FEthereum Classic
0x100x20EOS
0x100x21THETA
0x100x23TRON
0x100x24Filecoin
0x100x27Neo
0x100x29Polygon
0x100x2BTerra
0x100x2CBitcoin SV
0x100x2FIOTA
0x100x30Tezos
0x100x31Klaytn
0x100x32Cosmos
0x100x35Avalanche
0x100x36Kusama
0x100x38Algorand
0x100x3CDash
0x100x3DZcash
0x100x3FWaves
0x100x40Elrond
0x100x42NEM
0x100x43Decred
0x100x49TerraUSD
0x100x4BZilliqa
0x100x4DNano
0x100x50Qtum
0x100x52NEAR Protocol
0x100x54Stacks
0x100x56Ontology
0x100x59Bitcoin Gold
0x100x5ATheta Fuel
0x100x5CDigiByte
0x100x5DFantom
0x100x5EHorizen
0x100x60Siacoin
0x100x63OMG Network
0x100x64Helium
0x100x65ICON
0x100x67Ravencoin
0x100x6CHarmony
0x100x6DCelo
0x100x6FArweave
...
0x3f0xff3-8 + 1-128Unspecified (Ticker|Address string)

Crypto Tokens#

Crypto tokens that are based on other networks for resolution use a single Category with structured delimited data. The list of standardized short and long names can be found here.

ClassTagType / SizeDescription
0x630x00ShortName|LongName|SettlementNetwork|Address|Description|Signature
Short NameLong NameSettlement Network
1INCH1inchETH
AAVEAaveETH
ACHAlchemy PayETH
AGIXSingularityNETETH
AGLDAdventure GoldETH
ALCXAlchemixETH
ALICEMyNeighborAliceETH
ALPHAAlpha Finance LabBNB
ALTAlitasBNB
AMPAmpETH
ANCAnchor ProtocolLUNA
ANKRAnkrBNB
ANTAragonETH
ANYAnyswapFTM
API3API3ETH
ASDASDETH
ATLASStar AtlasSOL
AUDIOAudiusETH
AXSAxie InfinityETH
BADGERBadger DAOETH
BAKEBakeryTokenBNB
BANDBand ProtocolETH
BATBasic Attention TokenETH
BESTBitpanda Ecosystem TokenETH
BETABeta FinanceETH
BFCBifrost (BFC)ETH
BITBitDAOETH
BLCTBloomzed Loyalty Club TicketETH
BNTBancorETH
BPBeyond ProtocolETH
BTCBBitcoin BEP2BNB
BTCSTBitcoin Standard Hashrate TokenBNB
BTRSTBraintrustETH
BTTBitTorrentTRX
BUSDBinance USDBNB
C20CRYPTO20ETH
C98Coin98ETH
CAKEPancakeSwapBNB
CELCelsiusETH
CELRCeler NetworkETH
CHSBSwissBorgETH
CHZChilizETH
COMPCompoundETH
CROCrypto.com CoinETH
CRVCurve DAO TokenETH
CTSICartesiETH
CVCCivicETH
CVXConvex FinanceETH
DAIDaiETH
DAWNDawn ProtocolETH
DENTDentETH
DYDXdYdXETH
ELFaelfETH
ENJEnjin CoinETH
EPSEllipsisBNB
FEIFei ProtocolETH
FETFetch.aiETH
FIDABonfidaSOL
FRAXFraxETH
FTTFTX TokenBNB
FUNFUNTokenETH
FXFunction XETH
GALAGalaETH
GLMGolemETH
GNOGnosisETH
GRTThe GraphETH
GTGateTokenETH
GUSDGemini DollarETH
HBTCHuobi BTCETH
HEDGHedgeTradeETH
HEXHEXETH
HOTHoloETH
HTHuobi TokenETH
HUSDHUSDETH
IDEXIDEXETH
ILVIlluviumETH
INJInjective ProtocolETH
INOINO COINETH
IQEveripediaEOS
JSTJUSTTRX
KAVAKavaBNB
KCSKuCoin TokenETH
KEEPKeep NetworkETH
KNCKyber Network Crystal v2ETH
KOKKOKETH
LEOUNUS SED LEOETH
LINALinearETH
LINKChainlinkETH
LRCLoopringETH
LUSDLiquity USDETH
LYXeLUKSOETH
MANADecentralandETH
MASKMask NetworkETH
MBOXMOBOXBNB
MDXMdexHT
MIRMirror ProtocolETH
MKRMakerETH
MLNEnzymeETH
MNGOMango MarketsSOL
MRPHMorpheus.NetworkETH
MTLMetalETH
MVLMVLETH
NEXONexoBNB
NMRNumeraireETH
NOIASyntropyETH
NUNuCypherETH
NXMNXMETH
OCEANOcean ProtocolETH
OGNOrigin ProtocolETH
OKBOKBETH
ORBSOrbsETH
ORCOrbit ChainETH
ORNOrion ProtocolETH
OXTOrchidETH
PAXGPAX GoldETH
PEAKPEAKDEFIETH
PERPPerpetual ProtocolETH
PLAPlayDappETH
POLISStar Atlas DAOSOL
POLSPolkastarterETH
POLYPolymathETH
POWRPowerledgerETH
PROMPrometeusETH
PUNDIXPundi X[new]ETH
QKCQuarkChainETH
QNTQuantETH
RARESuperRareETH
RAYRaydiumETH
RENRenETH
RENBTCrenBTCETH
REPAugurETH
REQRequestETH
REVRevainETH
RGTRari Governance TokenETH
RLCiExec RLCETH
RPLRocket PoolETH
RSRReserve RightsETH
RUNETHORChainBNB
SAFEMOONSafeMoonBNB
SANDThe SandboxETH
SFPSafePalBNB
SHIBSHIBA INUETH
SKLSKALE NetworkETH
SNTStatusETH
SNXSynthetixETH
STETHLido stETHETH
STMXStormXETH
STORJStorjETH
STPTStandard Tokenization ProtocolETH
SUSHISushiSwapETH
SXPSwipeETH
TELTelcoinETH
TITANTitanSwapETH
TKOToko TokenBNB
TLMAlien WorldsETH
TRACOriginTrailETH
TRIBETribeETH
TTTThe Transfer TokenETH
TUSDTrueUSDBNB
TWTTrust Wallet TokenBNB
UBTUnibrightETH
UMAUMAETH
UNIUniswapETH
USDCUSD CoinETH
USDNNeutrino USDETH
USDPPax DollarETH
USDTTetherETH
vBNBVenus BNBBNB
vBTCVenus BTCBNB
VGXVoyager TokenETH
VRAVerasityETH
WBNBWrapped BNBBNB
WBTCWrapped BitcoinETH
WEMIXWEMIXKLAY
WINWINkLinkTRX
WOOWOO NetworkETH
WRXWazirXBNB
XDBDigitalBitsETH
XPRTPersistenceATOM
XVSVenusBNB
XYOXYOETH
YFIyearn.financeETH
YGGYield Guild GamesETH
YOUCyOUcashETH
ZRX0xETH

Internet addresses / URIs#

Non DNS internet-based URLS and URIs.

ClassTagType / SizeDescription
0x400x0056+2 bytesOnion3 address
0x400x01Up to 255 bytesWeb URL (e.g. https://tari.com/about). For host names use an A DNS record
0x400x02URI:Web with meta
0x410x01DNS:A
0x410x1CDNS:AAAA
0x410x05DNS:CNAME
0x410x1DDNS:LOC
0x410x0FDNS:MX
0x410x02DNS:NS
0x410x3DDNS:OpenPGP
0x410x10DNS:TXT
0x600x00Social Media
0x620x00Payment Address

DNS#

TypeType id. (decimal)Length (bytes)Description
A14Address record. A 32-bit IPv4 address
AAAA2816IPv6 address record. A 128-bit IPv6 address
CNAME5256Canonical name record
LOC29Location record Specifies a geographical location associated with a domain name
MX15Mail exchange record. Maps a domain name to a list of message transfer agents for that domain
NS2Name server record. Delegates a DNS zone to use the given authoritative name servers
OPENPGPKEY61OpenPGP public key record. A DNS-based Authentication of Named Entities (DANE) method for publishing and locating OpenPGP public keys in DNS for a specific email address using an OPENPGPKEY DNS resource record.
TXT16Generally TXT data records are deferred to other tags, and created dynamically on request.

Yat supports all official DNS record types. If a record type may fit into a different category class, (e.g. PGPKEY) then the DNS record will take precedence (and there should not be a duplicate tag in the other class). An exception is for TXT records, since TXT records could encode anything. Specifically, OpenAlias records can be derived dynamically from crypto addresses stored in classes 0x10 - 0x3f and vice versa.

All DNS record types with id 255 and under are in category class 0x41 and the category tag is the same as the DNS id. Record types with ids > 255 are in category class 0x42 and will have explicit mappings to a category tag.

Text records#

There is already a TXT DNS record type, but you might not want it returned with a DNS TXT query.

ClassTagType / SizeDescription
0x500x01255 bytesArbitrary UTF-8 string data
0x500x10255 bytesArbitrary UTF-8 string data (not returned in TXT requests)

Categories allowing for only one record per yat unless bypassed#

Some categories have restrictions to prevent multiple records from being created for a given yat and that category. If an additional record is submitted for insertion the old record will be replaced.

These categories include:

  • Cryptocurrency categories (class found between 0x10 - 0x3f)
  • Emoji description (0x0002)
  • Redirect (0x0004)
  • Emoji nickname (0x0005)
  • Emoji preferred form (0x0006)

To bypass this restriction include the parameter bypass_single_restrictions set to true when editing the yat record. When that parameter is present no replacement occurs across the edit action.

How your yats are stored#

You will see the term 'merkle root' in the API reference documentation.

A Merkle tree is a very useful data structure that allows us to combine lots of arbitrary data into a single tamper-evident checksum. It works by iteratively hashing pairs of data until a single hash representing the entire data set is obtained. As an example,

                                 +----------------+                                 |  21bcaf340912  |                                 +----------------+                 +---------------------^   ^--------------------+           +-----------+                                  +-----------+           | 5fc87a45  |                                  | 3acbd667a |           +-----------+                                  +-----------+        +-------^  ^--------+                       +---------^   ^-------+  +-----------+      +------------+          +-------------+       +-----------+  | 2bcf39acb |      | cfbb3e9a21 |          | 44adefbee43 |       | 8c3ba1290 |  +-----+-----+      +------+-----+          +------+------+       +-----+-----+        ^                   ^                       ^                    ^+-------+------+    +-------+-------+    +----------+---------  +--------+------+| Tari pubkey  |    | Monero address|    | World's best Haiku|  |Twitter handle |+--------------+    +---------------+    +-------------------+  +---------------+

When yats move onto the Tari blockchain, only the Merkle root will be stored in the blocks, though nodes will keep a copy of the underlying data as well so that they can calculate and verify the correctness of the Merkle root.