区块链入门教程
区块链入门教程
一, 区块链介绍
1, 区块链的最大特点
2, 区块链的组成
二,Hash加密算法
1, 什么是hash?
2,Hash最后的推论
三, 以太坊
1,什么是以太坊
四,智能合约
1,什么是智能合约
前言:
17年底后区块链迅速成为一个热门的话题,最近在入门学习区块链,在网上和书籍上整理了一些知识写成文章分享给大家,文章参考书籍《区块链技术指南》机械工程出版社。
一,区块链
1,区块链介绍
区块链的本质,区块链是什么?一句话就是它就是一个分布式存储数据库,是一个不可篡改的,区块链主要是存储数据信息,只要需要都可以存储在区块链中,你也可以向区块链读取数据,所以它是一个特殊的数据库。
任何人都可以架设服务器创建自己的节点,加入区块链网络成为当中的一个节点,在区块链中是没有中心节点的,每个节点都是平等的,你可以向任何一个节点写入(需要有区块)或读取数据,最后所有节点数据都会更新同步,数据都会保持一致。
2,区块链的最大特点
去中心化:区块链是一个完全去除中心化的,在区块链中是没有中心节点的,每个人都是管理员,如果有人想对它添加审核,是实现不了的,因为区块链最初的设计就是去除中心化,防止出现居于中心地位的管理员当局。
去中心化说白了就是,比如现在你所使用的QQ,它的中心就是腾讯所管理的, 如 果腾讯服务器一瘫痪,QQ整个就是不能用的,但是在区块链中是不存在 的只要一 个节点存活区块链就不会挂掉。
人人都能参与进区块链:在区块链中只要你创建节点,连接其他节点,你就是区块链的一员了。
3,区块链的组成
区块:区块链是由一个个区块(block)组成的。区块就是数据库,每次写入数据就是创建一个区块。每个区块分为两个部分:
区块头(head):记录当前区块的特征值。
区块体(body):实际数据。
·区块结构
区块头包含当前区块的多项特征值:
· 生成时间(时间戳)
· 实际数据(即区块体)的哈希
· 上一个区块的哈希
区块链的链接其实跟数据结构中的双链表挺像的。这里你需要理解什么是哈希(hash),这是理解区块链必需的。
二,什么是哈希(hash)?
Hash是密码学中的一门技术,称之为散列函数或散列算法又称哈希函数(英文:Hash Function),散列函数把消息或数据压缩成摘要,使数据变小,将数据的个数固定下来,然后将数据打混乱,重新创建一个叫做散列值(hash value)的指纹,散列值通常用一个短的随机字母和数字组成的字符串代表。好的散列函数在输入域中很少出现散列冲突。
所谓“哈希”就是随机数可以对如何内容,计算出一个长度相同的特别的值。区块链的哈希长度是256位,这就是说不管原始内容是什么都会计算出一个256位的二进制数字。而且可以保证只要元原始内容不同,对应的哈希也一定是不同的。
哈希是不可逆的,比如字符串“123”加密后将生成一窜字符“a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0”,
字符串“123”可以获得“a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0,
但是“a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0”获得不到“123”原始值。
(理论上,其它字符串也可能获得同样的hash值,但是这样的概率很低,可以说是不存在的)
最后的推理:
1,每个区块的哈希都是不一样的,所以可以使用hash来标识。
2,如果区块变了,hash也会跟着改变。
三,什么是以太坊?
以太坊(Ethereum)是建立在区块链技术之上去中心化的应用平台,它允许任何人在平台上建立和使用通过区块链技术去中心化应用。
在没有以太坊之前开发区块链应用是这样的:拷贝一份比特币的代码,然后去更改底层的加密算法,公识机制,网络协议等。
以太坊平台对底层区块链技术进行的封装,让区块链应用开发可以直接基于以太坊开发,开发者只要专注于应用本身的开发,从而降低了难度。
以太坊具有4中专用语言:Serpent(受Python启发) Solidity (受JavaScript启发) Mutant (受go启发)
四,什么是智能合约?
智能合约是一套以数字形式定义的承诺,承诺控制着数字资产并包含了合约参与者约定的权利和义务,由计算机执行。
也可以理解为是个双方打赌的中间人,比如,你规定合约内容是,明天中午12点判断天气是否和天气预报一样,如果是多云天气的话,超过一半云就算多云,否则不算。当第二天中午12点合约执行,如果你赢了,钱会自动打到你账上。一切解决。
例子举得比较简单,但你可以领会到智能合约能解决的一些问题。
总结:区块链是一个无人管理的数据库,目前以运行8年之久,没有出现过大问题。这证明它是可行的。
为了数据的可靠性,区块链也要付出代价,一是效率 数据存入区块链,最少需要等待10分钟,数据才能才能同步在全部节点上。二是能耗,区块的生成需要矿工进行无数无意义的计算,这是非常消耗能源的。
因此,区块链适应环境其实非常有限。
1,不存在所以成员都信任的管理当局。
2,写入的数据不要求实时使用。
3,挖矿的收益能够弥补本身的成本。