jzhe
jzhe
小提示: 1. 代码逻辑在cmd/bitxhub/client/transaction.go文件; 2. 添加`txCMD()`的`Subcommands`添加`invoke`命令; 3. `invoke`函数中通过`sendTx`向bitxhub发送调用合约的交易; 4. 将交易回执以json格式进行解析;
小提示: 1. 新建cmd/bitxhub/client/ibtp.go文件; 2. 在`ibtpCMD()`的`Subcommands`添加`get`命令; 3. `get`函数中通过`sendTx`的方式向bitxhub发送查询IBTP的交易; 4. 将交易回执以json格式进行解析;
小提示: 1. 代码逻辑在cmd/bitxhub/client/appchain_manager.go文件; 2. 在`appchainMgCMD()`的`Subcommands`添加`getall`命令和`get`命令; 3. `getall`函数通过`sendViewTx`的方式向bitxhub发送查询所有应用链信息的只读交易; 4. `get`函数通过`sendViewTx`的方式向bitxhub发送查询特定应用链信息的只读交易; 4. 将返回值以json格式进行解析;
## 描述 为BitXHub增加一个POW共识算法插件 ## 标准 1. 根据BitXHub中现有的共识接口,实现POW共识算法插件 2. 完善的单元测试 ## 赛题解读 BitXHub采用插件机制,实现了灵活的共识算法的适配,目前支持RAFT和RBFT。根据BitXHub的共识插件机制,实现一个POW共识算法插件。 ## 解题思路 BitXHub的共识插件的写法可以参考: https://meshplus.github.io/bitxhub/bitxhub/dev/consensus/ https://meshplus.github.io/bitxhub/bitxhub/design/consensus_plugin/ POW共识可参考: https://github.com/ethereum/go-ethereum/tree/master/consensus
小提示: 1. 代码逻辑在cmd/bitxhub/client/block.go文件; 2. 在`blockCMD()`的`Subcommands`添加`getHeader`命令; 3. `getHeader`函数中通过`http get`的方式向url为`block_headers?start=%d&end=%d`发送请求; 4. 将返回值以json格式进行解析;
## 描述 为raft共识协议实现checkpoint机制 ## 标准 1. 接口设计清晰 2. 完善的单元测试 3. 必要的功能使用文档 ## 赛题解读 目前BitXHub中,raft共识由主节点出块后,将区块信息广播给从节点,从节点执行区块并将执行结果写入本地账本。各个节点之间没有检查执行结果是否一致,如果执行不一致,则将影响整个系统。因此需要实现checkpoint进行状态检查,以保障整个系统的稳定运行。 ## 解题思路 系统出块过程中,可以每隔一定区块(如10个区块)建立一个checkpoint,将各自在checkpoint高度的区块哈希(BitXHub中区块哈希是本地节点交易执行后才能计算出来的)广播给其他节点。每个节点收到其他节点的区块hash后进行检查,如果有至少quorum个(包括自己)区块hash一致,则checkpoint通过,如果未达到该条件,则需要将本地的执行结果(包括状态数据和会执)回滚到上一个checkpoint,重新执行交易,并在下一个checkpoint重新广播并检查。
小提示: 1. 代码逻辑在cmd/bitxhub/client/block.go文件; 2. 添加`blockCMD()`的`Subcommands`添加`interchain`命令; 3. `getInterchainWrappers`函数中通过`http get`的方式向url为`interchain_tx_wrappers?start=%d&end=%d`发送请求; 4. 将返回值以json格式进行解析;
小提示: 1. 代码逻辑在cmd/bitxhub/key.go文件; 2. 在`convert`命令中添加`passwd`参数; 3. `convertKey`函数中把以太坊格式的key.json转化为bitxhub格式的密钥; 4. 返回转化后的文件内容;
## 描述 中继链数据节点(即不参与共识只同步数据的节点)可以进行配置,使其仅同步指定应用链相关的交易、状态、回执等数据。 ## 标准 1. 接口设计清晰 2. 完善的单元测试 3. 必要的功能使用文档 ## 赛题解读 联盟链中针对某条应用链的审计场景,审计机构需要获取该应用链的所有跨链交易和跨链数据,但是又不能随意访问其他应用链的数据,因此需要实现针对指定应用链的数据同步协议。 ## 解题思路 分为节点配置和数据同步两个步骤。 1. 节点配置:节点配置需在链上进行,即需要将配置的节点信息同步到所有节点,其中包括节点的IP、端口、指定的应用链等信息。该步骤需要提交提案,并由管理员投票通过才能生效。 2. 数据获取:数据节点向至少quorum(根据共识节点个数和共识算法决定)个其他节点请求中继链的所有区块头数据、应用链相关的交易、状态、回执数据,并将获取的数据进行比较,只有获取到quorum个相同的数据,才将该数据存到本地;提供数据的节点需要检查请求数据的节点是否拥有所请求应用链的访问权限,只有拥有访问权限,该节点才能提供相应的数据。 ## 参考 https://github.com/ethereum/go-ethereum/tree/master/eth/downloader
小提示: 1. 代码逻辑在cmd/bitxhub/client/receipt.go文件; 2. 把`receipt`的Ret的Base64编码转为明文; 3. 将返回值以json格式进行解析;