feeder

package
v0.2.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2023 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExponentialBackoff

func ExponentialBackoff(wait time.Duration) time.Duration

func NopBackoff

func NopBackoff(d time.Duration) time.Duration

func ProgramHash

func ProgramHash(contractDefinition *Cairo0Definition) (*felt.Felt, error)

Types

type Backoff

type Backoff func(wait time.Duration) time.Duration

type Block

type Block struct {
	Hash             *felt.Felt            `json:"block_hash"`
	ParentHash       *felt.Felt            `json:"parent_block_hash"`
	Number           uint64                `json:"block_number"`
	StateRoot        *felt.Felt            `json:"state_root"`
	Status           string                `json:"status"`
	GasPrice         *felt.Felt            `json:"gas_price"`
	Transactions     []*Transaction        `json:"transactions"`
	Timestamp        uint64                `json:"timestamp"`
	Version          string                `json:"starknet_version"`
	Receipts         []*TransactionReceipt `json:"transaction_receipts"`
	SequencerAddress *felt.Felt            `json:"sequencer_address"`
}

Block object returned by the feeder in JSON format for "get_block" endpoint

type BuiltinInstanceCounter

type BuiltinInstanceCounter struct {
	Pedersen   uint64 `json:"pedersen_builtin"`
	RangeCheck uint64 `json:"range_check_builtin"`
	Bitwise    uint64 `json:"bitwise_builtin"`
	Output     uint64 `json:"output_builtin"`
	Ecsda      uint64 `json:"ecdsa_builtin"`
	EcOp       uint64 `json:"ec_op_builtin"`
}

type Cairo0Definition

type Cairo0Definition struct {
	Abi         any `json:"abi"`
	EntryPoints struct {
		Constructor []EntryPoint `json:"CONSTRUCTOR"`
		External    []EntryPoint `json:"EXTERNAL"`
		L1Handler   []EntryPoint `json:"L1_HANDLER"`
	} `json:"entry_points_by_type"`
	Program Program `json:"program"`
}

type ClassDefinition

type ClassDefinition struct {
	V0 *Cairo0Definition
	V1 *SierraDefinition
}

func (*ClassDefinition) UnmarshalJSON

func (c *ClassDefinition) UnmarshalJSON(data []byte) error

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(clientURL string) *Client

func NewTestClient

func NewTestClient(network utils.Network) (*Client, closeTestClient)

NewTestClient returns a client and a function to close a test server.

func (*Client) Block

func (c *Client) Block(ctx context.Context, blockNumber uint64) (*Block, error)

func (*Client) ClassDefinition

func (c *Client) ClassDefinition(ctx context.Context, classHash *felt.Felt) (*ClassDefinition, error)

func (*Client) StateUpdate

func (c *Client) StateUpdate(ctx context.Context, blockNumber uint64) (*StateUpdate, error)

func (*Client) Transaction

func (c *Client) Transaction(ctx context.Context, transactionHash *felt.Felt) (*TransactionStatus, error)

func (*Client) WithBackoff

func (c *Client) WithBackoff(b Backoff) *Client

func (*Client) WithLogger

func (c *Client) WithLogger(log utils.SimpleLogger) *Client

func (*Client) WithMaxRetries

func (c *Client) WithMaxRetries(num int) *Client

func (*Client) WithMaxWait

func (c *Client) WithMaxWait(d time.Duration) *Client

func (*Client) WithMinWait

func (c *Client) WithMinWait(d time.Duration) *Client

type ContractCode

type ContractCode struct {
	Abi     interface{} `json:"abi"`
	Program *Program    `json:"program"`
}

func (ContractCode) Marshal

func (c ContractCode) Marshal() ([]byte, error)

Marshal is a custom json marshaler for ContractCode

type EntryPoint

type EntryPoint struct {
	Selector *felt.Felt `json:"selector"`
	Offset   *felt.Felt `json:"offset"`
}

type Event

type Event struct {
	From *felt.Felt   `json:"from_address"`
	Data []*felt.Felt `json:"data"`
	Keys []*felt.Felt `json:"keys"`
}

type ExecutionResources

type ExecutionResources struct {
	Steps                  uint64                 `json:"n_steps"`
	BuiltinInstanceCounter BuiltinInstanceCounter `json:"builtin_instance_counter"`
	MemoryHoles            uint64                 `json:"n_memory_holes"`
}

type Hints

type Hints map[uint64]interface{}

type Identifiers

type Identifiers map[string]struct {
	CairoType   string         `json:"cairo_type,omitempty"`
	Decorators  *[]interface{} `json:"decorators,omitempty"`
	Destination string         `json:"destination,omitempty"`
	FullName    string         `json:"full_name,omitempty"`
	Members     *interface{}   `json:"members,omitempty"`
	Pc          *uint64        `json:"pc,omitempty"`
	References  *[]interface{} `json:"references,omitempty"`
	Size        *uint64        `json:"size,omitempty"`
	Type        string         `json:"type,omitempty"`
	Value       json.Number    `json:"value,omitempty"`
}

