-
Notifications
You must be signed in to change notification settings - Fork 31
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
What token interface should we use? #51
Comments
Strong opinion: Let's not consider compliance with Solv for making this decision. If it'll work on OpenSea that's great. Questions:
|
Below my view on some of the points above. Additionaly, I want to underline the difference between the hypercerts interface (close to an EIP) where we describe required methods and effects and the hypercert implementation we're currently developing. Because we want to be able to meet specific needs and operate cross chain there's will not be a single hypercert contract but hypercert compliant contracts. The weight is on the SDK, example app and other tooling to work with metadata and other state changes. My biggest arguments in favor of SFT instead of FTs is the experience of NFTs and the ecosystem and understanding around it. Marketplaces, perception (owning a NFT), uniqueness (owning 1/2 feels better than 9_000_00 of 18_000_000). I understand these are subjective. Marketplace UXThe way these tokens look will be different on OpenSea. For the semi-fungible case, we can create a unique image for each fractional share of a hypercert, because it's a unique NFT. For the fungible case, we can create an image for the hypercert, but a user's share will be represented by a "x 100" chip in the top left corner of the image if the We assume to build a SDK that manages the state of the data stored on IPFS and to keep the token URI up to date. This would also include the image generated. So the URI for the tokenID points to a CID referencing the full metadata set. Does the x100 chip suffice?Since the amount of units minted is arbitrary, x100 does not mean anything. This could require the user to do some mental math to understand how much of the impact they are funding. For example the x100 is almost insignificant if 1 * 10^18 units were minted. Therefore you could argue that you want the image to represent the percentage represented by a fractional token. Can we store custom SVGs per fraction?Yes. This would also enable us to represent whether a fraction has been donated and the proportion of the claim it represents. But, a malicious or misinformed actor could upload an incorrect image and the marketplace would not surface this information. For example, I upload an image claiming "99%" owned, while it's "9.9%". Can we generate dynamic SVGs on-chain?An option to do this dynamically, would be to render the metadata on-chain, including the SVG, but with the actual claim data, the CID reference, stored behind an "external_url" field as URL. For an example see the OpenSea doc.. Also, Uniswap V3 positions are a very good example of -the power of- dynamic SVGs. However, this could become messy because if, for example, an IPFS gateway is down the external data becomes unaccessible. Taking inspiration from Grants Protocol, we can also create a metadata pointer describing protocol + identifier. When a user or marketplace want to read the metadata, we query a gateway endpoint for the protocol and attach the identifier. Migrating gateways would only require a single point to be updated. Rendering the up to data URL would all happen on-chain. For example:
ERC20A few reasons against ERC20, especially considering ERC1155:
Split/mergeWhat happens when we split/merge on claim data?See this ticket for more details on the -currently- proposed solution. Basically, if a fraction get's split in 2 on impact (or other scopes) it creates 2 new claims, each representing a subset of the original token and both referencing the original token. What happens when we split/merge on value?For the fungible case, we are adjusting token balances. For the semi-fungible case, we'll have to create new NFTs. This is true for the 1155 implementation. It does feel like there could be messy UX on marketplaces. In the case of SFTs, one can use an app to split 50% into 30% and 20% and use either the same app or OpenSea to auction 20%. Again, especially if it's represented in the image that can be powerful. In the 3525 case it would be an adjustment of the units only (I assumed that is the No, if you merge the full value the empty tokens are burned. Otherwise you'd transfer value, not merge tokens. If you split a token, new tokens are minted and value is transfered from the original to the new one. |
Holke has a point that we might want to dynamically update the SVG depending on evaluations as well (e.g.a golden frame if there's a good evaluation from XYZ) |
In that case you’d want dynamic SVGs right? Maybe even need them. |
yes I think you're right. Thank you for sharing your thoughts, seeing them in written form definitely helped make it more clear for me. Long-term, I think there's a fundamental trade-off between focusing on user utility of an NFT (case for SFT) and supporting more efficient transfers for financial instruments (case for FT). @bitbeckers, we also talked about expanding our 1155 implementation in the future to potentially support fungible tokens if we need to in the future, which is a nice option. We also talked about just writing a Hypercerts interface and implementation, which we can also turn into an EIP in the future. For now, we can create a 1155 (or 3525) wrapper around it to make it compliant for OpenSea. Anyway, long way of saying, I think we're in alignment, thanks everyone for sharing your thoughts. It's an important decision so glad we at the very least documented our current thinking |
I am late to the party here but I agree with what seems to be the current conclusion— semi-fungible with 1155 seems to me like the best tradeoff. |
Closing this for now, happy to re-open if we need to revisit |
For reference, there's a section in the EIP-1155 spec for implementing "split IDs" like we do for semi-fungible tokens |
What we already agree upon:
What are the options?
units
that represent how large of a share this represents)Considerations:
For reference:
The text was updated successfully, but these errors were encountered: