management

package
v0.106.0 Latest Latest
Warning

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

Go to latest
Published: May 21, 2024 License: MIT Imports: 15 Imported by: 1

Documentation

Overview

Package management provides an RPC wrapper for the native ContractManagement contract.

Safe methods are encapsulated in the ContractReader structure while Contract provides various methods to perform state-changing calls.

Index

Constants

This section is empty.

Variables

Hash stores the hash of the native ContractManagement contract.

Functions

This section is empty.

Types

type Actor

type Actor interface {
	Invoker

	MakeCall(contract util.Uint160, method string, params ...any) (*transaction.Transaction, error)
	MakeRun(script []byte) (*transaction.Transaction, error)
	MakeUnsignedCall(contract util.Uint160, method string, attrs []transaction.Attribute, params ...any) (*transaction.Transaction, error)
	MakeUnsignedRun(script []byte, attrs []transaction.Attribute) (*transaction.Transaction, error)
	SendCall(contract util.Uint160, method string, params ...any) (util.Uint256, uint32, error)
	SendRun(script []byte) (util.Uint256, uint32, error)
}

Actor is used by Contract to create and send transactions.

type Contract

type Contract struct {
	ContractReader
	// contains filtered or unexported fields
}

Contract represents a ContractManagement contract client that can be used to invoke all of its methods except 'update' and 'destroy' because they can be called successfully only from the contract itself (that is doing an update or self-destruction).

func New

func New(actor Actor) *Contract

New creates an instance of Contract to perform actions using the given Actor.

func (*Contract) Deploy

func (c *Contract) Deploy(exe *nef.File, manif *manifest.Manifest, data any) (util.Uint256, uint32, error)

Deploy creates and sends to the network a transaction that deploys the given contract (with the manifest provided), if data is not nil then it also added to the invocation and will be used for "_deploy" method invocation done by the ContractManagement contract. If successful, this method returns deployed contract state that can be retrieved from the stack after execution.

func (*Contract) DeployTransaction

func (c *Contract) DeployTransaction(exe *nef.File, manif *manifest.Manifest, data any) (*transaction.Transaction, error)

DeployTransaction creates and returns a transaction that deploys the given contract (with the manifest provided), if data is not nil then it also added to the invocation and will be used for "_deploy" method invocation done by the ContractManagement contract. If successful, this method returns deployed contract state that can be retrieved from the stack after execution.

func (*Contract) DeployUnsigned

func (c *Contract) DeployUnsigned(exe *nef.File, manif *manifest.Manifest, data any) (*transaction.Transaction, error)

DeployUnsigned creates and returns an unsigned transaction that deploys the given contract (with the manifest provided), if data is not nil then it also added to the invocation and will be used for "_deploy" method invocation done by the ContractManagement contract. If successful, this method returns deployed contract state that can be retrieved from the stack after execution.

func (*Contract) SetMinimumDeploymentFee

func (c *Contract) SetMinimumDeploymentFee(value *big.Int) (util.Uint256, uint32, error)

SetMinimumDeploymentFee creates and sends a transaction that changes the minimum GAS amount required to deploy a contract. This method can be called successfully only by the network's committee, so make sure you're using an appropriate Actor. This invocation returns nothing and is successful when transactions ends up in the HALT state.

func (*Contract) SetMinimumDeploymentFeeTransaction

func (c *Contract) SetMinimumDeploymentFeeTransaction(value *big.Int) (*transaction.Transaction, error)

SetMinimumDeploymentFeeTransaction creates a transaction that changes the minimum GAS amount required to deploy a contract. This method can be called successfully only by the network's committee, so make sure you're using an appropriate Actor. This invocation returns nothing and is successful when transactions ends up in the HALT state. The transaction returned is signed, but not sent to the network.

func (*Contract) SetMinimumDeploymentFeeUnsigned

func (c *Contract) SetMinimumDeploymentFeeUnsigned(value *big.Int) (*transaction.Transaction, error)

SetMinimumDeploymentFeeUnsigned creates a transaction that changes the minimum GAS amount required to deploy a contract. This method can be called successfully only by the network's committee, so make sure you're using an appropriate Actor. This invocation returns nothing and is successful when transactions ends up in the HALT state. The transaction returned is not signed.

type ContractReader

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

ContractReader provides an interface to call read-only ContractManagement contract's methods.

func NewReader

func NewReader(invoker Invoker) *ContractReader

NewReader creates an instance of ContractReader that can be used to read data from the contract.

func (*ContractReader) GetContract

func (c *ContractReader) GetContract(hash util.Uint160) (*state.Contract, error)

GetContract allows to get contract data from its hash. This method is mostly useful for historic invocations since for current contracts there is a direct getcontractstate RPC API that has more options and works faster than going via contract invocation.

func (*ContractReader) GetContractByID added in v0.100.0

func (c *ContractReader) GetContractByID(id int32) (*state.Contract, error)

GetContractByID allows to get contract data from its ID. In case of missing contract it returns nil state.Contract and nil error.

func (*ContractReader) GetContractHashes added in v0.100.0

func (c *ContractReader) GetContractHashes() (*HashesIterator, error)

GetContractHashes returns an iterator that allows to retrieve all ID-hash mappings for non-native contracts. It depends on the server to provide proper session-based iterator, but can also work with expanded one.

func (*ContractReader) GetContractHashesExpanded added in v0.100.0

func (c *ContractReader) GetContractHashesExpanded(num int) ([]IDHash, error)

GetContractHashesExpanded is similar to GetContractHashes (uses the same contract method), but can be useful if the server used doesn't support sessions and doesn't expand iterators. It creates a script that will get num of result items from the iterator right in the VM and return them to you. It's only limited by VM stack and GAS available for RPC invocations.

func (*ContractReader) GetMinimumDeploymentFee

func (c *ContractReader) GetMinimumDeploymentFee() (*big.Int, error)

GetMinimumDeploymentFee returns the minimal amount of GAS needed to deploy a contract on the network.

func (*ContractReader) HasMethod

func (c *ContractReader) HasMethod(hash util.Uint160, method string, pcount int) (bool, error)

HasMethod checks if the contract specified has a method with the given name and number of parameters.

type Event

type Event struct {
	Hash util.Uint160
}

Event is the event emitted on contract deployment/update/destroy. Even though these events are different they all have the same field inside.

type HashesIterator added in v0.100.0

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

HashesIterator is used for iterating over GetContractHashes results.

func (*HashesIterator) Next added in v0.100.0

func (h *HashesIterator) Next(num int) ([]IDHash, error)

Next returns the next set of elements from the iterator (up to num of them). It can return less than num elements in case iterator doesn't have that many or zero elements if the iterator has no more elements or the session is expired.

func (*HashesIterator) Terminate added in v0.100.0

func (h *HashesIterator) Terminate() error

Terminate closes the iterator session used by HashesIterator (if it's session-based).

type IDHash added in v0.100.0

type IDHash struct {
	ID   int32
	Hash util.Uint160
}

IDHash is an ID/Hash pair returned by the iterator from the GetContractHashes method.

type Invoker

type Invoker interface {
	Call(contract util.Uint160, operation string, params ...any) (*result.Invoke, error)
	CallAndExpandIterator(contract util.Uint160, method string, maxItems int, params ...any) (*result.Invoke, error)
	TerminateSession(sessionID uuid.UUID) error
	TraverseIterator(sessionID uuid.UUID, iterator *result.Iterator, num int) ([]stackitem.Item, error)
}

Invoker is used by ContractReader to call various methods.

Jump to

Keyboard shortcuts

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