rpc

package
v0.3.1 Latest Latest
Warning

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

Go to latest
Published: May 25, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrPendingNotSupported = errors.New("pending block is not supported yet")

	ErrBlockNotFound            = &jsonrpc.Error{Code: 24, Message: "Block not found"}
	ErrContractNotFound         = &jsonrpc.Error{Code: 20, Message: "Contract not found"}
	ErrTxnHashNotFound          = &jsonrpc.Error{Code: 25, Message: "Transaction hash not found"}
	ErrNoBlock                  = &jsonrpc.Error{Code: 32, Message: "There are no blocks"}
	ErrInvalidTxIndex           = &jsonrpc.Error{Code: 27, Message: "Invalid transaction index in a block"}
	ErrClassHashNotFound        = &jsonrpc.Error{Code: 28, Message: "Class hash not found"}
	ErrInvalidContinuationToken = &jsonrpc.Error{Code: 33, Message: "Invalid continuation token"}
	ErrPageSizeTooBig           = &jsonrpc.Error{Code: 31, Message: "Requested page size is too big"}
	ErrTooManyKeysInFilter      = &jsonrpc.Error{Code: 34, Message: "Too many keys provided in a filter"}
	ErrInternal                 = &jsonrpc.Error{Code: jsonrpc.InternalError, Message: "Internal error"}
)

Functions

This section is empty.

Types

type BlockHashAndNumber added in v0.3.0

type BlockHashAndNumber struct {
	Hash   *felt.Felt `json:"block_hash"`
	Number uint64     `json:"block_number"`
}

https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L520-L534

type BlockHeader

type BlockHeader struct {
	Hash             *felt.Felt `json:"block_hash"`
	ParentHash       *felt.Felt `json:"parent_hash"`
	Number           uint64     `json:"block_number"`
	NewRoot          *felt.Felt `json:"new_root"`
	Timestamp        uint64     `json:"timestamp"`
	SequencerAddress *felt.Felt `json:"sequencer_address,omitempty"`
}

https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L1072

type BlockID added in v0.2.1

type BlockID struct {
	Pending bool
	Latest  bool
	Hash    *felt.Felt
	Number  uint64
}

https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L814

func (*BlockID) UnmarshalJSON added in v0.2.1

func (b *BlockID) UnmarshalJSON(data []byte) error

type Class added in v0.3.0

type Class struct {
	SierraProgram        []*felt.Felt `json:"sierra_program,omitempty"`
	Program              string       `json:"program,omitempty"`
	ContractClassVersion string       `json:"contract_class_version,omitempty"`
	EntryPoints          EntryPoints  `json:"entry_points_by_type"`
	Abi                  any          `json:"abi"`
}

https://github.com/starkware-libs/starknet-specs/blob/e0b76ed0d8d8eba405e182371f9edac8b2bcbc5a/api/starknet_api_openrpc.json#L268-L280

type DeclaredClass added in v0.2.1

type DeclaredClass struct {
	ClassHash         *felt.Felt `json:"class_hash"`
	CompiledClassHash *felt.Felt `json:"compiled_class_hash"`
}

type DeployedContract

type DeployedContract struct {
	Address   *felt.Felt `json:"address"`
	ClassHash *felt.Felt `json:"class_hash"`
}

type EmittedEvent added in v0.3.1

type EmittedEvent struct {
	*Event
	BlockNumber     uint64     `json:"block_number"`
	BlockHash       *felt.Felt `json:"block_hash"`
	TransactionHash *felt.Felt `json:"transaction_hash"`
}

type Entry

type Entry struct {
	Key   *felt.Felt `json:"key"`
	Value *felt.Felt `json:"value"`
}

type EntryPoint added in v0.3.0

type EntryPoint struct {
	Index    *uint64    `json:"function_idx,omitempty"`
	Offset   *felt.Felt `json:"offset,omitempty"`
	Selector *felt.Felt `json:"selector"`
}

type EntryPoints added in v0.3.0

type EntryPoints struct {
	Constructor []EntryPoint `json:"CONSTRUCTOR"`
	External    []EntryPoint `json:"EXTERNAL"`
	L1Handler   []EntryPoint `json:"L1_HANDLER"`
}

type Event

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

type EventFilter added in v0.3.1

type EventFilter struct {
	FromBlock *BlockID     `json:"from_block"`
	ToBlock   *BlockID     `json:"to_block"`
	Address   *felt.Felt   `json:"address"`
	Keys      []*felt.Felt `json:"keys"`
}

