区块链就是一个分布式、有着特定结构的数据库,是一个有序,每一个块都连接到前一个块的链表。也就是说,区块按照插入的顺序进行存储,每个块都与前一个块相连。这样的结构,能够让我们快速地获取链上的最新块,并且高效地通过哈希来检索一个块。
1、区块链六层模型
一个标准的区块链项目,应该至少包含数据层、网络层、共识层这三层,应用层、合约层、激励层可以不包含。
以一个交易的例子来说明这模型所起的作用,假如说,我们有三个角色,A有btc,B有0btc,c是矿工,现在A给B转10个btc,1、A-B转账10比特币,数据层2、转账交易要确认,需要广播出去,网络层3、把交易打包到区块形成新的区块,并且加入到区块链,共识层4、第三步的奖励,激励层5、钱包,应用层
区块链开发语言
2、区块链模型之数据层
1、数据层的特点是:
不可篡改
全备份
完全平等(数据、权限、代码)
要实现这样的特点,依靠是链式结构,如下
PrevHash:父区块哈希,特定值的扫描。比方说SHA-下的随机散列值,保证数据的可靠性和不可篡改。Nonce:随机数,类似于区块的随机散列值
2、数据层之数据结构:
区块:一种包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构,包含区块头和区块主体,区块头+区块体=1M(比特币的扩容在讨论中)
区块头:80个字节
区块体:每个区块包含个交易,平均每个交易至少是字节。因此,包含完整交易的区块比区块头的4千倍还要大。
区块头区块头由三组区块元数据(Blockmeta)组成一组元数据:父区块哈希值,用于该区块与区块链中的前一区块相连接二组元数据:Merkle根,一种用来有效地总结区块中所有交易的数据结构三组元数据:难度目标,时间戳和Nonce与生产区块相关
区块头哈希值产生:通过SHA算法对区块头进行二次哈希计算得到的数字指纹特点:是唯一,可计算存储:不包含在区块的数据结构里,可存储在独立的数据库表中
区块高度产生:节点在接受来自比特币网络的区块时,动态地识别该区块在网络中的位置(区块高度)特点:不是唯一的(短时间)
补充:1.安全散列算法(TheSecureHashAlgorithm,SHA)美国国家安全局(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码散列函数。2.第一个区块高度为0,年2月25号区块高度大约为,
3、数据层之区块的链接
1、比特币的完整节点保存了区块链从创世区块起的一个本地副本,该区块链的本地副本会不断地更新用于扩展这个链条。
2、一个节点从网络接收传入的区块时,它会验证这些区块,然后链接到现有的区块链上。
3、对于一个新区块,节点会在“父区块哈希值”字段里找出包含它的父区块的哈希值。
4、数据层之创世区块
1、创世块是指块链的第一个块,现在的比特币客户端版本把块号定为0,以前的版本把该块块号定为1。
2、交易的输入:TheTimes03/Jan/Chancelloronbrinkofsecondbailoutforbanks。(翻译:《泰晤士报》,年1月3日,财政大臣正站在第二轮救助银行业的边缘)。
3、创世块的收益不可能被花掉,因为创世块是用代码表示的(这个巧合可能是故意的),尽管如此,其50BTC收益还是被发送到