2018/3/2 区块链学习笔记
一直以来都想把学到的区块链相关知识写成一个笔记记录下。。。
首先说下区块链是为了解决什么问题,为什么能火
区块链解决的核心问题其实就是在互联网上做价值转移时人与人之间不信任的问题;
试想一下,小A现在想在网上买小B的一个东西,然后他需要给小B打钱,如果此时没有一个权威的第三方背书,那么我们怎么能确保小A的钱是有效的,换句话说
我们怎么知道小A有多少钱?此时就必须要有一个权威的第三方来证明小A确实有这么多钱,并由第三方来做财产转移,因为我们在互联网上,小A所拥有的钱只是一串数字
,我们没法确保小A在给小B转钱后,他所拥有的钱确实减少,而小B则增加。但也正是因为由第三方来解决此问题,也就导致整个转账的过程非常慢,效率非常低。
而交由区块链来做后,我们就能保证小A的钱确实有效,交易过程也是近乎实时性的,并且不需要任何第三方背书,是由双方直接交易,所有流程都是自动化,人为无法干涉与篡改的。
能完成这些功能的技术核心则是基于密码学的。
区块链是什么?
根据上面的区块链能解决什么问题,我们可以知道,区块链就是一个分布式的账本数据库呀。它所做的事情就是记录一些交易数据的产生,并以一定数量为一个区块,
每个区块都持有上一个区块的hash地址,并且,一旦数据被记录则不能被修改,使得我们可以对数据进行追溯,这也是它的特性之一(当然,也有很多人认为这是缺点,
因为,在日常现实生活中,我们都难免会有交易出现错误的情况产生,如果不能予以更改,那么就会导致错误的不可恢复性,不过其实我们也可以进行一些补偿操作侧向解决这个问题)。
如果想要修改已经产生的区块,那么因为每个区块头都包含着当前区块体的hash,如果你修改了此区块体保存的信息,
区块头里保存的区块体的hash就会发生改变,相应的hash地址,也会发生更改,此时你就需要再去更改后面的节点。而且还必须要达成共识将其同步到其它节点上,否则没有任何意义,
但这基本是不可能的,除非你拥有世界上百分之51以上的算力,因为区块链技术有一个算力少服从多的特性,算力少的会被自动同步。
区块链公钥与私钥的非对称性加密(解决身份伪造与欺诈问题):
每个加入节点的用户都持有一个公钥与私钥,用户的公钥是对所有人都公开开放的,而私钥则只有自己知道,别人给你发送信息的时候,是先使用你的公钥的加密格式来进行
加密,之后到你这里,则是以你的私钥的解密格式进行解密。这样就保证了一个身份的无法伪造性。反过来,现在A给B发送一个信息,首先复制一份此信息,使用hash函数转换为一个字符串,再使用自己的私钥进行加密
,之后会将字符串,加密后的信息以及公钥一同发送给B,此时B拿到这三样东西后,首先会对此信息进行hash转换,之后使用A的公钥来对加密信息解密,再将两条信息进行比对,只有一样,才能代表此信息就是A发来的.
同时,此特性也保证了匿名性,因为公钥是所有人都知道的,只是个地址标识,是你在这个区块链中的所在的节点标识,但只有私钥才是你这个人的标识,但私钥其它人是不知道的,与公钥的mapping也只有你才知道。
其它人是无法知道的,所以也就保证了匿名性。
区块链共识机制(解决保证数据的安全性以及数据的权威性而不需要权威的第三方为其行为背书)
前面就说到,区块链就是一个账本数据库,而每个节点都拥有全量的数据,当其中一个节点想要对自己的节点的数据做更新操作时,
那么就需要所有节点都进行验证并且同意也就是达成共识。
注意点:区块链中只有操作记录,没有具体的数据(比如具体的余额之类),在你发起交易时,会产出一个输入值,一个输出值,输入值就是所有你的输出值,也就是别人打给你钱的交易记录,之后对此做一个简单的数据计算,查看其
是否大于输出值,如果大于输出值,那么会将余额再次以交易记录的形式自己打给自己,如果不大于,那么此条交易不成立。