type EventsArg added in v0.3.1

type EventsArg struct {
	EventFilter
	ResultPageRequest
}

type EventsChunk added in v0.3.1

type EventsChunk struct {
	Events            []*EmittedEvent `json:"events"`
	ContinuationToken string          `json:"continuation_token,omitempty"`
}

type Handler

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

func New

func New(bcReader blockchain.Reader, synchronizer *sync.Synchronizer, n utils.Network, logger utils.Logger) *Handler

func (*Handler) BlockHashAndNumber added in v0.3.0

func (h *Handler) BlockHashAndNumber() (*BlockHashAndNumber, *jsonrpc.Error)

BlockHashAndNumber returns the block hash and number of the latest synced block.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L517

func (*Handler) BlockNumber

func (h *Handler) BlockNumber() (uint64, *jsonrpc.Error)

BlockNumber returns the latest synced block number.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L500

func (*Handler) BlockTransactionCount added in v0.2.1

func (h *Handler) BlockTransactionCount(id *BlockID) (uint64, *jsonrpc.Error)

BlockTransactionCount returns the number of transactions in a block identified by the given BlockID.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L373

func (*Handler) BlockWithTxHashes added in v0.2.1

func (h *Handler) BlockWithTxHashes(id *BlockID) (*BlockWithTxHashes, *jsonrpc.Error)

BlockWithTxHashes returns the block information with transaction hashes given a block ID.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L11

func (*Handler) BlockWithTxs added in v0.2.1

func (h *Handler) BlockWithTxs(id *BlockID) (*BlockWithTxs, *jsonrpc.Error)

BlockWithTxs returns the block information with full transactions given a block ID.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L44

func (*Handler) ChainID added in v0.2.1

func (h *Handler) ChainID() (*felt.Felt, *jsonrpc.Error)

ChainID returns the chain ID of the currently configured network.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L542

func (*Handler) Class added in v0.3.0

func (h *Handler) Class(id *BlockID, classHash *felt.Felt) (*Class, *jsonrpc.Error)

Class gets the contract class definition in the given block associated with the given hash

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json#L248

func (*Handler) ClassAt added in v0.3.0

func (h *Handler) ClassAt(id *BlockID, address *felt.Felt) (*Class, *jsonrpc.Error)

ClassAt gets the contract class definition in the given block instantiated by the given contract address

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json#L329

func (*Handler) ClassHashAt added in v0.3.0

func (h *Handler) ClassHashAt(id *BlockID, address *felt.Felt) (*felt.Felt, *jsonrpc.Error)

ClassHashAt gets the class hash for the contract deployed at the given address in the given block.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L292

func (*Handler) Events added in v0.3.1

func (h *Handler) Events(args *EventsArg) (*EventsChunk, *jsonrpc.Error)

Events gets the events matching a filter

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/94a969751b31f5d3e25a0c6850c723ddadeeb679/api/starknet_api_openrpc.json#L642

func (*Handler) Nonce added in v0.3.0

func (h *Handler) Nonce(id *BlockID, address *felt.Felt) (*felt.Felt, *jsonrpc.Error)

Nonce returns the nonce associated with the given address in the given block number

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L633

func (*Handler) StateUpdate added in v0.2.1

func (h *Handler) StateUpdate(id *BlockID) (*StateUpdate, *jsonrpc.Error)

StateUpdate returns the state update identified by the given BlockID.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json#L77

func (*Handler) StorageAt added in v0.3.0

func (h *Handler) StorageAt(address, key *felt.Felt, id *BlockID) (*felt.Felt, *jsonrpc.Error)

StorageAt gets the value of the storage at the given address and key.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L110

func (*Handler) Syncing added in v0.3.0

func (h *Handler) Syncing() (*Sync, *jsonrpc.Error)

Syncing returns the syncing status of the node.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L569

func (*Handler) TransactionByBlockIDAndIndex added in v0.2.1

func (h *Handler) TransactionByBlockIDAndIndex(id *BlockID, txIndex int) (*Transaction, *jsonrpc.Error)

TransactionByBlockIDAndIndex returns the details of a transaction identified by the given BlockID and index.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json#L184

func (*Handler) TransactionByHash added in v0.2.1

func (h *Handler) TransactionByHash(hash *felt.Felt) (*Transaction, *jsonrpc.Error)

