有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
ChainMaker Go (DockerGo) 语言版本智能合约有丰富的 API 接口,供用户在撰写智能合约的时候与链进行交互,代码实现详情可以参考API 接口代码实现
从逻辑方面划分,可将 API 划分为以下类型:

交易信息提取

接口
说明
GetCreatorOrgId() (string, error)
获取合约创建者所属组织ID
GetCreatorRole() (string, error)
获取合约创建者角色
GetCreatorPk() (string, error)
获取合约创建者公钥
GetSenderOrgId() (string, error)
获取交易发起者所属组织ID
GetSenderRole() (string, error)
获取交易发起者角色
GetTxId() (string, error)
获取交易ID
GetSenderPk() (string, error)
获取交易发起者公钥
GetBlockHeight() (int, error)
获取当前区块高度

账本交互

接口
说明
GetState(key string, field string) (string, error)
获取合约账户信息。该接口可从链上获取类别 “key” 下属性名为 “field” 的状态信息。
GetStateFromKey(key string) ([]byte, error)
获取合约账户信息。该接口可以从链上获取类别为key的状态信息
PutState(key string, field string, value string) error
写入合约账户信息。该接口可把类别 “key” 下属性名为 “filed” 的状态更新到链上。更新成功返回0,失败则返回1。
PutStateFromKey(key string, value string) error
写入合约账户信息。
DelState(key string, field string) error
删除合约账户信息。该接口可把类别 “key” 下属性名为 “name” 的状态从链上删除。
CallContract(contractName string, contractVersion string, args map[string][]byte) protogo.Response
跨合约调用。

参数处理

接口
说明
GetArgs() map[string][]byte
该接口将解析出的参数返还给用户。

其他辅助类

接口
说明
Log(message string)
该接口可记录事件日志。
EmitEvent(topic string, data []string)
发送合约事件
NewIterator(startKey string, limitKey string) (ResultSetKV, error)
新建key范围迭代器,key前闭后开,即:startKey <= dbkey < limitKey
NewIteratorWithField(key string, startField string, limitField string) (ResultSetKV, error)
新建field范围迭代器,key需相同,field前闭后开,即:key = dbdbkey and startField <= dbfield < limitField
NewIteratorPrefixWithKey(key string) (ResultSetKV, error)
新建指定key前缀匹配迭代器,key需前缀一致,即dbkey.startWith(key)
NewIteratorPrefixWithKeyField(key string, field string) (ResultSetKV, error)
新建指定field前缀匹配迭代器,key需相同,field前缀一致,即dbkey = key and dbfield.startWith(field)