Documentation ¶
Index ¶
- Variables
- func BlockHash(b *Block) (*felt.Felt, error)
- func ContractAddress(callerAddress, classHash, salt *felt.Felt, constructorCallData []*felt.Felt) *felt.Felt
- func ContractClassHash(addr *felt.Felt, txn db.Transaction) (*felt.Felt, error)
- func ContractNonce(addr *felt.Felt, txn db.Transaction) (*felt.Felt, error)
- func ContractRoot(addr *felt.Felt, txn db.Transaction) (*felt.Felt, error)
- func ContractStorage(addr, key *felt.Felt, txn db.Transaction) (*felt.Felt, error)
- func EventsBloom(receipts []*TransactionReceipt) *bloom.BloomFilter
- func MarshalBlockNumber(blockNumber uint64) []byte
- func ParseBlockVersion(protocolVersion string) (*semver.Version, error)
- func SegmentedBytecodeHash(bytecode []*felt.Felt, segmentLengths []SegmentLengths) *felt.Felt
- func TransactionHash(transaction Transaction, n *utils.Network) (*felt.Felt, error)
- func VerifyClassHashes(classes map[felt.Felt]Class) error
- func VerifyTransactions(txs []Transaction, n *utils.Network, protocolVersion string) error
- type Block
- type BlockCommitments
- type BuiltinInstanceCounter
- type Cairo0Class
- type Cairo1Class
- type Class
- type CompiledClass
- type CompiledEntryPoint
- type ContractUpdater
- type DataAvailability
- type DataAvailabilityMode
- type DeclareTransaction
- type DeclaredClass
- type DeployAccountTransaction
- type DeployTransaction
- type EntryPoint
- type Event
- type ExecutionResources
- type FeeUnit
- type GasPrice
- type Header
- type InvokeTransaction
- type L1DAMode
- type L1HandlerTransaction
- type L1Head
- type L1ToL2Message
- type L2ToL1Message
- type OnValueChanged
- type Resource
- type ResourceBounds
- type SegmentLengths
- type SierraEntryPoint
- type State
- func (s *State) Class(classHash *felt.Felt) (*DeclaredClass, error)
- func (s *State) ContractClassHash(addr *felt.Felt) (*felt.Felt, error)
- func (h State) ContractClassHashAt(contractAddress *felt.Felt, height uint64) (*felt.Felt, error)
- func (s *State) ContractIsAlreadyDeployedAt(addr *felt.Felt, blockNumber uint64) (bool, error)
- func (s *State) ContractNonce(addr *felt.Felt) (*felt.Felt, error)
- func (h State) ContractNonceAt(contractAddress *felt.Felt, height uint64) (*felt.Felt, error)
- func (s *State) ContractStorage(addr, key *felt.Felt) (*felt.Felt, error)
- func (h State) ContractStorageAt(contractAddress, storageLocation *felt.Felt, height uint64) (*felt.Felt, error)
- func (h State) DeleteContractClassHashLog(contractAddress *felt.Felt, height uint64) error
- func (h State) DeleteContractNonceLog(contractAddress *felt.Felt, height uint64) error
- func (h State) DeleteContractStorageLog(contractAddress, storageLocation *felt.Felt, height uint64) error
- func (h State) LogContractClassHash(contractAddress, oldValue *felt.Felt, height uint64) error
- func (h State) LogContractNonce(contractAddress, oldValue *felt.Felt, height uint64) error
- func (h State) LogContractStorage(contractAddress, storageLocation, oldValue *felt.Felt, height uint64) error
- func (s *State) Revert(blockNumber uint64, update *StateUpdate) error
- func (s *State) Root() (*felt.Felt, error)
- func (s *State) Update(blockNumber uint64, update *StateUpdate, declaredClasses map[felt.Felt]Class) error
- type StateDiff
- type StateHistoryReader
- type StateReader
- type StateUpdate
- type Transaction
- type TransactionReceipt
- type TransactionVersion
- func (v *TransactionVersion) AsFelt() *felt.Felt
- func (v *TransactionVersion) HasQueryBit() bool
- func (v *TransactionVersion) Is(u64 uint64) bool
- func (v *TransactionVersion) MarshalCBOR() ([]byte, error)
- func (v *TransactionVersion) SetUint64(u64 uint64) *TransactionVersion
- func (v *TransactionVersion) String() string
- func (v *TransactionVersion) UnmarshalCBOR(data []byte) error
- func (v *TransactionVersion) WithoutQueryBit() TransactionVersion
Constants ¶
This section is empty.
Variables ¶
var ( ErrContractNotDeployed = errors.New("contract not deployed") ErrContractAlreadyDeployed = errors.New("contract already deployed") )
var ErrCheckHeadState = errors.New("check head state")
Functions ¶
func BlockHash ¶ added in v0.10.0
BlockHash assumes block.SequencerAddress is not nil as this is called with post v0.12.0 and by then issues with unverifiable block hash were resolved. In future, this may no longer be required.
func ContractAddress ¶
func ContractAddress(callerAddress, classHash, salt *felt.Felt, constructorCallData []*felt.Felt) *felt.Felt
ContractAddress computes the address of a Starknet contract.
func ContractClassHash ¶ added in v0.7.5
ContractClassHash returns hash of the class that the contract at the given address instantiates.
func ContractNonce ¶ added in v0.7.5
ContractNonce returns the amount transactions sent from this contract. Only account contracts can have a non-zero nonce.
func ContractRoot ¶ added in v0.7.5
ContractRoot returns the root of the contract storage.
func ContractStorage ¶ added in v0.7.5
func EventsBloom ¶ added in v0.3.1
func EventsBloom(receipts []*TransactionReceipt) *bloom.BloomFilter
func MarshalBlockNumber ¶ added in v0.4.0
func ParseBlockVersion ¶ added in v0.3.1
ParseBlockVersion computes the block version, defaulting to "0.0.0" for empty strings
func SegmentedBytecodeHash ¶ added in v0.11.0
func SegmentedBytecodeHash(bytecode []*felt.Felt, segmentLengths []SegmentLengths) *felt.Felt
func TransactionHash ¶ added in v0.4.0
func VerifyTransactions ¶ added in v0.2.1
func VerifyTransactions(txs []Transaction, n *utils.Network, protocolVersion string) error
Types ¶
type Block ¶
type Block struct { *Header Transactions []Transaction Receipts []*TransactionReceipt }
type BlockCommitments ¶ added in v0.6.0
func VerifyBlockHash ¶
func VerifyBlockHash(b *Block, network *utils.Network) (*BlockCommitments, error)
VerifyBlockHash verifies the block hash. Due to bugs in Starknet alpha, not all blocks have verifiable hashes.
type BuiltinInstanceCounter ¶
type Cairo0Class ¶ added in v0.2.1
type Cairo0Class struct { Abi json.RawMessage // External functions defined in the class. Externals []EntryPoint // Functions that receive L1 messages. See // https://www.cairo-lang.org/docs/hello_starknet/l1l2.html#receiving-a-message-from-l1 L1Handlers []EntryPoint // Constructors for the class. Currently, only one is allowed. Constructors []EntryPoint // Base64 encoding of compressed Program Program string }
Cairo0Class unambiguously defines a [Contract]'s semantics.
func (*Cairo0Class) Version ¶ added in v0.2.1
func (c *Cairo0Class) Version() uint64
type Cairo1Class ¶ added in v0.2.1
type Cairo1Class struct { Abi string AbiHash *felt.Felt EntryPoints struct { Constructor []SierraEntryPoint External []SierraEntryPoint L1Handler []SierraEntryPoint } Program []*felt.Felt ProgramHash *felt.Felt SemanticVersion string Compiled *CompiledClass }
Cairo1Class unambiguously defines a [Contract]'s semantics.
func (*Cairo1Class) Version ¶ added in v0.2.1
func (c *Cairo1Class) Version() uint64
type CompiledClass ¶ added in v0.9.3
type CompiledClass struct { Bytecode []*felt.Felt PythonicHints json.RawMessage CompilerVersion string Hints json.RawMessage Prime *big.Int External []CompiledEntryPoint L1Handler []CompiledEntryPoint Constructor []CompiledEntryPoint BytecodeSegmentLengths SegmentLengths }
func (*CompiledClass) Hash ¶ added in v0.9.3
func (c *CompiledClass) Hash() *felt.Felt
type CompiledEntryPoint ¶ added in v0.9.3
type ContractUpdater ¶ added in v0.7.5
type ContractUpdater struct { // Address that this contract instance is deployed to Address *felt.Felt // contains filtered or unexported fields }
ContractUpdater is a helper to update an existing contract instance.
func DeployContract ¶ added in v0.2.1
func DeployContract(addr, classHash *felt.Felt, txn db.Transaction) (*ContractUpdater, error)
DeployContract sets up the database for a new contract.
func NewContractUpdater ¶ added in v0.7.5
func NewContractUpdater(addr *felt.Felt, txn db.Transaction) (*ContractUpdater, error)
NewContractUpdater creates an updater for the contract instance at the given address. Deploy should be called for contracts that were just deployed to the network.
func (*ContractUpdater) Purge ¶ added in v0.7.5
func (c *ContractUpdater) Purge() error
Purge eliminates the contract instance, deleting all associated data from storage assumes storage is cleared in revert process
func (*ContractUpdater) Replace ¶ added in v0.7.5
func (c *ContractUpdater) Replace(classHash *felt.Felt) error
Replace replaces the class that the contract instantiates
func (*ContractUpdater) UpdateNonce ¶ added in v0.7.5
func (c *ContractUpdater) UpdateNonce(nonce *felt.Felt) error
UpdateNonce updates the nonce value in the database.
func (*ContractUpdater) UpdateStorage ¶ added in v0.7.5
func (c *ContractUpdater) UpdateStorage(diff map[felt.Felt]*felt.Felt, cb OnValueChanged) error
UpdateStorage applies a change-set to the contract storage.
type DataAvailability ¶ added in v0.11.0
type DataAvailabilityMode ¶ added in v0.8.0
type DataAvailabilityMode uint32
const ( DAModeL1 DataAvailabilityMode = iota DAModeL2 )
type DeclareTransaction ¶
type DeclareTransaction struct { TransactionHash *felt.Felt // The class hash ClassHash *felt.Felt // The address of the account initiating the transaction. SenderAddress *felt.Felt // The maximum fee that the sender is willing to pay for the transaction. MaxFee *felt.Felt // Additional information given by the sender, used to validate the transaction. TransactionSignature []*felt.Felt // The transaction nonce. Nonce *felt.Felt // The transaction’s version. Possible values are 0, 1, 2, or 3. // When the fields that comprise a transaction change, // either with the addition of a new field or the removal of an existing field, // then the transaction version increases. // Transaction version 0 is deprecated and will be removed in a future version of Starknet. Version *TransactionVersion // Version 2 fields CompiledClassHash *felt.Felt // Version 3 fields // See InvokeTransaction for descriptions of the fields. ResourceBounds map[Resource]ResourceBounds Tip uint64 PaymasterData []*felt.Felt AccountDeploymentData []*felt.Felt NonceDAMode DataAvailabilityMode FeeDAMode DataAvailabilityMode }
func (*DeclareTransaction) Hash ¶
func (d *DeclareTransaction) Hash() *felt.Felt
func (*DeclareTransaction) Signature ¶
func (d *DeclareTransaction) Signature() []*felt.Felt
func (*DeclareTransaction) TxVersion ¶ added in v0.8.0
func (d *DeclareTransaction) TxVersion() *TransactionVersion
type DeclaredClass ¶ added in v0.3.0
type DeployAccountTransaction ¶
type DeployAccountTransaction struct { DeployTransaction // The maximum fee that the sender is willing to pay for the transaction. MaxFee *felt.Felt // Additional information given by the sender, used to validate the transaction. TransactionSignature []*felt.Felt // The transaction nonce. Nonce *felt.Felt // Version 3 fields // See InvokeTransaction for descriptions of the fields. ResourceBounds map[Resource]ResourceBounds Tip uint64 PaymasterData []*felt.Felt NonceDAMode DataAvailabilityMode FeeDAMode DataAvailabilityMode }
func (*DeployAccountTransaction) Hash ¶
func (d *DeployAccountTransaction) Hash() *felt.Felt
func (*DeployAccountTransaction) Signature ¶
func (d *DeployAccountTransaction) Signature() []*felt.Felt
type DeployTransaction ¶
type DeployTransaction struct { TransactionHash *felt.Felt // A random number used to distinguish between different instances of the contract. ContractAddressSalt *felt.Felt // The address of the contract. ContractAddress *felt.Felt // The hash of the class which defines the contract’s functionality. ClassHash *felt.Felt // The arguments passed to the constructor during deployment. ConstructorCallData []*felt.Felt // The transaction’s version. Possible values are 1 or 0. // // When the fields that comprise a transaction change, // either with the addition of a new field or the removal of an existing field, // then the transaction version increases. // Transaction version 0 is deprecated and will be removed in a future version of Starknet. Version *TransactionVersion }
func (*DeployTransaction) Hash ¶
func (d *DeployTransaction) Hash() *felt.Felt
func (*DeployTransaction) Signature ¶
func (d *DeployTransaction) Signature() []*felt.Felt
func (*DeployTransaction) TxVersion ¶ added in v0.8.0
func (d *DeployTransaction) TxVersion() *TransactionVersion
type EntryPoint ¶
type EntryPoint struct { // starknet_keccak hash of the function signature. Selector *felt.Felt // The offset of the instruction in the class's bytecode. Offset *felt.Felt }
EntryPoint uniquely identifies a Cairo function to execute.
type ExecutionResources ¶
type ExecutionResources struct { BuiltinInstanceCounter BuiltinInstanceCounter MemoryHoles uint64 Steps uint64 DataAvailability *DataAvailability }
type Header ¶
type Header struct { // The hash of this block Hash *felt.Felt // The hash of this block’s parent ParentHash *felt.Felt // The number (height) of this block Number uint64 // The state commitment after this block GlobalStateRoot *felt.Felt // The Starknet address of the sequencer who created this block SequencerAddress *felt.Felt // The amount Transactions and Receipts stored in this block TransactionCount uint64 // The amount of events stored in transaction receipts EventCount uint64 // The time the sequencer created this block before executing transactions Timestamp uint64 // The version of the Starknet protocol used when creating this block ProtocolVersion string // Bloom filter on the events emitted this block EventsBloom *bloom.BloomFilter // Amount of WEI charged per Gas spent GasPrice *felt.Felt // Sequencer signatures Signatures [][]*felt.Felt // Amount of STRK charged per Gas spent GasPriceSTRK *felt.Felt // The mode of the L1 data availability L1DAMode L1DAMode // The gas price for L1 data availability L1DataGasPrice *GasPrice }
type InvokeTransaction ¶
type InvokeTransaction struct { TransactionHash *felt.Felt // The arguments that are passed to the validated and execute functions. CallData []*felt.Felt // Additional information given by the sender, used to validate the transaction. TransactionSignature []*felt.Felt // The maximum fee that the sender is willing to pay for the transaction MaxFee *felt.Felt // The address of the contract invoked by this transaction. ContractAddress *felt.Felt // When the fields that comprise a transaction change, // either with the addition of a new field or the removal of an existing field, // then the transaction version increases. Version *TransactionVersion // Version 0 fields // The encoding of the selector for the function invoked (the entry point in the contract) EntryPointSelector *felt.Felt // Version 1 fields // The transaction nonce. Nonce *felt.Felt // The address of the sender of this transaction SenderAddress *felt.Felt // Version 3 fields (there was no version 2) ResourceBounds map[Resource]ResourceBounds Tip uint64 // From the RPC spec: data needed to allow the paymaster to pay for the transaction in native tokens PaymasterData []*felt.Felt // From RPC spec: data needed to deploy the account contract from which this tx will be initiated AccountDeploymentData []*felt.Felt // From RPC spec: The storage domain of the account's nonce (an account has a nonce per DA mode) NonceDAMode DataAvailabilityMode // From RPC spec: The storage domain of the account's balance from which fee will be charged FeeDAMode DataAvailabilityMode }
func (*InvokeTransaction) Hash ¶
func (i *InvokeTransaction) Hash() *felt.Felt
func (*InvokeTransaction) Signature ¶
func (i *InvokeTransaction) Signature() []*felt.Felt
func (*InvokeTransaction) TxVersion ¶ added in v0.8.0
func (i *InvokeTransaction) TxVersion() *TransactionVersion
type L1HandlerTransaction ¶
type L1HandlerTransaction struct { TransactionHash *felt.Felt // The address of the contract. ContractAddress *felt.Felt // The encoding of the selector for the function invoked (the entry point in the contract) EntryPointSelector *felt.Felt // The transaction nonce. Nonce *felt.Felt // The arguments that are passed to the validated and execute functions. CallData []*felt.Felt // When the fields that comprise a transaction change, // either with the addition of a new field or the removal of an existing field, // then the transaction version increases. Version *TransactionVersion }
func (*L1HandlerTransaction) Hash ¶
func (l *L1HandlerTransaction) Hash() *felt.Felt
func (*L1HandlerTransaction) MessageHash ¶ added in v0.7.0
func (l *L1HandlerTransaction) MessageHash() []byte
func (*L1HandlerTransaction) Signature ¶
func (l *L1HandlerTransaction) Signature() []*felt.Felt
func (*L1HandlerTransaction) TxVersion ¶ added in v0.8.0
func (l *L1HandlerTransaction) TxVersion() *TransactionVersion
type L1ToL2Message ¶
type L2ToL1Message ¶
type OnValueChanged ¶ added in v0.3.0
type ResourceBounds ¶ added in v0.8.0
type ResourceBounds struct { MaxAmount uint64 // MaxPricePerUnit is technically a uint128 MaxPricePerUnit *felt.Felt }
From the RPC spec: The max amount and max price per unit of gas used in this transaction.
func (ResourceBounds) Bytes ¶ added in v0.8.0
func (rb ResourceBounds) Bytes(resource Resource) []byte
type SegmentLengths ¶ added in v0.11.0
type SegmentLengths struct { Children []SegmentLengths Length uint64 }
type SierraEntryPoint ¶ added in v0.2.1
type State ¶
type State struct {
// contains filtered or unexported fields
}
func NewState ¶
func NewState(txn db.Transaction) *State
func (*State) Class ¶ added in v0.3.0
func (s *State) Class(classHash *felt.Felt) (*DeclaredClass, error)
Class returns the class object corresponding to the given classHash
func (*State) ContractClassHash ¶ added in v0.2.1
ContractClassHash returns class hash of a contract at a given address.
func (State) ContractClassHashAt ¶ added in v0.6.0
func (*State) ContractIsAlreadyDeployedAt ¶ added in v0.3.0
ContractIsAlreadyDeployedAt returns if contract at given addr was deployed at blockNumber
func (*State) ContractNonce ¶ added in v0.2.1
ContractNonce returns nonce of a contract at a given address.
func (State) ContractNonceAt ¶ added in v0.6.0
func (*State) ContractStorage ¶ added in v0.3.0
ContractStorage returns value of a key in the storage of the contract at the given address.
func (State) ContractStorageAt ¶ added in v0.6.0
func (h State) ContractStorageAt(contractAddress, storageLocation *felt.Felt, height uint64) (*felt.Felt, error)
ContractStorageAt returns the value of a storage location of the given contract at the height `height`
func (State) DeleteContractClassHashLog ¶ added in v0.6.0
func (State) DeleteContractNonceLog ¶ added in v0.6.0
func (State) DeleteContractStorageLog ¶ added in v0.6.0
func (h State) DeleteContractStorageLog(contractAddress, storageLocation *felt.Felt, height uint64) error
DeleteContractStorageLog deletes the log at the given height
func (State) LogContractClassHash ¶ added in v0.6.0
func (State) LogContractNonce ¶ added in v0.6.0
func (State) LogContractStorage ¶ added in v0.6.0
func (h State) LogContractStorage(contractAddress, storageLocation, oldValue *felt.Felt, height uint64) error
LogContractStorage logs the old value of a storage location for the given contract which changed on height `height`
func (*State) Revert ¶ added in v0.4.0
func (s *State) Revert(blockNumber uint64, update *StateUpdate) error
func (*State) Update ¶
func (s *State) Update(blockNumber uint64, update *StateUpdate, declaredClasses map[felt.Felt]Class) error
Update applies a StateUpdate to the State object. State is not updated if an error is encountered during the operation. If update's old or new root does not match the state's old or new roots, [ErrMismatchedRoot] is returned.
type StateDiff ¶
type StateDiff struct { StorageDiffs map[felt.Felt]map[felt.Felt]*felt.Felt // addr -> {key -> value, ...} Nonces map[felt.Felt]*felt.Felt // addr -> nonce DeployedContracts map[felt.Felt]*felt.Felt // addr -> class hash DeclaredV0Classes []*felt.Felt // class hashes DeclaredV1Classes map[felt.Felt]*felt.Felt // class hash -> compiled class hash ReplacedClasses map[felt.Felt]*felt.Felt // addr -> class hash }
func EmptyStateDiff ¶ added in v0.7.5
func EmptyStateDiff() *StateDiff
func (*StateDiff) Commitment ¶ added in v0.7.0
type StateHistoryReader ¶ added in v0.3.0
type StateHistoryReader interface { StateReader ContractStorageAt(addr, key *felt.Felt, blockNumber uint64) (*felt.Felt, error) ContractNonceAt(addr *felt.Felt, blockNumber uint64) (*felt.Felt, error) ContractClassHashAt(addr *felt.Felt, blockNumber uint64) (*felt.Felt, error) ContractIsAlreadyDeployedAt(addr *felt.Felt, blockNumber uint64) (bool, error) }
type StateReader ¶ added in v0.3.0
type StateReader interface { ContractClassHash(addr *felt.Felt) (*felt.Felt, error) ContractNonce(addr *felt.Felt) (*felt.Felt, error) ContractStorage(addr, key *felt.Felt) (*felt.Felt, error) Class(classHash *felt.Felt) (*DeclaredClass, error) }
func NewStateSnapshot ¶ added in v0.3.0
func NewStateSnapshot(state StateHistoryReader, blockNumber uint64) StateReader
type StateUpdate ¶
type Transaction ¶
type Transaction interface { Hash() *felt.Felt Signature() []*felt.Felt TxVersion() *TransactionVersion }
type TransactionReceipt ¶
type TransactionReceipt struct { Fee *felt.Felt FeeUnit FeeUnit Events []*Event ExecutionResources *ExecutionResources L1ToL2Message *L1ToL2Message L2ToL1Message []*L2ToL1Message TransactionHash *felt.Felt Reverted bool RevertReason string }
type TransactionVersion ¶ added in v0.6.2
Keep in mind that this is used as a storage type, make sure you migrate the DB if you change the underlying type
func (*TransactionVersion) AsFelt ¶ added in v0.6.2
func (v *TransactionVersion) AsFelt() *felt.Felt
func (*TransactionVersion) HasQueryBit ¶ added in v0.6.2
func (v *TransactionVersion) HasQueryBit() bool
func (*TransactionVersion) Is ¶ added in v0.6.2
func (v *TransactionVersion) Is(u64 uint64) bool
Is compares the version (without query bit) with the given value
func (*TransactionVersion) MarshalCBOR ¶ added in v0.6.2
func (v *TransactionVersion) MarshalCBOR() ([]byte, error)
func (*TransactionVersion) SetUint64 ¶ added in v0.6.2
func (v *TransactionVersion) SetUint64(u64 uint64) *TransactionVersion
func (*TransactionVersion) String ¶ added in v0.6.2
func (v *TransactionVersion) String() string
func (*TransactionVersion) UnmarshalCBOR ¶ added in v0.6.2
func (v *TransactionVersion) UnmarshalCBOR(data []byte) error
func (*TransactionVersion) WithoutQueryBit ¶ added in v0.6.2
func (v *TransactionVersion) WithoutQueryBit() TransactionVersion