-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Collections and Provenance #783
Comments
this sounds awesome |
i'm a bit confused by this line
let me see if i get this right: Now say I want to mint the first Astral Babe, the transaction will look like this
Outputs:
Now Astral Babe 1 lives at the first satoshi of Outpoint-C As I understand, this is a breaking change, because with existing rules, the above transaction would inscribe Astral Babe 1 onto the first sat of Outpoint-B I'm not sure I like this because it's a breaking change I will think of something to propose instead |
This is non-breaking. We'll add a field, The |
awesome |
i wonder if there's a way we can retroactively add items to a collection just thinking of ways i can launch my items asap and retroactively add them to a collection |
Retroactive collections seem doable. |
This comment was marked as off-topic.
This comment was marked as off-topic.
A distinction between creator's prime ordinal and collector's prime ordinal would be chronological: the first prime ordinal inscription would be the creator's; the latest, the latest collector's. |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
Could you open a discussion or something for this? It's totally reasonable to discuss, but I don't want people to think it's recommended/supported/under consideration as the official way of doing this. Just hid the comments, just want to keep this issue focused on the planned implementation for ord. |
if |
Continuing work in #1963 |
I am trying to understand the improved security of this approach. My use case is to publish a document and mint a collection of child inscriptions that all reference this document. Can someone describe the benefits of this provenance parent/child feature versus just referencing the parent inscription in the child inscriptions. Thanks |
To reference a parent inscription in a child inscription there needs to be a standardized way of validating the relationship, otherwise anyone could make child inscriptions for any parent inscription. This can be achieved in various ways, but the direction of https://github.com/casey/ord/pull/1963 is to try to do it by moving the parent inscription around as child inscriptions are created. As others have pointed out in this issue, that will result in a larger transaction size and higher transaction fees than inherently required. It also still has a relationship validation problem, as @casey described in issue https://github.com/casey/ord/issues/884 and others have raised concern about in this issue. With the current proposal, anyone would be able to make child inscriptions for any inscription they happen to own, even inscriptions transferred prior to the introduction of the feature. That would obviously be very undesirable for many artists and use cases, so hopefully it will be managed in some way before the feature is released. Perhaps a project collaborator can comment on it to provide some clarification. |
I think this approach is problematic for collections over a handful in size. The current state of the art is to inscribe a collection in parallel. Requiring a “collection parent” sat to be shuffled into the reveal tx of each item in the collection greatly limits your options for inscribing a collection: you can either do them all sequentially or if you’re very clever with CPFPing the parent around, you might be able to have small batches of 25 in the mempool at a time. The latter approach hasnt been developed (afaik) and may carry some risks and will come with high fees to keep all of those linked transactions in the same block — because you have to cpfp the parent ordinal around, all the the reveal transactions are going to be linked together onchain and move around the mempool as a batch with all of their transaction fees averaged together. I know people are excited for something to let them do collections in a standardized way, but I dont think everyone understands the current proposal and the implications it will have on the ability to actually inscribe collections. The inscription envelope has room for headers. I think a more scalable approach would be something like an ord header that references a “parent” inscription and contains a signature (bip322 or otherwise) that proves possession of the parent inscription at the time the child was inscribed. That kind of approach fits better with the current economic and operational needs of artifacers working today. |
I agree with @rot13maxi. We're looking to inscribe 10k generative collections using better collection standards and provenance information, but requiring a parent inscription in this fashion is unworkable for us. I would definitely prefer some kind of bip322 parent inscription owner signature standard. |
I understand the time limitations of 10k collections. But there is something magical when a child inscription has its parent ordinal in its creation (reveal) transaction. The way I see it, child/parent inscriptions have a higher barrier. But rightfully so because they are more luxurious. The higher cost, and the need to craft proper cpfp batches. Would drive the market to create quality. Understanding the market currently wants a standard for 10k pfp eth style collections. (A 10k eth pfp collection can still be done, it would just take more time and more fees. I would argue rightfully so) |
When I wrote my earlier comment I mentioned the 25-transaction package limit. I had completely forgotten that there is also a policy limit of 101KvB on the whole package. that means that if you wanted to inscribe 25 inscriptions in a batch that had a common parent (that are all part of the same collection), then each one would be limited to less than 4kb. Those are really small. According to one study the average image inscription is 21kb. If you take that as the norm (I would have guessed 50kb), then you can do at most 4 inscriptions per batch to have them be part of a collection. For a medium-sized collection of 1000 inscriptions, that means you'd have to do 250 batches. And you can't put a new batch in the mempool until the old batch is actually confirmed. So you need to submit a batch to the mempool, and get it to confirm, then submit the next batch, and do that 250 times for a 1000 image collection. For larger images (or video or audio or large SVGs or javascript) it will be more batches For a 10k collection (which I would consider to be VERY large), it would take 2500 batches. Even a 100 item collection is still going to take 25 blocks (with package broadcast after each confirmation) to make this work. I think we can accomplish all of the things we want to do WRT collections (verifiable onchain (i.e. not in an external DB or with a pointer to an off-chain manifest), allows for provenance and attribution, allows for open/closed sets, etc) with ord envelope metadata without running into relay policy limits that exclude common (and reasonable) usecases. |
Alternative ideas that could be formalized a little more and help with the scalability issue (borrowing some ideas from the Taproot Wizards project):
|
I agree with @satoshi0770 about the glorious opulence of the prime ordinal technique. I'd like to throw an additional idea out there that could address the scaling issues @rot13maxi raises. An inscription's reveal transaction may include additional outputs. The first sat in each output may be used to inscribe a child. Using this technique an inscription would be made with a pre-determined number of potential children. Outputs 0: 10,000 sats - collection anchor Advantages to this system are that the number of potential children are known up front and it scales very well. One could immediately send all children to the mempool after confirmation of the parent. Downside is that the index would probably have to track the potential child satpoints. |
Sorry for the delay in getting this feature done! Collections is also complicated, and will require careful review and revision. I'm personally optimistic about the state of the design of collections and its implementation. However, it would not be personally acceptable to me to release a feature that was buggy, half-baked, or insecure. As they say: Collections will be done when it's ready, and not a moment sooner. Enjoy the current features of ord! Development continues :) |
Why: - Some generative art collections have inscribed all art within a single parent inscription to save considerable storage space on the blockchain. - The ord explorer is unable to currently support collections inscribed in this manner. This commit adds this support. What: - In order to support these generative art collections, we need to be able to inscribe the metadata for children in an agreed upon JSON spec. - These child inscriptions are JSON documents containing url parameters that instruct the parent inscription to render a specific item in the collection. How: - Since all art is contained in the parent, we added a simple redirect to render the parent inscription with included url parameters. - There are 3 constraints which must be in the child inscription before the redirect can happen: 1. The child inscription must have a parent inscription. 2. The child inscription's body data must be valid JSON. 3. The child inscription's body JSON data must contain a field named "is_ord_pointer", with any value. Proposed JSON standard: ``` { "is_pointer": 1, "url_params": ["tokenID=4969"], } ``` Related Issue: - https://github.com/casey/ord/issues/783 Co-authored-by: Clarke Plumo <clarke.plumo@gmail.com>
Here is the proposal for the collection protocol. I wasn't aware of the discussion here, so we have found another solution to this problem with my team: https://brc721.com |
I think that we're over complicating provenance in a number of ways. Provenance was possible with the first release of ord which supported mainnet: A single UTXO funds many UTXOs which immediately become inscriptions. For many collections, if you look at the second ancestor of the genesis transaction, you will find one transaction which creates many ouptuts (because this was the simplest and most direct way to set up the funding for each individual inscription). This transaction represents a strong (although slightly imperfect) record of provenance. If this transaction were to create many UTXOs which went to the same address, it would be a perfect record of provenance. If the initial funding UTXO contained an inscription (perhaps by mandate located at sat Index 0), then it would be very clear that this was the "parent" inscription. There would be no changes necessary to ord to accomplish this, and there would be many collections who would be adopted by default into the provenance standard if this were adopted. |
I like this approach of having common ancestor ScriptPubKeys (some links to examples provided in this comment: https://github.com/casey/ord/issues/783#issuecomment-1492070385) I think most of the work would be on indexing to add links between related items. On the inscribing side, it can either be handled with external tooling, or if we wanted to have |
@p0stcapone In general I like the approach of having a common ancestor define a collection, but would adjust slightly to make fewer assumptions about how collections are inscribed and funded. A few things I would clarify:
My $.02 |
Next step is implementing #2045 |
I opened a draft PR with a spec. Comments welcome! Please note that this spec does not include:
Which makes provenance more useful. These can be specced and implemented separately, so they aren't included in the initial spec. |
This is finally done! |
See this comment for an update: https://github.com/casey/ord/issues/783#issuecomment-1495169403
Provenance is important for art, and a large part of how it derives its value. We should have some notion of the provenance of an inscription:
/ARTIST_SYMBOL/NUMBER
This will likely be accomplished as follows:
It should be possible to make a series of related inscriptions:
/COLLECTION_SYMBOL/NUMBER
or/COLLECTION_SYMBOL/NAME
.Design sketch:
The text was updated successfully, but these errors were encountered: