core

package
v1.7.4-beta.1 Latest Latest
Warning

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

Go to latest
Published: Sep 2, 2022 License: MIT Imports: 11 Imported by: 4

Documentation

Index

Constants

View Source
const (
	MetaTargetTypeAccount     = "ACCOUNT"
	MetaTargetTypeTransaction = "TRANSACTION"
)
View Source
const NewTransactionType = "NEW_TRANSACTION"
View Source
const SetMetadataType = "SET_METADATA"
View Source
const (
	WORLD = "world"
)

Variables

This section is empty.

Functions

func AssetIsValid

func AssetIsValid(v string) bool

func CheckHash added in v1.3.2

func CheckHash(logs ...Log) (int, bool)

func Hash

func Hash(t1, t2 interface{}) string

func HydrateLog added in v1.3.2

func HydrateLog(_type string, data string) (interface{}, error)

func RevertMetadataSpecKey added in v1.3.2

func RevertMetadataSpecKey() string

func RevertedMetadataSpecKey added in v1.3.2

func RevertedMetadataSpecKey() string

func SpecMetadata added in v1.3.2

func SpecMetadata(name string) string

func ValidateAddress

func ValidateAddress(addr string) bool

Types

type Account

type Account struct {
	Address  string   `json:"address" example:"users:001"`
	Metadata Metadata `json:"metadata" swaggertype:"object"`
}

type AccountWithVolumes added in v1.6.0

type AccountWithVolumes struct {
	Account
	Volumes  AssetsVolumes  `json:"volumes"`
	Balances AssetsBalances `json:"balances" example:"COIN:100"`
}

type AccountsAssetsVolumes added in v1.6.0

type AccountsAssetsVolumes map[string]AssetsVolumes

func (AccountsAssetsVolumes) AddInput added in v1.7.0

func (a AccountsAssetsVolumes) AddInput(account, asset string, input int64)

func (AccountsAssetsVolumes) AddOutput added in v1.7.0

func (a AccountsAssetsVolumes) AddOutput(account, asset string, output int64)

func (AccountsAssetsVolumes) GetVolumes added in v1.7.0

func (a AccountsAssetsVolumes) GetVolumes(account, asset string) Volumes

func (AccountsAssetsVolumes) HasAccount added in v1.7.0

func (a AccountsAssetsVolumes) HasAccount(account string) bool

func (*AccountsAssetsVolumes) Scan added in v1.6.0

func (a *AccountsAssetsVolumes) Scan(value interface{}) error

Scan - Implement the database/sql scanner interface

func (AccountsAssetsVolumes) SetVolumes added in v1.7.0

func (a AccountsAssetsVolumes) SetVolumes(account, asset string, volumes Volumes)

type AccountsBalances added in v1.6.0

type AccountsBalances map[string]AssetsBalances

type AssetsBalances added in v1.6.0

type AssetsBalances map[string]int64

type AssetsVolumes added in v1.6.0

type AssetsVolumes map[string]Volumes

func (AssetsVolumes) Balances added in v1.6.0

func (v AssetsVolumes) Balances() AssetsBalances

type ConstantExpr

type ConstantExpr struct {
	Value interface{}
}

func (ConstantExpr) MarshalJSON

func (e ConstantExpr) MarshalJSON() ([]byte, error)

type Contract

type Contract struct {
	Expr    Expr   `json:"expr"`
	Account string `json:"account"`
}

func (Contract) Match

func (c Contract) Match(addr string) bool

func (*Contract) UnmarshalJSON

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

type EvalContext

type EvalContext struct {
	Variables map[string]interface{}
	Metadata  Metadata
	Asset     string
}

type Expr

type Expr interface {
	Eval(EvalContext) bool
}

func ParseRule

func ParseRule(data string) (Expr, error)

func ParseRuleExpr

func ParseRuleExpr(v map[string]interface{}) (Expr, error)

type ExprAnd

type ExprAnd []Expr

func (ExprAnd) Eval

func (o ExprAnd) Eval(ctx EvalContext) bool

func (ExprAnd) MarshalJSON

func (e ExprAnd) MarshalJSON() ([]byte, error)

type ExprEq

type ExprEq struct {
	Op1 Value
	Op2 Value
}

func (*ExprEq) Eval

func (o *ExprEq) Eval(ctx EvalContext) bool

func (ExprEq) MarshalJSON

func (e ExprEq) MarshalJSON() ([]byte, error)

type ExprGt

type ExprGt struct {
	Op1 Value
	Op2 Value
}

func (*ExprGt) Eval

func (o *ExprGt) Eval(ctx EvalContext) bool

func (ExprGt) MarshalJSON

func (e ExprGt) MarshalJSON() ([]byte, error)

type ExprGte

type ExprGte struct {
	Op1 Value
	Op2 Value
}

func (*ExprGte) Eval

func (o *ExprGte) Eval(ctx EvalContext) bool

func (ExprGte) MarshalJSON

func (e ExprGte) MarshalJSON() ([]byte, error)

type ExprLt

type ExprLt struct {
	Op1 Value
	Op2 Value
}

func (*ExprLt) Eval

func (o *ExprLt) Eval(ctx EvalContext) bool

func (ExprLt) MarshalJSON

func (e ExprLt) MarshalJSON() ([]byte, error)

type ExprLte

type ExprLte struct {
	Op1 Value
	Op2 Value
}

func (*ExprLte) Eval

func (o *ExprLte) Eval(ctx EvalContext) bool

func (ExprLte) MarshalJSON

func (e ExprLte) MarshalJSON() ([]byte, error)

type ExprOr

type ExprOr []Expr

func (ExprOr) Eval

func (o ExprOr) Eval(ctx EvalContext) bool

