数据结构链表解释
这里Pc/S只是用来暂时存储数据的变量而已(由于你给出的代码应该只是一段,所以可能有的东西我理解的不是很清楚)。
举个例:
现在有一个链:a->b->c->d
刚开始的时候S=a(这个初始值看你自己再刚开始的时候从哪儿赋值的)
那么,现在也会暂时有链:S->b->c->d(正因为你赋值了,所以此时S和a是一样的,当然a->b->c->d还是存在的)
那么Pc->next=S;也就是Pc->next=a了,也就是说此时有链:Pc->a->b->c->d
当再次赋值时Pc=S时,也就是Pc=a了(此时S并没有做任何变动,所以仍然时等于a的)。
也就是其实有了链Pc->b->c->d(比之Pc->a->b->c->d链Pc往链条后面移了一位)。
这是遍历链的常用方法。
好久没有看过数据结构了,如有偏差,还请谅解
为了读懂下文,先必须了解 散列算法
如上图,我们可以看出来,一个区块中最重要的有四个字段
一、prev_hash
前一个区块的hash(散列算法)值,用于连接前一个区块,前一个区块也拥有该字段,同样也可以连接前前个区块。这样就形成了一个链条,这也可能是区块链的含义
二、timestamp
标准时间,通过时间顺序,让交易可以通过时间维度进行追溯。
三、Nonce
随机数,说道随机数,就要说到区块里面另外一个重要的字段“难度值”,难度值就是挖矿的标准,挖矿的过程就是通过随机数体现的,我们通过不停的变换随机数,使生成区块的hash值满足定义的“难度值”。
四、Tx_Root
梅克树,所有交易的一个汇总hash。这个hash是怎么产生的。通过图片我们可以看出来,每个交易都有一个hash值,每两个相邻的hash值又会生成一个hash,直到生成最顶上的hash值。
他能通过自己,找到他前面一颗链子和后面的链子
实现方法就是要定义好他们的next,每一颗当前的链子都有下一颗链子作为属性
然后就能一级一级访问到整条链条
q就是上一个节点,p是新的链表元素,q.next(下一个)等于你的新元素
2、广义定义:利用加密链式结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用自动化脚本代码(智能合约)来变成和操作数据的一种全新的去中心化基础架构与分布式计算范式。
3、狭义定义:按照时间顺序将数据区块以链条的方式组合成特定数据结构,并以密码学方式保证的不可篡改和不可伪造的去中心化共享账户。
4、区块链的特点:去中心化:区块链数据的验证、记账、存储、维护和传输等过程均是基于分布式系统机构,采用纯数学方法而不是中心结构来建立分布式节点间的信任关系,从而形成去中心化的可信任的分布式系统。
5、时序数据:区块链采用带有时间戳的链式区块结构存储数据,从而为数据增加了时间维度,具有极强的可验证性和可追溯性。
6、集体维护:区块链系统采用特定的经济激励机制来保证分布式系统中所以节点均可参与数据区块的验证过程,并通过共识算法来选择特定的节点将新区快添加到区块链。
7、可编程:区块链技术提供灵活的脚本代码系统,支持用户创建高级的智能合约、货币或其他去中心化应用。
8、安全可信:区块链技术采用非对称密码原理对数据进行加密,同时借助分布式系统各节点的工作量证明等共识算法形成的强大算力来抵御外部攻击、保证区块链数据不可篡改和不可伪造,因而具有较高的安全性。
9、区块链应用场景:数字货币:以比特币为代表,本质上是由分布式网络系统生成的数字货币,其发行过程不依赖特定的中心化机构。