TransactionByHash returns the details of a transaction identified by the given hash.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json#L158

func (*Handler) TransactionReceiptByHash added in v0.2.1

func (h *Handler) TransactionReceiptByHash(hash *felt.Felt) (*TransactionReceipt, *jsonrpc.Error)

TransactionReceiptByHash returns the receipt of a transaction identified by the given hash.

It follows the specification defined here: https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json#L222

type MsgToL1

type MsgToL1 struct {
	To      common.Address `json:"to_address"`
	Payload []*felt.Felt   `json:"payload"`
}

type Nonce

type Nonce struct {
	ContractAddress *felt.Felt `json:"contract_address"`
	Nonce           *felt.Felt `json:"nonce"`
}

type NumAsHex added in v0.3.0

type NumAsHex uint64

func (NumAsHex) MarshalJSON added in v0.3.0

func (n NumAsHex) MarshalJSON() ([]byte, error)

type ReplacedClass added in v0.2.1

type ReplacedClass struct {
	ContractAddress *felt.Felt `json:"contract_address"`
	ClassHash       *felt.Felt `json:"class_hash"`
}

type ResultPageRequest added in v0.3.1

type ResultPageRequest struct {
	ContinuationToken string `json:"continuation_token"`
	ChunkSize         uint64 `json:"chunk_size" validate:"min=1"`
}

type StateDiff

type StateDiff struct {
	StorageDiffs              []StorageDiff      `json:"storage_diffs"`
	Nonces                    []Nonce            `json:"nonces"`
	DeployedContracts         []DeployedContract `json:"deployed_contracts"`
	DeprecatedDeclaredClasses []*felt.Felt       `json:"deprecated_declared_classes"`
	DeclaredClasses           []DeclaredClass    `json:"declared_classes"`
	ReplacedClasses           []ReplacedClass    `json:"replaced_classes"`
}

type StateUpdate

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

https://github.com/starkware-libs/starknet-specs/blob/8016dd08ed7cd220168db16f24c8a6827ab88317/api/starknet_api_openrpc.json#L909

type Status

type Status uint8

https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L1999-L2008

const (
	StatusPending Status = iota
	StatusAcceptedL2
	StatusAcceptedL1
	StatusRejected
)

func (Status) MarshalJSON

func (s Status) MarshalJSON() ([]byte, error)

type StorageDiff

type StorageDiff struct {
	Address        *felt.Felt `json:"address"`
	StorageEntries []Entry    `json:"storage_entries"`
}

type Sync added in v0.3.0

type Sync struct {
	Syncing             *bool      `json:"-"`
	StartingBlockHash   *felt.Felt `json:"starting_block_hash,omitempty"`
	StartingBlockNumber *NumAsHex  `json:"starting_block_num,omitempty"`
	CurrentBlockHash    *felt.Felt `json:"current_block_hash,omitempty"`
	CurrentBlockNumber  *NumAsHex  `json:"current_block_num,omitempty"`
	HighestBlockHash    *felt.Felt `json:"highest_block_hash,omitempty"`
	HighestBlockNumber  *NumAsHex  `json:"highest_block_num,omitempty"`
}

https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L852

func (Sync) MarshalJSON added in v0.3.0

func (s Sync) MarshalJSON() ([]byte, error)

type Transaction

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

https://github.com/starkware-libs/starknet-specs/blob/a789ccc3432c57777beceaa53a34a7ae2f25fda0/api/starknet_api_openrpc.json#L1252

type TransactionReceipt

type TransactionReceipt struct {
	Type            TransactionType `json:"type"`
	Hash            *felt.Felt      `json:"transaction_hash"`
	ActualFee       *felt.Felt      `json:"actual_fee"`
	Status          Status          `json:"status"`
	BlockHash       *felt.Felt      `json:"block_hash"`
	BlockNumber     uint64          `json:"block_number"`
	MessagesSent    []*MsgToL1      `json:"messages_sent"`
	Events          []*Event        `json:"events"`
	ContractAddress *felt.Felt      `json:"contract_address,omitempty"`
}

https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json#L1871

type TransactionType

type TransactionType uint8
const (
	TxnDeclare TransactionType = iota
	TxnDeploy
	TxnDeployAccount
	TxnInvoke
	TxnL1Handler
)

func (TransactionType) MarshalJSON

func (t TransactionType) MarshalJSON() ([]byte, error)

Jump to

Keyboard shortcuts

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