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

SIP-011 The buy-in-ustx Standard for non-custodial Marketplace traits #119

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

314159265359879
Copy link
Contributor

SIP-011 The buy-in-ustx Standard for non-custodial Marketplace traits

As discussed in #92 (comment) here is the draft for the buy-in-ustx Marketplace standard which is already widely used within the Stacks ecosystem.

Copy link
Contributor

@rafaelcr rafaelcr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking very good @314159265359879 . Here's an initial pass, focusing mostly on SIP document style

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Style nit: can you format this file so it doesn't exceed 100 characters per line?

License: CC0-1.0

Sign-off: Brice Dobry <[email protected]>, Technical Consideration Advisory Boards (CAB) Chair
Sign-off: Jude Nelson <[email protected]>, Technical Steering Committee Chair
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add Layer: Traits


Type: Standard

Status: draft
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Status: draft
Status: Draft


This standard aims to formalize a the commonly used traits to offer fungible or non-fungible tokens for sale, at a certain price in STX, from a non-custodial wallet.

# License and Copyright
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# License and Copyright
# Copyright


The `marketplace trait` can be implemented as part of the asset contract (usually not recommended) or as an independent contract.

The marketplace functions have been used since the first Megapont contract was deployed to mainnet in October 2022 and have since become the pseudo standard for non-custodial listing of assets on the Stacks Blockchain. Having this ratified as an official standard can help further adoption of the standard. [(1)](https://) [(2)](https://github.com/stacksgov/sips/issues/92#issuecomment-1360144565). A more generalized trait is also recommended to replace this one in the future. A standard that will be compatible with SIP013 tokens too. And one that will allow buying with SIP013 or SIP010 tokens aswell as STX.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link (1) is broken


# Backwards Compatibility

Not applicable
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you mention why? Perhaps you already touched a bit on this on earlier sections but you could describe how NFT contracts that don't conform to this new trait could continue to be traded or how they would interact with contracts that do implement the trait


# Activation

This SIP is considered activated after no objections within the community before Bitcoin tip #800,000. There are already over 20 contracts deployed to mainnet that have implemented this standard. The aim with this document is to formalize it through this SIP.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should provide a set number of minimum contracts that have to implement the trait for activation. Could be that the number is already met, but I think having an objective threshold is a good idea.

Instead of unified trait to allow the use of SIP010, SIP009 and SIP013 tokens for purchase have two traits one for SIP009 and SIP010 and the other for SIP013. This would eleviate the need for a uint that is ignored when using SIP009 and SIP010 but is required for using SIP013 tokens as one would have to define both a token identifier and an amount.


# Reference Implementations list-in-ustx
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
# Reference Implementations list-in-ustx
# Reference Implementations


## Source code

# Sources
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove H1 here as well

Comment on lines +197 to +198
# Alternative for consideration
Instead of unified trait to allow the use of SIP010, SIP009 and SIP013 tokens for purchase have two traits one for SIP009 and SIP010 and the other for SIP013. This would eleviate the need for a uint that is ignored when using SIP009 and SIP010 but is required for using SIP013 tokens as one would have to define both a token identifier and an amount.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This paragraph should go in the Related Work section

@dantrevino
Copy link

(list-in-ustx (uint uint <commission-trait>) (response bool uint))

It seems unnatural for me to require a commission trait for a non-custodial market function. Commission trait should be optional. As a holder of an NFT with these functions, I can list or unlist without requiring a marketplace. As an NFT buyer, I should be able to buy without requiring a marketplace. Ie. I can choose to list via some marketplace, and they may add a commission. But I can also just list my NFT for sale on my own, and choose to sell directly to another person.

Also, IMHO, at the risk of devolving into a semantic discussion, I feel like the term "global marketplace" is incorrect. In reality, the listing spec doesn't even require creating an event, so all we're doing here is setting state for an individual nft to make it available for purchase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants