Go API¶
标签:go-sdk
AMOP
Go SDK为区块链应用开发者提供了Go API接口,以服务的形式供外部调用。按照功能,Go API可以分为如下几类:
client:提供访问FISCO BCOS 2.0+节点JSON-RPC接口支持、提供部署及调用合约的支持;
PrecompiledService:Precompiled合约(预编译合约)是一种FISCO BCOS底层内嵌的、通过C++实现的高效智能合约,提供包括 基于表的权限控制、CNS、系统属性配置、节点类型配置、用户表 CRUD、基于角色的权限控制、合约生命周期权限控制等功能。PrecompiledService是调用这类功能的API的统称,分为:
PermissionService:提供对分布式权限控制的支持;
CNSService:提供对CNS的支持;
SystemConfigService:提供对系统配置的支持;
ConsensusService:提供对节点类型配置的支持;
CRUDService:提供对CRUD(增删改查)操作的支持,可以创建表或对表进行增删改查操作;
ChainGovernanceService:提供基于角色的权限控制支持;
ContractLifeCycleService:提供合约生命周期权限控制支持。
Client¶
位置:go-sdk/client/go_client.go
功能:访问FISCO BCOS 2.0+节点JSON-RPC
接口名 | 描述 | 参数 |
---|---|---|
GetClientVersion | 获取区块链节点版本信息 | 无 |
GetBlockNumber | 获取最新块高 | 无 |
GetPbftView | 获取PBFT视图 | 无 |
GetBlockLimit | 获取最新区块高度限制 | 无 |
GetSealerList | 获取共识节点列表 | 无 |
GetObserverList | 获取观察者节点列表 | 无 |
GetConsensusStatus | 获取区块链节点共识状态 | 无 |
GetSyncStatus | 获取区块链节点同步状态 | 无 |
GetPeers | 获取区块链节点的连接信息 | 无 |
GetGroupPeers | 获取指定群组的共识节点和观察节点列表 | 无 |
GetNodeIDList | 获取节点及其连接节点的列表 | 无 |
GetGroupList | 获取节点所属群组的群组ID列表 | 无 |
GetBlockByHash | 根据区块哈希获取区块信息 | 区块哈希 & bool |
GetBlockByNumber | 根据区块高度获取区块信息 | 区块高度 & bool |
GetBlockHashByNumber | 根据区块高度获取区块哈希 | 区块高度 |
GetTransactionByHash | 根据交易哈希获取交易信息 | 交易哈希 |
GetTransactionByBlockHashAndIndex | 根据交易所属的区块哈希、 交易索引获取交易信息 | 交易所属的区块哈希 & 交易索引 |
GetTransactionByBlockNumberAndIndex | 根据交易所属的区块高度、 交易索引获取交易信息 | 交易所属的区块高度 & 交易索引 |
GetTransactionReceipt | 根据交易哈希获取交易回执 | 交易哈希 |
GetContractAddress | 根据部署合约时产生的交易地址获取合约地址 | 交易哈希 |
GetPendingTransactions | 获取交易池内所有未上链的交易 | 无 |
GetPendingTxSize | 获取交易池内未上链的交易数目 | 无 |
GetCode | 根据合约地址查询合约数据 | 合约地址 |
GetTotalTransactionCount | 获取指定群组的上链交易数目 | 无 |
GetSystemConfigByKey | 根据关键字获取区块链系统配置 | 系统配置关键字,目前支持: - tx_count_limit - tx_gas_limit - rpbft_epoch_sealer_num - rpbft_epoch_block_num |
Call | 调用只读合约 | 合约地址 调用接口* 参数列表 |
SendRawTransaction | 发送一个经过签名的交易,该交易随后会被链上节点执行并共识 | 已签名交易 |
AsyncSendTransaction | 异步发送一个经过签名的交易,该交易随后会被链上节点执行并共识 | 已签名交易以及回调 |
SubscribeEventLogs | 监听合约事件eventlog | event参数与收到后处理的回调函数 |
SubscribeTopic | 监听链上信使协议AMOP的topic | topic与收到后处理的回调函数 |
SendAMOPMsg | 发送链上信使协议AMOP的消息,随机发送到某个监听此topic的SDK | topic与消息 |
BroadcastAMOPMsg | 广播发送链上信使协议AMOP的消息,发送到所有监听此topic的SDK | topic与消息 |
UnsubscribeTopic | 取消监听链上信使协议AMOP的topic | topic |
SubscribePrivateTopic | 监听权限校验链上信使协议AMOP的topic | topic、私钥和收到后处理的回调函数 |
PublishPrivateTopic | 发布权限校验链上信使协议AMOP的topic | topic、公钥列表 |
SendAMOPPrivateMsg | 发送权限校验链上信使协议AMOP的消息,随机发送到某个监听此topic的SDK | topic、消息 |
BroadcastAMOPPrivateMsg | 广播发送权限校验链上信使协议AMOP的消息,发送到所有监听此topic的SDK | topic、消息 |
UnsubscribePrivateTopic | 取消监听 | topic |
SubscribeBlockNumberNotify | 取消块高通知 | 收到块高通知的回调函数 |
UnsubscribeBlockNumberNotify | 取消监听块高通知 |
注解
如果用户试图尝试使用一个 sdk 连接多个群组,可以利用 APIHandler 中暴露的接口,详细内容可阅读源码 go-sdk
PermissionService¶
位置:go-sdk/precompiled/permission
功能:提供对基于表的权限控制支持
接口名 | 描述 | 参数 |
---|---|---|
GrantUserTableManager | 根据用户表名和外部账户地址设置权限信息 | 表名 & 外部账户地址 |
RevokeUserTableManager | 根据用户表名和外部账户地址去除权限信息 | 表名 & 外部账户地址 |
ListUserTableManager | 根据用户表名查询设置的权限记录列表(每条记录包含外部账户地址和生效块高) | 表名 |
GrantContractWritePermission | 根据合约地址和外部账户地址设置合约写权限信息 | 合约地址 & 外部账户地址 |
RevokeContractWritePermission | 根据合约地址和外部账户地址去除合约写权限信息 | 合约地址 & 外部账户地址 |
ListContractWritePermission | 根据合约地址查询拥有合约写权限的记录列表 | 合约地址 |
GrantDeployAndCreateManager | 增加外部账户地址部署合约和创建用户表的权限 | 外部账户地址 |
RevokeDeployAndCreateManager | 移除外部账户地址部署合约和创建用户表的权限 | 外部账户地址 |
ListDeployAndCreateManager | 查询拥有部署合约和创建用户表权限的记录列表 | 无 |
GrantPermissionManager | 授予外部账户地址链管理员权限,链管理员可以使用权限分配功能 | 外部账户地址 |
RevokePermissionManager | 撤销链外部账户地址链管理员权限 | 外部账户地址 |
ListPermissionManager | 查询拥有链管理权限的记录列表 | 无 |
GrantNodeManager | 增加外部账户地址的节点管理权限 | 外部账户地址 |
RevokeNodeManager | 移除外部账户地址的节点管理权限 | 外部账户地址 |
ListNodeManager | 查询拥有节点管理的权限记录列表 | 无 |
GrantCNSManager | 增加外部账户地址使用CNS的权限 | 外部账户地址 |
RevokeCNSManager | 移除外部账户地址使用CNS的权限 | 外部账户地址 |
ListCNSManager | 查询拥有使用CNS权限的记录列表 | 无 |
GrantSysConfigManager | 增加外部账户地址的系统参数管理权限 | 外部账户地址 |
RevokeSysConfigManager | 移除外部账户地址的系统参数管理权限 | 外部账户地址 |
ListSysConfigManager | 查询拥有系统参数管理的权限记录列表 | 无 |
CNSService¶
位置:go-sdk/precompiled/cns
功能:提供对CNS的支持
接口名 | 描述 | 参数 |
---|---|---|
RegisterCns | 根据合约名、合约版本号、合约地址和合约abi注册CNS信息 | 合约名 & 合约版本号 & 合约地址 & 合约abi |
GetAddressByContractNameAndVersion | 根据合约名和合约版本号(合约名和合约版本号用英文冒号连接)查询合约地址。若缺失合约版本号,默认使用合约最新版本 | 合约名 + ':' + 版本号 |
QueryCnsByName | 根据合约名查询CNS信息 | 合约名 |
QueryCnsByNameAndVersion | 根据合约名和版本号查询CNS信息 | 合约名 & 版本号 |
SystemConfigService¶
位置:go-sdk/precompiled/config
功能:提供修改系统配置项的功能,目前支持的配置项有 tx_count_limit、tx_gas_limit、rpbft_epoch_sealer_num 和 rpbft_epoch_block_num
接口名 | 描述 | 参数 |
---|---|---|
SetValueByKey | 根据键设置对应的值(查询键对应的值,参考ApiHandler中的 getSystemConfigByKey 接口) | 键名 & 值 |
ConsensusService¶
位置:go-sdk/precompiled/consensus
功能:提供对节点类型配置的支持
接口名 | 描述 | 参数 |
---|---|---|
AddSealer | 根据节点NodeID设置对应节点为共识节点 | 节点ID |
AddObserver | 根据节点NodeID设置对应节点为观察者节点 | 节点ID |
RemoveNode | 根据节点NodeID设置对应节点为游离节点 | 节点ID |
CRUDService¶
位置:go-sdk/precompiled/crud
功能:提供对CRUD(增删改查)操作的支持
接口名 | 描述 | 参数 |
---|---|---|
CreateTable | 创建表 | 表名 & 主键字段名 & 其它字段名 |
AsyncCreateTable | 异步创建表 | 表名 & 主键字段名 & 其它字段名 handler:处理交易回执和 error 的函数 |
Insert | 插入记录 | 表名 & 主键字段名 Entry对象:Entry是map对象,提供插入的字段名和字段值 |
AsyncInsert | 异步插入记录 | 表名 & 主键字段名 Entry对象:Entry是map对象,提供插入的字段名和字段值 handler:处理交易回执和 error 的函数 |
Select | 查询记录 | 表名 & 主键字段名 Condtion对象:Condition对象是条件对象,可以设置查询的匹配条件 |
Update | 更新记录 | 表名 & 主键字段名 Entry对象:Entry是map对象,提供待更新的字段名和字段值 Condtion对象:Condition对象是条件对象,可以设置查询的匹配条件 |
AsyncUpdate | 异步更新记录 | 表名 & 主键字段名 Entry对象:Entry是map对象,提供待更新的字段名和字段值 Condtion对象:Condition对象是条件对象,可以设置查询的匹配条件 handler:处理交易回执和 error 的函数 |
Remove | 移除记录 | 表名 & 主键字段名 Condtion对象:Condition对象是条件对象,可以设置查询的匹配条件 |
AsyncRemove | 异步移除记录 | 表名 & 主键字段名 Condtion对象:Condition对象是条件对象,可以设置查询的匹配条件 handler:处理交易回执和 error 的函数 |
Desc | 根据表名查询表的信息 | 表名 |
ChainGovernanceService¶
位置:go-sdk/precompiled/chaingovernance
功能:提供对基于角色的权限控制支持
接口名 | 描述 | 参数 |
---|---|---|
GrantCommitteeMember | 根据外部账户地址新增委员会成员 | 外部账户地址 |
RevokeCommitteeMember | 根据外部账户地址撤销委员会成员 | 外部账户地址 |
ListCommitteeMembers | 查询委员会成员列表 | 无 |
QueryCommitteeMemberWeight | 根据外部账户地址查询委员会成员投票权值 | 外部账户地址 |
UpdateCommitteeMemberWeight | 根据外部账户地址更新委员会成员投票权值 | 外部账户地址 & 权值(大于 0 的整数) |
UpdateThreshold | 更新委员会全体委员投票时票数占比生效的阈值 | 阈值 [0, 99) |
QueryThreshold | 查询委员会全体委员投票时票数占比生效的阈值 | 无 |
GrantOperator | 根据外部账户地址新增运维权限 | 外部账户地址 |
RevokeOperator | 根据外部账户地址撤销运维权限 | 外部账户地址 |
ListOperators | 查询全体运维成员列表 | 无 |
FreezeAccount | 根据外部账户地址冻结账户,该外部账号需要是部署过合约的账号 | 外部账户地址 |
UnfreezeAccount | 根据外部账户地址解冻账户 | 外部账户地址 |
GetAccountStatus | 根据外部账户地址查询账户状态 | 外部账户地址 |
ContractLifeCycleService¶
位置:go-sdk/precompiled/contractlifecycle
功能:提供对合约生命周期操作的支持
接口名 | 描述 | 参数 |
---|---|---|
Freeze | 根据合约地址冻结合约 | 合约地址 |
Unfreeze | 根据合约地址解冻合约 | 合约地址 |
GrantManager | 根据合约地址和外部账户地址授予账户合约管理权限 | 合约地址 & 外部账户地址 |
GetStatus | 根据合约地址查询合约状态 | 合约地址 |
ListManager | 查询拥有合约地址管理权限的外部账号 | 合约地址 |