Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add drawbacks section to BIP #202

Merged
merged 1 commit into from
Apr 12, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion bip.mediawiki
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Ordinals are created and assigned with the following algorithm:
<pre>
# subsidy of block at given height
def subsidy(height):
return 50 * 100_000_000 >> int(height / 210_000)
return 50 * 100_000_000 >> height // 210_000

# first ordinal of subsidy of block at given height
def first_ordinal(height):
Expand Down Expand Up @@ -171,6 +171,28 @@ Since any ordinal can be sent to any address at any time, ordinals that are tran

Ordinal numbers are fully backwards compatible and require no changes to the bitcoin network.

=== Drawbacks ===

==== Large Index Size ====

Indexes supporting fast queries related to ordinals are slow to build and consume large amounts of space.

An O(1) index that maps UTXOs to the ordinals that they contain is currently 100GiB. The same index including spent outputs is 10TiB.

An O(1) index supporting the opposite mapping, that of individual ordinals to the UTXO that contains them, has proven to be challenging to implement without optimization.

==== Large Location Proofs ====

A proof can be constructed that demonstrates that a particular ordinal is contained in a particular output, however the proofs are large. Such a proof consists of:

- Block headers
- A merkle path to the coinbase transaction that created the ordinal
- The coinbase transaction that created the ordinal
- And for every spend of that ordinal:
- The spend transaction
- The transactions that created the inputs before the input that was spent, to determine the values of the preceding inputs, to determine the position of the ordinal
- And, if the ordinal was used as fees, all prior transaction in the block in which it was spent, and the coinbase transaction, to determine the location of the ordinal in the outputs.

=== Compatibility with Existing and Envisaged Applications ===

Ordinals are compatible with many current and planned applications.
Expand Down