Account

Reference of interfaces, presets, and utilities related to account contracts.

Core

ISRC6

use openzeppelin::account::interface::ISRC6;

Interface of the SRC6 Standard Account as defined in the SNIP-6.

0x2ceccef7f994940b3962a6c67e0ba4fcd37df7d131417c604f91e03caecc1cd

Functions

__execute__(calls: Array<Call>) → Array<Span<felt252>> external

Executes the list of calls as a transaction after validation.

Returns an array with each call’s output.

The Call struct is defined in corelib.

__validate__(calls: Array<Call>) → felt252 external

Validates a transaction before execution.

Returns the short string 'VALID' if valid, otherwise it reverts.

is_valid_signature(hash: felt252, signature: Array<felt252>) → felt252 external

Validates whether a signature is valid or not for the given message hash.

Returns the short string 'VALID' if valid, otherwise it reverts.

AccountComponent

use openzeppelin::account::AccountComponent;

Account component implementing ISRC6 for signatures over the Starknet curve.

Implementing SRC5Component is a requirement for this component to be implemented.
Embeddable Implementations (camelCase)

Embeddable Functions

__execute__(self: @ContractState, calls: Array<Call>) → Array<Span<felt252>> external

__validate__(self: @ContractState, calls: Array<Call>) → felt252 external

is_valid_signature(self: @ContractState, hash: felt252, signature: Array<felt252>) → felt252 external

__validate_declare__(self: @ContractState, class_hash: felt252) → felt252 external

Validates a Declare transaction.

Returns the short string 'VALID' if valid, otherwise it reverts.

__validate_deploy__(self: @ContractState, class_hash: felt252, contract_address_salt: felt252, public_key: felt252) → felt252 external

Returns the short string 'VALID' if valid, otherwise it reverts.

get_public_key(self: @ContractState) → felt252 external

Returns the current public key of the account.

set_public_key(ref self: ContractState, new_public_key: felt252) external

Sets a new public key for the account. Only accessible by the account calling itself through __execute__.

Emits both an OwnerRemoved and an OwnerAdded event.

camelCase Support

isValidSignature(self: @ContractState, hash: felt252, signature: Array<felt252>) → felt252 external

getPublicKey(self: @ContractState) → felt252 external

setPublicKey(ref self: ContractState, newPublicKey: felt252) external

Internal Functions

initializer(ref self: ComponentState, public_key: felt252) internal

Initializes the account with the given public key, and registers the ISRC6 interface ID.

Emits an OwnerAdded event.

assert_only_self(self: @ComponentState) internal

Validates that the caller is the account itself. Otherwise it reverts.

validate_transaction(self: @ComponentState) → felt252 internal

Validates a transaction signature from the global context.

Returns the short string 'VALID' if valid, otherwise it reverts.

_set_public_key(ref self: ComponentState, new_public_key: felt252) internal

Set the public key without validating the caller.

Emits an OwnerAdded event.

The usage of this method outside the set_public_key function is discouraged.

_is_valid_signature(self: @ComponentState, hash: felt252, signature: Span<felt252>) → bool internal

Validates the provided signature for the hash, using the account’s current public key.

Events

OwnerAdded(new_owner_guid: felt252) event

Emitted when a public_key is added.

OwnerRemoved(removed_owner_guid: felt252) event

Emitted when a public_key is removed.

EthAccountComponent

use openzeppelin::account::eth_account::EthAccountComponent;

Account component implementing ISRC6 for signatures over the Secp256k1 curve.

Implementing SRC5Component is a requirement for this component to be implemented.
The EthPublicKey type is an alias for starknet::secp256k1::Secp256k1Point.
Embeddable Implementations (camelCase)

Embeddable Functions

__execute__(self: @ContractState, calls: Array<Call>) → Array<Span<felt252>> external

__validate__(self: @ContractState, calls: Array<Call>) → felt252 external

is_valid_signature(self: @ContractState, hash: felt252, signature: Array<felt252>) → felt252 external

__validate_declare__(self: @ContractState, class_hash: felt252) → felt252 external

Validates a Declare transaction.

Returns the short string 'VALID' if valid, otherwise it reverts.

__validate_deploy__(self: @ContractState, class_hash: felt252, contract_address_salt: felt252, public_key: EthPublicKey) → felt252 external

Returns the short string 'VALID' if valid, otherwise it reverts.

get_public_key(self: @ContractState) → EthPublicKey external

Returns the current public key of the account.

set_public_key(ref self: ContractState, new_public_key: EthPublicKey) external

Sets a new public key for the account. Only accesible by the account calling itself through __execute__.

Emits both an OwnerRemoved and an OwnerAdded event.

camelCase Support

isValidSignature(self: @ContractState, hash: felt252, signature: Array<felt252>) → felt252 external

getPublicKey(self: @ContractState) → EthPublicKey external

setPublicKey(ref self: ContractState, newPublicKey: EthPublicKey) external

Internal Functions

initializer(ref self: ComponentState, public_key: EthPublicKey) internal

Initializes the account with the given public key, and registers the ISRC6 interface ID.

Emits an OwnerAdded event.

assert_only_self(self: @ComponentState) internal

Validates that the caller is the account itself. Otherwise it reverts.

validate_transaction(self: @ComponentState) → felt252 internal

Validates a transaction signature from the global context.

Returns the short string 'VALID' if valid, otherwise it reverts.

_set_public_key(ref self: ComponentState, new_public_key: EthPublicKey) internal

Set the public key without validating the caller.

Emits an OwnerAdded event.

The usage of this method outside the set_public_key function is discouraged.

_is_valid_signature(self: @ComponentState, hash: felt252, signature: Span<felt252>) → bool internal

Validates the provided signature for the hash, using the account’s current public key.

Events

The guid is computed as the hash of the public key, using the poseidon hash function.

OwnerAdded(new_owner_guid: felt252) event

Emitted when a public_key is added.

OwnerRemoved(removed_owner_guid: felt252) event

Emitted when a public_key is removed.

Presets

Account

use openzeppelin::presets::Account;

Basic account contract leveraging AccountComponent.

0x01148c31dfa5c4708a4e9cf1eb0fd3d4d8ad9ccf09d0232cd6b56bee64a7de9d

Embedded Implementations

Constructor

constructor(ref self: ContractState, public_key: felt252) constructor

Sets the account public_key and registers the interfaces the contract supports.

EthAccountUpgradeable

use openzeppelin::presets::EthAccountUpgradeable;

Account contract leveraging EthAccountComponent.

The EthPublicKey type is an alias for starknet::secp256k1::Secp256k1Point.

0x023e416842ca96b1f7067693892ed00881d97a4b0d9a4c793b75cb887944d98d

Embedded Implementations
External Functions

Constructor

constructor(ref self: ContractState, public_key: EthPublicKey) constructor

Sets the account public_key and registers the interfaces the contract supports.

External Functions

upgrade(ref self: ContractState, new_class_hash: ClassHash) external

Upgrades the contract to a new implementation given by new_class_hash.