智能合约
用户在页面中执行智能合约通常是单个操作,结果是更改或创建数据库的条目。应用程序的所有数据操作形成了智能合约系统,这些智能合约通过数据库或者智能合约内容的函数彼此交互。
智能合约结构
使用 contract关键字声明智能合约,后面接上智能合约名称,智能合约内容必须用大括号括起来。智能合约结构有三个主要部分:
- data - 数据部分,声明输入数据的变量,包括变量名称和变量类型;
- conditions - 条件部分,验证数据的正确性;
- action - 操作部分,执行数据操作的动作。
数据部分
data
部分描述了智能合约数据输入以及接收的表单参数。
每行的依次顺序结构:
- 变量名称 - 只接收变量,不支持接收数组;
- 变量数据类型 - 变量的 数据类型;
- optional - 可选参数,不需要填充的表单元素。
条件部分
conditions
部分描述了对接收的数据进行验证。
以下命令用于错误警告:严重性错误 error
、警告性错误warning
、提示性错误info
,这三种命令都会生成一个终止智能合约执行的错误,每个错误都会打印不同类型的错误日志信息。例如:
操作部分
action
部分描述了智能合约的主要代码,该代码检索其他数据并将结果值记录到数据库表中。例如:
变量
data 部分声明的变量通过 $
符号后面跟上变量名称传递给其他智能合约部分。$
符号也可以声明其他不在数据部分内的变量。这些变量被认为是这个智能合约和所有嵌套该智能合约的全局变量。
智能合约内可以使用预定义变量,这些变量包含调用该智能合约的交易数据:
$time
-- 交易时间戳; $ecosystem_id
-- 生态系统ID; $block
-- 包含该交易的区块ID; $key_id
-- 签署当前交易的账户地址; $type
虚拟机中智能合约ID; $block_key_id
-- 生成区块的节点账户地址; $block_time
-- 区块生成时间戳; $original_contract
-- 最初进行交易处理的智能合约名称。如果该变量为空字符串,表示交易在验证过程中调用了该智能合约。要检查该智能合约是由另一个智能合约调用还是直接从交易调用,需要比较 $original_contract 和 $this_contract 的值。 如果它们相等,则表示智能合约是从交易调用的; $this_contract
-- 当前执行智能合约名称; $guest_key
-- 访客账户地址; $stack
-- 智能合约数组堆栈,*array* 类型,包含所有执行的智能合约,数组第一个元素表示当前执行的智能合约名称,最后一个元素表示最初进行交易处理的智能合约名称; $node_position
-- 区块所在的验证节点数组的索引号; $txhash
-- 交易哈希; $contract
-- 当前智能合约结构数组。
预定义变量不仅可以在智能合约中访问,还可以在定义应用程序元素的访问权限条件的权限字段中访问。当用于权限字段时,关于区块信息的预定义变量始终等于零,例如$time
, $block
等。
预定义变量 $result
赋值于智能合约的返回结果。
嵌套智能合约
在智能合约的 conditions 和 action部分可以嵌套合约。嵌套合约可以直接调用,合约参数在其合约名称后面的括号中指定,例如,@1NameContract(Params)
。也可以使用CallContract 函数调用。
文件上传
使用 multipart/form-data
格式的表单上传文件,合约的数据类型必须是file
。
UploadBinary 合约用于上传和存储文件。在页面编辑器使用 Logicor 语言的函数Binary 可以获取文件下载链接。
在合约语言中,JSON 格式类型可以指定为字段类型。使用语法:
columnname->fieldname 来处理条目字段。获得的值记录在columnname.fieldname。
上述语法可以在DBFind 函数的Columns,One,Where 中使用。
日期时间格式查询语句
合约语言函数不能直接查询和更新日期时间,但是可以像示例中在Where语句中使用PostgreSQL的函数和功能。例如,需要比较字段date_column 和当前时间,如果 date_column是timestamp类型,那么表达式为 date_column < NOW()
;如果 date_column是Unix类型,那么表达式为 to_timestamp(date_column) > NOW()
。
以下 Needle 函数是处理SQL格式的日期和时间:
needle 合约语言
该语言包括一组函数、运算符和结构,可实现数据算法处理和数据库操作。
在编辑合约权限不为 false
的条件下,合约内容可以修改。对合约更改的完整历史记录存储在区块链中,从Weaver 可获知更改情况。
区块链中的数据操作由最新版本的合约执行。
基本要素和结构
数据类型和变量
每个变量必须定义数据类型,通常情况下,数据类型会自动转换。可以使用以下数据类型:
所有标识符,包括变量、函数和合约等的名称都区分大小写(MyFunc和myFunc是不同的名称)。
使用 var关键字声明变量,后跟变量的名称和类型。在大括号内声明的变量必须在同一对大括号内使用。
声明的变量具有默认零值:bool类型的零值false,所有数字类型的零值0,字符串类型的零值空字符串,变量声明示例:
数组
该语言支持两种数组类型:
array
- 索引从0开始的数组; map
- 对象数组。
分配和检索数组元素时,索引必须放在方括号中。数组中不支持多个索引,不能将数组元素作为 myarr[i][j] 来处理。
您还可以在 []
通过指定元素定义 array
类型。对于 map
类型数组,请使用 {}
。
您可以在表达式中使用这样的初始化。例如,在函数参数中使用。
对于对象数组,您必须指定一个键。键用双引号(""
)指定字符串。如果键名仅限于字母,数字和下划线,则可以省略双引号。
数组可以包含字符串、数字、任何类型的变量名称和带 $
符号的变量名称。支持嵌套数组,可以将不同的映射或数组指定为值。
表达式不能用作数组元素,使用一个变量来存储表达式结果并指定这个变量为数组元素。
If和While语句
合约语言支持标准 if 条件语句和 while循环,可以在合约和函数中使用。这些语句可以相互嵌套。
if 和 while 关键字后必须跟条件语句。如果条件语句返回一个数字,则当其值为0,被视为false。
val == 0 等于 !val,val != 0 等于 val。if 语句可以有else 代码块,在 if 条件语句为 false 时执行 else 。
以下比较运算符可用于条件语句:<, >, >=, <=, ==, !=, ||, &&
while 循环的条件语句为 true 时执行代码块。break表示结束代码块的循环,想要从头开始循环请使用 continue。
除了条件语句外,needle 还支持标准的算术运算:+
, -
, *
, /
。
string 和 bytes类型可以作为条件语句,如果类型长度大于零时,条件为 true,反之为 false。
函数
函数可以对合约 数据部分接收的数据执行一些操作:读取和写入数据库的数据、转换值的类型以及建立合约之间的交互。
函数声明
使用 func关键词声明一个函数,后面是函数名称和传递给它的参数列表及其参数类型,所有参数都用小括号括起来,用逗号分隔。在小括号之后,必须声明函数返回值的数据类型。函数体必须用大括号括起来。如果函数没有参数,那么大括号可以省略。使用return
关键字返回函数返回值。
函数不会返回错误,因为所有错误检查都是自动执行的。当在任何函数中出现错误时,合约将停止其操作并显示包含错误描述的窗口。
可变长度参数
函数可以定义可变长度参数,使用 ...
符号作为函数的最后一个参数类型,表示可变长度参数,其数据类型为array
。可变长度参数包含从调用传递该参数变量开始的所有变量。任何类型的变量都可以传递,但是您需要处理与数据类型不匹配的冲突。
可选参数
函数有很多参数,但在调用它时我们只需要其中某些参数。这样的情况下,您可以通过以下方式声明可选参数:func myfunc(name string).Param1(param string).Param2(param2 int) {...}
,这样您就可以调用任意顺序指定的参数:myfunc("name").Param2(100)
。
在函数体中,您可以像正常处理这些变量。如果未调用指定的可选参数,它们默认为零值。您还可以使用...
指定可变长度参数:func DBFind(table string).Where(request string, params ...)
。然后调用它:DBFind("mytable").Where({"id": $myid, "type": 2})
。
needle 函数功能分类
数据库检索值:
更改数据表值:
数组操作:
合约和权限操作:
地址操作:
变量值操作:
算术运算:
JSON格式操作:
字符串操作:
字节操作:
SQL格式的日期和时间操作:
平台参数操作:
CLB 模式函数操作:
主 CLB 节点函数操作:
needle 函数参考
AppParam
返回指定应用程序参数的值(来自应用程序参数表 app_params)。
语法
app
name
ecosystemid
示例
DBFind
根据指定参数从指定数据表中查询数据。返回一个由对象数组 map 组成的数组array。
.Row()
可获得请求记录的第一个 map 元素,.One(column string)
可获得请求记录中指定列的第一个 map 元素。
语法
table
сolumns
where
{"field1": "value1", "field2" : "value2"}
等价于 field1 = "value1" AND field2 = "value2"
。
{"field1": {"$eq":"value"}}
等价于 field = "value"
。
{"field1": {"$neq": "value"}}
等价于 field != "value"
。
{"field1: {"$in": [1,2,3]}
等价于 field IN (1,2,3)
。
{"field1": {"$nin" : [1,2,3]}
等价于 field NOT IN (1,2,3)
。
{"field": {"$lt": 12}}
等价于 field < 12
。
{"field": {"$lte": 12}}
等价于 field <= 12
。
{"field": {"$gt": 12}}
等价于 field > 12
。
{"field": {"$gte": 12}}
等价于 field >= 12
。
{"$and": [<expr1>, <expr2>, <expr3>]}
等价于 expr1 AND expr2 AND expr3
。
{"$or": [<expr1>, <expr2>, <expr3>]}
等价于 expr1 OR expr2 OR expr3
。
{field: {"$like": "value"}}
等价于 field like '%value%'
(模糊搜索)。
{field: {"$begin": "value"}}
等价于 field like 'value%'
(以 value
开头)。
{field: {"$end": "value"}}
等价于 field like '%value'
(以 value
结尾)。
{field: "$isnull"}
等价于 field is null
。
请确保不要覆盖对象数组的键。例如,如果想用 id>2 and id<5
语句查询,不能使用{id:{"$gt": 2}, id:{"$lt": 5}}
,因为第一个元素会被第二个元素覆盖。应该使用如下结构查询:
id
order
降序: {"field": "-1"}
等价于 field desc
。
升序: {"field": "1"}
等价于 field asc
。
limit
offset
ecosystemid
示例
DBRow
根据指定参数从指定数据表中查询数据。返回一个由对象数组 map 组成的数组array。
语法
示例
DBSelectMetrics
返回指标的聚合数据。
每生成100个区块时都会更新指标标准。以1天为周期存储聚合数据。
语法
metric
指标名称。
ecosystem_pages
生态系统页面数。
返回值: key - 生态系统ID, value - 生态系统页面数。
ecosystem_members
生态系统成员数。
返回值: key - 生态系统ID, value - 生态系统成员数。
ecosystem_tx
生态系统交易数。
返回值: key - 生态系统ID, value - 生态系统交易数。
timeInterval
聚合指标数据的时间间隔。例如:1 day
, 30 days
。
aggregateFunc
聚合函数。例如 max
, min
, avg
。
示例
EcosysParam
返回生态系统参数表 parameters 指定参数的值。
语法
示例
GetHistory
返回指定数据表中条目更改的历史记录。
语法
返回值
返回 map 类型的对象数组。这些数组指定数据表中条目更改的历史记录。
每个数组都包含下一次更改之前的记录字段。
数组按从最近更改顺序排序。
数组中 id 字段指向 rollback_tx 表的 id。block_id代表区块ID,block_time 代表区块生成时间戳。
示例
GetHistoryRow
从指定数据表中指定条目的更改历史记录返回单个快照。
语法
table
数据表名称。
id
条目ID。
rollbackId
rollback_tx 表的条目ID。
GetColumnType
返回指定表中指定字段的数据类型。
语法
table
数据表名称。
column
字段名称。
返回值
返回以下类型: text, varchar, number, money, double, bytes, json, datetime, double
。
示例
GetDataFromXLSX
从 XLSX 电子表格返回数据。
语法
binId
二进制表 binary 中XLSX格式的ID。
line
开始行数,默认从0开始。
count
需要返回的行数。
sheet
列表编号,默认从1开始。
示例
GetRowsCountXLSX
返回指定XLSX文件行数。
语法
binId
二进制表 binary 中XLSX格式的ID。
sheet
列表编号,默认从1开始。
示例
LangRes
返回指定多语言资源。其标签 lang为双字符语言代码,例如:en, zh
。如果所选的语言标签没有语言资源,则返回en
标签的语言资源。
语法
label
语言资源名称。
lang
双字符语言代码。
示例
GetBlock
返回指定区块的相关信息。
语法
返回值
返回一个对象数组:
id
区块ID。
time
区块生成时间戳。
key_id
生成该区块的验证节点账户地址。
示例
DBInsert
添加条目到指定数据表并返回条目的ID。
语法
tblname
数据表名称。
params
对象数组,其中键是字段名称,值是插入的值。
示例
DBUpdate
更改指定数据表中指定条目ID的列值,如果该表中不存在该条目ID,则返回错误。
语法
tblname
数据表名称。
id
条目ID。
params
对象数组,其中键是字段名称,值是更改的新值。
示例
DBUpdateExt
更改指定数据表中与查询条件的匹配的列值。
语法
tblname
数据表名称。
where
查询条件。
更多详细信息,请参考 DBFind 。
params
对象数组,其中键是字段名称,值是更改的新值。
示例
DelColumn
删除指定表中的字段。该表必须没有记录。
语法
tblname
数据表名称。
column
需要删除的字段。
DelTable
删除指定的数据表。该表必须没有记录。
语法
示例
Append
将任何类型的 val 插入到 src 数组中。
语法
示例
Join
将 in 数组的元素合并到具有指定 sep 分隔符的字符串中。
语法
示例
Split
使用 sep 分隔符将 in 字符串拆分为元素,并将它们放入数组中。
语法
示例
Len
返回指定数组元素个数。
语法
示例
Row
The list parameter must not be specified in this case. 返回数组列表的第一个对象数组。如果列表为空,则返回结果为空。该函数主要与DBFind函数一起使用,使用时该函数不能指定参数。
语法
示例
One
返回数组列表中第一个对象数组的字段值。如果列表数组为空,则返回nil。该函数主要与DBFind函数一起使用,使用时该函数不能指定参数。
语法
示例
GetMapKeys
返回对象数组中的键数组。
语法
示例
SortedKeys
返回对象数组中的键数组,该数组已排序。
语法
示例
CallContract
调用指定名称的合约。合约数据部分的所有参数必须列入一个对象数组中。该函数返回指定合约分配给**$result** 变量的值。
语法
name
被调用合同的名称。
params
合约输入数据的关联数组。
示例
ContractAccess
检查执行合约的名称是否与参数中列出的名称之一匹配。通常用于控制合约对数据表访问。编辑数据表字段或在表权限部分的插入和新列字段时,在权限字段中指定该函数。
语法
示例
ContractConditions
从指定名称的合约中调用 conditions 条件部分。
对于该类的合约,数据部分必须为空。如果条件部分执行没有错误,则返回true。如果在执行期间生成错误,则父合约也将以此错误结束。该函数通常用于控制合约对表的访问,并且可以在编辑系统表时在权限字段中调用。
语法
示例
EvalCondition
从 tablename 表中获取带有 'name' 字段记录中的 condfield字段的值,并检查 condfield 字段值的条件。
语法
tablename
数据表名称。
name
根据 'name' 字段查询值。
condfield
需要检查条件的字段名称。
示例
GetContractById
该函数通过合约ID返回其合约名称。如果找不到合约,则返回空字符串。
语法
示例
GetContractByName
该函数通过合约名称返回其合约ID。如果找不到合约,则返回零。
语法
name
在合约表 contracts 的合约名称。
示例
RoleAccess
检查合约调用者的角色ID是否与参数中指定的ID之一匹配。
使用该函数可以控制对数据表和其他数据的合约访问。
语法
示例
TransactionInfo
按指定的哈希值查询交易并返回已执行的合约及其参数的信息。
语法
返回值
该函数返回json格式的字符串:
contract
合约名称。
params
传递给合约参数的数据。
block
处理该交易的区块ID。
示例
Throw
生成 exception 异常类型的错误。
语法
ErrorId
错误标识符。
ErrDescription
错误描述。
返回值
该类交易结果的格式:
示例
ValidateCondition
尝试编译 condition参数指定的条件。如果在编译过程中发生错误,则生成错误并终止调用合约。该函数旨在检查条件格式的正确性。
语法
condition
需要验证的条件格式。
state
生态系统ID。如果检查全局条件,请指定为0。
示例
AddressToId
根据钱包地址返回对应的账户地址。如果指定了无效的地址,则返回 '0'。
语法
示例
IdToAddress
根据账户地址返回对应的钱包地址。如果指定了无效的地址,则返回无效地址'invalid'。
语法
示例
PubToID
通过十六进制编码格式的公钥返回帐户地址。
语法
示例
DecodeBase64
通过指定base64编码格式返回字符串。
语法
示例
EncodeBase64
通过指定字符串返回base64编码格式的字符串。
语法
示例
Float
将整数或字符串转换为浮点数。
语法
示例
HexToBytes
将十六进制编码格式的字符串转换为字节类型 bytes。
语法
示例
返回 exp / 10 ^ digit 的字符串值。
语法
示例
Random
返回min和max之间的随机数(min <= result <max)。min和max都必须是正数。
语法
min
随机数的最小值。
max
随机数的上限。生成的随机数将小于该值。
示例
Int
将字符串值转换为整数。
语法
示例
Hash
返回指定字节数组或字符串的哈希,由系统加密库crypto生成的哈希。
语法
示例
Sha256
返回指定字符串的 SHA256 哈希值。
语法
示例
Str
将整数 int 或浮点数 float 转换为字符串。
语法
示例
JSONEncode
将数字、字符串或数组转换为JSON格式的字符串。
语法
示例
JSONEncodeIndent
使用指定的缩进将数字、字符串或数组转换为JSON格式的字符串。
语法
src
需要转换的数据。
indent
用作缩进的字符串。
示例
JSONDecode
将JSON格式的字符串转换为数字,字符串或数组。
语法
示例
HasPrefix
检查字符串是否以指定的字符串开头。
语法
返回值
如果字符串以指定的字符串开头,则返回 true
。
示例
Contains
检查字符串是否包含指定的子字符串。
语法
返回值
如果字符串包含子字符串,则返回 true
。
示例
Replace
把字符串中的 old(旧字符串) 替换成 new(新字符串)。
语法
s
原始字符串。
old
将被替换的子字符串。
new
新字符串。
示例
Size
返回指定字符串的字节数。
语法
示例
Sprintf
该函数根据指定的模板和参数创建一个字符串。
可用的通配符:
%d
(整数) %s
(字符串) %f
(浮点型) %v
(任何类型)
语法
示例
Substr
返回从偏移量 offset(默认从0开始计算)开始的指定字符串中获取的子字符串,其最大长度限制为length。
如果偏移量或长度限制小于零、偏移量大于长度限制的值,则返回一个空字符串。
如果偏移量和长度限制的总和大于字符串字节数,则子字符串将从偏移量开始返回到指定字符串的末尾。
语法
val
字符串。
offset
偏移量。
length
子字符串的长度限制。
示例
ToLower
以小写形式返回指定的字符串。
语法
示例
ToUpper
以大写形式返回指定的字符串。
语法
示例
TrimSpace
删除指定字符串的前后空格、制表符和换行符号。
语法
示例
Floor
返回小于或等于指定数字、浮点数和字符串的最大整数值。
语法
示例
Log
返回指定数字、浮点数和字符串的自然对数。
语法
示例
Log10
返回指定数字、浮点数和字符串的以10为底的对数。
语法
示例
Pow
返回(x^y^),y是以x为基数的指数。
语法
示例
Round
返回指定数字四舍五入到最近整数的值。
语法
示例
Sqrt
返回指定数字的平方根。
示例
StringToBytes
将字符串转换为字节。
语法
示例
BytesToString
将字节转换为字符串。
语法
示例
SysParamString
返回指定平台参数的值。
语法
示例
SysParamInt
以数字的形式返回指定平台参数的值。
语法
示例
DBUpdateSysParam
更新平台参数的值和条件。如果您不需要更改值或条件,请在相应参数中指定空字符串。
语法
name
平台参数名称。
value
参数的新值。
conditions
更改参数的新条件。
示例
UpdateNotifications
从数据库中获取指定键的通知列表,并将获取的通知发送到Centrifugo。
语法
示例
UpdateRolesNotifications
获取数据库中指定角色ID的所有账户地址的通知列表,并将获取的通知发送到Centrifugo。
语法
示例
HTTPRequest
将HTTP请求发送到指定的地址。
语法
url
发送的请求地址。
method
请求类型(GET或POST)。
heads
请求头,对象数组。
pars
请求参数。
示例
HTTPPostJSON
该函数类似于 HTTPRequest 函数,但它发送POST请求,请求参数为字符串。
语法
url
发送的请求地址。
heads
请求头,对象数组。
pars
请求参数,JSON字符串。
示例
BlockTime
以SQL格式返回区块的生成时间。
语法
示例
DateTime
将时间戳unixtime转换为 [YYYY-MM-DD HH:MI:SS]{.title-ref} 格式的字符串。
语法
示例
UnixDateTime
将 [YYYY-MM-DD HH:MI:SS]{.title-ref} 格式的字符串转换为时间戳unixtime。
语法
示例
CreateOBS
创建子 CLB 。
该函数只能在主 CLB 模式下使用。
语法
OBSName
CLB 的名称。
DBUser
数据库的角色名称。
DBPassword
该角色的密码。
OBSAPIPort
API请求的端口。
示例
GetOBSList
返回子 CLB 列表。
该函数只能在主 CLB 模式下使用。
语法
返回值
一个对象数组,其中键是 CLB 名称和值是进程状态。
RunOBS
运行 CLB 的进程。
该函数只能在主 CLB 模式下使用。
语法
只能包含字母和数字,不能使用空格符号。
StopOBS
停止指定 CLB 的进程。
该函数只能在主 CLB 模式下使用。
语法
只能包含字母和数字,不能使用空格符号。
RemoveOBS
删除指定 CLB 的进程。
该函数只能在主 CLB 模式下使用。
语法
OBSName
CLB 名称。
只能包含字母和数字,不能使用空格符号。
System Contracts
系统合约是在启动 IBAX区块链平台时默认创建的。所有这些合约都是在第一个生态系统中创建的,这就是为什么你需要指定其全名来从其他生态系统中调用它们, 例如,@1NewContract
。
NewEcosystem
创建一个新的生态系统,要获取创建的生态系统ID,必须引用在txstatus 中返回的 result 字段
参数:
- Name string - 生态系统的名称,可以更改该名称。
EditEcosystemName
更改 1_ecosystems 表中生态系统的名称,该表仅存在于第一个生态系统中。
参数:
- EcosystemID int - 更改其名称的生态系统ID;
- NewName string - 生态系统新名称。
NewContract
在当前生态系统中创建一个新合约。
参数:
- ApplicationId int - 新合约所属的应用程序;
- Value string - 合约源码,上层必须只有一个合约;
- Conditions string - 更改该合约的条件;
- TokenEcosystem int "optional" - 生态系统ID,当合约被激活时,将使用哪种通证进行交易。
EditContract
编辑当前生态系统中的合约。
参数:
- Id int - 更改的合约ID;
- Value string "optional" - 合约源码;
- Conditions string "optional" - 更改该合约的条件。
BindWallet
将合约绑定到当前生态系统中的钱包地址。合同绑定后,该地址将支付执行该合约的费用。参数:
- Id int - 要绑定的合约ID。
- WalletId string "optional" - 合约绑定的钱包地址。
UnbindWallet
从当前生态系统中的钱包地址取消绑定合约,只有已绑定该合约的地址才能取消绑定。合约未绑定后,执行合约的用户将支付执行费用。
参数:
NewParameter
早当前生态系统添加了一个新生态系统参数。
参数:
- Name string - 参数名称;
- Value string - 参数值;
- Conditions string - 更改参数的条件。
EditParameter
更改当前生态系统中的现有生态系统参数。
参数:
- Name string - 要更改的参数名称;
- Value string - 新参数值;
- Conditions string - 更改参数的新条件。
在当前生态系统中添加一个新菜单。
参数:
- Name string - 菜单名称;
- Value string - 菜单源码;
- Title string "optional" - 菜单标题;
- Conditions string - 更改菜单的条件。
更改当前生态系统中的现有菜单。
参数:
- Id int - 要更改的菜单ID;
- Value string "optional" - 新菜单源码;
- Title string "optional" - 新菜单标题;
- Conditions string "optional" - 更改菜单的新条件。
将源码内容添加到当前生态系统中的现有菜单。
参数:
- Id int - 菜单ID;
- Value string - 要添加的源码。
NewPage
在当前生态系统中添加新页面。
参数:
- Name string - 页面名称;
- Value string - 页面源码;
- Menu string - 关联该页面的菜单名称;
- Conditions string - 更改页面的条件;
- ValidateCount int "optional" - 页面验证所需的节点数。如果未指定此参数,则使用 min_page_validate_count 生态系统参数值。
该值不能小于 min_page_validate_count 且大于 max_page_validate_count;
- ValidateMode int "optional" - 页面有效性检查模式。值为0表示在加载页面时检查页面。值为1表示在加载和离开页面时检查页面。
EditPage
更改当前生态系统中的现有页面。
参数:
- Id int - 要更改的页面ID;
- Value string "optional" - 新页面源码;
- Menu string "optional" - 关联该页面的新菜单名称;
- Conditions string "optional" - 更改页面的新条件;
- ValidateCount int "optional" - 页面验证所需的节点数。如果未指定此参数,则使用 min_page_validate_count 生态系统参数值。
该值不能小于 min_page_validate_count 且大于 max_page_validate_count;
- ValidateMode int "optional" - 页面有效性检查模式。值为0表示在加载页面时检查页面。值为1表示在加载和离开页面时检查页面。
AppendPage
将源码内容添加到当前生态系统中的现有页面。
参数:
- Id int - 要更改的页面ID;
- Value string - 要添加的源码。
NewBlock
在当前生态系统添加一个页面模块。
参数:
- Name string - 模块名称;
- Value string - 模块源码;
- Conditions string - 更改模块的条件。
EditBlock
更改当前生态系统中的现有页面模块。
Parameters
- Id int - 要更改的模块ID;
- Value string - 新模块源码;
- Conditions string - 更改模块的新条件。
NewTable
在当前生态系统中添加一个新数据表。
参数:
ApplicationId int - 关联数据表的应用程序ID;
Name string - 新数据表名称;
Columns string - JSON格式的字段数组[{"name":"...", "type":"...","index": "0", "conditions":"..."},...]
,其中:
- name - 字段名称,仅限拉丁字符;
- type - 数据类型
varchar,bytea,number,datetime,money,text,double,character
; - index - 非主键字段
0
,主键 1
; - conditions - 更改字段中数据的条件,必须以JSON格式指定访问权限
{"update":"ContractConditions(`MainCondition`)", "read":"ContractConditions(`MainCondition`)"}
;
Permissions string - JSON格式访问权限{"insert": "...", "new_column": "...", "update": "...", "read": "..."}
。
- insert - 插入条目的权限;
- new_column - 添加新列的权限;
- update - 更改条目数据的权限;
- read - 读取条目数据的权限。
EditTable
更改当前生态系统中数据表的访问权限。
参数:
- Name string - 数据表名称。
- InsertPerm string - 将条目插入数据表中的权限;
- UpdatePerm string - 更新表中条目的权限;
- ReadPerm string - 读取表中条目的权限;
- NewColumnPerm string -创建新列的权限;
NewColumn
在当前生态系统的数据表中添加一个新字段。
参数:
- TableName string - 数据表名称;
- Name string - 拉丁字符字段名称;
- Type string - 数据类型;
varchar,bytea,number,money,datetime,text,double,character
; - UpdatePerm string - 更改列中值的权限;
- ReadPerm string - 读取列中值的权限。
EditColumn
更改当前生态系统中的指定数据表字段的权限。
参数:
- TableName string - 数据表名称;
- Name string - 要更改的拉丁字符字段名称;
- UpdatePerm string - 更改列中值的新权限;
- ReadPerm string - 读取列中值的新权限。
NewLang
在当前生态系统中新增多语言资源,添加权限在生态系统参数的 changing_language 参数中设置。
参数:
- Name string - 拉丁字符多语言资源的名称;
- Trans string - JSON格式的字符串,双字符语言代码作为键,翻译字符串作为值。例如:
{"en": "English text", "zh": "Chinese text"}
。
EditLang
更改当前生态系统中的语言资源。更改权限在生态系统参数的 changing_language 参数中设置。
参数:
- Id int - 多语言资源ID。
- Trans - JSON格式的字符串,双字符语言代码作为键,翻译字符串作为值。例如,
{"en": "English text", "zh": "Chinese text"}
。
Import
将应用程序导入当前生态系统。导入来自ImportUpload 合约加载的数据。
参数:
- Data string - 以文本内容格式导入的数据,该数据来自生态系统导出的文件。
ImportUpload
将外部应用程序文件加载到当前生态系统的 buffer_data 表中,以便后续导入。
参数:
- InputFile file - 写入当前生态系统的 buffer_data 表的文件。
NewAppParam
当前生态系统添加新的应用程序参数。
参数:
- ApplicationId int - 应用程序ID;
- Name string - 参数名称;
- Value string - 参数值;
- Conditions string - 更改参数的权限。
EditAppParam
更改当前生态系统中的现有应用程序参数。
参数:
- Id int - 应用程序参数ID;
- Value string "optional" - 新参数值;
- Conditions string "optional" - 更改参数的新权限。
NewDelayedContract
向延迟调度合约守护进程添加新任务。
延迟调度合约守护进程运行当前生成的区块所需的合约。
参数:
- Contract string - 合约名称;
- EveryBlock int - 合约将在指定每隔区块数量后执行;
- Conditions string - 更改任务的权限;
- BlockID int "optional" - 开始启动合约的区块ID,如果未指定,则自动计算"当前区块ID"+EveryBlock;
- Limit int "optional" - 任务的启动次数,如果未指定,则启动合约的任务将无限次执行。
EditDelayedContract
更改延迟调度合约守护进程中的任务。
参数:
- Id int - 任务ID。
- Contract string - 合约名称。
- EveryBlock int - 合约将在指定每隔区块数量后执行;
- Conditions string - 更改任务的权限;
- BlockID int "optional" - 开始启动合约的区块ID,如果未指定,则自动计算"当前区块ID"+ EveryBlock;
- Limit int "optional" - 任务的启动次数,如果未指定,则启动合约的任务将无限次执行。
- Deleted int "optional" - 任务切换。值为
1
将禁用该任务。值为 0
将启用该任务。
UploadBinary
在 X_binaries 表中添加或覆盖静态文件。通过HTTP API调用合约时,请求格式必须使用multipart/form-data
;
该DataMimeType参数将与表单数据一起使用。
参数:
- Name string - 静态文件名称;
- Data bytes - 静态文件的内容;
- DataMimeType string "optional" - mime-type 文件格式的静态文件;
- ApplicationId int - 关联 X_binaries 表的应用程序ID。
如果未传递 DataMimeType 参数,则默认使用 application/octet-stream
格式。