# DRC721 Details

#### 当前索引系统在狗狗链应用的问题

* 粉尘

目前大量的粉尘被制造且如果按照当前的索引机制是无法被解决的，因为有价值的是粉尘。当你的设计的目标就是制造大量粉尘时无论如何都无法改变破坏原生链的事实。由于狗狗币的便宜特性，某些利用全节点上链的地址拥有数十万粉尘 utxo 都是很正常的情况（真实数据），假设后期基于此类索引系统提出swap等其他高频交互的协议，狗狗链基本上会随着某个 tick 的价值的提高而被迫于2023年3月份的区块高度开始分叉或者消失。由于狗狗链的特殊性（即便是fork btc），缺少taproot等基础协议，会有很多不同的问题，忽略这些问题，是不利于生态持续性发展的。

* 存储压力

btc 每10分钟出块，并且总量固定，这意味着存储铭文的空间是可预估的，且理论上最小单元的BTC序号也有一定的原生价值。而狗狗币每分钟出块，总量无限，这意味着基于狗狗币的当前索引系统每天都要面对不断增长的存储空间压力。

* 交叉验证的难度

当前的索引方式都是基于双层中心化索引，以drc20为例，用户某个tick的余额取决于某两层中心化的应用服务，首先用户的铭文要被铭文系统检索，其次用户基于drc20的余额要被余额索引系统检索。假使用户质疑其正确性，则需要同时向两家中心化服务商索要证明，这本身是不可验证和极容易扯皮的。即便双方都公布了代码，但是验证难度也大大增加。

本质上drc20这类应用是线性账本统计，当用户mint之后，产生的数据在被统计后本身不具备任何意义，而数据本身存在于区块内的交易数据中，寄生于铭文系统事实上有点多余，只需要满足某统计规则按照线性出块的交易数据统计即可完成这类应用。

<figure><img src="/files/QCxpghFs84DsZAM5PTBs" alt=""><figcaption><p>两层索引问题</p></figcaption></figure>

* 其他问题
  * 转账易错性和复杂性
  * 索引因双层索引导致的漏洞而招致双花攻击等（非区块链问题）。
  * 索引经常出现铭文被忽略的BUG

#### Drc721 提出的细节及对 doginal索引方式的改进 (doginal+)

如上几个问题描述，drc721协议改进了索引方式

* 基于线性链上数据而不是第二层UTXO索引（设计的目标是将链上数据价值化而不是粉尘价值化）
  * 基于P2SH线性写入协议数据，并存储于区块的数据中，不可被更改，不可被忽略。
  * drc721 数据存储是依赖区块链数据线性存储能力，用户只要发生交易并利用P2SH写入协议数据，索引商就可以按照协议线性检索。

    drc721不再需要依赖多层中心化铭文索引商的数据提供；任何人都可以简单的通过链上部署单层索引以线性方式检索协议数据，被交叉验证的能力大大增强，中心化的风险降低。
  * 数据的拥有有权由当前写入数据的地址拥有。

<figure><img src="/files/pN4YsLtYrHRKk21Gzg4u" alt=""><figcaption><p>write data process</p></figcaption></figure>

粉尘问题得到解决，因为有价值的不再是被寄生的（0.0001）UTXO，而是被P2SH写入的数据。产生多少UTXO都是可以被接受的，并且索引系统可以主动过滤恶意写入的粉尘。

* 不会有被浪费的UTXO，钱包不再需要为粉尘UTXO单独设计模块来管理，即便有少量未确认的UTXO也可用来写入数据。
* 此索引方式应用于DRC721本意也是为了搭建更好的生态地基，drc20可以选择升级索引系统或者不升级。
* 可持续和易被验证

  任何人部署单层索引，按照链上区块数据线性检索，即能判断账本数据的正确性，提高了被验证的能力。
* 可扩展性

  此索引方式，数据存储等将不再是问题，因为只需要存储账本数据，数据本身由区块链存储，基于此开发以太坊上类似的协议或者应用都是可行的不再有粉尘等破坏原生链的困扰，随之而来的扩容和速度等压力也可能推进原生狗狗链的改变。

#### Roadmap

概述由于drc721不再有粉尘的阻力和高效的单层索引方式，将有利于搭建完整的生态，例如可以以这种索引方式发行存储背书的稳定sDoge、链上nft swap协议、defi等。

* 搭建可视化基础设施，目前后端数据已经准备完成
* 市场以及链上SWAP


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ooo-9.gitbook.io/drc721/drc721-details.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
