Skip to content

Remove NO_ISSUER Operation Results #497

Closed
@jonjove

Description

The following operation results indicate that an operation failed because the issuer of an asset does not exist: PAYMENT_NO_ISSUER, PATH_PAYMENT_STRICT_RECEIVE_NO_ISSUER, PATH_PAYMENT_STRICT_SEND_NO_ISSUER, MANAGE_SELL_OFFER_SELL_NO_ISSUER, MANAGE_SELL_OFFER_BUY_NO_ISSUER, MANAGE_BUY_OFFER_SELL_NO_ISSUER, MANAGE_BUY_OFFER_BUY_NO_ISSUER, and CHANGE_TRUST_NO_ISSUER. Each of the operations that can produce these results other than ChangeTrustOp does not otherwise depend on the existence of the issuer. As for ChangeTrustOp, the situation is more complicated because the result does actually depend on the state of the issuer account (specifically, the flags such as AUTH_REQUIRED). But any account is able to create the issuer account if it does not exist, even if they do not know the underlying private key. Therefore it is sensible to set the behavior of ChangeTrustOp to default to no flags if the account does not exist, since any account is able to force this behavior anyway. Analogously, any account can avoid this result in the other operations by first creating the issuer account.

Given the above, I propose to remove all NO_ISSUER results. This is related to the development of CAP-0023 (Two-Part Payments) because otherwise we may want to return NO_ISSUER results there as well.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions