Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

阿里巴巴全球区块链大赛第一赛季试题解答Alibaba Global Blockchain Competition Season 1 Test Answers

Notifications You must be signed in to change notification settings

CoderiGenius/alibaba-blockchain-contest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

4 Commits

Repository files navigation

alibaba blockchain contest

比赛地址:https://tianchi.aliyun.com/competition/information.htm?spm=5176.100069.5678年2月17日406e51Mc5z9i&raceId=231665

初赛试题

image

在自有系统中搭建Hyperledger Fabric开发测试环境。

推荐软件版本:Hyperledger Fabric v1.1,go version go1.9,Docker version 1.13.1

Hyperledger Fabric环境准备及智能合约开发可参考:

http://hyperledger-fabric.readthedocs.io/en/release-1.1/chaincode4ade.html

开发一份基于Golang的chaincode,实现个人履历的存证,功能点如下:

1. 评测系统调用chaincode的addRecord方法,以个人ID为Key,以年份,就读学校/在职公司,学位/职位这三个信息的组合为Value,将履历记录Key-Value写入账本。假设对于同一个ID,同一年份只会写入一条记录,也不会对重复年份的情况进行评测。请注意chaincode的参数接收顺序,调用示例如下:

peer chaincode invoke ...
-c '{"Args":["addRecord","1001","1999","college1","bachelor"]}'
peer chaincode invoke ...
-c '{"Args":["addRecord","1001", "2003","institute1","master"]}'
peer chaincode invoke ...
-c '{"Args":["addRecord","1001", "2006","corp1", "engineer"]}'

2. 评测系统调用chaincode的getRecord方法,以个人ID和年份为参数,查询出对应的就读学校/在职公司。请注意chaincode的参数接收顺序,调用示例如下(本例应返回"institute1"):

peer chaincode query ... -c '{"Args":["getRecord","1001", "2003"]}

3. 评测系统调用chaincode的encRecord方法,以个人ID为Key,以年份,就读学校/在职公司,学位/职位为Value,通过transient传入密钥(ENCKEY)和初始化向量(IV),将加密后的履历记录Key-Value写入账本。假设对于同一个ID,同一年份只会写入一条记录,也不会对重复年份的情况进行评测。ENCKEY和IV由评测系统生成,请注意chaincode的参数接收顺序,调用示例如下:

peer chaincode invoke ...
-c '{"Args":["encRecord","1009","2002","college2","bachelor"]}'
--transient"{\"ENCKEY\":\"$ENCKEY\",\"IV\":\"$IV\"}"
peer chaincode invoke ...
-c '{"Args":["encRecord","1009","2006","corp2", "engineer"]}'
--transient"{\"ENCKEY\":\"$ENCKEY\",\"IV\":\"$IV\"}"
peer chaincode invoke ...
-c '{"Args":["encRecord","1009","2012","corp3", "manager"]}'
--transient "{\"ENCKEY\":\"$ENCKEY\",\"IV\":\"$IV\"}"

4. 评测系统调用chaincode的decRecord方法,以个人ID和年份为参数,通过transient传入密钥(DECKEY),将对应的就读学校/在职公司解密后返回。DECKEY由评测系统生成,请注意chaincode的参数接收顺序,调用示例如下(本例应正确返回"corp2"):

peer chaincode query ... -c '{"Args":["decRecord", "1009", "2006"]}
--transient"{\"DECKEY\":\"$DECKEY\"}"

chaincode的Init方法无需对账本内容做初始化

评分标准

得分点1(10分):chaincode可被安装初始化

得分点2(20分):成功调用addRecord方法,写入若干条记录

得分点3(30分):成功调用getRecord方法,获得某人某年对应的就读学校/在职公司

得分点4(20分):成功调用encRecord方法,写入若干条加密记录

得分点5(20分):成功调用decRecord方法,获得某人某年对应的就读学校/在职公司解密信息

image

About

阿里巴巴全球区块链大赛第一赛季试题解答Alibaba Global Blockchain Competition Season 1 Test Answers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /