storage

package
v0.97.3-pre Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2021 License: MIT Imports: 2 Imported by: 46

Documentation

Overview

Package storage provides functions to access and modify contract's storage. Neo storage's model follows simple key-value DB pattern, this storage is a part of blockchain state, so you can use it between various invocations of the same contract.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Delete

func Delete(ctx Context, key interface{})

Delete removes key-value pair from storage by the given key using given Context. See Put documentation on possible key types. This function uses `System.Storage.Delete` syscall.

func Find

func Find(ctx Context, key interface{}, options FindFlags) iterator.Iterator

Find returns an iterator.Iterator over key-value pairs in the given Context that match the given key (contain it as a prefix). See Put documentation on possible key types and iterator package documentation on how to use the returned value. This function uses `System.Storage.Find` syscall.

func Get

func Get(ctx Context, key interface{}) interface{}

Get retrieves value stored for the given key using given Context. See Put documentation on possible key and value types. If the value is not present in the database it returns nil. This function uses `System.Storage.Get` syscall.

func Put

func Put(ctx Context, key interface{}, value interface{})

Put saves given value with given key in the storage using given Context. Even though it accepts interface{} for both, you can only pass simple types there like string, []byte, int or bool (not structures or slices of more complex types). To put more complex types there serialize them first using runtime.Serialize. This function uses `System.Storage.Put` syscall.

Types

type Context

type Context struct{}

Context represents storage context that is mandatory for Put/Get/Delete operations. It's an opaque type that can only be created properly by GetContext, GetReadOnlyContext or ConvertContextToReadOnly. It's similar to Neo .net framework's StorageContext class.

func ConvertContextToReadOnly added in v0.75.0

func ConvertContextToReadOnly(ctx Context) Context

ConvertContextToReadOnly returns new context from the given one, but with writing capability turned off, so that you could only invoke Get and Find using this new Context. If Context is already read-only this function is a no-op. It uses `System.Storage.AsReadOnly` syscall.

func GetContext

func GetContext() Context

GetContext returns current contract's (that invokes this function) storage context. It uses `System.Storage.GetContext` syscall.

func GetReadOnlyContext added in v0.75.0

func GetReadOnlyContext() Context

GetReadOnlyContext returns current contract's (that invokes this function) storage context in read-only mode, you can use this context for Get and Find functions, but using it for Put and Delete will fail. It uses `System.Storage.GetReadOnlyContext` syscall.

type FindFlags added in v0.93.0

type FindFlags byte

FindFlags represents parameters to `Find` iterator.

const (
	// None is default option. Iterator values are key-value pairs.
	None FindFlags = 0
	// KeysOnly is used for iterating over keys.
	KeysOnly FindFlags = 1 << 0
	// RemovePrefix is used for stripping 1-byte prefix from keys.
	RemovePrefix FindFlags = 1 << 1
	// ValuesOnly is used for iterating over values.
	ValuesOnly FindFlags = 1 << 2
	// DeserializeValues is used for deserializing values on-the-fly.
	// It can be combined with other options.
	DeserializeValues FindFlags = 1 << 3
	// PickField0 is used to get first field in a serialized struct or array.
	PickField0 FindFlags = 1 << 4
	// PickField1 is used to get second field in a serialized struct or array.
	PickField1 FindFlags = 1 << 5
)

Jump to

Keyboard shortcuts

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