区块链入门
一:区块链是什么?
区块链(Blockchain)是由节点参与的分布式数据库系统,它的特点是不可更改,不可伪造!!
在比特币的世界里来说,就是一个记账本 。记录了其代币(token)的每一笔交易。通过这些信息,我们可以找到每一个地址,在历史上任何时刻所拥有的价值 。
区块链是由一串使用密码学方法产生的数据块组成的 ,每一个区块都保存了上一个区块的哈希值,从而连成一条链。也正因为如此,每一个区块都得确保按照时间顺序在上一个区块之后产生,否则前一个区块的哈希值就是未知的,对吧?
那么来举个例子吧 ! !
比如,我邀请了几个产业界、金融界和财经界的权威人物组建了一个共享交流朋友圈,这个朋友圈的建立用的是区块链技术,也就是大家都有交流的终端应用,但数据不会像微信一样必须通过腾讯公司,而都是个人与个人之间的通讯硬件和软件上传输交流。这个朋友圈设立了一个规则,就是初始邀请的100位人士,各自拥有1个席位,未来每年只能增加5个席位。这个朋友圈用的是独特的加密技术,以至于其中的聊天文件不会被监控和偷窥,谁把聊天记录信息透露出去,所有人都能知道。
于是,这就形成了一个密闭的,类似于“骷髅会”的圈子。圈子内的成员通过信息共享,交流着产业、宏观、金融、投资等各种信息,进入这个圈子就意味着可以拥有领先于金融市场交易的优势。经过不胫而走的坊间传闻和市场宣传,想进入这个圈子的人越来越多,因为圈外的人完全无法获得圈内的消息,圈内的消息也因为区块链技术而不会被分享出去。
想进这个圈子的人越来越多,席位就待价而沽了,于是每个席位对应发行了一个席位币,这个席位币对应的是进圈子的资格。100个初创会员自己估值每个席位价值一百万,然后每年新增的5个席位拿去市场流通。很多人都想着进这个圈子,于是开始交易(炒作)这每年新增的5个席位所代表的席位币。
为什么这席位币值钱呢?圈子里的信息值钱,能和各界顶尖人士交流,去中心化不怕被监控,交流的信息不会被外传肯定领先有效,关键是每年才增加5个,不会滥发很稀缺啊。
二:那么比特币钱包又是怎样工作的呐?
它是依赖于与区块链的确认,一次有效检验称为一次确认。当然了,通常情况下一次交易要获得数个确认才能进行。其实我也不知道说了个什么。看下面的文章吧!
参考文献:http://www.ruanyifeng.com/blog/2018/01/bitcoin-tutorial.html
三:区块链的核心优势
**1.任何节点都可以创建交易。在经过一段时间的确认之后就可以判定它是否有效 。
2.对于试图重写或着修改交易记录而言,它的成本非常之高。
3.实现了两种记录(交易和区块)。 交易就是被存储在区块链上的实际数据。而区块则是记录有关于这个交易的一些信息。比如:时间信息,以及以何种顺序成为区块链的一部分 。交易是由参与者在正常过程中使用系统所创建的,而区块是由(矿工)的单位负责创建的。**
四:区块链的工作原理
4.1 什么是区块?
数据通过称之为区块的文件,永久的放在数字货币网络上。就像是一个交易账本。新来的区块会被矿工放在区块链的末端,一旦写入就很难被更改。
4.2 区块结构
数据项 | 描述 | 长度 |
---|---|---|
Magic no(魔法数) | 总是0xD9B4BEF9 | 4字节 |
Blocksize(区块大小) | 到区块结束的字节长度 | 4字节 |
Blockheader(区块头) | 包含6个数据项 | 80字节 |
Transaction counter交易数量 | 正整数VI=VarInt | 1-9字节 |
Transactions(交易) | 交易列表(非空) | Transaction counter-许多交易 |
每个区块都包括了一个被称为魔法数的常数、区块的大小、区块头、区块所包含的交易数量及部分或所有的近期新交易。在每个区块中,对整个区块链起决定作用的是区块头。那么区块头的结构是:
区块头描述 :
数据项 | 目的 | 更新时间 | 大小(字节) |
---|---|---|---|
Version(版本) | 区块版本号 | 更新软件后,它指定了一个新的版本号 | 4 |
hashPrevBlock(前一区块的Hash) | 前一区块的256位Hash值 | 新的区块进来时 | 32 |
hashMerkleRoot Merkle(根节点Hash值) | 基于一个区块中所有交易的256位Hash值 | 接受一个交易时 | 32 |
Time(时间戳) | 从1970-01-01 00:00 UTC开始到现在,以秒为单位的当前时间戳 | 每几秒就更新 | 4 |
Bits(当前目标的Hash值) | 压缩格式的当前目标Hash值 | 当挖矿难度调整时 | 4 |
Nonce(随机数) | 从0开始的32位随机数 | 产生Hash时(每次产生Hash随机数时都要增长) | 4 |
4.3 创始区块
比特币区块链的第一个区块,创建于2009年,由中本聪先生创建。它是所有区块链共同祖先,这意味着从任意区块开始,循链往后回溯,都能到达创世区块。哈希值等,见下图:
六:我想要说的几个问题:
1. 区块链体系结构图以及为什么“循链向后回溯,最终都会到达创世区块”?
由上图就可以看到,不管是在那一个地方开始,都能向后循链到达创始区块。
2. 为什么每一个区块的 hash 独一无二?区块与哈希是一一对应的?
每个区块的哈希都是针对”区块头”(Head)计算的。也就是说,把区块头的各项特征值,按照顺序连接在一起,组成一个很长的字符串,再对这个字符串计算哈希。
Hash = SHA256( 区块头 )
上面就是区块哈希的计算公式,SHA256是区块链的哈希算法。注意,这个公式里面只包含区块头,不包含区块体,也就是说,哈希由区块头唯一决定 ,而区块头即复杂又唯一,所以所计算出来的哈希很”唯一 “!
3. 为什么一个区块变了其他所有的区块都得改变?
前面说过,区块头包含很多内容,其中有当前区块体的哈希,还有上一个区块的哈希。这意味着,如果当前区块体的内容变了,或者上一个区块的哈希变了,一定会引起当前区块的哈希改变。
如果有人修改了一个区块,该区块的哈希就变了。为了让后面的区块还能连到它(因为下一个区块包含上一个区块的哈希),该人必须依次修改后面所有的区块,否则被改掉的区块就脱离区块链了,而哈希的计算又很耗时间,所以这是不可能的事情。也正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
4. 会不会形成循环链?形成了又会带来怎样的麻烦?
答案就是尽量不要形成循环链,我也相信不会有人蠢到弄一个循环链出来的吧 !但是为了解释这个问题,我们就暂且假定我们自己就这样的愚蠢吧!那么会有什么样的问题呐?答案就是:当你形成循环链的时候就必然意味着创世区块会指向新的区块 ,那么就是说创世区块改变了呗,那么基于我之前说的所有的区块都得被改变了。添加一个区块,尚且如此,如果添加多个,恐怕得gg啊!!
5. 同步问题
区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。
其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。(这里我有一点不懂的的是“存的下吗?为什么要每一个节点都保存整个数据库啊?防灾也不需要这麽多的备份吧?”)你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。
6. 我的理解:
其实我感觉写区块链就好像在书写历史一样,写入就意味着没法更改,但又与书写历史不一样,因为这段历史外界无法获取到(想想这是为什么呐?其实就是因为其中的信息都是经过严密的加密的呐)。那么问题来了,由谁来写入呐?答案就是矿工!
参考资料:
- 阮一峰的区块链入门教程(写的非常好,强烈建议去看看!!!!)
http://www.ruanyifeng.com/blog/2017/12/blockchain-tutorial.html