Documentation ¶
Index ¶
- Constants
- Variables
- func DisableLog()
- func IsEqualPrim(p1, p2 Prim, withAnno bool) bool
- func IsManagerTz(buf []byte) bool
- func KeyHash(buf []byte) tezos.ExprHash
- func Trace(fn func(log LogFn))
- func UnmarshalScriptType(data []byte) (param Type, storage Type, err error)
- func UseLogger(logger logpkg.Logger)
- func UseTrace(fn LogFn)
- type BigmapEvent
- type BigmapEvents
- type Ciphertext
- type Code
- type ConstantDict
- type DiffAction
- type Entrypoint
- type Entrypoints
- type Features
- type GenericEvent
- type Interface
- func (m Interface) Contains(e Entrypoint) bool
- func (m Interface) ContainsStrict(e Entrypoint) bool
- func (m Interface) FuncPrim(name string) Prim
- func (m Interface) FuncType(name string) Type
- func (m Interface) Matches(e Entrypoints) bool
- func (m Interface) MatchesStrict(e Entrypoints) bool
- func (m Interface) String() string
- type Interfaces
- type Key
- func (k Key) Bytes() []byte
- func (k Key) Hash() tezos.ExprHash
- func (k Key) IsPacked() bool
- func (k Key) MarshalBinary() ([]byte, error)
- func (k Key) MarshalJSON() ([]byte, error)
- func (k Key) Prim() Prim
- func (k Key) PrimPtr() *Prim
- func (k Key) String() string
- func (k Key) Unpack() (Key, error)
- func (k Key) UnpackPrim() (p Prim, err error)
- type LazyBigmapEvent
- type LazyEvent
- type LazyEvents
- type LazyKind
- type LazySaplingEvent
- type LogFn
- type OpCode
- type Parameters
- func (p Parameters) Branch(prefix string, eps Entrypoints) string
- func (p *Parameters) DecodeBuffer(buf *bytes.Buffer) error
- func (p Parameters) EncodeBuffer(buf *bytes.Buffer) error
- func (p Parameters) MapEntrypoint(typ Type) (Entrypoint, Prim, error)
- func (p Parameters) MarshalBinary() ([]byte, error)
- func (p Parameters) MarshalJSON() ([]byte, error)
- func (p *Parameters) UnmarshalBinary(data []byte) error
- func (p *Parameters) UnmarshalJSON(data []byte) error
- func (p Parameters) Unwrap(branch string) Prim
- type Prim
- func ASSERT_CMPEQ() Prim
- func DELEGATE_ENTRY() Prim
- func DO_ENTRY() Prim
- func DUUP() Prim
- func IFCMPNEQ(left, right Prim) Prim
- func NewBig(i *big.Int) Prim
- func NewBigmapRef(id int64) Prim
- func NewBigmapRefType(anno string) Prim
- func NewBytes(b []byte) Prim
- func NewCode(c OpCode, args ...Prim) Prim
- func NewCodeAnno(c OpCode, anno string, args ...Prim) Prim
- func NewCombPair(contents ...Prim) Prim
- func NewCombPairType(contents ...Prim) Prim
- func NewInt64(i int64) Prim
- func NewMutez(n tezos.N) Prim
- func NewNat(i *big.Int) Prim
- func NewPair(l, r Prim) Prim
- func NewPairType(l, r Prim, anno ...string) Prim
- func NewPrim(c OpCode, anno ...string) Prim
- func NewSeq(args ...Prim) Prim
- func NewString(s string) Prim
- func TicketValue(v Prim, ticketer tezos.Address, amount tezos.Z) Prim
- func UNPAIR() Prim
- func (p Prim) BuildType() Type
- func (p Prim) CanUnfold(typ Type) bool
- func (p Prim) Clone() Prim
- func (p Prim) Constants() []tezos.ExprHash
- func (p Prim) ContainsOpCode(typ OpCode) bool
- func (p Prim) Decode(v interface{}) error
- func (p *Prim) DecodeBuffer(buf *bytes.Buffer) error
- func (p Prim) Dump() string
- func (p Prim) DumpLimit(n int) string
- func (p Prim) EncodeBuffer(buf *bytes.Buffer) error
- func (p Prim) EncodeJSON(buf *bytes.Buffer)
- func (p Prim) Features() Features
- func (p Prim) FindLabel(label string) (Prim, bool)
- func (p Prim) FindLabels(label string) ([]Prim, bool)
- func (p Prim) FindOpCodes(typ OpCode) ([]Prim, bool)
- func (p Prim) FoldPair() Prim
- func (p Prim) GetFieldAnno() string
- func (p Prim) GetFieldAnnoAny() string
- func (p Prim) GetIndex(index []int) (Prim, error)
- func (p Prim) GetIndexExt(index []int, typ OpCode) (Prim, error)
- func (p Prim) GetPath(path string) (Prim, error)
- func (p Prim) GetPathExt(path string, typ OpCode) (Prim, error)
- func (p Prim) GetTypeAnno() string
- func (p Prim) GetTypeAnnoAny() string
- func (p Prim) GetVarAnno() string
- func (p Prim) GetVarAnnoAny() string
- func (p Prim) GetVarOrFieldAnno() string
- func (p Prim) HasAnno() bool
- func (p Prim) HasFieldAnno() bool
- func (p Prim) HasSimilarChildTypes() bool
- func (p Prim) HasTypeAnno() bool
- func (p Prim) HasVarAnno() bool
- func (p Prim) HasVarOrFieldAnno() bool
- func (p Prim) Hash64() uint64
- func (p Prim) IsConstant() bool
- func (p Prim) IsContainerType() bool
- func (p Prim) IsConvertedComb() bool
- func (p Prim) IsElt() bool
- func (p Prim) IsEmpty() bool
- func (p Prim) IsEmptyBigmap() bool
- func (p Prim) IsEqual(p2 Prim) bool
- func (p Prim) IsEqualWithAnno(p2 Prim) bool
- func (p Prim) IsInstruction() bool
- func (p Prim) IsLambda() bool
- func (p Prim) IsList() bool
- func (p Prim) IsMap() bool
- func (p Prim) IsNil() bool
- func (p Prim) IsPacked() bool
- func (p Prim) IsPackedAny() bool
- func (p Prim) IsPair() bool
- func (p Prim) IsScalar() bool
- func (p Prim) IsScalarType() bool
- func (p Prim) IsSequence() bool
- func (p Prim) IsSet() bool
- func (p Prim) IsTicket() bool
- func (p Prim) IsValid() bool
- func (p Prim) LabelIndex(label string) ([]int, bool)
- func (p Prim) LooksLikeCode() bool
- func (p Prim) LooksLikeContainer() bool
- func (p Prim) LooksLikeMap() bool
- func (p Prim) LooksLikeSet() bool
- func (p Prim) MarshalBinary() ([]byte, error)
- func (p Prim) MarshalJSON() ([]byte, error)
- func (p Prim) MatchesAnno(anno string) bool
- func (p Prim) MigrateToBabylonStorage(managerHash []byte) Prim
- func (p Prim) Pack() []byte
- func (p Prim) Size() int
- func (p *Prim) StripAnno(name string)
- func (p Prim) UnfoldPair(typ Type) []Prim
- func (p Prim) UnfoldPairRecursive(typ Type) []Prim
- func (p *Prim) UnmarshalBinary(data []byte) error
- func (p *Prim) UnmarshalJSON(data []byte) error
- func (p Prim) Unpack() (pp Prim, err error)
- func (p Prim) UnpackAll() (Prim, error)
- func (p *Prim) UnpackJSON(val interface{}) error
- func (p *Prim) UnpackPrimitive(val map[string]interface{}) error
- func (p *Prim) UnpackScalar(val interface{}) error
- func (p *Prim) UnpackSequence(val []interface{}) error
- func (p Prim) Value(as OpCode) interface{}
- func (p *Prim) Visit(f PrimVisitorFunc) error
- func (p Prim) Walk(f PrimWalkerFunc) error
- func (p Prim) WithAnno(anno string) Prim
- type PrimList
- type PrimMarshaler
- type PrimType
- type PrimUnmarshaler
- type PrimVisitorFunc
- type PrimWalkerFunc
- type SaplingDiffElem
- type SaplingUpdate
- type Script
- func (s Script) BigmapTypesByName() map[string]Type
- func (s Script) BigmapsById() []int64
- func (s Script) BigmapsByName() map[string]int64
- func (s Script) CodeHash() uint64
- func (s Script) Constants() []tezos.ExprHash
- func (p *Script) DecodeBuffer(buf *bytes.Buffer) error
- func (p Script) EncodeBuffer(buf *bytes.Buffer) error
- func (s Script) Entrypoints(withPrim bool) (Entrypoints, error)
- func (s *Script) ExpandConstants(dict ConstantDict)
- func (s *Script) Features() Features
- func (s *Script) Implements(i Interface) bool
- func (s *Script) ImplementsStrict(i Interface) bool
- func (s Script) InterfaceHash() uint64
- func (s *Script) Interfaces() Interfaces
- func (s *Script) InterfacesStrict() Interfaces
- func (s Script) IsValid() bool
- func (p Script) MarshalBinary() ([]byte, error)
- func (s *Script) MigrateToBabylonAddDo(managerHash []byte)
- func (s *Script) MigrateToBabylonSetDelegate(managerHash []byte)
- func (s Script) ParamType() Type
- func (s Script) ResolveEntrypointPath(name string) string
- func (s Script) StorageHash() uint64
- func (s Script) StorageType() Type
- func (p *Script) UnmarshalBinary(data []byte) error
- func (s Script) Views(withPrim, withCode bool) (Views, error)
- type Stack
- type Type
- func (t Type) Clone() Type
- func (t Type) Entrypoints(withPrim bool) (Entrypoints, error)
- func (t Type) HasLabel() bool
- func (t Type) IsEqual(t2 Type) bool
- func (t Type) IsEqualWithAnno(t2 Type) bool
- func (t Type) Label() string
- func (t Type) Left() Type
- func (t Type) MarshalJSON() ([]byte, error)
- func (t Type) ResolveEntrypointPath(name string) string
- func (t Type) Right() Type
- func (t Type) Typedef(name string) Typedef
- func (t Type) TypedefPtr(name string) *Typedef
- func (t *Type) UnmarshalBinary(buf []byte) error
- func (t *Type) UnmarshalJSON(buf []byte) error
- type Typedef
- type Value
- func (v *Value) Decode(buf []byte) error
- func (e Value) Dump() string
- func (e Value) DumpLimit(n int) string
- func (e Value) DumpTo(w io.Writer)
- func (e *Value) FixType()
- func (v *Value) GetAddress(label string) (tezos.Address, bool)
- func (v *Value) GetBig(label string) (*big.Int, bool)
- func (v *Value) GetBool(label string) (bool, bool)
- func (v *Value) GetBytes(label string) ([]byte, bool)
- func (v *Value) GetInt64(label string) (int64, bool)
- func (v *Value) GetKey(label string) (tezos.Key, bool)
- func (v *Value) GetSignature(label string) (tezos.Signature, bool)
- func (v *Value) GetString(label string) (string, bool)
- func (v *Value) GetTime(label string) (time.Time, bool)
- func (v *Value) GetValue(label string) (interface{}, bool)
- func (v *Value) GetZ(label string) (*tezos.Z, bool)
- func (v Value) IsPacked() bool
- func (v Value) IsPackedAny() bool
- func (e *Value) Map() (interface{}, error)
- func (e Value) MarshalJSON() ([]byte, error)
- func (v *Value) Unmarshal(val interface{}) error
- func (v Value) Unpack() (Value, error)
- func (v Value) UnpackAll() (Value, error)
- func (v *Value) Walk(label string, fn ValueWalkerFunc) error
- type ValueWalkerFunc
- type View
- func (v View) Clone() View
- func (v View) IsEqual(v2 View) bool
- func (v View) IsEqualWithAnno(v2 View) bool
- func (v View) IsEqualWithCode(v2 View) bool
- func (v View) IsValid() bool
- func (v View) MarshalJSON() ([]byte, error)
- func (v View) Typedef() Typedef
- func (v View) TypedefPtr(name string) *Typedef
- type Views
Constants ¶
const ( TypeAnnoPrefix = ":" VarAnnoPrefix = "%" FieldAnnoPrefix = "@" )
const ( TypeStruct = "struct" TypeUnion = "union" )
Extra Types
const ( CONST_ENTRYPOINT = "@entrypoint" CONST_KEY = "@key" CONST_VALUE = "@value" CONST_ITEM = "@item" CONST_PARAM = "@param" CONST_RETURN = "@return" CONST_UNION_LEFT = "@or_0" CONST_UNION_RIGHT = "@or_1" )
Default names
const ( EMPTY_LABEL = `@%%@` // illegal Michelson annotation value RENDER_TYPE_PRIM = 0 // silently output primitive tree instead if human-readable RENDER_TYPE_FAIL = 1 // return error if human-readable formatting fails RENDER_TYPE_PANIC = 2 // panic with error if human-readable formatting fails )
const PATH_SEPARATOR = "."
Variables ¶
var ( IManager = Interface("MANAGER") ISetDelegate = Interface("SET_DELEGATE") ITzip5 = Interface("TZIP-005") ITzip7 = Interface("TZIP-007") ITzip12 = Interface("TZIP-012") WellKnownInterfaces = []Interface{ IManager, ISetDelegate, ITzip5, ITzip7, ITzip12, } )
var ( InvalidPrim = Prim{} EmptyPrim = Prim{Type: PrimNullary, OpCode: 255} )
var BigmapRefType = Prim{ Type: PrimNullary, OpCode: T_INT, }
var InterfaceSpecs = map[Interface][]Prim{ IManager: []Prim{ NewCodeAnno(T_LAMBDA, "%do", NewCode(T_UNIT), NewCode(T_LIST, NewCode(T_OPERATION))), NewCodeAnno(T_UNIT, "%default"), }, ISetDelegate: []Prim{ NewCodeAnno(T_OPTION, "%setDelegate", NewCode(T_KEY_HASH)), }, ITzip5: []Prim{ NewPairType( NewCodeAnno(T_ADDRESS, ":from"), NewPairType( NewCodeAnno(T_ADDRESS, ":to"), NewCodeAnno(T_NAT, ":value"), ), "%transfer", ), NewPairType( NewCodeAnno(T_ADDRESS, ":owner"), NewCode(T_CONTRACT, NewCode(T_NAT)), "%getBalance", ), NewPairType( NewCode(T_UNIT), NewCode(T_CONTRACT, NewCode(T_NAT)), "%getTotalSupply", ), }, ITzip7: []Prim{ NewPairType( NewCodeAnno(T_ADDRESS, ":from"), NewPairType( NewCodeAnno(T_ADDRESS, ":to"), NewCodeAnno(T_NAT, ":value"), ), "%transfer", ), NewPairType( NewCodeAnno(T_ADDRESS, ":spender"), NewCodeAnno(T_NAT, ":value"), "%approve", ), NewPairType( NewPairType( NewCodeAnno(T_ADDRESS, ":owner"), NewCodeAnno(T_ADDRESS, ":spender"), ), NewCode(T_CONTRACT, NewCode(T_NAT)), "%getAllowance", ), NewPairType( NewCodeAnno(T_ADDRESS, ":owner"), NewCode(T_CONTRACT, NewCode(T_NAT)), "%getBalance", ), NewPairType( NewCode(T_UNIT), NewCode(T_CONTRACT, NewCode(T_NAT)), "%getTotalSupply", ), }, ITzip12: []Prim{ NewCodeAnno(T_LIST, "%transfer", NewPairType( NewCodeAnno(T_ADDRESS, "%from_"), NewCodeAnno(T_LIST, "%txs", NewPairType( NewCodeAnno(T_ADDRESS, "%to_"), NewPairType( NewCodeAnno(T_NAT, "%token_id"), NewCodeAnno(T_NAT, "%amount"), ), ), ), ), ), NewPairType( NewCodeAnno(T_LIST, "%requests", NewPairType( NewCodeAnno(T_ADDRESS, "%owner"), NewCodeAnno(T_NAT, "%token_id"), ), ), NewCodeAnno(T_CONTRACT, "%callback", NewCode(T_LIST, NewPairType( NewPairType( NewCodeAnno(T_ADDRESS, "%owner"), NewCodeAnno(T_NAT, "%token_id"), "%request", ), NewCodeAnno(T_NAT, "%balance"), ), ), ), "%balance_of", ), NewCodeAnno(T_LIST, "%update_operators", NewCode(T_OR, NewPairType( NewCodeAnno(T_ADDRESS, "%owner"), NewPairType( NewCodeAnno(T_ADDRESS, "%operator"), NewCodeAnno(T_NAT, "%token_id"), ), "%add_operator", ), NewPairType( NewCodeAnno(T_ADDRESS, "%owner"), NewPairType( NewCodeAnno(T_ADDRESS, "%operator"), NewCodeAnno(T_NAT, "%token_id"), ), "%remove_operator", ), ), ), }, }
WellKnownInterfaces contains entrypoint types for standard call interfaces and other known contracts.
var PrimSkip = errors.New("skip branch")
Functions ¶
func DisableLog ¶
func DisableLog()
DisableLog disables all library log output. Logging output is disabled by default until either UseLogger or SetLogWriter are called.
func IsEqualPrim ¶
func IsManagerTz ¶
func Trace ¶ added in v0.11.2
func Trace(fn func(log LogFn))
Trace is a function closure wrapper that forwards trace calls to an output function if set. Call UseTrace() to set a function of type LogFn
func UnmarshalScriptType ¶ added in v0.17.3
UnmarshalScriptType is an optimized binary unmarshaller which decodes type trees only. Use this to access smart contract types when script and storage are not required.
Types ¶
type BigmapEvent ¶ added in v0.17.3
type BigmapEvent struct { Action DiffAction `json:"action"` Id int64 `json:"big_map,string"` KeyHash tezos.ExprHash `json:"key_hash"` // update/remove Key Prim `json:"key"` // update/remove Value Prim `json:"value"` // update KeyType Prim `json:"key_type"` // alloc ValueType Prim `json:"value_type"` // alloc SourceId int64 `json:"source_big_map,string"` // copy DestId int64 `json:"destination_big_map,string"` // copy }
func (BigmapEvent) Encoding ¶ added in v0.17.3
func (e BigmapEvent) Encoding() PrimType
func (BigmapEvent) GetKey ¶ added in v0.17.3
func (e BigmapEvent) GetKey(typ Type) Key
func (BigmapEvent) GetKeyPtr ¶ added in v0.17.3
func (e BigmapEvent) GetKeyPtr(typ Type) *Key
func (BigmapEvent) MarshalJSON ¶ added in v0.17.3
func (e BigmapEvent) MarshalJSON() ([]byte, error)
func (*BigmapEvent) UnmarshalJSON ¶ added in v0.17.3
func (e *BigmapEvent) UnmarshalJSON(data []byte) error
type BigmapEvents ¶ added in v0.17.3
type BigmapEvents []BigmapEvent
func (BigmapEvents) MarshalBinary ¶ added in v0.17.3
func (b BigmapEvents) MarshalBinary() ([]byte, error)
func (*BigmapEvents) UnmarshalBinary ¶ added in v0.17.3
func (b *BigmapEvents) UnmarshalBinary(data []byte) error
type Ciphertext ¶
type Ciphertext struct { Cv []byte Epk []byte PayloadEnc []byte NonceEnc []byte PayloadOut []byte NonceOut []byte }
func (*Ciphertext) UnmarshalJSON ¶
func (c *Ciphertext) UnmarshalJSON(data []byte) error
type Code ¶
type Code struct { Param Prim // call types Storage Prim // storage types Code Prim // program code View Prim // view code (i.e. list of views, may be empty) BadCode Prim // catch-all for ill-formed contracts }
func (Code) MarshalBinary ¶
func (Code) MarshalJSON ¶
func (*Code) UnmarshalBinary ¶
func (*Code) UnmarshalJSON ¶
type ConstantDict ¶ added in v0.11.0
func (*ConstantDict) Add ¶ added in v0.11.0
func (d *ConstantDict) Add(address tezos.ExprHash, value Prim)
func (ConstantDict) Get ¶ added in v0.11.0
func (d ConstantDict) Get(address tezos.ExprHash) (Prim, bool)
type DiffAction ¶
type DiffAction byte
const ( DiffActionUpdate DiffAction = iota DiffActionRemove DiffActionCopy DiffActionAlloc )
func ParseDiffAction ¶
func ParseDiffAction(data string) (DiffAction, error)
func (DiffAction) MarshalText ¶
func (a DiffAction) MarshalText() ([]byte, error)
func (DiffAction) String ¶
func (a DiffAction) String() string
func (*DiffAction) UnmarshalText ¶
func (a *DiffAction) UnmarshalText(data []byte) error
type Entrypoint ¶
type Entrypoint struct { Id int `json:"id"` Name string `json:"name"` Branch string `json:"branch"` Typedef []Typedef `json:"type"` Prim *Prim `json:"prim,omitempty"` }
func (Entrypoint) IsCallback ¶ added in v0.17.3
func (e Entrypoint) IsCallback() bool
func (Entrypoint) Type ¶
func (e Entrypoint) Type() Type
type Entrypoints ¶
type Entrypoints map[string]Entrypoint
func (Entrypoints) FindBranch ¶
func (e Entrypoints) FindBranch(branch string) (Entrypoint, bool)
func (Entrypoints) FindId ¶
func (e Entrypoints) FindId(id int) (Entrypoint, bool)
type GenericEvent ¶ added in v0.17.3
func (*GenericEvent) Id ¶ added in v0.17.3
func (d *GenericEvent) Id() int64
func (*GenericEvent) Kind ¶ added in v0.17.3
func (d *GenericEvent) Kind() LazyKind
type Interface ¶
type Interface string
func (Interface) Contains ¶ added in v0.17.3
func (m Interface) Contains(e Entrypoint) bool
func (Interface) ContainsStrict ¶ added in v0.17.3
func (m Interface) ContainsStrict(e Entrypoint) bool
func (Interface) Matches ¶
func (m Interface) Matches(e Entrypoints) bool
Checks if a contract implements all entrypoints required by a standard interface without requiring argument labels to match. This is a looser definition of interface compliance, but in line with the Michelson type system which ignores annotation labels for type equality.
This check uses extracted Typedefs to avoid issues when the Micheline primitive structure diverges from the defined interface (e.g. due to comb type unfolding).
func (Interface) MatchesStrict ¶ added in v0.17.3
func (m Interface) MatchesStrict(e Entrypoints) bool
Checks if a contract strictly implements all standard interface entrypoints including argument types and argument names (annotations).
This check uses extracted Typedefs to avoid issues when the Micheline primitive structure diverges from the defined interface (e.g. due to comb type unfolding).
type Interfaces ¶
type Interfaces []Interface
func (Interfaces) Contains ¶
func (i Interfaces) Contains(x Interface) bool
func (Interfaces) MarshalJSON ¶
func (i Interfaces) MarshalJSON() ([]byte, error)
func (Interfaces) MarshalText ¶
func (i Interfaces) MarshalText() ([]byte, error)
func (*Interfaces) Parse ¶
func (i *Interfaces) Parse(s string) error
func (Interfaces) String ¶
func (i Interfaces) String() string
func (*Interfaces) UnmarshalText ¶
func (i *Interfaces) UnmarshalText(b []byte) error
type Key ¶
type Key struct { Type Type // TODO: refactor into simple Prim IntKey *big.Int StringKey string BytesKey []byte BoolKey bool AddrKey tezos.Address KeyKey tezos.Key SignatureKey tezos.Signature TimeKey time.Time PrimKey Prim }
Comparable key as used in bigmaps and maps
func (Key) MarshalBinary ¶
func (Key) MarshalJSON ¶
func (Key) UnpackPrim ¶
type LazyBigmapEvent ¶ added in v0.17.3
type LazyBigmapEvent struct { BigmapId int64 `json:"id,string"` Diff struct { Action DiffAction `json:"action"` Updates []struct { KeyHash tezos.ExprHash `json:"key_hash"` // update/remove Key Prim `json:"key"` // update/remove Value Prim `json:"value"` // update } `json:"updates"` // update KeyType Prim `json:"key_type"` // alloc ValueType Prim `json:"value_type"` // alloc SourceId int64 `json:"source,string"` // copy } `json:"diff"` }
func (*LazyBigmapEvent) Id ¶ added in v0.17.3
func (d *LazyBigmapEvent) Id() int64
func (*LazyBigmapEvent) Kind ¶ added in v0.17.3
func (d *LazyBigmapEvent) Kind() LazyKind
type LazyEvents ¶ added in v0.17.3
type LazyEvents []LazyEvent
func (LazyEvents) BigmapEvents ¶ added in v0.17.3
func (d LazyEvents) BigmapEvents() BigmapEvents
func (*LazyEvents) UnmarshalJSON ¶ added in v0.17.3
func (d *LazyEvents) UnmarshalJSON(data []byte) error
type LazyKind ¶ added in v0.17.3
type LazyKind string
func ParseLazyKind ¶ added in v0.17.3
func (LazyKind) MarshalText ¶ added in v0.17.3
func (*LazyKind) UnmarshalText ¶ added in v0.17.3
type LazySaplingEvent ¶ added in v0.17.3
type LazySaplingEvent struct { PoolId int64 `json:"id,string"` Diff SaplingDiffElem `json:"diff"` }
func (*LazySaplingEvent) Id ¶ added in v0.17.3
func (d *LazySaplingEvent) Id() int64
func (*LazySaplingEvent) Kind ¶ added in v0.17.3
func (d *LazySaplingEvent) Kind() LazyKind
type LogFn ¶ added in v0.11.2
LogFn is a shot alias for a log function of type func(string, interface...)
type OpCode ¶
type OpCode byte
const ( // Keys K_PARAMETER OpCode = iota // 00 K_STORAGE // 01 K_CODE // 02 // Data D_FALSE // 03 D_ELT // 04 D_LEFT // 05 D_NONE // 06 D_PAIR // 07 D_RIGHT // 08 D_SOME // 09 D_TRUE // 0A D_UNIT // 0B // instructions I_PACK // 0C I_UNPACK // 0D I_BLAKE2B // 0E I_SHA256 // 0F I_SHA512 // 10 I_ABS // 11 I_ADD // 12 I_AMOUNT // 13 I_AND // 14 I_BALANCE // 15 I_CAR // 16 I_CDR // 17 I_CHECK_SIGNATURE // 18 I_COMPARE // 19 I_CONCAT // 1A I_CONS // 1B I_CREATE_ACCOUNT // 1C I_CREATE_CONTRACT // 1D I_IMPLICIT_ACCOUNT // 1E I_DIP // 1F I_DROP // 20 I_DUP // 21 I_EDIV // 22 I_EMPTY_MAP // 23 I_EMPTY_SET // 24 I_EQ // 25 I_EXEC // 26 I_FAILWITH // 27 I_GE // 28 I_GET // 29 I_GT // 2A I_HASH_KEY // 2B I_IF // 2C I_IF_CONS // 2D I_IF_LEFT // 2E I_IF_NONE // 2F I_INT // 30 I_LAMBDA // 31 I_LE // 32 I_LEFT // 33 I_LOOP // 34 I_LSL // 35 I_LSR // 36 I_LT // 37 I_MAP // 38 I_MEM // 39 I_MUL // 3A I_NEG // 3B I_NEQ // 3C I_NIL // 3D I_NONE // 3E I_NOT // 3F I_NOW // 40 I_OR // 41 I_PAIR // 42 I_PUSH // 43 I_RIGHT // 44 I_SIZE // 45 I_SOME // 46 I_SOURCE // 47 I_SENDER // 48 I_SELF // 49 I_STEPS_TO_QUOTA // 4A I_SUB // 4B I_SWAP // 4C I_TRANSFER_TOKENS // 4D I_SET_DELEGATE // 4E I_UNIT // 4F I_UPDATE // 50 I_XOR // 51 I_ITER // 52 I_LOOP_LEFT // 53 I_ADDRESS // 54 I_CONTRACT // 55 I_ISNAT // 56 I_CAST // 57 I_RENAME // 58 // Types T_BOOL // 59 T_CONTRACT // 5A T_INT // 5B T_KEY // 5C T_KEY_HASH // 5D T_LAMBDA // 5E T_LIST // 5F T_MAP // 60 T_BIG_MAP // 61 T_NAT // 62 T_OPTION // 63 T_OR // 64 T_PAIR // 65 T_SET // 66 T_SIGNATURE // 67 T_STRING // 68 T_BYTES // 69 T_MUTEZ // 6A T_TIMESTAMP // 6B T_UNIT // 6C T_OPERATION // 6D T_ADDRESS // 6E // v002 addition I_SLICE // 6F // v005 addition // https://blog.nomadic-labs.com/michelson-updates-in-005.html I_DIG // 70 I_DUG // 71 I_EMPTY_BIG_MAP // 72 I_APPLY // 73 T_CHAIN_ID // 74 I_CHAIN_ID // 75 // v008 additions I_LEVEL // 76 I_SELF_ADDRESS // 77 T_NEVER // 78 I_NEVER // 79 I_UNPAIR // 7A I_VOTING_POWER // 7B I_TOTAL_VOTING_POWER // 7C I_KECCAK // 7D I_SHA3 // 7E I_PAIRING_CHECK // 7F T_BLS12_381_G1 // 80 T_BLS12_381_G2 // 81 T_BLS12_381_FR // 82 T_SAPLING_STATE // 83 I_SAPLING_EMPTY_STATE // 85 I_SAPLING_VERIFY_UPDATE // 86 T_TICKET // 87 I_TICKET // 88 I_READ_TICKET // 89 I_SPLIT_TICKET // 8A I_JOIN_TICKETS // 8B I_GET_AND_UPDATE // 8C // v011 additions T_CHEST // 8D T_CHEST_KEY // 8E I_OPEN_CHEST // 8F I_VIEW // 90 K_VIEW // 91 H_CONSTANT // 92 // v012 additions I_SUB_MUTEZ // 93 // v013 additions T_TX_ROLLUP_L2_ADDRESS // 94 I_MIN_BLOCK_TIME // 95 T_SAPLING_TRANSACTION // 96 )
Michelson V1 Primitives
func InferKeyType ¶
func ParseKeyType ¶
func ParseOpCode ¶
func (OpCode) IsTypeCode ¶
func (OpCode) MarshalText ¶
type Parameters ¶
func (Parameters) Branch ¶
func (p Parameters) Branch(prefix string, eps Entrypoints) string
func (*Parameters) DecodeBuffer ¶ added in v0.17.3
func (p *Parameters) DecodeBuffer(buf *bytes.Buffer) error
func (Parameters) EncodeBuffer ¶ added in v0.17.3
func (p Parameters) EncodeBuffer(buf *bytes.Buffer) error
func (Parameters) MapEntrypoint ¶
func (p Parameters) MapEntrypoint(typ Type) (Entrypoint, Prim, error)
func (Parameters) MarshalBinary ¶
func (p Parameters) MarshalBinary() ([]byte, error)
func (Parameters) MarshalJSON ¶
func (p Parameters) MarshalJSON() ([]byte, error)
func (*Parameters) UnmarshalBinary ¶
func (p *Parameters) UnmarshalBinary(data []byte) error
func (*Parameters) UnmarshalJSON ¶
func (p *Parameters) UnmarshalJSON(data []byte) error
func (Parameters) Unwrap ¶
func (p Parameters) Unwrap(branch string) Prim
type Prim ¶
type Prim struct { Type PrimType // primitive type OpCode OpCode // primitive opcode (invalid on sequences, strings, bytes, int) Args PrimList // optional arguments Anno []string // optional type annotations Int *big.Int // optional data String string // optional data Bytes []byte // optional data WasPacked bool // true when content was unpacked (and no type info is available) }
func NewBigmapRef ¶
func NewBigmapRefType ¶
func NewCombPair ¶ added in v0.17.3
func NewCombPairType ¶ added in v0.17.3
func NewPairType ¶
func TicketValue ¶ added in v0.17.3
Wraps ticket content into structure that is compatible with ticket type. This is necessary for transfer_ticket calls which use explicit fields for value, amount and ticketer.
func (Prim) CanUnfold ¶
Detects whether a primitive contains a regular pair or any form of container type. Pairs can be unfolded into flat sequences.
func (Prim) ContainsOpCode ¶
func (Prim) EncodeJSON ¶ added in v0.17.3
func (Prim) GetFieldAnno ¶
func (Prim) GetFieldAnnoAny ¶
prefers FieldAnno, first anno otherwise
func (Prim) GetIndexExt ¶ added in v0.17.3
func (Prim) GetPathExt ¶ added in v0.17.3
func (Prim) GetTypeAnno ¶
func (Prim) GetTypeAnnoAny ¶
prefers TypeAnno, first anno otherwise
func (Prim) GetVarAnno ¶
func (Prim) GetVarAnnoAny ¶
prefers VarAnno, first anno otherwise
func (Prim) GetVarOrFieldAnno ¶ added in v0.9.2
func (Prim) HasFieldAnno ¶
func (Prim) HasSimilarChildTypes ¶ added in v0.9.9
Checks if all children have the same type by generating a type tree from values. Can be used to identfy containers based on the existence of similar records.
Works for simple and nested primitives but may mis-detect ambiguous simple types like PrimInt (used for int, nat, timestamp, mutez), or PrimString resp. PrimBytes. May also misdetect when optional types like T_OR, T_OPTION are used and their values are nil since we cannot detect embedded type here.
func (Prim) HasTypeAnno ¶
func (Prim) HasVarAnno ¶
func (Prim) HasVarOrFieldAnno ¶ added in v0.9.2
func (Prim) IsConstant ¶ added in v0.11.0
func (Prim) IsContainerType ¶
func (Prim) IsConvertedComb ¶
Checks if a Prim looks like an optimized (i.e. flat) comb sequence.
func (Prim) IsEmptyBigmap ¶ added in v0.9.9
func (Prim) IsEqualWithAnno ¶
func (Prim) IsInstruction ¶ added in v0.10.1
func (Prim) IsPacked ¶
Checks if a primitve contains a packed value such as a byte sequence generated with PACK (starting with 0x05), an address or ascii/utf string.
func (Prim) IsPackedAny ¶
func (Prim) IsScalar ¶
returns true when the prim can be expressed as a single value key/value pairs (ie. prims with annots) do not fit into this category used when mapping complex big map values to JSON objects
func (Prim) IsScalarType ¶
func (Prim) IsSequence ¶
func (Prim) LooksLikeCode ¶ added in v0.11.2
Checks if a Prim looks like a lambda type.
func (Prim) LooksLikeContainer ¶
Checks if a Prim looks like a container type. This is necessary to distinguish optimized comb pairs from other container types.
func (Prim) LooksLikeMap ¶
func (Prim) LooksLikeSet ¶
func (Prim) MarshalBinary ¶
func (Prim) MarshalJSON ¶
func (Prim) MatchesAnno ¶
func (Prim) MigrateToBabylonStorage ¶
func (Prim) Pack ¶ added in v0.17.3
Packs produces a packed serialization for of a primitive's contents that is prefixed with a 0x5 byte.
func (Prim) UnfoldPair ¶
Converts a pair tree into a flat sequence. While Michelson optimized comb pairs are only used for right-side combs, this function applies to all pairs. It makes use of the type definition to identify which contained type is a regular pair, an already unfolded pair sequence or anther container type.
- Works both on value trees and type trees. - When called on already converted comb sequences this function is a noop.
func (Prim) UnfoldPairRecursive ¶ added in v0.9.9
func (*Prim) UnmarshalBinary ¶
func (*Prim) UnmarshalJSON ¶
func (Prim) Unpack ¶
Unpacks all primitive contents that looks like packed and returns a new primitive tree.
func (*Prim) UnpackJSON ¶
func (*Prim) UnpackPrimitive ¶
func (*Prim) UnpackScalar ¶
func (*Prim) UnpackSequence ¶
func (*Prim) Visit ¶
func (p *Prim) Visit(f PrimVisitorFunc) error
Visit traverses the prim tree in pre-order and allows the callback to alter the contents of a visited node.
func (Prim) Walk ¶
func (p Prim) Walk(f PrimWalkerFunc) error
Walk traverses the prim tree in pre-order in read-only mode, forwarding value copies to the callback.
type PrimMarshaler ¶ added in v0.17.3
type PrimType ¶
type PrimType byte
const ( PrimInt PrimType = iota // 00 {name: 'int'} PrimString // 01 {name: 'string'} PrimSequence // 02 [] PrimNullary // 03 {name: 'prim', len: 0, annots: false}, PrimNullaryAnno // 04 {name: 'prim', len: 0, annots: true}, PrimUnary // 05 {name: 'prim', len: 1, annots: false}, PrimUnaryAnno // 06 {name: 'prim', len: 1, annots: true}, PrimBinary // 07 {name: 'prim', len: 2, annots: false}, PrimBinaryAnno // 08 {name: 'prim', len: 2, annots: true}, PrimVariadicAnno // 09 {name: 'prim', len: n, annots: true}, PrimBytes // 0A {name: 'bytes' } )
func ParsePrimType ¶
func (PrimType) MarshalText ¶
type PrimUnmarshaler ¶ added in v0.17.3
type PrimVisitorFunc ¶
PrimWalkerFunc is the callback function signature used while traversing a prim tree. The callback may change the contents of the visited node, including altering nested child nodes and annotations.
type PrimWalkerFunc ¶
PrimWalkerFunc is the callback function signature used while traversing a prim tree in read-only mode.
type SaplingDiffElem ¶
type SaplingDiffElem struct { Action DiffAction `json:"action"` Updates SaplingUpdate `json:"updates"` MemoSize int `json:"memo_size"` }
type SaplingUpdate ¶
type SaplingUpdate struct { Commitments [][]byte `json:"commitments"` Ciphertexts []Ciphertext `json:"ciphertexts"` Nullifiers [][]byte `json:"nullifiers"` }
type Script ¶
type Script struct { Code Code `json:"code"` // code section, i.e. parameter & storage types, code Storage Prim `json:"storage"` // data section, i.e. initial contract storage }
func MakeManagerScript ¶
func (Script) BigmapTypesByName ¶ added in v0.9.8
Returns a named map containing all bigmaps defined in contracts storgae spec. Names are derived from Michelson type annotations and if missing, a sequence number. Optionally appends a sequence number to prevent duplicate names.
func (Script) BigmapsById ¶
Returns a list of bigmaps referenced by a contracts current storage. Note that in rare cases when storage type uses a T_OR branch above its bigmap type definitions and the relevant branch is inactive/hidden the storage value lacks bigmap references and this function will return an empty list, even though bigmaps exist.
func (Script) BigmapsByName ¶
Returns a named map containing all bigmaps currently referenced by a contracts storage value. Names are derived from Michelson type annotations and if missing, a sequence number. Optionally appends a sequence number to prevent duplicate names.
func (Script) CodeHash ¶
Returns the first 4 bytes of the SHA256 hash from a binary encoded code section of a contract.
func (*Script) DecodeBuffer ¶ added in v0.17.3
func (Script) Entrypoints ¶
func (s Script) Entrypoints(withPrim bool) (Entrypoints, error)
func (*Script) ExpandConstants ¶ added in v0.11.0
func (s *Script) ExpandConstants(dict ConstantDict)
func (*Script) Implements ¶
func (*Script) ImplementsStrict ¶ added in v0.17.3
func (Script) InterfaceHash ¶
Returns the first 4 bytes of the SHA256 hash from a binary encoded parameter type definition. This value is sufficiently unique to identify contracts with exactly the same entrypoints including annotations.
To identify syntactically equal entrypoints with or without annotations use `IsEqual()`, `IsEqualWithAnno()` or `IsEqualPrim()`.
func (*Script) Interfaces ¶
func (s *Script) Interfaces() Interfaces
func (*Script) InterfacesStrict ¶ added in v0.17.3
func (s *Script) InterfacesStrict() Interfaces
func (Script) MarshalBinary ¶
func (*Script) MigrateToBabylonAddDo ¶
Patch params, storage and code
func (*Script) MigrateToBabylonSetDelegate ¶
func (Script) ResolveEntrypointPath ¶ added in v0.11.0
func (Script) StorageHash ¶
Returns the first 4 bytes of the SHA256 hash from a binary encoded storage type definition. This value is sufficiently unique to identify contracts with exactly the same entrypoints including annotations.
func (Script) StorageType ¶
func (*Script) UnmarshalBinary ¶
type Type ¶
type Type struct {
Prim
}
func NewTypePtr ¶
func TicketType ¶
Wraps ticket value type into type structure that is compatible with ticket values. This is necessary because T_TICKET uses an implicit structure (extra fields amount, ticketer) in addition to the defined value.
func (Type) Entrypoints ¶ added in v0.9.9
func (t Type) Entrypoints(withPrim bool) (Entrypoints, error)
func (Type) IsEqualWithAnno ¶
func (Type) MarshalJSON ¶
func (Type) ResolveEntrypointPath ¶ added in v0.11.0
returns path to named entrypoint
func (Type) TypedefPtr ¶
func (*Type) UnmarshalBinary ¶
func (*Type) UnmarshalJSON ¶ added in v0.17.3
type Typedef ¶
type Typedef struct { Name string `json:"name"` // annotation label | @key | @value | @item | @params | @return Type string `json:"type"` // opcode or struct | union Optional bool `json:"optional,omitempty"` // Union only Args []Typedef `json:"args,omitempty"` }