Documentation ¶
Index ¶
- Variables
- func ContractAddress(callerAddress, classHash, salt *felt.Felt, constructorCallData []*felt.Felt) *felt.Felt
- func VerifyBlockHash(b *Block, network utils.Network) error
- func VerifyClassHashes(classes map[felt.Felt]Class) error
- func VerifyTransactions(txs []Transaction, n utils.Network) error
- type Block
- type BuiltinInstanceCounter
- type Cairo0Class
- type Cairo1Class
- type CantVerifyClassHashError
- type CantVerifyTransactionHashError
- type Class
- type Contract
- func (c *Contract) ClassHash() (*felt.Felt, error)
- func (c *Contract) Nonce() (*felt.Felt, error)
- func (c *Contract) Replace(classHash *felt.Felt) error
- func (c *Contract) Root() (*felt.Felt, error)
- func (c *Contract) Storage(key *felt.Felt) (*felt.Felt, error)
- func (c *Contract) UpdateNonce(nonce *felt.Felt) error
- func (c *Contract) UpdateStorage(diff []StorageDiff) error
- type DeclareTransaction
- type DeclaredV1Class
- type DeployAccountTransaction
- type DeployTransaction
- type DeployedContract
- type EntryPoint
- type Event
- type ExecutionResources
- type Header
- type InvokeTransaction
- type L1HandlerTransaction
- type L1ToL2Message
- type L2ToL1Message
- type ReplacedClass
- type SierraEntryPoint
- type State
- type StateDiff
- type StateUpdate
- type StorageDiff
- type Transaction
- type TransactionReceipt
- type TransactionStorage
Constants ¶
This section is empty.
Variables ¶
var ( ErrContractNotDeployed = errors.New("contract not deployed") ErrContractAlreadyDeployed = errors.New("contract already deployed") )
Functions ¶
func ContractAddress ¶
func ContractAddress(callerAddress, classHash, salt *felt.Felt, constructorCallData []*felt.Felt) *felt.Felt
ContractAddress computes the address of a Starknet contract.
func VerifyBlockHash ¶
VerifyBlockHash verifies the block hash. Due to bugs in Starknet alpha, not all blocks have verifiable hashes.
func VerifyTransactions ¶ added in v0.2.1
func VerifyTransactions(txs []Transaction, n utils.Network) error
Types ¶
type Block ¶
type Block struct { *Header Transactions []Transaction Receipts []*TransactionReceipt }
type BuiltinInstanceCounter ¶
type Cairo0Class ¶ added in v0.2.1
type Cairo0Class struct { Abi any // 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 // An ascii-encoded array of builtin names imported by the class. Builtins []*felt.Felt // The starknet_keccak hash of the ".json" file compiler output. ProgramHash *felt.Felt Bytecode []*felt.Felt }
Cairo0Class unambiguously defines a Contract's semantics.
func (*Cairo0Class) Hash ¶ added in v0.2.1
func (c *Cairo0Class) Hash() *felt.Felt
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 }
Cairo1Class unambiguously defines a Contract's semantics.
func (*Cairo1Class) Hash ¶ added in v0.2.1
func (c *Cairo1Class) Hash() *felt.Felt
func (*Cairo1Class) Version ¶ added in v0.2.1
func (c *Cairo1Class) Version() uint64
type CantVerifyClassHashError ¶ added in v0.2.1
type CantVerifyClassHashError struct {
// contains filtered or unexported fields
}
func (CantVerifyClassHashError) Class ¶ added in v0.2.1
func (e CantVerifyClassHashError) Class() Class
func (CantVerifyClassHashError) Error ¶ added in v0.2.1
func (e CantVerifyClassHashError) Error() string
func (CantVerifyClassHashError) Unwrap ¶ added in v0.2.1
func (e CantVerifyClassHashError) Unwrap() error
type CantVerifyTransactionHashError ¶ added in v0.2.1
type CantVerifyTransactionHashError struct {
// contains filtered or unexported fields
}
func (CantVerifyTransactionHashError) Error ¶ added in v0.2.1
func (e CantVerifyTransactionHashError) Error() string
func (CantVerifyTransactionHashError) Hash ¶ added in v0.2.1
func (e CantVerifyTransactionHashError) Hash() *felt.Felt
func (CantVerifyTransactionHashError) Unwrap ¶ added in v0.2.1
func (e CantVerifyTransactionHashError) Unwrap() error
type Contract ¶
type Contract struct { // Address that this contract instance is deployed to Address *felt.Felt // contains filtered or unexported fields }
Contract is an instance of a Class.
func DeployContract ¶ added in v0.2.1
DeployContract sets up the database for a new contract.
func NewContract ¶
NewContract creates a contract instance at the given address. Deploy should be called for contracts that were just deployed to the network.
func (*Contract) Nonce ¶
Nonce returns the amount transactions sent from this contract. Only account contracts can have a non-zero nonce.
func (*Contract) Replace ¶ added in v0.2.1
Replace replaces the class that the contract instantiates
func (*Contract) UpdateNonce ¶
UpdateNonce updates the nonce value in the database.
func (*Contract) UpdateStorage ¶
func (c *Contract) UpdateStorage(diff []StorageDiff) error
UpdateStorage applies a change-set to the contract storage.
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 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 *felt.Felt // Version 2 fields CompiledClassHash *felt.Felt }
func (*DeclareTransaction) Hash ¶
func (d *DeclareTransaction) Hash() *felt.Felt
func (*DeclareTransaction) Signature ¶
func (d *DeclareTransaction) Signature() []*felt.Felt
type DeclaredV1Class ¶ added in v0.2.1
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 }
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 *felt.Felt }
func (*DeployTransaction) Hash ¶
func (d *DeployTransaction) Hash() *felt.Felt
func (*DeployTransaction) Signature ¶
func (d *DeployTransaction) Signature() []*felt.Felt
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 }
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 // Extraneous data that might be useful for running transactions ExtraData *felt.Felt }
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 *felt.Felt // 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 }
func (*InvokeTransaction) Hash ¶
func (i *InvokeTransaction) Hash() *felt.Felt
func (*InvokeTransaction) Signature ¶
func (i *InvokeTransaction) Signature() []*felt.Felt
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 *felt.Felt }
func (*L1HandlerTransaction) Hash ¶
func (l *L1HandlerTransaction) Hash() *felt.Felt
func (*L1HandlerTransaction) Signature ¶
func (l *L1HandlerTransaction) Signature() []*felt.Felt
type L1ToL2Message ¶
type L2ToL1Message ¶
type ReplacedClass ¶ added in v0.2.1
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) ContractClassHash ¶ added in v0.2.1
ContractClassHash returns class hash of a contract at a given address.
func (*State) ContractNonce ¶ added in v0.2.1
ContractNonce returns nonce of a contract at a given address.
type StateDiff ¶
type StateDiff struct { StorageDiffs map[felt.Felt][]StorageDiff Nonces map[felt.Felt]*felt.Felt DeployedContracts []DeployedContract DeclaredV0Classes []*felt.Felt DeclaredV1Classes []DeclaredV1Class ReplacedClasses []ReplacedClass }
type StateUpdate ¶
type TransactionReceipt ¶
type TransactionReceipt struct { Fee *felt.Felt Events []*Event ExecutionResources *ExecutionResources L1ToL2Message *L1ToL2Message L2ToL1Message []*L2ToL1Message TransactionHash *felt.Felt }
type TransactionStorage ¶
type TransactionStorage struct {
// contains filtered or unexported fields
}
TransactionStorage is a database transaction on a trie.
func NewTransactionStorage ¶
func NewTransactionStorage(txn db.Transaction, prefix []byte) *TransactionStorage