You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Right now, our asset ID construction allows for contracts to mint assets with specific sub IDs. This is very useful for enabling rich multiple native assets. One sticking point with the UTXO model is that enabling blacklisting is nearly impossible for native assets. Many popular stable coins such as Tether and USDC require this feature to ensure that can take appropriate steps to blacklist bad actors from their system. While Fuel should encourage permissionless token design philosophically, not having reasonable facility for blacklisting on minted assets would be a net negative for the protocol. In this proposal, I suggest we consider changing the sub ID we currently have to a predicate ID root, in which, any actor can override existing predicates with this particular logic. This would enable system wide black listing, while retaining parallelism and minimally altering our existing asset system.
Current Asset ID
sha256(CONTRACT_ID ++ SUB_IDENTIFIER)
Proposed Asset ID
sha256(CONTRACT_ID ++ PREDICATE_IDENTIFIER)
Proposed Predicate Validation Logic
The asset predicate takes priority over the "owner" predicate and allow overriding. So the predicate logic would have to be able to both check if the asset based predicate is presented first, then if not, would check the owner predicate. This only introduces an additional check in the logic itself.
Minimal Changes
All existing behavior of multiple native assets can be retained, as token developers can still mint assets with a random predicate identifier or one that is clearly definable by the developer (e.g. "no_predicate").
Use-Cases
Global blacklisting of assets (no-matter who or where they are held)
Meta-transactional services, whereby additional actions can be triggered by third parties (but still retain the original owner)
UX Hurdles
Users would have to be made aware of these additional predicate conditions on their assets, but this can be done easily off-chain.
Abstract
Right now, our asset ID construction allows for contracts to mint assets with specific sub IDs. This is very useful for enabling rich multiple native assets. One sticking point with the UTXO model is that enabling blacklisting is nearly impossible for native assets. Many popular stable coins such as Tether and USDC require this feature to ensure that can take appropriate steps to blacklist bad actors from their system. While Fuel should encourage permissionless token design philosophically, not having reasonable facility for blacklisting on minted assets would be a net negative for the protocol. In this proposal, I suggest we consider changing the sub ID we currently have to a predicate ID root, in which, any actor can override existing predicates with this particular logic. This would enable system wide black listing, while retaining parallelism and minimally altering our existing asset system.
Current Asset ID
Proposed Asset ID
Proposed Predicate Validation Logic
The asset predicate takes priority over the "owner" predicate and allow overriding. So the predicate logic would have to be able to both check if the asset based predicate is presented first, then if not, would check the owner predicate. This only introduces an additional check in the logic itself.
Minimal Changes
All existing behavior of multiple native assets can be retained, as token developers can still mint assets with a random predicate identifier or one that is clearly definable by the developer (e.g. "no_predicate").
Use-Cases
UX Hurdles
Users would have to be made aware of these additional predicate conditions on their assets, but this can be done easily off-chain.
最初由 @SilentCicero 在 FuelLabs/fuel-specs#537 发布
The text was updated successfully, but these errors were encountered: