今天介绍区块链技术是怎么来的,这既是对对我脑中记忆内容的总结,也是答应研习社成员的作业,以方便后进的同学能快速跟进。
其实,区块链并不是什么非常深奥的概念,就跟数据结构里表达的“树”“桶”等这类结构一样,只是一种非常通俗易懂的表述。因此,在深入理解之前,就看看名字顾名思义就能有一个基本的认识,所谓的区块链就是区块形成的链条结构。
为什么会有区块?为什么要形成链条?比特币跟区块链什么关系?估计很多朋友大脑中都萦绕着这些问题。
区块链的概念被大家所认识并深入研究还是源自于中本聪发明的比特币,因为它是第一个可靠的去中心化的方法解决转账交易的有效性问题。
在比特币系统里,说白了,只有转账一种交易,即使是挖矿产生比特币的交易也可以看成是从某个核心账户转出的交易。在设计这个系统是,为了对交易进行“快速”确认,如果采用所有节点对每个交易进行验证的方式会使整个系统空前复杂,为了避免这种“爆炸”问题中本聪将多个交易打包成一个块,在部分节点对交易验证后,其他节点只需验证这一个块的信息即可,从而大大提高效率。这个块正是大家耳熟能详的【区块】。
而数字货币里最重要的两个问题是解决:货币真实性,货币不被重复支付这两个问题。因此为了解决这两个问题,对每一个币,每一次交易都需要追溯历史信息进行验证,同时和其他节点记录的信息进行比对,以达成共识。
中本聪的解决方法是:将区块从后向前有序地链接成一个链条,每个区块都指向前一个区块。链接的方式是对每个区块头进行哈希计算,得到一个哈希值,通过这个哈希值可以识别出区块链中对应的区块;同时,每个区块都可以通过其区块头部的“父区块哈希值”字段找到前一个区块,这样就把每个区块链接到一起一直追溯到第一个区块(创世区块)的链条。
因此,区块链的准确定义是:
区块链是由包含交易信息的区块从后向前有序链接起来的数据结构。
由于区块链经常被看成一个垂直的栈,第一个区块作为栈底的首区块,随后每个区块都被放置在其他区块之上。用栈来形象化来表示区块依次堆叠的概念,这样将【高度】表示为区块与首个区块之间的距离,以及用“顶部”来表示最新添加的区块。
区块虽然形成了链条,但是区块的具体数据是存储于客户端本地的,所以为了保证数据一致,保证每个节点都能追上大部队,对于矿工或钱包程序常常需要同步最新的区块数据。
区块链这种数据结构虽然并不是什么从0到1的创造,但是巧妙地解决了阻碍去中心化数字货币多年发展的问题。也由此,让大家看到了它的无限潜能。也正因为这样,区块链技术的内涵也在不断演化发展,其内容早已超越了我上面提到的部分,这里不再展开。
如果不太了解数据结构的朋友可能对“树”“栈”等这类概念还有点陌生,那么可看看下面这张图,或许就能理解区块链的一些基本概念了。
区块链技术由来
网友评论