XLS-90d Permissioned Domain for Multi-Purpose Token; Updates XLS-33 #267
Closed
Tapanito
started this conversation in
Standard Proposals
Replies: 2 comments 4 replies
-
Can you cover the proposed/intended semantics in plain language (i.e. not worrying about the details of the transaction/ledger entry fields)?
|
Beta Was this translation helpful? Give feedback.
4 replies
-
I think the specification is in a good place, I have opened a PR: #273 let's move further discussion there. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Multi-Purpose Token DomainID
Abstract
The issuer of a Multi-Purpose Token may require explicit authorization for individuals to hold the token. This is done through the issuer submitting an
MPTokenAuthorize
transaction, which authorizes each account individually.The XLS-80 specification introduces a new mechanism for broader authorization. The Permissioned Domain specifies a list of accepted
(Issuer, Type)
credential pairs within the domain. Any holder of valid credentials can interact with the protocols in this Permissioned Domain.This specification adds
PermissionedDomain
support to the Multi-Purpose Token. By allowing the issuer to set aDomainID
, we provide a more unified and efficient mechanism for controlling who may hold or receive the asset.1. Introduction
2. Ledger Entries
2.1.
MPTokenIssuance
Ledger EntryThis section outlines the changes made to the
MPTokenIssuance
object. In summary, the XLS adds a newDomainID
field to theMPTokenIssuance
object. TheDomainID
is used to track whichPermissionedDomain
theMPT
uses to controll access rules.2.1.1. Fields
DomainID
New
Yes
string
HASH256
PermissionedDomain
object ID associated with theMPTokenIssuance
.2.1.1.1. DomainID
An optional identifier for the
PermissionedDomain
object linked to theMPTokenIssuance
. IfDomainID
is specified, the account must possess credentials approved by thePermissionedDomain
to hold theMPT
.2.2.
MPToken
Ledger EntryThis section outlines the changes made to the
MPToken
object. In summary, the XLS adds a newFlags
value,lsfMPTDomainCheck
. ThelsfMPTDomainCheck
flag indicates that the credentials of the MPT holder must be verified. This flag is set automatically when theMPToken
object is created and the associatedMPTokenIssuance
object has theDomainID
set.2.2.1. Fields
Flags
Update
Yes
number
UINT16
MPTokenIssuance
object.2.2.1.1. Flags
The
Vault
object supports the following flags:lsfMPTDomainCheck
New
0x0004
No
PermissionedDomain
of theMPTokenIssuance
. This flag is set automatically when the associatedMPTokenIssuance
object has aDomainID
set.3. Transactions
3.1.
MPTokenIssuance
Transactions3.1.1.
MPTokenIssuaceCreate
TransactionThis section outlines changes made to the
MPTokenIssuanceCreate
transaction. The specification adds a newDomainID
field to the transaction. If theDomainID
is specified when creating a newMPTokenIssuance
it can be later changed by submitting aMPTokenIssuanceSet
transaction. If theDomainID
was not set when creating theMPTokenIssuance
it cannot be assigned later. See 3.1.2. for additional details.3.1.1.1. Fields
DomainID
New
No
string
HASH256
PermissionedDomain
object.3.1.1.2. Failure Conditions
PermissionedDomain(DomainID)
object does not exist on the ledger.3.1.1.3. State Changes
3.1.1.4. Example
3.1.2.
MPTokenIssuanceSet
TransactionThis section describes the modifications made to the
MPTokenIssuanceSet
transaction. A newDomainID
field has been added to the transaction specification. TheDomainID
can only be changed if theMPTokenIssuance
object was initially created with aDomainID
. Additionally, allMPToken
objects linked to anMPTokenIssuance
with a PermissionedDomain must have thelsfMPTDomainCheck
flag enabled. However, there is currently no method to identify allMPToken
objects associated with a specificMPTokenIssuance
. Retroactively assigning aDomainID
would necessitate updating thelsfMPTDomainCheck
for all relatedMPToken
objects. Since these objects cannot be retrieved, this process could lead to inconsistencies.3.1.2.1. Fields
DomainID
New
No
string
HASH256
PermissionedDomain
object.3.1.2.2. Failure Conditions
PermissionedDomain(DomainID)
object does not exist on the ledger.MPTokenIssuance.DomainID
field is not set (a Domain cannot be added to a to a Multi-Purpose Token was not created with a PermissionedDomain).3.1.2.3. State Changes
MPTokenIssuance.DomainID
field.3.1.1.4. Example
3.2.
MPToken
Transactions3.2.1.
MPTokenAuthorize
Transaction3.2.1.1. Fields
This change does not introduce additional fields.
3.2.1.2. Failure Conditions
This change does not introduce additional failure conditions.
3.2.1.3. State Changes
MPTokenIssuance(MPTokenIssuanceID).DomainID
field is set:lsftMPTDomainCheck
flag to the newly createdMPToken
object.3.3. Other Transactions
3.3.1.
Payment
TransactionThe following changes have been made to the Payment transaction. When transferring Multi-Purpose Tokens (MPTs) that belong to a PermissionedDomain, both the sender and the receiver must either have credentials accepted in the Domain or receive explicit authorization from the
Issuer
, as indicated by theMPToken.lsfMPTAuthorized
flag. However, Payment transactions involving theIssuer
of the Multi-Purpose Token are exempt from this requirement.3.3.1.1. Fields
This change does not introduce additional fields.
3.3.1.2. Failure Conditions
Payment.Amount
is anMPT
andMPTokenIssuance(Amount.MPTIssuanceID).DomainID
is set:PermissionedDomain(MPTokenIssuance(Amount.MPTIssuanceID).DomainID)
object does not exist (the PermissionedDomain was deleted).Payment.Account
account does not have Credentials accepted by thePermissionedDomain
and:MPToken
object of thePayment.Account
account does not have thelsfMPTAuthorized
flag set.Payment.Destination
account does not have Credentials accepted by thePermissionedDomain
and:MPToken
object of thePayment.Destination
account does not have thelsfMPTAuthorized
flag set.3.3.1.3. State Changes
This change does not introduce additional state changes.
Appendix
A-1 F.A.Q
A-1.1. Why does
MPTokenIssuance
usePermissionedDomain
?PermissionedDomain
provides a less granular authorization mechanism to hold theMPT
. Any account can hold theMPT
as long as it has credentials issued by an Issuer accepted in thePermissionedDomain
; in case the credentials expire or are revoked by the Credential Issuer, the holder can only transfer them back to theMPT
Issuer and may not receiveMPTs
.A-1.2. What happens when
MPTokenIssuace
usesPermissionedDomain
and explicit authorization to hold an asset in theMPToken
object?Authorization is treated as a union. I.e. as long as the account has permission (either via
PermissionedDomain
of explicit authorization captured by theMPToken.lsfMPTAuthorized
flag), it will be able to send and receive theMPT
.Beta Was this translation helpful? Give feedback.
All reactions