manifest

package
v0.92.0 Latest Latest
Warning

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

Go to latest
Published: Dec 28, 2020 License: MIT Imports: 11 Imported by: 3

Documentation

Index

Constants

View Source
const (
	// MaxManifestSize is a max length for a valid contract manifest.
	MaxManifestSize = math.MaxUint16

	// MethodInit is a name for default initialization method.
	MethodInit = "_initialize"

	// MethodDeploy is a name for default method called during contract deployment.
	MethodDeploy = "_deploy"

	// MethodVerify is a name for default verification method.
	MethodVerify = "verify"

	// MethodOnPayment is name of the method which is called when contract receives funds.
	MethodOnPayment = "onPayment"

	// NEP10StandardName represents the name of NEP10 smartcontract standard.
	NEP10StandardName = "NEP-10"
	// NEP17StandardName represents the name of NEP17 smartcontract standard.
	NEP17StandardName = "NEP-17"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ABI

type ABI struct {
	Methods []Method `json:"methods"`
	Events  []Event  `json:"events"`
}

ABI represents a contract application binary interface.

func (*ABI) GetEvent added in v0.92.0

func (a *ABI) GetEvent(name string) *Event

GetEvent returns event with the specified name.

func (*ABI) GetMethod added in v0.91.0

func (a *ABI) GetMethod(name string) *Method

GetMethod returns methods with the specified name.

type Event

type Event struct {
	Name       string      `json:"name"`
	Parameters []Parameter `json:"parameters"`
}

Event is a description of a single event.

type Group

type Group struct {
	PublicKey *keys.PublicKey `json:"pubkey"`
	Signature []byte          `json:"signature"`
}

Group represents a group of smartcontracts identified by a public key. Every SC in a group must provide signature of it's hash to prove it belongs to a group.

func (*Group) IsValid added in v0.91.0

func (g *Group) IsValid(h util.Uint160) bool

IsValid checks whether group's signature corresponds to the given hash.

func (*Group) MarshalJSON

func (g *Group) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*Group) UnmarshalJSON

func (g *Group) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler interface.

type Manifest

type Manifest struct {
	// Name is a contract's name.
	Name string `json:"name"`
	// ABI is a contract's ABI.
	ABI ABI `json:"abi"`
	// Groups is a set of groups to which a contract belongs.
	Groups      []Group      `json:"groups"`
	Permissions []Permission `json:"permissions"`
	// SupportedStandards is a list of standards supported by the contract.
	SupportedStandards []string `json:"supportedstandards"`
	// Trusts is a set of hashes to a which contract trusts.
	Trusts WildUint160s `json:"trusts"`
	// Extra is an implementation-defined user data.
	Extra interface{} `json:"extra"`
}

Manifest represens contract metadata.

func DefaultManifest

func DefaultManifest(name string) *Manifest

DefaultManifest returns default contract manifest.

func NewManifest

func NewManifest(name string) *Manifest

NewManifest returns new manifest with necessary fields initialized.

func (*Manifest) CanCall

func (m *Manifest) CanCall(hash util.Uint160, toCall *Manifest, method string) bool

CanCall returns true is current contract is allowed to call method of another contract with specified hash.

func (*Manifest) DecodeBinary

func (m *Manifest) DecodeBinary(r *io.BinReader)

DecodeBinary implements io.Serializable.

func (*Manifest) EncodeBinary

func (m *Manifest) EncodeBinary(w *io.BinWriter)

EncodeBinary implements io.Serializable.

func (*Manifest) IsValid added in v0.91.0

func (m *Manifest) IsValid(hash util.Uint160) bool

IsValid checks whether the hash given is correct wrt manifest's groups.

type Method

type Method struct {
	Name       string                  `json:"name"`
	Offset     int                     `json:"offset"`
	Parameters []Parameter             `json:"parameters"`
	ReturnType smartcontract.ParamType `json:"returntype"`
	Safe       bool                    `json:"safe"`
}

Method represents method's metadata.

type Parameter

type Parameter struct {
	Name string                  `json:"name"`
	Type smartcontract.ParamType `json:"type"`
}

Parameter represents smartcontract's parameter's definition.

func NewParameter

func NewParameter(name string, typ smartcontract.ParamType) Parameter

NewParameter returns new parameter of specified name and type.

type Permission

type Permission struct {
	Contract PermissionDesc `json:"contract"`
	Methods  WildStrings    `json:"methods"`
}

Permission describes which contracts may be invoked and which methods are called.

func NewPermission

func NewPermission(typ PermissionType, args ...interface{}) *Permission

NewPermission returns new permission of a given type.

func (*Permission) IsAllowed

func (p *Permission) IsAllowed(hash util.Uint160, m *Manifest, method string) bool

IsAllowed checks if method is allowed to be executed.

func (*Permission) UnmarshalJSON

func (p *Permission) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler interface.

type PermissionDesc

type PermissionDesc struct {
	Type  PermissionType
	Value interface{}
}

PermissionDesc is a permission descriptor.

func (*PermissionDesc) Group

func (d *PermissionDesc) Group() *keys.PublicKey

Group returns group's public key for group-permission.

func (*PermissionDesc) Hash

func (d *PermissionDesc) Hash() util.Uint160

Hash returns hash for hash-permission.

func (*PermissionDesc) MarshalJSON

func (d *PermissionDesc) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*PermissionDesc) UnmarshalJSON

func (d *PermissionDesc) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler interface.

type PermissionType

type PermissionType uint8

PermissionType represents permission type.

const (
	// PermissionWildcard allows everything.
	PermissionWildcard PermissionType = 0
	// PermissionHash restricts called contracts based on hash.
	PermissionHash PermissionType = 1
	// PermissionGroup restricts called contracts based on public key.
	PermissionGroup PermissionType = 2
)

type WildStrings

type WildStrings struct {
	Value []string
}

WildStrings represents string set which can be wildcard.

func (*WildStrings) Add

func (c *WildStrings) Add(v string)

Add adds v to the container.

func (*WildStrings) Contains

func (c *WildStrings) Contains(v string) bool

Contains checks if v is in the container.

func (*WildStrings) IsWildcard

func (c *WildStrings) IsWildcard() bool

IsWildcard returns true iff container is wildcard.

func (WildStrings) MarshalJSON

func (c WildStrings) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*WildStrings) Restrict

func (c *WildStrings) Restrict()

Restrict transforms container into an empty one.

func (*WildStrings) UnmarshalJSON

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

UnmarshalJSON implements json.Unmarshaler interface.

type WildUint160s

type WildUint160s struct {
	Value []util.Uint160
}

WildUint160s represents Uint160 set which can be wildcard.

func (*WildUint160s) Add

func (c *WildUint160s) Add(v util.Uint160)

Add adds v to the container.

func (*WildUint160s) Contains

func (c *WildUint160s) Contains(v util.Uint160) bool

Contains checks if v is in the container.

func (*WildUint160s) IsWildcard

func (c *WildUint160s) IsWildcard() bool

IsWildcard returns true iff container is wildcard.

func (WildUint160s) MarshalJSON

func (c WildUint160s) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler interface.

func (*WildUint160s) Restrict

func (c *WildUint160s) Restrict()

Restrict transforms container into an empty one.

func (*WildUint160s) UnmarshalJSON

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

UnmarshalJSON implements json.Unmarshaler interface.

Directories

Path Synopsis
Package standard contains interfaces for well-defined standards and function for checking if arbitrary manifest complies with them.
Package standard contains interfaces for well-defined standards and function for checking if arbitrary manifest complies with them.

Jump to

Keyboard shortcuts

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