ChainMaker Rust 语言版本智能合约有丰富的 API 接口,供用户在撰写智能合约的时候与链进行交互,代码实现详情可以参考 API 接口代码实现。从逻辑方面划分,可将 API 划分为以下类型:
交易信息提取
get_creator_org_id(&self) -> String |
获取合约创建者所属组织 ID |
get_creator_role(&self) -> String |
获取合约创建者角色 |
get_creator_pub_key(&self) -> String |
获取合约创建者公钥 |
get_sender_org_id(&self) -> String |
获取交易发起者所属组织 ID |
get_sender_role(&self) -> String |
获取交易发起者角色 |
get_tx_id(&self) -> String |
获取交易 ID |
get_sender_pub_key(&self) -> String |
获取交易发起者公钥 |
get_block_height(&self) -> i32 |
获取当前区块高度 |
账本交互
get_state(&self, key: &str, field: &str) -> Result<Vec, result_code> |
获取合约账户信息。该接口可从链上获取类别 “key” 下属性名为 “field” 的状态信息。 |
get_state_from_key(&self, key: &str) -> Result<Vec, result_code> |
获取合约账户信息。该接口可以从链上获取类别为 key 的状态信息 |
put_state(&self, key: &str, field: &str, value: &[u8]) -> result_code |
写入合约账户信息。该接口可把类别 “key” 下属性名为 “filed” 的状态更新到链上。更新成功返回 0,失败则返回 1。 |
put_state_from_key(&self, key: &str, value: &[u8]) -> result_code |
写入合约账户信息。 |
delete_state(&self, key: &str, field: &str) -> result_code |
删除合约账户信息。该接口可把类别 “key” 下属性名为 “name” 的状态从链上删除。 |
delete_state_from_key(&self, key: &str) -> result_code; |
删除合约账户信息。该接口可把类别 “key” 下属性名为 “name” 的状态从链上删除。 |
call_contract(&self, contract_name: &str, method: &str, param: EasyCodec) -> Result<Vec, result_code>; |
跨合约调用。 |
参数处理
arg(&self, key: &str) -> Result |
该接口调用 getArgsMap() 接口,把 json 格式的数据反序列化,并将解析出的数据返还给用户。 |
arg_default_blank(&self, key: &str) -> String; |
该接口可返回属性名为 “key” 的参数的属性值。 |
其他辅助类
ok(&self, value: &[u8]) -> result_code |
该接口可记录用户操作成功的信息,并将操作结果记录到链上。 |
error(&self, body: &str) -> result_code |
该接口可记录用户操作失败的信息,并将操作结果记录到链上。 |
log(&self, msg: &str) |
该接口可记录事件日志。查看方式为在链配置的 log.yml 中,开启 vm:debug 即可看到类似:gasm log>> + msg |
emit_event(&mut self, topic: &str, data: &Vec) -> result_code |
发送合约事件 |
new_iterator(&self,start_key: &str,limit_key: &str) -> Result<Box, result_code> |
新建 key 范围迭代器,key 前闭后开,即:startKey <= dbkey < limitKey |
new_iterator_with_field(&self, key: &str, start_field: &str, limit_field: &str) -> Result<Box, result_code> |
新建 field 范围迭代器,key 需相同,field 前闭后开,即:key = dbdbkey and startField <= dbfield < limitField |
new_iterator_prefix_with_key(&self, key: &str) -> Result<Box, result_code> |
新建指定 key 前缀匹配迭代器,key 需前缀一致,即 dbkey.startWith(key) |
new_iterator_prefix_with_key_field(&self, key: &str, field: &str) -> Result<Box, result_code> |
新建指定 field 前缀匹配迭代器,key 需相同,field 前缀一致,即 dbkey = key and dbfield.startWith(field) |
对腾讯云区块链服务平台 TBaaS的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?