区块链入门--准备搭建自己的区块链
最近在B站上看到一个Hyperleger Fabric搭建自己的区块链的视频,把里面的内容整理了出来。个人认为其中如何下载安装Docker,利用Hyperleger中的插件,实际搭建的过程讲述的并不清楚,但是对于需要准备的知识这一部分还是大有裨益。
文章目录
- 区块链技术简述
- 技术名词
- 区块链的类型 三种
- 区块链特点
- 区块链平台
- 应用场景
- 区块链技术组成部分
- P2P网络协议
- P2P网络实现
- 密码学-Hash
- 密码学-加解密算法
- 账本结构
- 共识算法(分布式一致性算法)
- Hyperleger Fabric
- 简介
- 智能合约
- 链码
- 链码的编程接口
- 环境
- 区块链需要的相关知识:
- 深入了解区块链
区块链技术简述
技术名词
交易,一次状态转移操作,在这里是一次对键值对的增删改查
区块,交易的集合,区块链网络中节点将他某一段时间内所有的交易打包,形成区块
链,区块的顺序排列,后一区块包括前一区块的哈希值
区块链的类型 三种
私有链 公有链 联盟链
区块链特点
去中心化,这一点存在争议,实际上取决于程度
去信任化,区块链形成后我们只需要信任相关的区块网络
数据共享
不可篡改,发起交易后不可以撤销
区块链平台
区块链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等
深入了解区块链
如果想更加深入了解区块链本身的相关基础,可以浏览笔者的另一篇文章
区块链入门--准备搭建自己的区块链相关推荐
- 区块链开发之搭建以太坊私有链
(一)区块链开发之搭建以太坊私有链 本文链接:https://blog.csdn.net/rwdxll/article/details/82929417 1.安装ethereum/Go client( ...
- 区块链入门-带你搞懂区块链-熊丽兵-专题视频课程
区块链入门-带你搞懂区块链-221人已学习 课程介绍 区块链已火遍全球,很多人都想要能够清晰的了解什么是区块链以及区块链的价值在哪里,本课程将从入门开始,为你讲解区块链技术核心概念与原 ...
- 区块链,使用 Go-Ethereum 搭建以太坊私有链
1.什么是Ethereum(以太坊) 以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约.开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太 ...
- 以太坊区块链 POA本地搭建多节点私有链
前面的单个节点的设置参考其他教程搭建,这里主要针对搭建多节点相互连通的问题进行总结. 我的geth版本号是 geth -version 1.9.22-stable-c71a7e26 (一)创建测试文件 ...
- 区块链入门二:区块不可篡改
区块链入门一:什么是区块链 在上一篇中,简单介绍了什么是区块链.这一篇主要介绍区块链的不可篡改的特性. 首先我们来了解下哈希(Hash)算法 这是百度的描述,简单来说就是一种不可逆的摘要算法,哈希算法 ...
- cl.zk0.info/index.php,兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建
原标题:兄弟连区块链入门到精通教程btcpool矿池源码分析环境搭建 btcpool矿池-测试环境搭建及使用cgminer测试 本文档基于Ubuntu 16.04 LTS, 64 Bits. 安装Bi ...
- 区块链入门教程(4)--搭建单机四节点FISCO BCOS联盟链
文章目录 1. 任务背景 2. 任务目标 3. 相关知识点 4. 任务实操 4.1 切换root用户 4.2 安装依赖 4.3 创建目录,下载安装脚本 4.4 搭建单群组4节点联盟链 4.5 启动FI ...
- 干货!区块链入门、进阶、行业专家观点!1000篇好文帮你破解区块链密码!(中篇)...
随着区块链概念理论的不断成熟以及强劲技术的不断深耕,区块链已经成为投资圈中备受关注的热点,从区块链1.0时代落地数字货币比特币.莱特币等,打开了区块链通向新弯道的高速路口,到区块链2.0时代开始通过智 ...
- 区块链入门系列之梅克尔帕特里夏树
区块链入门系列文章 区块链基本概念和名词解释 P2P 共识算法 梅克尔-帕特里夏树 从零开始搭建区块链 这里写自定义目录标题 区块链入门系列文章 前言 Merkle树 MPT 总结 前言 在讲基本概念 ...
最新文章
- 扫地机器人“离家出走”的真实原因找到了:差个自动驾驶算法
- Spring STS Call Hierarchy 查找不到被调用的信息
- Linq TO SQL 虽好,但不要滥用
- boost::math模块计算 Bessel、Neumann 和 Airy 函数的零(或根)的函数的测试程序
- 【转载自codeproject】Another Look At IDisposable
- spring (四) SpringMVC的请求和响应
- mysql双机热备实现
- sql服务器文件夹共享,sqlserver2017共享功能目录路径不可改的解决方法
- 记录一次空指针异常(NullPointerException)的断点调试
- ubuntu 安装 theano
- datagrid数据导出到excel文件给客户端下载的几种方法(转)
- (附源码)计算机毕业设计ssm大众点评管理系统
- 蓝星实物微商城H5源码 附搭建教程
- 关于计算机教室的寄语,教师寄语大全(精选90句)
- Java中的字符串及其中的常用方法
- html p标签颜色代码,html里的颜色标签肿么写?
- 三菱FX系列PLC编程口通信协议举例
- 表白神器——Python画丘比特之箭穿心
- L130被围绕的区域
- 靴子落地!Mobileye正式启动4D成像雷达量产进程