什么是区块链?
区块链最早是用在比特币项目中的,用来记录比特币交易账目历史的一个数据结构。但是当时并没有明确和单独提出区块链这个概念。后来发现区块链可以作为一项单独的分布式数据库技术,通过维护数据块的链式结构,可以维持持续增长的,不可篡改的数据记录。
关键字:分布式,数据结构
区块链是怎么工作的呢?
从名字上来说,他有这两个概念:区块,链
什么是区块呢?它其实就是一块计算机存储空间,用来记录一段时间内发生的所有交易和结果
什么是链?就是把所有区块按时间顺序串联起来的东西
那区块+链串起来就是整个账本状态变化的日志记录(这里用账本这个词,是因为前面说了最初区块链就是用来记录比特币交易账目的,所以后面都称它账本)
看的时候可能会有的问题:
分布式系统是意味着每个节点都要存储完整的链吗?那数据太大了怎么办?
首先:不需要
其次:整个区块链网络中一定有节点存储完整的区块链信息
然后就涉及到哪些节点会存储完整的信息,哪些又不用,以及没有存储完整信息的节点如何获取完整的信息,以及凭什么相信获取到的信息,所以先回到区块链是怎么工作的这上面来。
刚刚说了区块和链,其实还有一个很重要的概念,就是交易。
什么是交易?就是一次对账本(数据库)的操作,对账本的操作只允许添加,不允许删除,导致账本的状态发生改变,比如比特币添加一条转账记录。
为了能够具体理解交易这个操作,就以实际的交易为例,比如比特币。
首先它是一个区块构成的链表嘛,并且是按时间顺序排列好的链表,当发生新的交易,交易数据会放到新的区块里,这就意味着所有的区块链节点都可以生成新的合法区块,但通常并不是由发起交易的节点来生成新的区块,因为一个区块里面其实是包含一段时间内的所有交易信息,并不是一条交易就是一个区块,所以又以比特币为例说明这个过程:
首先比特币客户端发起一项交易,节点会把这个交易广播到比特币网络中等待确认,网络中的某些节点(矿机)会将一些收到的等待确认的交易记录打包在一起,组成一个候选区块,这个区块需要包含前一个区块的哈希值(指纹),然后需要去找到一个随机串放到区块里面,使得候选的区块的哈希结果满足一定的条件(比如小于某个值)。
值得一提的就是:这个随机串是需要一定的时间进行计算的,而通常会有若干节点都会打包新的交易信息,这就到了比拼算力的时候了,谁先计算出满足条件的随机串,谁的区块在格式上就被认为是合法的了(就比如挖矿就是进行算力的比拼),就可以在网络中将他广播出去,其他节点接收到候选区块,发现确实符合约定的条件,就承认这是一个合法的新区块,并添加到自己维护的区块链上,当大部分节点都将区块添加到自己维护的区块链结构上时,该区块就被网络接受,区块中包含的交易信息也就得到了确认。
这一块看的时候可能会产生的问题:
这个大部分节点都添加这个区块时,这个大部分节点如何判定?如何保证未来不被篡改?
如何确定这个交易信息是真实的?(这个问题是涉及到区块链的安全性,也是一个很大的话题,可以单独写一篇)
对于第一个问题,先说一下区块链中通常有哪些节点类型。
第一类是广播节点,它们只是发出事务(比如交易请求),并接收来自第三方的交易信息,并不保存完整的区块链信息,称之为轻钱包,比如大家手机上安装的钱包。
第二类是完整节点,它除了广播交易信息,还会下载区块链的一个副本。
第三类是挖掘节点,除了发布和传播交易,他们会帮助创建新的区块。
然后就是在这个分布式的区块网络中如何达成对区块信息的同步。
这个大多数的判定来源可以这么理解,最先算出随机串的计算机最先发出广播,当网络中的其他节点接收到后并确认了它的合法性后就会将它添加到自己维护的区块链上来,那么后发出的广播此时已经失去了合法性,在理想的状况下,自然是所有节点都能够同步为最新的区块链信息。
这里的理想状况是指,每个节点都能保证理想的性能(瞬间响应,高吞吐),保证没有故障地运行,那么这种情况下,达成共识就很简单,像上面写的,通过广播,进行投票和应答就可以了(投票这个涉及到共识算法,比较复杂,会单独写一篇笔记,而且作为分布式的系统,一致性是一个无论如何都绕不开的话题)
所有节点默认都只承认所看到的最长链结构。
所以只要网络中不存在超过一半的节点提前勾结起来采取恶意行动,则最长的链将很大概率上成为最终合法的链。
区块链的分类
公有链:是任何人都可以使用和维护的区块链,比如比特币区块链,它的信息是完全公开的。
私有链:私有链是有几种管理者进行管理限制的,只有少数内部人员可以使用,信息不对外公开。
联盟链:是介于上面两者之间的,由若干个组织一起合作维护的区块链,相关信息会得到保护。
每种类型都有不同的应用场景,公有链更容易吸引市场和媒体,但私有链和联盟链更容易产生商业价值,总之都不限于数字货币,现在有广泛应用的有像记录产权,众筹等等。然后区块链的技术也在不断地演化,也有一些未来可能的应用场景,比如:金融,征信管理,资源共享,贸易管理(区块链可以帮助自动化国际贸易和物流供应链领域里的比较繁琐的手续和流程),物联网(租赁,物流等特定场景都很适合结合区块链技术)等等。
总结起来就是区块链最大的优势在于去中心化,因此我们需要区块链的地方大约就是我们想要去中心化的地方,最被经常提到的支付,也是他最初诞生数字货币的原因,最近国家也发行了数字货币,也算是肯定了它的价值。还有一点是它的匿名性,任何中心化的系统都没法提供绝对的隐私和匿名,所有数据汇集在中心,受人控制,不透明,但区块链网络可以完全公开,信息完全透明(涉及到交易还是会有地址,但不会与人对应,所有的数据都摆在那里),所以区块链是最理想的实现隐私或者隐藏的技术(在疯狂实名制的今天,黑市交易,洗钱等急切需要这些技术,感觉不太会受国家支持)
想到哪写到哪了,基本概念大概这些,后面会写区块链涉及的安全问题和共识算法。