Assessment reports>Awaken Swap>Threat Model>Module: TokenContract_Actions.cs

Module: TokenContract_Actions.cs

Function: Empty Create(CreateInput input)

Creates a new token symbol. Should only be callable by a minter in the MinterMap.

Inputs

  • input.Symbol

    • Validation: Must be nonempty and not an existing symbol.

    • Impact: Token symbol to create.

  • input.TokenName

    • Validation: Must be nonempty.

    • Impact: Name of token to create.

  • input.TotalSupply

    • Validation: Must be positive.

    • Impact: Total supply of the new token.

  • input.Decimals

    • Validation: None.

    • Impact: Decimals of the new token.

  • input.Issuer

    • Validation: None, except it is reset to sender if it is null.

    • Impact: Issuer of the token — can call Issue on it.

  • input.IsBurnable

    • Validation: None.

    • Impact: Whether the token can be burned.

  • input.ExternalInfo

    • Validation: None.

    • Impact: Mapping of arbitrary key values for external extensions.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function makes no external state-mutating calls.

Function: Empty Issue(IssueInput input)

Mints new tokens. Can only be called by the issuer of the specific symbol.

Inputs

  • input.Symbol

    • Validation: Must be an existing symbol.

    • Impact: Token symbol to mint.

  • input.Amount

    • Validation: Must be positive and not cause the total supply to be exceeded.

    • Impact: Amount of token to mint.

  • input.Memo

    • Validation: None.

    • Impact: Note to be passed to emitted event.

  • input.To

    • Validation: Not null.

    • Impact: Recipient of the new tokens.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function makes no external state-mutating calls.

Function: Empty Transfer(TransferInput input)

Transfers tokens from the sender to a specified recipient.

Inputs

  • input.To

    • Validation: Not null and not the sender.

    • Impact: Recipient of the tokens.

  • input.Symbol

    • Validation: Must be an existing symbol.

    • Impact: Token symbol to transfer.

  • input.Amount

    • Validation: Must not exceed sender's token balance.

    • Impact: Amount of token to transfer.

  • input.Memo

    • Validation: None.

    • Impact: Note to be passed to emitted event.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function may make an arbitrary external call through ExternalInfo.

Function: Empty TransferFrom(TransferFromInput input)

Transfers tokens from a sender that has allowed the caller to spend their tokens to a specified recipient.

Inputs

  • input.From

    • Validation: Not null.

    • Impact: Sender of the tokens.

  • input.To

    • Validation: Not null and not the sender.

    • Impact: Recipient of the tokens.

  • input.Symbol

    • Validation: Must be an existing symbol.

    • Impact: Token symbol to transfer.

  • input.Amount

    • Validation: Must not exceed sender's token balance or the spender's allowance from the sender.

    • Impact: Amount of token to transfer.

  • input.Memo

    • Validation: None.

    • Impact: Note to be passed to emitted event.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function may make an arbitrary external call through ExternalInfo.

Function: Empty Approve(ApproveInput input)

Increases the allowance for a given spender to spend the sender's tokens.

Inputs

  • input.Spender

    • Validation: Not null.

    • Impact: Spender of the tokens.

  • input.Symbol

    • Validation: Must be an existing symbol.

    • Impact: Token symbol to change the allowance on.

  • input.Amount

    • Validation: Must be nonnegative.

    • Impact: Amount of allowance to add.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function makes no external state-mutating calls.

Function: Empty UnApprove(UnApproveInput input)

Decreases the allowance for a given spender to spend the sender's tokens.

Inputs

  • input.Spender

    • Validation: Not null.

    • Impact: Spender of the tokens.

  • input.Symbol

    • Validation: Must be an existing symbol.

    • Impact: Token symbol to change the allowance on.

  • input.Amount

    • Validation: Must be nonnegative.

    • Impact: Amount of allowance to remove.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function makes no external state-mutating calls.

Function: Empty Burn(BurnInput input)

Burns tokens owned by the sender, decreasing the supply.

Inputs

  • input.Symbol

    • Validation: Must be an existing burnable symbol.

    • Impact: Token symbol to burn.

  • input.Amount

    • Validation: Must be nonnegative. Sender must have that amount of tokens.

    • Impact: Amount of token to burn.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function makes no external state-mutating calls.

Function: Empty ResetExternalInfo(ResetExternalInfoInput input)

Changes the ExternalInfo associated with a symbol. Only callable by the issuer of the symbol.

Inputs

  • input.Symbol

    • Validation: Must be an existing symbol whose issuer is the sender.

    • Impact: Token symbol to modify.

  • input.ExternalInfo

    • Validation: None.

    • Impact: Mapping of arbitrary key values for external extensions.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function makes no external state-mutating calls.

Function: Empty AddMinter(Address input)

Adds an address to the MinterMap to allow them to create tokens. Only callable by the owner.

Inputs

  • input

    • Validation: None.

    • Impact: Address to add.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function makes no external state-mutating calls.

Function: Empty RemoveMinter(Address input)

Removes an address from the MinterMap. Only callable by the owner.

Inputs

  • input

    • Validation: None.

    • Impact: Address to remove.

Branches and code coverage (including function calls)

Intended branches

Negative behavior

Function call analysis

This function makes no external state-mutating calls.

Zellic © 2024Back to top ↑