func (ExprOr) MarshalJSON

func (e ExprOr) MarshalJSON() ([]byte, error)

type Log added in v1.3.2

type Log struct {
	ID   uint64      `json:"id"`
	Type string      `json:"type"`
	Data interface{} `json:"data"`
	Hash string      `json:"hash"`
	Date time.Time   `json:"date"`
}

func NewSetMetadataLog added in v1.3.2

func NewSetMetadataLog(previousLog *Log, metadata SetMetadata) Log

func NewTransactionLog added in v1.3.2

func NewTransactionLog(previousLog *Log, tx Transaction) Log

func NewTransactionLogWithDate added in v1.3.2

func NewTransactionLogWithDate(previousLog *Log, tx Transaction, time time.Time) Log

type LoggedTX added in v1.6.0

type LoggedTX Transaction

func (LoggedTX) MarshalJSON added in v1.6.0

func (m LoggedTX) MarshalJSON() ([]byte, error)

type Mapping

type Mapping struct {
	Contracts []Contract `json:"contracts"`
}

type MetaExpr

type MetaExpr struct {
	Name string
}

func (MetaExpr) MarshalJSON

func (e MetaExpr) MarshalJSON() ([]byte, error)

type Metadata

type Metadata map[string]json.RawMessage

func ComputeMetadata added in v1.3.2

func ComputeMetadata(key string, value interface{}) Metadata

func RevertMetadata added in v1.3.2

func RevertMetadata(tx uint64) Metadata

func RevertedMetadata added in v1.3.2

func RevertedMetadata(by uint64) Metadata

func (Metadata) ConvertValue added in v1.3.2

func (m Metadata) ConvertValue(v interface{}) (driver.Value, error)

func (Metadata) IsEquivalentTo added in v1.6.0

func (m1 Metadata) IsEquivalentTo(m2 Metadata) bool

IsEquivalentTo allow to compare to metadata object.

Postgres and SQLite doesn't have the same behavior regarding json processing Postgres will clean the json and keep a space after semicolons. Sqlite will clean the json and minify it. So we can't directly compare metadata.

func (Metadata) IsReverted

func (m Metadata) IsReverted() bool

func (Metadata) MarkReverts added in v1.1.0

func (m Metadata) MarkReverts(txID uint64)

func (Metadata) Merge added in v1.3.2

func (m1 Metadata) Merge(m2 Metadata) Metadata

func (*Metadata) Scan added in v1.3.2

func (m *Metadata) Scan(value interface{}) error

Scan - Implement the database/sql scanner interface

type Posting

type Posting struct {
	Source      string `json:"source"`
	Destination string `json:"destination"`
	Amount      int64  `json:"amount"`
	Asset       string `json:"asset"`
}

type Postings

type Postings []Posting

func (Postings) Reverse

func (ps Postings) Reverse()

func (*Postings) Scan added in v1.3.2

func (p *Postings) Scan(value interface{}) error

Scan - Implement the database/sql scanner interface

type RevertedMetadataSpecValue added in v1.3.2

type RevertedMetadataSpecValue struct {
	By string `json:"by"`
}

type Script

type Script struct {
	Plain     string                     `json:"plain"`
	Vars      map[string]json.RawMessage `json:"vars" swaggertype:"object"`
	Reference string                     `json:"reference"`
	Metadata  Metadata                   `json:"metadata"`
}

type SetMetadata added in v1.3.2

type SetMetadata struct {
	TargetType string      `json:"targetType"`
	TargetID   interface{} `json:"targetId"`
	Metadata   Metadata    `json:"metadata"`
}

func (*SetMetadata) UnmarshalJSON added in v1.3.2

func (s *SetMetadata) UnmarshalJSON(data []byte) error

type Transaction

type Transaction struct {
	TransactionData
	ID                uint64                `json:"txid"`
	PreCommitVolumes  AccountsAssetsVolumes `json:"preCommitVolumes,omitempty"`  // Keep omitempty to keep consistent hash
	PostCommitVolumes AccountsAssetsVolumes `json:"postCommitVolumes,omitempty"` // Keep omitempty to keep consistent hash
}

func (*Transaction) AppendPosting

func (t *Transaction) AppendPosting(p Posting)

func (*Transaction) IsReverted added in v1.6.0

func (t *Transaction) IsReverted() bool

func (Transaction) MarshalJSON added in v1.7.0

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

type TransactionData

type TransactionData struct {
	Postings  Postings  `json:"postings"`
	Reference string    `json:"reference"`
	Metadata  Metadata  `json:"metadata" swaggertype:"object"`
	Timestamp time.Time `json:"timestamp"`
}

func (*TransactionData) Reverse added in v1.3.2

func (t *TransactionData) Reverse() TransactionData

type Transactions

type Transactions struct {
	Transactions []TransactionData `json:"transactions" binding:"required,dive"`
}

type Value

type Value interface {
	// contains filtered or unexported methods
}

type VariableExpr

type VariableExpr struct {
	Name string
}

func (VariableExpr) MarshalJSON

func (e VariableExpr) MarshalJSON() ([]byte, error)

type Volumes added in v1.3.2

type Volumes struct {
	Input  int64 `json:"input"`
	Output int64 `json:"output"`
}

func (Volumes) Balance added in v1.6.0

func (v Volumes) Balance() int64

func (Volumes) MarshalJSON added in v1.6.0

func (v Volumes) MarshalJSON() ([]byte, error)

type VolumesWithBalance added in v1.6.0

type VolumesWithBalance struct {
	Input   int64 `json:"input"`
	Output  int64 `json:"output"`
	Balance int64 `json:"balance"`
}

Jump to

Keyboard shortcuts

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