type L1ToL2Message

type L1ToL2Message struct {
	From     string       `json:"from_address"`
	Payload  []*felt.Felt `json:"payload"`
	Selector *felt.Felt   `json:"selector"`
	To       *felt.Felt   `json:"to_address"`
	Nonce    *felt.Felt   `json:"nonce"`
}

type L2ToL1Message

type L2ToL1Message struct {
	From    *felt.Felt   `json:"from_address"`
	Payload []*felt.Felt `json:"payload"`
	To      string       `json:"to_address"`
}

type Program

type Program struct {
	Attributes       interface{} `json:"attributes,omitempty"`
	Builtins         []string    `json:"builtins"`
	CompilerVersion  string      `json:"compiler_version,omitempty"`
	Data             []string    `json:"data"`
	DebugInfo        interface{} `json:"debug_info"`
	Hints            Hints       `json:"hints"`
	Identifiers      Identifiers `json:"identifiers"`
	MainScope        interface{} `json:"main_scope"`
	Prime            string      `json:"prime"`
	ReferenceManager interface{} `json:"reference_manager"`
}

type SierraDefinition

type SierraDefinition struct {
	Abi         string `json:"abi"`
	EntryPoints struct {
		Constructor []SierraEntryPoint `json:"CONSTRUCTOR"`
		External    []SierraEntryPoint `json:"EXTERNAL"`
		L1Handler   []SierraEntryPoint `json:"L1_HANDLER"`
	} `json:"entry_points_by_type"`
	Program []*felt.Felt `json:"sierra_program"`
	Version string       `json:"contract_class_version"`
}

type SierraEntryPoint

type SierraEntryPoint struct {
	Index    uint64     `json:"function_idx"`
	Selector *felt.Felt `json:"selector"`
}

type StateUpdate

type StateUpdate struct {
	BlockHash *felt.Felt `json:"block_hash"`
	NewRoot   *felt.Felt `json:"new_root"`
	OldRoot   *felt.Felt `json:"old_root"`

	StateDiff struct {
		StorageDiffs map[string][]struct {
			Key   *felt.Felt `json:"key"`
			Value *felt.Felt `json:"value"`
		} `json:"storage_diffs"`

		Nonces            map[string]*felt.Felt `json:"nonces"`
		DeployedContracts []struct {
			Address   *felt.Felt `json:"address"`
			ClassHash *felt.Felt `json:"class_hash"`
		} `json:"deployed_contracts"`

		// v0.11.0
		OldDeclaredContracts []*felt.Felt `json:"old_declared_contracts"`
		DeclaredClasses      []struct {
			ClassHash         *felt.Felt `json:"class_hash"`
			CompiledClassHash *felt.Felt `json:"compiled_class_hash"`
		} `json:"declared_classes"`
		ReplacedClasses []struct {
			Address   *felt.Felt `json:"address"`
			ClassHash *felt.Felt `json:"class_hash"`
		} `json:"replaced_classes"`
	} `json:"state_diff"`
}

StateUpdate object returned by the feeder in JSON format for "get_state_update" endpoint

type Transaction

type Transaction struct {
	Hash                *felt.Felt   `json:"transaction_hash"`
	Version             *felt.Felt   `json:"version"`
	ContractAddress     *felt.Felt   `json:"contract_address"`
	ContractAddressSalt *felt.Felt   `json:"contract_address_salt"`
	ClassHash           *felt.Felt   `json:"class_hash"`
	ConstructorCallData []*felt.Felt `json:"constructor_calldata"`
	Type                string       `json:"type"`
	SenderAddress       *felt.Felt   `json:"sender_address"`
	MaxFee              *felt.Felt   `json:"max_fee"`
	Signature           []*felt.Felt `json:"signature"`
	CallData            []*felt.Felt `json:"calldata"`
	EntryPointSelector  *felt.Felt   `json:"entry_point_selector"`
	Nonce               *felt.Felt   `json:"nonce"`
	CompiledClassHash   *felt.Felt   `json:"compiled_class_hash"`
}

Transaction object returned by the feeder in JSON format for multiple endpoints

type TransactionReceipt

type TransactionReceipt struct {
	ActualFee          *felt.Felt          `json:"actual_fee"`
	Events             []*Event            `json:"events"`
	ExecutionResources *ExecutionResources `json:"execution_resources"`
	L1ToL2Message      *L1ToL2Message      `json:"l1_to_l2_consumed_message"`
	L2ToL1Message      []*L2ToL1Message    `json:"l2_to_l1_messages"`
	TransactionHash    *felt.Felt          `json:"transaction_hash"`
	TransactionIndex   uint64              `json:"transaction_index"`
}

type TransactionStatus

type TransactionStatus struct {
	Status           string       `json:"status"`
	BlockHash        *felt.Felt   `json:"block_hash"`
	BlockNumber      uint64       `json:"block_number"`
	TransactionIndex uint64       `json:"transaction_index"`
	Transaction      *Transaction `json:"transaction"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL