首页 - 开源大赛 - 最新动态

第四届中国软件开源创新大赛|BitXHub参赛指南

2021-07-13 发布

1.软件开源创新大赛简介
2021年第四届中国软件开源创新大赛重点围绕国家在开源人才培养和生态建设方面的重大战略需求,聚焦“卡脖子”软件领域以及人工智能、大数据等前沿技术领域的开源软件,联合华为、百度、飞腾、麒麟软件、长城科技、开放原子开源基金会等企业单位以及多所高校共同设置赛题。

本届大赛在赛制上做了重大调整,采用全年开放比赛、定期评比激励、年底决赛颁奖的“嘉年华”模式,设置“开源项目创新赛”、“开源任务挑战赛”、“开源实践教学赛”和“开源代码评注赛”等不同形式、不同难度的四个赛道六个赛组,让每个参赛者都可以根据自己的兴趣和能力找到适合赛组,通过读开源代码、学开源技术、做开源项目、开展实践教学等活动全方位提升个人开源创新能力。
2.BitXHub赛题说明
大赛官网:https://www.opengcc.org
竞赛官方支撑平台:
https://www.trustie.net
https://www.educoder.net/competitions
赛题说明
Transaction/state syncing for specified appchains
描述
中继链数据节点(即不参与共识只同步数据的节点)可以进行配置,使其仅同步指定应用链相关的交易、状态、回执等数据。

标准
1.接口设计清晰
2.完善的单元测试
3.必要的功能使用文档

赛题解读
联盟链中针对某条应用链的审计场景,审计机构需要获取该应用链的所有跨链交易和跨链数据,但是又不能随意访问其他应用链的数据,因此需要实现针对指定应用链的数据同步协议。

解题思路
分为节点配置和数据同步两个步骤。

1. 节点配置:节点配置需在链上进行,即需要将配置的节点信息同步到所有节点,其中包括节点的IP、端口、指定的应用链等信息。该步骤需要提交提案,并由管理员投票通过才能生效。

2. 数据获取:数据节点向至少quorum(根据共识节点个数和共识算法决定)个其他节点请求中继链的所有区块头数据、应用链相关的交易、状态、回执数据,并将获取的数据进行比较,只有获取到quorum个相同的数据,才将该数据存到本地;提供数据的节点需要检查请求数据的节点是否拥有所请求应用链的访问权限,只有拥有访问权限,该节点才能提供相应的数据。

参考
https://github.com/ethereum/go-ethereum/tree/master/eth/downloader

Implement nodes’ addition and deletion for raft consensus
描述
针对中继链采用Raft共识算法的场景下进行节点的增删管理。

标准
1.接口设计清晰
2.完善的单元测试
3.必要的功能使用文档

赛题解读
Raft节点管理包括增加节点和删除节点,增加节点包括组网和加入共识两步,删除节点直接从共识删除即可。

解题思路
增加节点:新节点与网络中的各个节点建立好逻辑连接之后,此时节点还没有加入共识,如果需要加入共识,需要由管理员发送创建提案的交易,请求加入共识。其他管理员收到创建提案的消息推送后对当前提案进行投票。当投票通过后再由创建提案的管理员发送执行提案的交易,在执行提案的过程中,将新节点加入共识。

删除节点:从共识中删除节点,首先需要一个管理员发起创建提案的交易,这个提案的内容是从共识中删除节点。其他管理员收到创建提案的消息推送后对当前提案进行投票。当投票通过后再由创建提案的管理员发送执行提案的交易,在执行提案的过程中,从共识中删除节点。

节点增删在共识层都是通过发起ProposeConfChange方法,通过ApplyConfChange接收来自主节点的ConfChange进行节点网络信息配置的修改更新。

参考
https://github.com/etcd-io/etcd/tree/main/raft
Implement checkpoint for RAFT
consensus
描述
为raft共识协议实现checkpoint机制

标准
1.接口设计清晰
2.完善的单元测试
3.必要的功能使用文档

赛题解读
目前BitXHub中,raft共识由主节点出块后,将区块信息广播给从节点,从节点执行区块并将执行结果写入本地账本。各个节点之间没有检查执行结果是否一致,如果执行不一致,则将影响整个系统。因此需要实现checkpoint进行状态检查,以保障整个系统的稳定运行。

解题思路
系统出块过程中,可以每隔一定区块(如10个区块)建立一个checkpoint,将各自在checkpoint高度的区块哈希(BitXHub中区块哈希是本地节点交易执行后才能计算出来的)广播给其他节点。每个节点收到其他节点的区块hash后进行检查,如果有至少quorum个(包括自己)区块hash一致,则checkpoint通过,如果未达到该条件,则需要将本地的执行结果(包括状态数据和会执)回滚到上一个checkpoint,重新执行交易,并在下一个checkpoint重新广播并检查。

Add POW consensus
描述
为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.做成模块化,接口设计清晰,能够做到按配置启用准入机制
2.完善的单元测试
3.必要的功能使用文档

赛题解读
在联盟链场景下,需要对接入的成员有相应的准入许可。在跨链场景下也是类似,网关代表应用链接入到跨链系统中时,必须获取到中继链联盟的许可,才可以获取相应的跨链交易数据。

解题思路
增加准入机制时,主要涉及到两个部分:跨链网关和中继链。跨链网关在中继模式启动时需要向中继链请求许可,中继链收到跨链网关的请求时,也必须检查相应的许可是否正确。这里许可机制一般采用证书来实现。

Benchmark interchain transaction performance
描述
BitXHub开源项目包含了测试工具Premo,可以针对本产品完成常规的功能/性能测试。在性能测试方面,有以下几点可以优化:1. 性能指标丰富,除了常规的tps、响应时间等,还需要请求成功/错误率、响应时间分布信息等;2. 性能数据图形化显示,可以动态观测主要性能指标变化。

标准
1.提供完整的代码;
2.支持图形化显示压测过程中性能指标变化;
3.统计请求成功/失败率、响应时间分布信息。

赛题解读
本赛题要求对BitXHub项目的性能测试进行优化,主要难点在于确定改造方案和具体的工程实现。

解题思路
本赛题的需求比较清晰,可以考虑引入市面上已经成熟的性能测试工具进行适配,本质上是对grpc协议进行性能测试。
BitXHub项目提供了Go-SDK,参考Premo工具构造跨链交易的方式,推荐使用locust+boomer的组合进行改造,这种方式下压测数据的展示使用的是Locust自带的web界面,数据不便于存储,可以添加 prometheus 作为数据库来上报数据,用 grafana 来展示。

参考
1.Premo项目地址 
https://github.com/meshplus/premo
2.BitXHub官方文档 
https://meshplus.github.io/bitxhub/bitxhub/quick_start/
3.Boomer官方项目
https://github.com/myzhan/boomer
4.Locust官方文档
https://docs.locust.io/en/stable/
增加Rust版本的SDK
描述
目前BitXHub支持3种语言的SDK,分别是Golang、Javascript和Java版本;为了满足后续的需求,需要基于中继链开发Rust版本的SDK。

标准
1. 需要完成已有SDK的全部功能
2. 完善的单元测试
3. 必要的功能使用文档

赛题解读
跨链网关需要与应用链和中继链进行交互,如果应用链只有Rust版本的SDK或者跨链网关本身使用Rust编写的,那么就需要一个Rust版本的SDK。

解题思路
中继链对外提供GRPC进行通信,编码格式使用Protobuf,那么Rust的SDK需要使用Protobuf和GRPC进行交互。SDK功能包括以下几个点:交易相关(发送交易,查询交易等),回执相关(获取回执),区块相关(根据条件获取区块等)和合约相关的(部署和调用合约等),具体接口可以参考GOSDK。

参考
1.https://github.com/meshplus/go-bitxhub-client
2.https://meshplus.github.io/bitxhub/sdk/gosdk/

参赛对象
本次竞赛面向全社会开放,不限年龄、身份、国籍,相关领域的个人、高等院校、科研机构、企业单位、初创团队等人员均可报名参赛。

参赛要求
(1)支持以个人或团队(线下自由组队)的形式参赛,每支参赛队伍的人数不超过5人,允许跨单位自由组队,每人只能参加一支队伍。
(2)参赛选手报名须保证所提供的个人信息真实、准确、有效。如发放奖金或礼品时发现选手填写的报名信息与个人身份不相符,组委会将保留停止发放奖金或礼品的权利。
(3)参赛选手可添加BitXHub小助手,备注“开源大赛”,加入赛道交流群,赛题专家在线答疑~
3.竞赛时间
大赛采用全年开放、定期评比激励、年度决赛颁奖的模式来组织,大赛年度主要时间节点安排如下,具体时间可以参考大赛官方平台:

4.奖项设置
本次大赛评选包括竞赛过程中的定期评选奖励和年度评选奖励两部分,具体奖励设置如下:
定期评选奖励

定期评选奖励在项目创新赛命题组、任务挑战赛、实践教学赛命题组将以赛题(项目)为粒度组织,同一个赛道的不同赛题(项目)单独评选和奖励;项目创新赛自由组、实践教学赛自由组以及代码评注赛将以赛道为粒度组织评审。

定期评选奖励主要以参赛队伍的在线贡献数据为排行依据,由技术委员会综合评审确认,评选出Top-3并给予现金及证书奖励,奖励将于次月发放,奖励金额由大赛组委会和技术委员会协商确定。同时,定期评选结果将影响能否进入决赛。

年度评选奖励
年度评选奖励将以赛道为粒度组织,同一个赛道的不同赛题(项目)统一标准进行评选,年度评选将选出各赛道特等奖、一等奖、二等奖、三等奖,并向获奖队伍颁发获奖证书和奖金。

开源项目创新赛命题组奖项设置
特等奖:1组,颁发团体证书、个人证书、指导教师证书,每组奖金60000元

一等奖:5组,颁发团体证书、个人证书、指导教师证书,每组奖金25000元

二等奖:15组,颁发团体证书、个人证书、指导教师证书,每组奖金10000元

三等奖:排名前10%的参赛小组,颁发团体证书、指导教师证书、个人证书
更多奖励
更多奖励敬请期待......

5.报名参赛
本次大赛各赛组的在线报名、参赛细则、参赛手册、问题答疑等将在GCC大赛官方网站及竞赛官方支撑平台各赛道网站实时更新,相关解释权归组委会所有,请各位参赛选手及时关注相关网站信息。

大赛官方网站:
www.opengcc.org
大赛报名入口:
https://www.educoder.net/competitions
大赛官方支撑平台:
https://www.trustie.net
https://www.educoder.net
请点击阅读原文跳转到大赛官网进行报名。

6.大赛相关文章

1.第四届中国软件开源创新大赛通知
2.OpenGauss赛道参赛指南
3.OpenAtom XuperChain参赛指南
4.华为模型王者挑战赛
5.OpenHarmony赛道参赛指南
6.百度飞桨赛道参赛指南
7.JointCloud Erasure Code云际容灾存储系统开发参赛指南
8.MindSpore最新直播课教你更快上手实践全场景AI框架!
9.【直播】“华为模王赛”培训--《卷积:我裂开了》


7.赛题培训预告 
时间:7月15日 18:00—18:40
主题:《BitXHub架构、核心技术与系统搭建》

敬请关注......