3 智能合约函数

恒为链提供了一系列的智能合约内置函数,部分函数可以调用区块链服务,等同于调用JSON-RPC接口。

3.1 保存合约状态

3.2 查询合约状态

3.3 保存合约MAP状态

3.4 查询合约MAP状态

3.5 查询合约Map所包含的状态数

3.6 根据索引查询合约MAP状态

3.7 从合约账号转出数字货币

3.8 查询账号

3.9 创建NFTAsset

3.10 销毁NFTAsset

3.11 创建NFT

3.12 废除NFT

3.13 转入NFT到合约账号

3.14 从合约账号转出NFT

3.15 销毁NFT

3.16 查询NFTAsset信息

3.17 查询NFTToken信息

3.18 计算Hash值

3.19 合约账号设置

3.20 合约账号授信

3.1 保存合约状态

合约状态实际上是以一个K/V对的形式存在,

接口名称:

saveContractStatus(k, v)

参数说明:

k: 必须是字符串或者数字,其是合约状态的ID,必选参数。
v: 是该状态对应的值,当v是非null时,则对v采取JSON格式编码后保存, v可以是对象,也可以是简单类型:字符串,数字或boolean。当v是null时,则删除该合约状态。

返回值:

成功,如果v是非null, 则如果k不存在,为true, 否则为false; 如果v是null,则如果k存在,为true,否则为false。
失败,产生错误异常。

3.2 查询合约状态

接口名称:

getContractStatus(k, exist, v)

参数说明:

k: 被查询的合约状态的ID,必须是字符串或数字,其在整个合约空间内唯一。
exist: 是否k的状态必须存在,可选参数。
v: 当前k不存在时,其返回的缺省值,可选参数。

返回值:

如果被查询k的合约状态v不存在,则如果exist为false,返回null,如果exist为true,产生错误异常。
如果被查询k的合约状态v存在,则对v进行解码后,返回。

3.3 保存合约MAP状态

合约MAP可以认为是相关K/V对的集合,每个MAP由一个name唯一标记, MAP内的数据项仍然是由一个k来区分,

接口名称:

saveContractMap(name, k, v)

参数说明:

name: MAP的ID,必须是字符串
k: 被查询的Map内的合约状态ID,其类型必须是字符串或数字,其在该Map内唯一。
v: 是该状态的值,其为可选参数,含义如下:
  当v是非null时,则对v采取JSON格式编码后保存, v可以是对象,也可以是简单类型:字符串,数字或boolean,
  当v是null时,则从Map中删除该合约状态。

返回值:

成功,如果v是非null, 则如果k不存在,为true, 否则为false; 如果v是null,则如果k存在,为true,否则为false
失败,产生错误异常

注: Map的引入使得不同Map可以有相同的k。

3.4 查询合约MAP状态

接口名称:

getContractMap(name, k, exist, v)

参数说明:

name: Map的ID。
k: 被查询的Map内的合约状态ID。
exist: 是否k必须存在,可选参数,Boolean类型。
v: 当查询的k不存在且exist为false时,返回的缺省值, 可选参数。

返回值:

如果被查询k的合约状态v不存在,则如果exist为false,返回null,如果exist为true,产生错误异常。
如果被查询k的合约状态v存在,则对其解码后返回。

3.5 查询合约Map所包含的状态数

接口名称:

getContractMapTotal(name)

参数说明:

name: Map的ID。

返回值:

被查询Map中所包含的K/V对的数目。

3.6 根据索引查询合约MAP状态

每个被添加到MAP中的K/V对,都有一个对应的整数索引,索引从1开始编号,整个MAP中的索引范围是[1, N],N是 MAP中所包含的状态数,即通过前面的getContractMapTotal获取的结果。

接口名称:

getContractMapByIndex(name, index, exist)

参数说明:

name: Map的ID。
index: 整数索引。
exist: 是否该值必须存在,可选参数。

返回值:

如果被查询的合约状态不存在,则,如果exist为false, 返回null,如果exist为true,产生错误异常。
如果被查询的合约状态v存在,则对其解码后,返回v。除此之外, 该接口还会在第二个返回值里返回该状态在Map中的对应k,字符串类型。即当查询的MAP中的状态存在时,其返回值是一对值,即(v, k)。

3.7 从合约账号转出数字货币

合约代码可调用该接口从合约账号中转出资产到指定账号。

接口名称:

transferAmount(to, amount)

参数说明:

to: 转出的目的账号。
amount: 转出的资产数额,可以是二级资产。

返回值:

转账失败,则产生错误异常,否则,执行成功。

注:向合约账号转入数字货币,是在调用合约时,完成的。

3.8 查询账号

用于判断账号是否在账本上存在。

接口名称:

accountExists(account)

参数说明:

account: 账号地址,字符串类型。

返回值:

存在为true,否则,为false。

3.9 创建NFTAsset

合约账号创建NFT Asset。

接口名称:

createNFAsset(id, flags, name)

参数说明:

id: 创建NFT Asset的用户ID,字符串类型。
flags: 该类NFT Asset的特性或者说允许的操作的编码,与AssetCreate交易中的Flags字段一致,整数类型。
name: 可选,资产描述性名称,字符串类型。

返回值:

成功,返回AssetID字符串;失败,则产生错误异常。

3.10 销毁NFTAsset

合约账号销毁自己创建的NFT Asset。

接口名称:

destroyNFAsset(assetid)
destroyNFAsset(account, id)

参数说明:

assetid: NFT Asset的唯一ID,Hash256字符串。
account: NFT Asset创建者的账号,字符串类型。
id: NFT Asset的用户ID,字符串类型。

