Documentation ¶
Index ¶
- Constants
- Variables
- func Activate(sc *SmartContract, tblid int64, state int64) error
- func ActivateContract(tblid, state int64, active bool)
- func AddressToID(input string) (addr int64)
- func CheckSignature(i *map[string]interface{}, name string) error
- func ColumnCondition(sc *SmartContract, tableName, name, coltype, permissions string) error
- func Compile(src string, owner *script.OwnerInfo) error
- func CompileBlock(src string, owner *script.OwnerInfo) (*script.Block, error)
- func CompileContract(sc *SmartContract, code string, state, id, token int64) (interface{}, error)
- func CompileEval(src string, prefix uint32) error
- func ContractAccess(sc *SmartContract, names ...interface{}) bool
- func ContractConditions(sc *SmartContract, names ...interface{}) (bool, error)
- func CreateColumn(sc *SmartContract, tableName, name, coltype, permissions string) error
- func CreateEcosystem(sc *SmartContract, wallet int64, name string) (int64, error)
- func CreateTable(sc *SmartContract, name string, columns, permissions string) error
- func DBInsert(sc *SmartContract, tblname string, params string, val ...interface{}) (qcost int64, ret int64, err error)
- func DBSelect(sc *SmartContract, tblname string, columns string, id int64, order string, ...) (int64, []interface{}, error)
- func DBUpdate(sc *SmartContract, tblname string, id int64, params string, val ...interface{}) (qcost int64, err error)
- func DBUpdateExt(sc *SmartContract, tblname string, column string, value interface{}, ...) (qcost int64, err error)
- func Date(time_format string, timestamp int64) string
- func Deactivate(sc *SmartContract, tblid int64, state int64) error
- func EcosysParam(sc *SmartContract, name string) string
- func EmbedFuncs(vm *script.VM, vt script.VMType)
- func Eval(sc *SmartContract, condition string) error
- func EvalCondition(sc *SmartContract, table, name, condfield string) error
- func EvalIf(src string, state uint32, extend *map[string]interface{}) (bool, error)
- func Extend(ext *script.ExtendData)
- func ExtendCost(ext func(string) int64)
- func ExternOff()
- func Float(v interface{}) (ret float64)
- func FlushBlock(root *script.Block)
- func FlushContract(sc *SmartContract, iroot interface{}, id int64, active bool) error
- func FuncCallsDB(funcCallsDB map[string]struct{})
- func GetBytea(db *model.DbTransaction, table string) map[string]bool
- func GetContractById(sc *SmartContract, id int64) string
- func GetContractByName(sc *SmartContract, name string) int64
- func GetMapKeys(in map[string]interface{}) []interface{}
- func GetTableName(sc *SmartContract, tblname string, ecosystem int64) string
- func GetTestValue(name string) string
- func GetUsedContracts(name string, state uint32, full bool) []string
- func GetVM(vde bool, ecosystemID int64) *script.VM
- func HMac(key, data string, raw_output bool) (ret string, err error)
- func HTTPPostJSON(requrl string, headers map[string]interface{}, json_str string) (string, error)
- func HTTPRequest(requrl, method string, headers map[string]interface{}, ...) (string, error)
- func HexToBytes(hexdata string) ([]byte, error)
- func IDToAddress(id int64) (out string)
- func Int(val string) int64
- func IsObject(sc *SmartContract, name string, state int64) bool
- func JSONToMap(input string) (map[string]interface{}, error)
- func Join(input []interface{}, sep string) string
- func LangRes(sc *SmartContract, idRes, lang string) string
- func Len(in []interface{}) int64
- func LoadContract(transaction *model.DbTransaction, prefix string) (err error)
- func LoadContracts(transaction *model.DbTransaction) (err error)
- func LoadVDEContracts(transaction *model.DbTransaction, prefix string) (err error)
- func Money(v interface{}) (ret decimal.Decimal)
- func PermColumn(sc *SmartContract, tableName, name, permissions string) error
- func PermTable(sc *SmartContract, name, permissions string) error
- func PrefixName(table string) (prefix, name string)
- func PubToID(hexkey string) int64
- func Random(min int64, max int64) (int64, error)
- func Replace(s, old, new string) string
- func RollbackColumn(sc *SmartContract, tableName, name string) error
- func RollbackEcosystem(sc *SmartContract) error
- func RollbackTable(sc *SmartContract, name string) error
- func RowConditions(sc *SmartContract, tblname string, id int64) error
- func Run(block *script.Block, params []interface{}, extend *map[string]interface{}) (ret []interface{}, err error)
- func Sha256(text string) string
- func Size(s string) int64
- func SortedKeys(m map[string]interface{}) []interface{}
- func Split(input, sep string) []interface{}
- func StackCont(sc interface{}, name string)
- func Str(v interface{}) (ret string)
- func Substr(s string, off int64, slen int64) string
- func SysFuel(state int64) string
- func SysParamInt(name string) int64
- func SysParamString(name string) string
- func TableConditions(sc *SmartContract, name, columns, permissions string) (err error)
- func UpdateCron(sc *SmartContract, id int64) error
- func UpdateLang(sc *SmartContract, name, trans string)
- func UpdateSysParam(sc *SmartContract, name, value, conditions string) (int64, error)
- func VMCompileBlock(vm *script.VM, src string, owner *script.OwnerInfo) (*script.Block, error)
- func VMCompileEval(vm *script.VM, src string, prefix uint32) error
- func VMEvalIf(vm *script.VM, src string, state uint32, extend *map[string]interface{}) (bool, error)
- func VMFlushBlock(vm *script.VM, root *script.Block)
- func VMObjectExists(vm *script.VM, name string, state uint32) bool
- func VMRun(vm *script.VM, block *script.Block, params []interface{}, ...) (ret []interface{}, err error)
- func ValidateCondition(sc *SmartContract, condition string, state int64) error
- func ValidateCron(cronSpec string) error
- type Contract
- type SignRes
- type SmartContract
- func (sc *SmartContract) AccessColumns(table string, columns *[]string, update bool) error
- func (sc *SmartContract) AccessRights(condition string, iscondition bool) error
- func (sc *SmartContract) AccessTable(table, action string) error
- func (sc *SmartContract) AccessTablePerm(table, action string) (map[string]string, error)
- func (sc *SmartContract) CallContract(flags int) (string, error)
- func (sc *SmartContract) EvalIf(conditions string) (bool, error)
- func (sc *SmartContract) GetContractLimit() (ret int64)
- func (sc SmartContract) GetLogger() *log.Entry
- func (sc *SmartContract) IsCustomTable(table string) (isCustom bool, err error)
- type TxSignJSON
Constants ¶
const ( // CallInit is a flag for calling init function of the contract CallInit = 0x01 // CallCondition is a flag for calling condition function of the contract CallCondition = 0x02 // CallAction is a flag for calling action function of the contract CallAction = 0x04 // CallRollback is a flag for calling rollback function of the contract CallRollback = 0x08 )
Variables ¶
var ( ErrCurrentBalance = errors.New(`current balance is not enough`) ErrDiffKeys = errors.New(`Contract and user public keys are different`) ErrEmptyPublicKey = errors.New(`empty public key`) ErrFounderAccount = errors.New(`Unknown founder account`) ErrFuelRate = errors.New(`Fuel rate must be greater than 0`) ErrIncorrectSign = errors.New(`incorrect sign`) ErrInvalidValue = errors.New(`Invalid value`) ErrUnknownNodeID = errors.New(`Unknown node id`) ErrWrongPriceFunc = errors.New(`Wrong type of price function`) )
Functions ¶
func Activate ¶
func Activate(sc *SmartContract, tblid int64, state int64) error
Activate sets Active status of the contract in smartVM
func ActivateContract ¶
ActivateContract sets Active status of the contract in smartVM
func AddressToID ¶
AddressToID converts the string representation of the wallet number to a numeric
func CheckSignature ¶
CheckSignature checks the additional signatures for the contract
func ColumnCondition ¶
func ColumnCondition(sc *SmartContract, tableName, name, coltype, permissions string) error
ColumnCondition is contract func
func CompileBlock ¶
CompileBlock calls CompileBlock for smartVM
func CompileContract ¶
func CompileContract(sc *SmartContract, code string, state, id, token int64) (interface{}, error)
CompileContract is compiling contract
func CompileEval ¶
CompileEval calls CompileEval for smartVM
func ContractAccess ¶
func ContractAccess(sc *SmartContract, names ...interface{}) bool
ContractAccess checks whether the name of the executable contract matches one of the names listed in the parameters.
func ContractConditions ¶
func ContractConditions(sc *SmartContract, names ...interface{}) (bool, error)
ContractConditions calls the 'conditions' function for each of the contracts specified in the parameters
func CreateColumn ¶
func CreateColumn(sc *SmartContract, tableName, name, coltype, permissions string) error
CreateColumn is creating column
func CreateEcosystem ¶
func CreateEcosystem(sc *SmartContract, wallet int64, name string) (int64, error)
CreateEcosystem creates a new ecosystem
func CreateTable ¶
func CreateTable(sc *SmartContract, name string, columns, permissions string) error
CreateTable is creating smart contract table
func DBInsert ¶
func DBInsert(sc *SmartContract, tblname string, params string, val ...interface{}) (qcost int64, ret int64, err error)
DBInsert inserts a record into the specified database table
func DBSelect ¶
func DBSelect(sc *SmartContract, tblname string, columns string, id int64, order string, offset, limit, ecosystem int64, where string, params []interface{}) (int64, []interface{}, error)
DBSelect returns an array of values of the specified columns when there is selection of data 'offset', 'limit', 'where'
func DBUpdate ¶
func DBUpdate(sc *SmartContract, tblname string, id int64, params string, val ...interface{}) (qcost int64, err error)
DBUpdate updates the item with the specified id in the table
func DBUpdateExt ¶
func DBUpdateExt(sc *SmartContract, tblname string, column string, value interface{}, params string, val ...interface{}) (qcost int64, err error)
DBUpdateExt updates the record in the specified table. You can specify 'where' query in params and then the values for this query
func Deactivate ¶
func Deactivate(sc *SmartContract, tblid int64, state int64) error
DeactivateContract sets Active status of the contract in smartVM
func EcosysParam ¶
func EcosysParam(sc *SmartContract, name string) string
EcosysParam returns the value of the specified parameter for the ecosystem
func EmbedFuncs ¶
EmbedFuncs is extending vm with embedded functions
func EvalCondition ¶
func EvalCondition(sc *SmartContract, table, name, condfield string) error
EvalCondition gets the condition and check it
func Extend ¶
func Extend(ext *script.ExtendData)
Extend set extended variable and functions in smartVM
func ExtendCost ¶
ExtendCost sets the cost of calling extended obj in smartVM
func FlushContract ¶
func FlushContract(sc *SmartContract, iroot interface{}, id int64, active bool) error
FlushContract is flushing contract
func FuncCallsDB ¶
func FuncCallsDB(funcCallsDB map[string]struct{})
func GetContractById ¶
func GetContractById(sc *SmartContract, id int64) string
GetContractById returns the name of the contract with this id
func GetContractByName ¶
func GetContractByName(sc *SmartContract, name string) int64
GetContractByName returns id of the contract with this name
func GetMapKeys ¶
func GetMapKeys(in map[string]interface{}) []interface{}
Returns the array of keys of the map
func GetTableName ¶
func GetTableName(sc *SmartContract, tblname string, ecosystem int64) string
func GetTestValue ¶
GetTestValue returns the test value of the specified key
func GetUsedContracts ¶
GetUsedContracts returns the list of contracts which are called from the specified contract
func HTTPPostJSON ¶
HTTPPostJSON sends post http request with json
func HTTPRequest ¶
func HTTPRequest(requrl, method string, headers map[string]interface{}, params map[string]interface{}) (string, error)
HTTPRequest sends http request
func HexToBytes ¶
HexToBytes converts the hexadecimal representation to []byte
func IDToAddress ¶
IDToAddress converts the identifier of account to a string of the form XXXX -...- XXXX
func IsObject ¶
func IsObject(sc *SmartContract, name string, state int64) bool
IsObject returns true if there is the specified contract
func LangRes ¶
func LangRes(sc *SmartContract, idRes, lang string) string
LangRes returns the language resource
func LoadContract ¶
func LoadContract(transaction *model.DbTransaction, prefix string) (err error)
LoadContract reads and compiles contract of new state
func LoadContracts ¶
func LoadContracts(transaction *model.DbTransaction) (err error)
LoadContracts reads and compiles contracts from smart_contracts tables
func LoadVDEContracts ¶
func LoadVDEContracts(transaction *model.DbTransaction, prefix string) (err error)
func PermColumn ¶
func PermColumn(sc *SmartContract, tableName, name, permissions string) error
PermColumn is contract func
func PermTable ¶
func PermTable(sc *SmartContract, name, permissions string) error
PermTable is changing permission of table
func PrefixName ¶
func PubToID ¶
PubToID returns a numeric identifier for the public key specified in the hexadecimal form.
func RollbackColumn ¶
func RollbackColumn(sc *SmartContract, tableName, name string) error
RollbackColumn is rolling back column
func RollbackEcosystem ¶
func RollbackEcosystem(sc *SmartContract) error
RollbackEcosystem is rolling back ecosystem
func RollbackTable ¶
func RollbackTable(sc *SmartContract, name string) error
RollbackTable is rolling back table
func RowConditions ¶
func RowConditions(sc *SmartContract, tblname string, id int64) error
RowConditions checks conditions for table row by id
func Run ¶
func Run(block *script.Block, params []interface{}, extend *map[string]interface{}) (ret []interface{}, err error)
Run executes Block in smartVM
func SortedKeys ¶
func SortedKeys(m map[string]interface{}) []interface{}
Returns the sorted array of keys of the map
func StackCont ¶
func StackCont(sc interface{}, name string)
StackCont adds an element to the stack of contract call or removes the top element when name is empty
func SysParamInt ¶
SysParamInt returns the value of the system parameter
func SysParamString ¶
SysParamString returns the value of the system parameter
func TableConditions ¶
func TableConditions(sc *SmartContract, name, columns, permissions string) (err error)
TableConditions is contract func
func UpdateCron ¶
func UpdateCron(sc *SmartContract, id int64) error
func UpdateLang ¶
func UpdateLang(sc *SmartContract, name, trans string)
UpdateLang updates language resource
func UpdateSysParam ¶
func UpdateSysParam(sc *SmartContract, name, value, conditions string) (int64, error)
UpdateSysParam updates the system parameter
func VMCompileBlock ¶
VMCompileBlock is compiling block
func ValidateCondition ¶
func ValidateCondition(sc *SmartContract, condition string, state int64) error
ValidateCondition checks if the condition can be compiled
func ValidateCron ¶
Types ¶
type Contract ¶
type Contract struct { Name string Called uint32 FreeRequest bool TxPrice int64 // custom price for citizens TxGovAccount int64 // state wallet EGSRate float64 // money/EGS rate TableAccounts string StackCont []string // Stack of called contracts Extend *map[string]interface{} Block *script.Block }
Contract contains the information about the contract.
func GetContract ¶
GetContract returns true if the contract exists in smartVM
func GetContractByID ¶
GetContractByID returns true if the contract exists
type SmartContract ¶
type SmartContract struct { VDE bool Rollback bool SysUpdate bool VM *script.VM TxSmart tx.SmartContract TxData map[string]interface{} TxContract *Contract TxCost int64 // Maximum cost of executing contract TxUsedCost decimal.Decimal // Used cost of CPU resources BlockData *utils.BlockData TxHash []byte PublicKeys [][]byte DbTransaction *model.DbTransaction }
SmartContract is storing smart contract data
func (*SmartContract) AccessColumns ¶
func (sc *SmartContract) AccessColumns(table string, columns *[]string, update bool) error
AccessColumns checks access rights to the columns
func (*SmartContract) AccessRights ¶
func (sc *SmartContract) AccessRights(condition string, iscondition bool) error
AccessRights checks the access right by executing the condition value
func (*SmartContract) AccessTable ¶
func (sc *SmartContract) AccessTable(table, action string) error
func (*SmartContract) AccessTablePerm ¶
func (sc *SmartContract) AccessTablePerm(table, action string) (map[string]string, error)
AccessTable checks the access right to the table
func (*SmartContract) CallContract ¶
func (sc *SmartContract) CallContract(flags int) (string, error)
CallContract calls the contract functions according to the specified flags
func (*SmartContract) EvalIf ¶
func (sc *SmartContract) EvalIf(conditions string) (bool, error)
EvalIf counts and returns the logical value of the specified expression
func (*SmartContract) GetContractLimit ¶
func (sc *SmartContract) GetContractLimit() (ret int64)
GetContractLimit returns the default maximal cost of contract
func (SmartContract) GetLogger ¶
func (sc SmartContract) GetLogger() *log.Entry
GetLogger is returning logger
func (*SmartContract) IsCustomTable ¶
func (sc *SmartContract) IsCustomTable(table string) (isCustom bool, err error)