区块链学习(1)

关键词

UTXO “ 未花费的输出”的记账原理

2PC 一种在分布式系统中保证强一致性的算法,可以决定一个事务的最终是决定提交或取消类似Tracker的根据种子特征码返回种子信息的网络。

DHT 全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。

Gossip 协议 Gossip 过程是由种子节点发起,当一个种子节点有状态需要更新到网络中的其他节点时,它会随机的选择周围几个节点散播消息,收到消息的节点也会重复该过程,直至最终网络中所有的节点都收到了消息。这个过程可能需要一定的时间,由于不能保证某个时刻所有节点都收到消息,但是理论上最终所有节点都会收到消息,因此它是一个最终一致性协议。

Ghost协议 最先挖到区块的发布时间去用奖励接受其他同一高度的区块。

omnet++ 离散事件网络仿真器

Remix 以太坊智能合约部署
https://remix.ethereum.org/#optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.7+commit.e28d00a7.js

区块链学习计划

Bitcoin and Cryptocurrency Technologies
https://www.coursera.org/learn/cryptocurrency/home
go语言加区块链
https://www.bilibili.com/video/BV1e54y1Q7mp?p=25

毕设计划

以两个DEMO展示半同步下传统PBFT算法和权重制分级PBFT算法的做吞吐量比较区别(在出块大小结构一定的情况下)。
有一个可演示的去中心化小程序

成果

Monoxide: Scale out Blockchains with Asynchronous Consensus Zones
论文贡献点:
1 划分区块链网络成为多个独立和并行的区域使得吞吐量增加
2 高效处理跨越不同区域的交易
3 解决挖矿算力稀释的问题导致的安全性问题

一:异步共识组
将原来的区块链网络划分成多个独立的区域,划分规则为:使用公式n=2^k来计算当前用户属于哪个zone。其中k表示用户地址的前k位(bit)例如地址2easdasfsfa,k=2的情况下 则n=2^2e, 划分好zone之后,每一个zone就可以独立工作了。现在存在两种交易,一种是在zone内部的交易,比如两个用户都属于同一个zone,一个向另一个转账。这种情况在共识组内进行,可以极大地减少了共识时所需要的通讯次数降低了通讯复杂度,以及降低了节点所需的存储量和性能,因为一个共识组内只需要存放一个共识组的数据。
二:跨组交易
在组间进行交易时现将交易和组内交易一起进行打包处理,而后由全局节点进行传播(这个文章中没有说特别清楚,是同时担任两个节点挖矿的节点就可以还是有一部分节点作为全局节点担任了全部网路数据存储),另一组收到交易时进行等待如果验证成功将作为本区域交易一起打包。如果并没有成功则会有一系列的交易逻辑顺序结构(最终量子性)。文章对此做了许多问题的解决方案处理。
三:Chu-ko-nu Ming(诸葛连弩)
因分解区块链成多个Zone,稀释了挖矿算力,造成算力集中在单个Zone中挖矿实施51%攻击问题。
解决方案是:
一个矿工可以同时对多个Zone进行挖同时收集多个Zone中的交易数据
只需解决一次难题(Puzzle)就可以打包多个Zone中的交易数据(这是重点)。因为有了这个规则,在一个zone中挖矿跟同时在多个zone中挖矿所需要的算力资源差不多,但是却能够获得更多的回报。
一个矿工在一个Zone中一次只能打包一个区块。
如果基本所有的矿工都为多个zone挖矿,那么矿工之间的算力竞争就上升为全网算力的竞争了。这样子就消除了上面所提出的攻击者集中算力资源在一个zone中实施51%攻击的问题。
使用Chu-ko-nu Ming挖矿方式,一个区块的数据结构也相应改变了。(没大搞懂)

反思:
1.诸葛连弩挖矿的作用被夸大了。要想算力完全得不到稀释,必须让所有节点都参与到所有的zone ,那不就意味着所有节点还是要存储所有的数据,那就不存在分区的概念了,说极端一点,这里tps 的线性提升本质上就是把区块变大了(每个zone 一个区块,加起来不就是一个大区块吗),这样也就没有意义了。虽然说了可以由用户自己选择加入zone 的数量,这里有个问题,用户选择加入部分zone 是没有理由的,少加入一个zone 就少一份收益,何必呢?除非是存储不够。即便真的有人选择只加入部分zone ,这确实可以增大并发量,但此时安全性又会降低,安全性并不是全网51%了,因为必然存在一些zone 并不能获得全网的算力。这是一个权衡。
2.没有提出区块重建,以及遇到攻击时的方式方法,只提出了6区块的确认交易能将安全性即使拿了51%的算力依旧保持在1%。如果需要原来的zone重新构建,重新发命令给原来的zone?还是说对应的每个区块都需要变化呢。那么一旦遭受攻击哪怕是1个zone的信用受到损坏也会牵一发而动全身整个系统各个zone都需要进行重建。

上一篇:Django+bind DNS管理平台


下一篇:The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one time zone......