POC共识模块

为什么要有共识模块

众所周知,区块链的核心是共识机制。和传统互联网的cliet-server架构不同,区块链的节点是对等的,没有中心,大家权利一样;所以为了使数据达到一致性,让一个没有中心的网络维护一套大家都认同的账本,这就是共识机制的作用。 从广义上来说,共识机制就是区块链每个节点共同遵守的规则或算法,是实现互信的基础,如此才能实现去中心化的无监管,维持整个平台的正常运转。 从狭义来说,共识机制决定了每个节点对区块链上交易的验证和确认的机制。

共识模块要做什么

区块链的每次交易,都必须获得每个节点的认可,只有全网都达成共识后,交易才算完成。就好像民主选举中,投票方式或规则必须被全民认可,基于此才能完成选举。而在区块链中,共识机制的主要表现就是激励制度,也就是给矿工的奖励。在共识机制的保障下,每个矿工都能获得奖励,整个区块链才能有序的运转,提供公平、透明及互信的环境。因此共识模块就需要提供特定的算法来维持,即共识算法。

公链共识机制有多种,主流的有POW、POS、DPOS。NULS主网采用自主原创的POC(Proof Of Credit)共识机制,一种继承了Dpos共识机制的安全性和高效率,同时在协作方面进行了非常大的改进,可以看成是一种升级版的Dpos。

POC共识模块职责:

  • 区块同步后的合法性验证

  • 创建共识节点、委托参与共识、取消委托、注销共识节点★

  • 共识节点打包出块

  • 网络维护激励的发放

  • 作恶节点惩罚★

    不同的共识机制其共识算法不尽相同,有标记★的为POC共识特有

《共识模块》在系统中的定位

共识模块在系统中是比较核心的一块,主要负责打包交易出块,验证区块头,管理系统中的共识节点信息,委托信息,处罚信息等。

接口列表

createAgentValid

create agent transaction validate

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
tx string 交易

返回值

字段名 字段类型 参数描述
value boolean 创建节点验证结果

stopAgentValid

stop agent transaction validate

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
tx string 交易

返回值

字段名 字段类型 参数描述
value boolean 停止节点交易验证结果

depositValid

deposit agent transaction validate

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
tx string 交易

返回值

字段名 字段类型 参数描述
value boolean 委托交易验证结果

withdrawValid

withdraw deposit agent transaction validate

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
tx string 交易

返回值

字段名 字段类型 参数描述
value boolean 退出共识交易验证结果

cs_runChain

Running a sub chain 1.0

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId string

返回值

无返回值

cs_getAgentChangeInfo

get seed nodes list

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId string

返回值

无返回值

cs_addEvidenceRecord

链分叉证据记录/add evidence record

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
blockHeader string 分叉区块头一
evidenceHeader string 分叉区块头二

返回值

字段名 字段类型 参数描述
value boolean 处理结果

cs_doubleSpendRecord

双花交易记录/double spend transaction record

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
block string 区块信息
tx string 分叉交易

返回值

字段名 字段类型 参数描述
value boolean 处理结果

cs_getWholeInfo

查询全网共识数据/query the consensus information of the whole network

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id

返回值

字段名 字段类型 参数描述
agentCount int 节点数量
totalDeposit string 总委托两
rewardOfDay string 当天共识奖励总量
consensusAccountNumber int 参与共识人数
packingAgentCount int 当前轮次出块节点数量

cs_getInfo

查询指定账户共识数据/query consensus information for specified accounts

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
address string 账户地址

返回值

字段名 字段类型 参数描述
agentCount int 节点数量
totalDeposit string 参与共识的总金额
joinAgentCount int 参与共识节点的数量
usableBalance string 可用余额
reward string 获得的共识奖励
rewardOfDay string 当天获得的共识奖励
agentHash string 创建的节点HASH

cs_getPublishList

查询红黄牌记录/query punish list

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
address string 地址
type int 惩罚类型 0红黄牌记录 1红牌记录 2黄牌记录

返回值

字段名 字段类型 参数描述
redPunish list<string> 获得的红牌列表
yellowPunish list<string> 获得的黄牌惩罚列表

cs_getRoundInfo

获取当前轮次信息/get current round information

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id

返回值

字段名 字段类型 参数描述
totalWeight double 当前轮次总权重
index long 轮次下标
startTime long 轮次开始时间
endTime long 轮次结束时间
memberCount int 本轮次出块节点数
memberList list<object> 本轮次出块成员信息
        roundIndex long 轮次下标
        roundStartTime long 轮次开始时间
        packingIndexOfRound int 该节点在本轮次中第几个出块
        agent object 共识节点信息
                agentAddress byte[] 节点地址
                packingAddress byte[] 出块地址
                rewardAddress byte[] 奖励地址
                deposit biginteger 保证金
                commissionRate byte 佣金比例
                time long 创建时间
                blockHeight long 所在区块高度
                delHeight long 节点注销高度
                status int 状态,0:待共识 unConsensus, 1:共识中 consensus
                creditVal double 信誉值
                totalDeposit biginteger 节点总委托金额
                txHash nulshash 创建该节点的交易HASH
                memberCount int 参与共识人数
                alais string 节点别名
        depositList list<object> 当前节点委托信息
                deposit biginteger 委托金额
                agentHash nulshash 委托的节点HASH
                address byte[] 委托账户
                time long 委托时间
                status int 状态
                txHash nulshash 委托交易HASH
                blockHeight long 委托交易被打包的高度
                delHeight long 退出委托高度
        sortValue string 排序值
        packStartTime long 当前节点开始出块时间
        packEndTime long 当前节点出块结束时间
preRound object<meetinground> 上一轮信息
myMember object 当前节点出块信息
        roundIndex long 轮次下标
        roundStartTime long 轮次开始时间
        packingIndexOfRound int 该节点在本轮次中第几个出块
        agent object 共识节点信息
                agentAddress byte[] 节点地址
                packingAddress byte[] 出块地址
                rewardAddress byte[] 奖励地址
                deposit biginteger 保证金
                commissionRate byte 佣金比例
                time long 创建时间
                blockHeight long 所在区块高度
                delHeight long 节点注销高度
                status int 状态,0:待共识 unConsensus, 1:共识中 consensus
                creditVal double 信誉值
                totalDeposit biginteger 节点总委托金额
                txHash nulshash 创建该节点的交易HASH
                memberCount int 参与共识人数
                alais string 节点别名
        depositList list<object> 当前节点委托信息
                deposit biginteger 委托金额
                agentHash nulshash 委托的节点HASH
                address byte[] 委托账户
                time long 委托时间
                status int 状态
                txHash nulshash 委托交易HASH
                blockHeight long 委托交易被打包的高度
                delHeight long 退出委托高度
        sortValue string 排序值
        packStartTime long 当前节点开始出块时间
        packEndTime long 当前节点出块结束时间

cs_getRoundMemberList

查询指定区块所在轮次的成员列表/Query the membership list of the specified block's rounds

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
extend string 区块头扩展信息

返回值

字段名 字段类型 参数描述
packAddressList list<string> 当前伦次出块地址列表

cs_getConsensusConfig

获取共识模块配置信息/get consensus config

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id

返回值

字段名 字段类型 参数描述
seedNodes string 种子节点列表
inflationAmount integer 委托金额最大值
agentAssetId integer 共识资产ID
agentChainId integer 共识资产链ID
awardAssetId integer 奖励资产ID(共识奖励为本链资产)

cs_runMainChain

run main chain 1.0

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId string

返回值

无返回值

cs_stopChain

stop a chain 1.0

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId string

返回值

无返回值

cs_getAgentList

查询当前网络中的共识节点列表/Query the list of consensus nodes in the current network

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
pageNumber int 页码
pageSize int 每页大小
keyWord string 关键字

返回值

字段名 字段类型 参数描述
agentHash string 节点HASH
agentAddress string 节点地址
packingAddress string 节点出块地址
rewardAddress string 节点奖励地址
deposit string 抵押金额
commissionRate byte 佣金比例
agentName string 节点名称
agentId string 节点ID
introduction string 节点简介
time long 节点创建时间
blockHeight long 节点打包高度
delHeight long 节点失效高度
status int 状态
creditVal double 信誉值
totalDeposit string 总委托金额
txHash string 创建节点交易HASH
memberCount int 委托人数
version string 版本

cs_stopAgent

注销节点/stop agent

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
address string 节点地址
password string 密码

返回值

字段名 字段类型 参数描述
txHash string 停止节点交易HASH

cs_createAgent

创建节点交易/create agent transaction

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
agentAddress string 节点地址
packingAddress string 节点出块地址
rewardAddress string 奖励地址,默认节点地址
commissionRate int 佣金比例
deposit string 抵押金额
password string 密码

返回值

字段名 字段类型 参数描述
txHash string 创建节点交易HASH

cs_getAgentInfo

查询指点节点节点详细信息/Query pointer node details

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
agentHash string 节点HASH

返回值

字段名 字段类型 参数描述
agentHash string 节点HASH
agentAddress string 节点地址
packingAddress string 节点出块地址
rewardAddress string 节点奖励地址
deposit string 抵押金额
commissionRate byte 佣金比例
agentName string 节点名称
agentId string 节点ID
introduction string 节点简介
time long 节点创建时间
blockHeight long 节点打包高度
delHeight long 节点失效高度
status int 状态
creditVal double 信誉值
totalDeposit string 总委托金额
txHash string 创建节点交易HASH
memberCount int 委托人数
version string 版本

cs_getAgentStatus

查询指定共识节点状态/query the specified consensus node status 1.0

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
agentHash string 节点HASH

返回值

字段名 字段类型 参数描述
status byte 节点状态

cs_updateAgentConsensusStatus

修改节点共识状态/modifying the Node Consensus State

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id

返回值

字段名 字段类型 参数描述
N/A void 无特定返回值,无错误则表示节点共识状态修改成功

cs_updateAgentStatus

修改节点打包状态/modifying the Packing State of Nodes

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
status int 节点状态

返回值

字段名 字段类型 参数描述
N/A void 无特定返回值,无错误则表示节点打包状态修改成功

cs_getNodePackingAddress

获取当前节点出块地址/Get the current node's out-of-block address

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id

返回值

字段名 字段类型 参数描述
packAddress string 当前节点出块地址

cs_getAgentAddressList

获取当前网络共识节点出块地址列表或则查询最近N个区块的出块地址/Get all node out-of-block addresses or specify N block out-of-block designations

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id

返回值

字段名 字段类型 参数描述
packAddress string 共识节点列表

cs_getPackerInfo

获取当前节点的出块账户信息/modifying the Packing State of Nodes

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id

返回值

字段名 字段类型 参数描述
address string 当前节点出块地址
password string 当前节点密码
packAddressList list<string> 当前打包地址列表

cs_getSeedNodeInfo

获取种子节点信息/get seed node info

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id

返回值

字段名 字段类型 参数描述
address string 当前节点出块地址
password string 当前节点密码
packAddressList list<string> 当前打包地址列表

cs_stopContractAgent

智能合约注销节点/contract stop agent

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
contractAddress string 合约地址
contractSender string 合约调用者地址
contractBalance string 合约地址的当前余额
contractNonce string 合约地址的当前nonce值
blockTime long 当前打包的区块时间

返回值

字段名 字段类型 参数描述
返回值 list<string> 返回交易HASH和交易

cs_createContractAgent

智能合约创建节点/contract create agent

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
packingAddress string 出块地址
deposit string 抵押金额
commissionRate string 佣金比例
contractAddress string 合约地址
contractSender string 合约调用者地址
contractBalance string 合约地址的当前余额
contractNonce string 合约地址的当前nonce值
blockTime long 当前打包的区块时间

返回值

字段名 字段类型 参数描述
返回值 list<string> 返回交易HASH和交易

cs_contractDeposit

智能合约委托共识/contract deposit agent transaction

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
agentHash string 委托的节点HASH
deposit string 委托金额
contractAddress string 合约地址
contractSender string 合约调用者地址
contractBalance string 合约地址的当前余额
contractNonce string 合约地址的当前nonce值
blockTime long 当前打包的区块时间

返回值

字段名 字段类型 参数描述
返回值 list<string> 返回交易HASH和交易

cs_contractWithdraw

智能合约退出共识/contract withdraw deposit agent transaction

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
joinAgentHash string 节点HASH
contractAddress string 合约地址
contractSender string 合约调用者地址
contractBalance string 合约地址的当前余额
contractNonce string 合约地址的当前nonce值
blockTime long 当前打包的区块时间

返回值

字段名 字段类型 参数描述
返回值 list<string> 返回交易HASH和交易

cs_getContractDepositInfo

智能合约查询指定账户委托信息/Intelligent Contract Query for Assigned Account Delegation Information

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
joinAgentHash string 节点HASH
contractAddress string 合约地址
contractSender string 合约调用者地址

返回值

字段名 字段类型 参数描述
返回值 list<string> 委托信息

cs_getContractAgentInfo

智能合约节点/contract get agent info

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
agentHash string 节点HASH
contractAddress string 合约地址
contractSender string 合约调用者地址

返回值

字段名 字段类型 参数描述
返回值 list<string> 节点信息

cs_triggerCoinBaseContract

交易模块触发CoinBase智能合约/trigger coin base contract

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
tx string 交易信息
blockHeader string 区块头
stateRoot string stateRoot

返回值

字段名 字段类型 参数描述
value string stateRoot

cs_chainRollBack

区块回滚/chain rollback

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
height int 区块回滚到的高度

返回值

字段名 字段类型 参数描述
value boolean 区块回滚结果

cs_addBlock

接收并缓存新区块/Receiving and caching new blocks

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
blockHeader string 区块头

返回值

字段名 字段类型 参数描述
value boolean 接口执行成功与否

cs_receiveHeaderList

接收并缓存区块列表/Receive and cache block lists

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
headerList string 区块头列表

返回值

字段名 字段类型 参数描述
value boolean 是否成功接收处理

cs_validBlock

验证区块/verify block correctness

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
download int 区块状态
block string 区块信息

返回值

字段名 字段类型 参数描述
value boolean 验证结果

cs_createMultiAgent

多签账户创建节点/Multi-Sign Account create agent transaction

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
agentAddress string 节点地址(多签地址)
packingAddress string 节点出块地址
rewardAddress string 奖励地址,默认节点地址
commissionRate int 佣金比例
deposit string 抵押金额
password string 签名账户密码
signAddress string 签名账户地址

返回值

字段名 字段类型 参数描述
tx string 完整交易序列化字符串,如果交易没达到最小签名数可继续签名
txHash string 交易hash
completed boolean true:交易已完成(已广播),false:交易没完成,没有达到最小签名数

cs_stopMultiAgent

多签账户注销节点/Multi-Sign Account stop agent

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
address string 节点地址(多签地址)
password string 签名账户密码
signAddress string 签名账户地址

返回值

字段名 字段类型 参数描述
tx string 完整交易序列化字符串,如果交易没达到最小签名数可继续签名
txHash string 交易hash
completed boolean true:交易已完成(已广播),false:交易没完成,没有达到最小签名数

cs_multiDeposit

多签账户委托共识/Multi-Sign Account deposit agent transaction

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
address string 多签账户地址
agentHash string 节点HASH
deposit string 委托金额
password string 签名账户密码
signAddress string 签名账户地址

返回值

字段名 字段类型 参数描述
tx string 完整交易序列化字符串,如果交易没达到最小签名数可继续签名
txHash string 交易hash
completed boolean true:交易已完成(已广播),false:交易没完成,没有达到最小签名数

cs_multiWithdraw

多签账户退出共识/Multi-Sign Account withdraw deposit agent transaction

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
address string 多签账户地址
txHash string 加入共识交易HASH
password string 签名账户密码
signAddress string 签名账户地址

返回值

字段名 字段类型 参数描述
tx string 完整交易序列化字符串,如果交易没达到最小签名数可继续签名
txHash string 交易hash
completed boolean true:交易已完成(已广播),false:交易没完成,没有达到最小签名数

cs_random_seed_count

根据高度和原始种子个数生成一个随机种子并返回

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
height long 最大高度
count int 原始种子个数
algorithm string 算法标识:SHA3...

返回值

字段名 字段类型 参数描述
seed string 生成的随机种子
algorithm string 算法标识
count int 原始种子个数

cs_random_seed_height

根据高度区间生成一个随机种子并返回

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
startHeight long 起始高度
endHeight long 截止高度
algorithm string 算法标识:SHA3...

返回值

字段名 字段类型 参数描述
seed string 生成的随机种子
algorithm string 算法标识
count int 原始种子个数

cs_random_raw_seeds_count

根据高度查找原始种子列表并返回

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
height long 起始高度
count int 截止高度

返回值

字段名 字段类型 参数描述
返回值 list<string>

cs_random_raw_seeds_height

根据高度区间查询原始种子列表并返回

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
startHeight long 起始高度
endHeight long 截止高度

返回值

字段名 字段类型 参数描述
返回值 list<string>

cs_getDepositList

查询指定账户或指定节点的委托信息/Query delegation information for a specified account or node

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
pageNumber int 页码
pageSize int 每页数量
address string 账户地址
agentHash string 节点HASH

返回值

字段名 字段类型 参数描述
deposit string 委托金额
agentHash string 节点HASH
address string 账户地址
time long 委托时间
txHash string 委托交易HASH
blockHeight long 委托交易被打包高度
delHeight long 退出委托高度
status int 节点状态 0:待共识, 1:已共识
agentName string 节点名称
agentAddress string 节点地址

cs_depositToAgent

创建委托交易/deposit agent transaction

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
address string 账户地址
agentHash string 节点HASH
deposit string 委托金额
password string 账户密码

返回值

字段名 字段类型 参数描述
txHash string 加入共识交易Hash

cs_withdraw

退出委托交易/withdraw deposit agent transaction

scope:public

version:1.0

参数列表

参数名 参数类型 参数描述 是否非空
chainId int 链id
address string 账户地址
txHash string 加入共识交易HASH
password string 账户密码

返回值

字段名 字段类型 参数描述
txHash string 退出共识交易Hash
Last Updated: 2019-9-3 16:38:35