返回值:

如果销毁失败,则产生错误异常;如果销毁成功,则正常返回,合约继续执行。

3.11 创建NFT

被调用合约账号创建NFT,

接口名称:

createNFToken(assetid, id, name, owner)

参数说明:

assetid: 创建的NFT Token所属的Asset ID,字符串类型。
id: 创建的NFT Token的用户ID,字符串类型。
name: 创建的NFT Token的名字,可选参数,字符串类型。
owner: 创建的NFT Token的所有者,可选参数,字符串类型,如果没有该参数,则所有者是合约账号。

返回值:

如果创建失败,则产生错误异常;如果创建成功,则返回TokenID,字符串类型;
如果相同id的Token已经存在,则会创建失败。

3.12 废除NFT

被调用合约账号废除其发行的NFT,

接口名称:

revokeNFToken(assetid, id)
revokeNFToken(tokenid)

参数说明:

assetid: 废除的NFT AssetID,字符串类型。
id: 废除的NFT Token用户ID,字符串类型。
tokenid: 废除的NFT TokenID,字符串类型。

返回值:

如果废除失败,则产生错误异常;如果废除成功,则正常返回,合约继续执行。

3.13 转入NFT到合约账号

将调用合约的账号上的NFT转入到被调用合约账号。

接口名称:

transferInNFToken(assetid, id)
transferInNFToken(tokenid)

参数说明:

assetid: 转移的NFT AssetID,字符串类型。
id: 转移的NFT Token用户ID,字符串类。
tokenid: 转移的NFT TokenID,字符串类型。

返回值:

如果转移失败,则产生错误异常;如果转移成功,则正常返回,合约继续执行。

3.14 从合约账号转出NFT

将被调用合约账号上的NFT转入到指定账号。

接口名称:

transferOutNFToken(to, assetid, id)
transferOutNFToken(to, tokenid)

参数说明:

to: 转出NFT的目的账号
assetid: 转移的NFT AssetID,字符串类型。
id: 转移的NFT Token用户ID,字符串类型。
tokenid: 转移的NFT TokenID,字符串类型。

返回值:

如果转移失败,则产生错误异常;如果转移成功,则正常返回,合约继续执行。

3.15 销毁NFT

将被调用合约账号上的NFT进行销毁。

接口名称:

destroyNFToken(assetid, id)
destoryNFToken(tokenid)

参数说明:

assetid: 被销毁的NFT AssetID,字符串类型。
id: 被销毁的NFT Token用户ID,字符串类型。
tokenid: 被销毁的NFT TokenID,字符串类型。

返回值:

如果销毁失败,则产生错误异常;如果销毁成功,则正常返回,合约继续执行。

3.16 查询NFTAsset信息

查询某个NFT资产信息。

接口名称:

getNFAssetInfo(account, id, exist, v)
getNFAssetInfo(assetid, exist, v)

参数说明:

account: 创建资产的账号,字符串类型。
id: 资产用户ID,字符串类型。
assetid: NFT AssetID,字符串类型。
exist: 是否查询的资产必须存在,可选参数,Boolean类型。
v: 当查询的资产不存在,且exist为false时,返回的缺省值, 可选参数,对象类型。

返回值:

如果被查询NFT资产不存在,则如果exist为false,返回null,如果exist为true,产生错误异常。
如果被查询NFT资产存在,则返回资产信息,对象类型,其具体内容与调用NFT Asset查询RPC接口,返回的NFT Asset信息一致。

3.17 查询NFTToken信息

查询某个NFToken信息。

接口名称:

getNFTokenInfo(assetid, id, exist, v)
getNFTokenInfo(tokenid, exist, v)

参数说明:

assetid: NFT AssetID,字符串类型。
id: NFT Token用户ID,字符串类型。
tokenid: NFT TokenID,字符串类型。
exist: 是否查询的Token必须存在,可选参数,Boolean类型。
v: 当查询的Token不存在,且exist为false时,返回的缺省值,可选参数,对象类型。

返回值:

如果被查询NFToken不存在,则如果exist为false,返回null,如果exist为true,产生错误异常。
如果被查询NFToken存在,则返回Token信息,对象类型,其具体内容与调用NFT Token查询RPC接口,返回的NFT Token信息一致。

3.18 计算Hash值

计算某个输入串的Hash值,

接口名称:

calcHash(data, type)

参数说明:

data: 计算Hash的输入字符串。
type: Hash类型,保留参数,暂时未用到,忽略即可。目前,计算的Hash类型是SHA256。

返回值:

如果执行成功,返回的是Hash的字符串;如果执行失败,则产生错误异常。

3.19 合约账号设置

设置合约账号的相关信息。

接口名称:

setAccountInfo(info)

参数说明:

info: 要设置的信息,对象或字符串类型,如果要设置账号的Flags字段,则info为如下形式: { "Flags":8 }

返回值:

如果失败,则产生错误异常;如果成功,则正常返回,合约继续执行。

3.20 合约账号授信

合约账号授信某个二级资产。

接口名称:

setTrustLine(limit)

参数说明:

limit: 授信的二级资产信息,对应TrustSet交易中的LimitAmount字段,其格式可以是对象或字符串类型,如下所示:
          { "currency":"CNY", "issuer":"hBms2u4NmEhF6iuNdwwqv75iTMBi5N8mnW", "value":100000000}

返回值:

如果失败,则产生错误异常;如果成功,则正常返回,合约继续执行。

results matching ""

    No results matching ""