register_account

@mount("ft4.register_account") operation register_account()(source)

An operation which can be called to create an account. This operation is part of the account registration framework and it must be preceded by a strategy operation which contains information about how the account is supposed to be registered.

Throws if the operation that came just before this one cannot be handled. Common cases are:

  • the operation is not registered as a strategy operation through extensions of strategy

  • the operation has been misconfigured, and its name does not match the operation mount name

Throws if the signature verification is unsuccessful. Common cases are:

  • evm_signatures is misconfigured:

    • any of the signers and signatures don't match in the exact order they're found

    • any of the signatures is null

    • there's more signatures than signers

  • a signature from one of the auth descriptor participants is missing:

    • an EVM signer is specified but the signature is not found in evm_signatures

    • an FT signer is specified but the signature is not in the transaction

    • a signer passed is neither an EVM nor an FT signer (its length does not match either of core.auth.EVM_ADDRESS_SIZE and core.auth.FT_PUBKEY_SIZE)

Throws if either auth descriptor is invalid. Common cases include:

  • the main auth descriptor has expiration rules instead of core.accounts.GTV_NULL

  • the disposable auth descriptor's expiration rules:

    • is a complex rule with too many rule components

    • has already expired

    • is not the valid GTV representation of a rule

  • errors with the args field:

    • some required flags are missing

    • in multi-sig auth descriptors, the required_signatures field:

      • is 0 or less

      • is greater than the number of signers

Throws if core.accounts.AUTH_DESCRIPTORS_PER_ACCOUNT_UPPER_BOUND is set to 1 and disposable passed to the strategy operation is not null.

Throws if some conditions added in development through extensions (before_register_account or after_register_account) aren't met

See also

core.accounts.strategies.register_account

for information on how to use this operation