区块链技术在教育领域的应用调研
区块链又称做『写入速度最慢的分布式数据库』。顾名思义,就是数据增长速度有限,以比特币为例,其网络大约每10分钟产生一个区块,每个区块大小是1Mb,大约可以记录数千笔交易。如果网络交易频繁,会导致拥塞。也就是说,比特币网络不能保证交易数据能在有限的时间内得到确认。
区块链本质上是一种去中心化的分布式账本,其账本属性就意味着数据只能追加,不能修改和删除,而账本的最小写入单位是区块。区块链网络运行的大致原理如下:
- 每个节点都拥有一组公钥和私钥来保证数据安全。一旦私钥泄漏,就会导致节点被攻破;
- 用私钥签发的数据会广播到全网,此时数据仅被缓存,并没有得到确认;
- 当网络通过共识机制产生了新的区块,那些数据会被写入区块中得到确认;
- 数据一旦写入区块被确认就无法更改;
- 如果没有达成共识,会导致区块链分叉;
- 基于区块链中数据的不可篡改的性质,可以建立相关应用,比如智能合约。
区块链的种类
公有链 | 联盟链 | 私有链 | |
---|---|---|---|
参与者 | 所有人 | 联盟成员 | 区块链所有者 |
共识机制 | PoW/PoS/DPoS | 分布式一致性算法 | SOLO/PBFT |
记账人 | 所有参与者 | 联盟内部协商 | 区块链所有者自定义 |
激励机制 | 有 | 可选 | 无 |
中心化程度 | 去中心化 | 弱中心化 | 强中心化 |
承载能力 | <100笔/秒 | <10万笔/秒 | 区块链所有者自定义 |
应用场景 | 虚拟货币 | 物流、银行、电商 | 大型组织机构 |
伪区块链应用
很明显,私有链不具备去中心化的特征,是一种蹭热度的伪区块链应用,毫无意义。私有链的应用场景完全可以用成熟的分布式算法来等价代替。
只有满足『去中心化』和『防篡改』这两个需求的业务场景才需要用到区块链技术。否则都是伪应用。
共识机制
增加新的区块需要达成全网的共识,特别是公有链,其每个节点都被视为不可信任的潜在攻击者,所以需要有一些手段来保证写入的一致性。如果无法达成共识,就会产生分叉。
共识机制,或称为分布式一致性算法,分为两类:一种需要解决拜占庭将军问题,另一种不需要。前者用于存在不可信节点的网络中,比如公有链;后者用于可信网络中,比如联盟链和私有链。
PoW
工作量证明。需要算力来支撑整个系统。生成新的区块的节点会得到激励。
优点是非常可靠,支持大型网络。缺点是存在51%攻击的风险,而且浪费算力。
PoS
权益证明。根据币龄(持币数量×持有时间)给每个节点分配权益。
优点是不浪费算力,且增加了51%攻击的难度。缺点是存在权益粉碎攻击,导致系统分叉。
DPoS
(略)
PBFT
(略)
BFT-DPoS
(略)
其他分布式一致性算法
如果认为节点都是可信的,即不存在拜占庭将军问题,那可以使用 Paxos 或 Raft 算法。
当联盟链和私有链的节点被视作是可信任的,排除拜占庭将军问题,便可以使用这些算法。
共识算法是区块链的核心。在数学上被证明可靠的分布式一致性算法(共识机制)只有 Paxos 算法。该算法是在排除拜占庭将军问题的情况下才有效。其他算法都未被证明可靠。
激励机制
公有链为了维持网络的运行,对于工作节点必须给予一定奖励机制作为回报。没有激励机制,则网络无法维持。
智能合约
智能合约并非区块链的直接应用,它实现了一个图灵完备的脚本,以实现复杂的商业逻辑。智能合约只是将合约数据部署在区块链上保证数据不被篡改。
区块链在教育领域应用
常见的公有链都会被打造成一个金融系统,也就是公有链的第一应用必然是代币。因为没有代币就无法实现激励机制,从而无法维持整个区块链网络的运行。然而代币并不是区块链的必要应用,对于联盟链和私有链来说,代币应用没有必要性。
区块链种类分析
去中心化的公有链意味着不可控,在国内的大环境下,这种系统肯定不会被体系所待见;而私有链作为蹭热点的跟风概念,也没有实施的必要性;只有联盟链的概念可能会更加贴合国内的实际情况。
联盟链可以引入一个根证书机构,而节点则分为两种:一种持有根证书机构签发的公钥,角色是联盟成员,这类节点有创建区块的权限;另一种持有非根证书机构签发的公钥,此类节点可查询和产生数据,但是不能生成区块。
使用对象分析
对于体制内的学校机构,有天然的中心化倾向,几乎不存在去中心化应用的必要。有两种情况会比较适合区块链的去中心化特征:
- 跨国家/地区的院校之间
- 商业教学机构之间
应用分析
- 学历认证 联盟成员可以提供学生的学历证书供查询;
- 培训认证 类似1。只是将认证细化到课程或者知识点。
- 教师资格认证 针对教师教学水平的信息认证。
- 匿名认证 通过零知识证明的原理,用户可以在匿名的情况下实现学历等信息认证。
- 智能合约联合颁证 利用智能合约,学员可以参加跨机构培训,最终获得联合颁布的学历认证。
其他
首先,区块链只能解决数据防篡改的问题,但是无法保证数据来源的真实性。常见的应用都是基于节点没有创建虚假信息的动机来保证的。比如转账数据,节点没有动机虚构一笔交易来把自己的钱转给别人,除非是私钥泄漏了。但是在其他领域,节点是否有创建虚假数据的动机则不能保证。
其次,区块链网络自运行起数据就在不停的增长,比特币这种只保存交易数据的网络,如今的数据量也已经有100多G了。而为了分区容错,每个节点都保存一份完整的数据,那随着数据增长,对存储的压力是很大的。