区块链入门-准备搭建自己的区块链
区块链入门–准备搭建自己的区块链
最近在B站上看到一个Hyperleger Fabric搭建自己的区块链的视频,把里面的内容整理了出来。个人认为其中如何下载安装Docker,利用Hyperleger中的插件,实际搭建的过程讲述的并不清楚,但是对于需要准备的知识这一部分还是大有裨益。
文章目录
区块链技术简述
技术名词
交易,一次状态转移操作,在这里是一次对键值对的增删改查
区块,交易的集合,区块链网络中节点将他某一段时间内所有的交易打包,形成区块
链,区块的顺序排列,后一区块包括前一区块的哈希值
区块链的类型 三种
私有链 公有链 联盟链
区块链特点
去中心化,这一点存在争议,实际上取决于程度
去信任化,区块链形成后我们只需要信任相关的区块网络
数据共享
不可篡改,发起交易后不可以撤销
区块链平台
区块链1.0:数字货币时代 比特币
区块链2.0:引入智能合约到区块链,但是不能用于商业 以太坊
区块链3.0:我们的时代 eosio 企业级区块链操作系统
超级账本 Hyperleger
应用场景
去信任(去中介)
价值转移(而非拷贝)
数据共享,区块链之前数据共享有三种方式,中介机构保存,互相提供api互相调用,数据存储在第三方,区块链网络中每一个节点都是一致的,只需要访问自己维护的节点。
区块链技术组成部分
P2P网络协议
网络通信中所有的节点都是平等的,没有服务器没有客户端,或者都既是服务器又是客户端,迅雷采用的就是P2P技术。
回顾软件架构的发展:首先中心化,一个服务器多个客户端,系统的可靠性依赖于服务器的稳定性,后来是分布式,服务拆分,横向拓展,系统的可靠性依赖于分布式的容载恢复能力,服务的提供方依旧依赖于某一中心机构。去中心化所有人既是服务的又是客户端,生产者和消费者。
P2P网络实现
Hyperleger Fabric: gRPC对等服务
以太坊:Kad DHT技术
密码学-Hash
Hash:将不定长度的数据转化成固定长度的哈希值 应用最多的是SHA2-256
- 正向快速、逆向困难
- 输入敏感
- 抗碰撞
密码学-加解密算法
对称加密:密钥相同、容易泄露 AES、DES等
非对称加密:公钥/私钥,效率低(RAS算法,椭圆曲线等)
账本结构
共识算法(分布式一致性算法)
强一致性:一般很难实现或实现后性能很差,因为需要大量的网络通信,不能用于商用
最终一致性算法:弱化后的分布式一致
CAP原理:一个分布式系统不可能同时满足一致性,可用性和分区容忍性,必须三者取其二
ACID原理:原子性,一致性,隔离性,持久性
目前共识算法认为有两个系列:Paxos,拜占庭容错,前者假设分布式系统中只有故障节点,没有恶意节点(故意制造错误信息);后者既能容纳故障节点也能容纳恶意节点,一般分布式系统满足Paxos即可,但是区块链要满足拜占庭容错
Hyperleger Fabric
简介
IBM发起,Linux基金会托管,企业级联盟链基础设施,可拔插的共识机制(sols,kafka),多链多通道隔离,保障数据隐私,只存在相关参与主体中
智能合约
- 合约协议的数字化代码表达
- 分布式优先状态机,在一个分布式状态系统中,如果启动状态都一致,而且每个状态的改变状态都一样,最终肯定会得到一个一致的结果
- 执行环境安全隔离、不受第三方干扰(EVM,Docker),不会受到人的意志影响,目前还无法实现自动化
链码
- Fabric应用层的基石,必须写一个链码部署在Fabric上,最后基于Fabric提供的SDK,写一个应用程序与部署在区块链上的链码进行交互
链码的编程接口
- Init()
- Invoke() 两者都接收链码的SDK作为参数
环境
推荐使用centos,ubuntu,macOS,win10也行但不推荐,Docker环境支持
CSDN上使用centOS搭建Hyperleger fabric的文章较多,可以 。
Fabric samples是GO语言项目,所以还要部署GO语言环境
区块链需要的相关知识:
GO
C++
Java
Python
系统架构
以太坊
Linux
hyperleger
JavaScript
Node.js
共识算法
密码学
分布式计算
智能合约
数据挖掘
后端思维
GO语言编程
区块链基础知识 Docker、git等
深入了解区块链
如果想更加深入了解区块链本身的相关基础,可以浏览