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