mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-09-17 08:46:40 +08:00
1093 lines
46 KiB
HTML
1093 lines
46 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
|
||
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
|
||
<head>
|
||
|
||
<head>
|
||
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
|
||
|
||
<link rel="icon" href="/static/favicon.png">
|
||
|
||
<title>052 区块链技术 - 区块链的革命性及技术概要.md.html</title>
|
||
|
||
<!-- Spectre.css framework -->
|
||
|
||
<link rel="stylesheet" href="/static/index.css">
|
||
|
||
<!-- theme css & js -->
|
||
|
||
<meta name="generator" content="Hexo 4.2.0">
|
||
|
||
</head>
|
||
<body>
|
||
<div class="book-container">
|
||
|
||
<div class="book-sidebar">
|
||
|
||
<div class="book-brand">
|
||
|
||
<a href="/">
|
||
|
||
<img src="/static/favicon.png">
|
||
|
||
<span>技术文章摘抄</span>
|
||
|
||
</a>
|
||
|
||
</div>
|
||
|
||
<div class="book-menu uncollapsible">
|
||
|
||
<ul class="uncollapsible">
|
||
|
||
<li><a href="/" class="current-tab">首页</a></li>
|
||
|
||
</ul>
|
||
<ul class="uncollapsible">
|
||
|
||
<li><a href="../">上一级</a></li>
|
||
|
||
</ul>
|
||
<ul class="uncollapsible">
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/000 开篇词 洞悉技术的本质,享受科技的乐趣.md.html">000 开篇词 洞悉技术的本质,享受科技的乐趣.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/001 程序员如何用技术变现(上).md.html">001 程序员如何用技术变现(上).md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/002 程序员如何用技术变现(下).md.html">002 程序员如何用技术变现(下).md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/003 Equifax信息泄露始末.md.html">003 Equifax信息泄露始末.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/004 从Equifax信息泄露看数据安全.md.html">004 从Equifax信息泄露看数据安全.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/005 何为技术领导力.md.html">005 何为技术领导力.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/006 如何拥有技术领导力.md.html">006 如何拥有技术领导力.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/007 推荐阅读:每个程序员都该知道的事.md.html">007 推荐阅读:每个程序员都该知道的事.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/008 Go语言,Docker和新技术.md.html">008 Go语言,Docker和新技术.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/009 答疑解惑:渴望、热情和选择.md.html">009 答疑解惑:渴望、热情和选择.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/010 如何成为一个大家愿意追随的Leader?.md.html">010 如何成为一个大家愿意追随的Leader?.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/011 程序中的错误处理:错误返回码和异常捕捉.md.html">011 程序中的错误处理:错误返回码和异常捕捉.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/012 程序中的错误处理:异步编程和最佳实践.md.html">012 程序中的错误处理:异步编程和最佳实践.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/013 魔数 0x5f3759df.md.html">013 魔数 0x5f3759df.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/014 推荐阅读:机器学习101.md.html">014 推荐阅读:机器学习101.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/015 时间管理:同扭曲时间的事儿抗争.md.html">015 时间管理:同扭曲时间的事儿抗争.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/016 时间管理:投资赚取时间.md.html">016 时间管理:投资赚取时间.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/017 故障处理最佳实践:应对故障.md.html">017 故障处理最佳实践:应对故障.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/018 故障处理最佳实践:故障改进.md.html">018 故障处理最佳实践:故障改进.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/019 答疑解惑:我们应该能够识别的表象和本质.md.html">019 答疑解惑:我们应该能够识别的表象和本质.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/020 分布式系统架构的冰与火.md.html">020 分布式系统架构的冰与火.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/021 从亚马逊的实践,谈分布式系统的难点.md.html">021 从亚马逊的实践,谈分布式系统的难点.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/022 分布式系统的技术栈.md.html">022 分布式系统的技术栈.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/023 分布式系统关键技术:全栈监控.md.html">023 分布式系统关键技术:全栈监控.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/024 分布式系统关键技术:服务调度.md.html">024 分布式系统关键技术:服务调度.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/025 分布式系统关键技术:流量与数据调度.md.html">025 分布式系统关键技术:流量与数据调度.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/026 洞悉PaaS平台的本质.md.html">026 洞悉PaaS平台的本质.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/027 推荐阅读:分布式系统架构经典资料.md.html">027 推荐阅读:分布式系统架构经典资料.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/028 编程范式游记(1)- 起源.md.html">028 编程范式游记(1)- 起源.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/029 编程范式游记(2)- 泛型编程.md.html">029 编程范式游记(2)- 泛型编程.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/030 编程范式游记(3) - 类型系统和泛型的本质.md.html">030 编程范式游记(3) - 类型系统和泛型的本质.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/031 Git协同工作流,你该怎样选.md.html">031 Git协同工作流,你该怎样选.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/032 推荐阅读:分布式数据调度相关论文.md.html">032 推荐阅读:分布式数据调度相关论文.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/033 编程范式游记(4)- 函数式编程.md.html">033 编程范式游记(4)- 函数式编程.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/034 编程范式游记(5)- 修饰器模式.md.html">034 编程范式游记(5)- 修饰器模式.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/035 编程范式游记(6)- 面向对象编程.md.html">035 编程范式游记(6)- 面向对象编程.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/036 编程范式游记(7)- 基于原型的编程范式.md.html">036 编程范式游记(7)- 基于原型的编程范式.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/037 编程范式游记(8)- Go 语言的委托模式.md.html">037 编程范式游记(8)- Go 语言的委托模式.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/038 编程范式游记(9)- 编程的本质.md.html">038 编程范式游记(9)- 编程的本质.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/039 编程范式游记(10)- 逻辑编程范式.md.html">039 编程范式游记(10)- 逻辑编程范式.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/040 编程范式游记(11)- 程序世界里的编程范式.md.html">040 编程范式游记(11)- 程序世界里的编程范式.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/041 弹力设计篇之“认识故障和弹力设计”.md.html">041 弹力设计篇之“认识故障和弹力设计”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/042 弹力设计篇之“隔离设计”.md.html">042 弹力设计篇之“隔离设计”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/043 弹力设计篇之“异步通讯设计”.md.html">043 弹力设计篇之“异步通讯设计”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/044 弹力设计篇之“幂等性设计”.md.html">044 弹力设计篇之“幂等性设计”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/045 弹力设计篇之“服务的状态”.md.html">045 弹力设计篇之“服务的状态”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/046 弹力设计篇之“补偿事务”.md.html">046 弹力设计篇之“补偿事务”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/047 弹力设计篇之“重试设计”.md.html">047 弹力设计篇之“重试设计”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/048 弹力设计篇之“熔断设计”.md.html">048 弹力设计篇之“熔断设计”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/049 弹力设计篇之“限流设计”.md.html">049 弹力设计篇之“限流设计”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/050 弹力设计篇之“降级设计”.md.html">050 弹力设计篇之“降级设计”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/051 弹力设计篇之“弹力设计总结”.md.html">051 弹力设计篇之“弹力设计总结”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
<a class="current-tab" href="/专栏/左耳听风/052 区块链技术 - 区块链的革命性及技术概要.md.html">052 区块链技术 - 区块链的革命性及技术概要.md.html</a>
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/053 区块链技术 - 区块链技术细节 - 哈希算法.md.html">053 区块链技术 - 区块链技术细节 - 哈希算法.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/054 区块链技术 - 区块链技术细节 - 加密和挖矿.md.html">054 区块链技术 - 区块链技术细节 - 加密和挖矿.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/055 区块链技术 - 去中心化的共识机制.md.html">055 区块链技术 - 去中心化的共识机制.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/056 区块链技术 - 智能合约.md.html">056 区块链技术 - 智能合约.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/057 区块链技术 - 传统金融和虚拟货币.md.html">057 区块链技术 - 传统金融和虚拟货币.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/058 管理设计篇之分布式锁.md.html">058 管理设计篇之分布式锁.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/059 管理设计篇之配置中心.md.html">059 管理设计篇之配置中心.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/060 管理设计篇之边车模式.md.html">060 管理设计篇之边车模式.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/061 管理设计篇之服务网格.md.html">061 管理设计篇之服务网格.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/062 管理设计篇之网关模式.md.html">062 管理设计篇之网关模式.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/063 管理设计篇之部署升级策略.md.html">063 管理设计篇之部署升级策略.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/064 性能设计篇之缓存.md.html">064 性能设计篇之缓存.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/065 性能设计篇之异步处理.md.html">065 性能设计篇之异步处理.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/066 性能设计篇之数据库扩展.md.html">066 性能设计篇之数据库扩展.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/067 性能设计篇之秒杀.md.html">067 性能设计篇之秒杀.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/068 性能设计篇之边缘计算.md.html">068 性能设计篇之边缘计算.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/069 程序员练级攻略(2018):开篇词.md.html">069 程序员练级攻略(2018):开篇词.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/070 程序员练级攻略(2018):零基础启蒙.md.html">070 程序员练级攻略(2018):零基础启蒙.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/071 程序员练级攻略(2018):正式入门.md.html">071 程序员练级攻略(2018):正式入门.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/072 程序员练级攻略(2018):程序员修养.md.html">072 程序员练级攻略(2018):程序员修养.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/073 程序员练级攻略(2018):编程语言.md.html">073 程序员练级攻略(2018):编程语言.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/074 程序员练级攻略:理论学科.md.html">074 程序员练级攻略:理论学科.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/075 程序员练级攻略(2018):系统知识.md.html">075 程序员练级攻略(2018):系统知识.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/076 程序员练级攻略(2018):软件设计.md.html">076 程序员练级攻略(2018):软件设计.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/077 程序员练级攻略(2018):Linux系统、内存和网络.md.html">077 程序员练级攻略(2018):Linux系统、内存和网络.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/078 程序员练级攻略(2018):异步IO模型和Lock-Free编程.md.html">078 程序员练级攻略(2018):异步IO模型和Lock-Free编程.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/079 程序员练级攻略(2018):Java底层知识.md.html">079 程序员练级攻略(2018):Java底层知识.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/080 程序员练级攻略(2018):数据库.md.html">080 程序员练级攻略(2018):数据库.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/081 程序员练级攻略(2018):分布式架构入门.md.html">081 程序员练级攻略(2018):分布式架构入门.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/082 程序员练级攻略(2018):分布式架构经典图书和论文.md.html">082 程序员练级攻略(2018):分布式架构经典图书和论文.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/083 程序员练级攻略(2018):分布式架构工程设计.md.html">083 程序员练级攻略(2018):分布式架构工程设计.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/084 程序员练级攻略(2018):微服务.md.html">084 程序员练级攻略(2018):微服务.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/085 程序员练级攻略(2018):容器化和自动化运维.md.html">085 程序员练级攻略(2018):容器化和自动化运维.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/086 程序员练级攻略(2018):机器学习和人工智能.md.html">086 程序员练级攻略(2018):机器学习和人工智能.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/087 程序员练级攻略(2018):前端基础和底层原理.md.html">087 程序员练级攻略(2018):前端基础和底层原理.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/088 程序员练级攻略(2018):前端性能优化和框架.md.html">088 程序员练级攻略(2018):前端性能优化和框架.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/089 程序员练级攻略(2018):UIUX设计.md.html">089 程序员练级攻略(2018):UIUX设计.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/090 程序员练级攻略(2018):技术资源集散地.md.html">090 程序员练级攻略(2018):技术资源集散地.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/091 程序员面试攻略:面试前的准备.md.html">091 程序员面试攻略:面试前的准备.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/092 程序员面试攻略:面试中的技巧.md.html">092 程序员面试攻略:面试中的技巧.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/093 程序员面试攻略:面试风格.md.html">093 程序员面试攻略:面试风格.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/094 程序员面试攻略:实力才是王中王.md.html">094 程序员面试攻略:实力才是王中王.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/095 高效学习:端正学习态度.md.html">095 高效学习:端正学习态度.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/096 高效学习:源头、原理和知识地图.md.html">096 高效学习:源头、原理和知识地图.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/097 高效学习:深度,归纳和坚持实践.md.html">097 高效学习:深度,归纳和坚持实践.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/098 高效学习:如何学习和阅读代码.md.html">098 高效学习:如何学习和阅读代码.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/099 高效学习:面对枯燥和量大的知识.md.html">099 高效学习:面对枯燥和量大的知识.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/100 高效沟通:Talk和Code同等重要.md.html">100 高效沟通:Talk和Code同等重要.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/101 高效沟通:沟通阻碍和应对方法.md.html">101 高效沟通:沟通阻碍和应对方法.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/102 高效沟通:沟通方式及技巧.md.html">102 高效沟通:沟通方式及技巧.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/103 高效沟通:沟通技术.md.html">103 高效沟通:沟通技术.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/104 高效沟通:好老板要善于提问.md.html">104 高效沟通:好老板要善于提问.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/105 高效沟通:好好说话的艺术.md.html">105 高效沟通:好好说话的艺术.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/106 加餐 谈谈我的“三观”.md.html">106 加餐 谈谈我的“三观”.md.html</a>
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
<a href="/专栏/左耳听风/107 结束语 业精于勤,行成于思.md.html">107 结束语 业精于勤,行成于思.md.html</a>
|
||
</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
</div>
|
||
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
|
||
|
||
<div class="sidebar-toggle-inner"></div>
|
||
|
||
</div>
|
||
<script>
|
||
|
||
function add_inner() {
|
||
|
||
let inner = document.querySelector('.sidebar-toggle-inner')
|
||
|
||
inner.classList.add('show')
|
||
|
||
}
|
||
function remove_inner() {
|
||
|
||
let inner = document.querySelector('.sidebar-toggle-inner')
|
||
|
||
inner.classList.remove('show')
|
||
|
||
}
|
||
function sidebar_toggle() {
|
||
|
||
let sidebar_toggle = document.querySelector('.sidebar-toggle')
|
||
|
||
let sidebar = document.querySelector('.book-sidebar')
|
||
|
||
let content = document.querySelector('.off-canvas-content')
|
||
|
||
if (sidebar_toggle.classList.contains('extend')) { // show
|
||
|
||
sidebar_toggle.classList.remove('extend')
|
||
|
||
sidebar.classList.remove('hide')
|
||
|
||
content.classList.remove('extend')
|
||
|
||
} else { // hide
|
||
|
||
sidebar_toggle.classList.add('extend')
|
||
|
||
sidebar.classList.add('hide')
|
||
|
||
content.classList.add('extend')
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
function open_sidebar() {
|
||
|
||
let sidebar = document.querySelector('.book-sidebar')
|
||
|
||
let overlay = document.querySelector('.off-canvas-overlay')
|
||
|
||
sidebar.classList.add('show')
|
||
|
||
overlay.classList.add('show')
|
||
|
||
}
|
||
|
||
function hide_canvas() {
|
||
|
||
let sidebar = document.querySelector('.book-sidebar')
|
||
|
||
let overlay = document.querySelector('.off-canvas-overlay')
|
||
|
||
sidebar.classList.remove('show')
|
||
|
||
overlay.classList.remove('show')
|
||
|
||
}
|
||
</script>
|
||
<div class="off-canvas-content">
|
||
|
||
<div class="columns">
|
||
|
||
<div class="column col-12 col-lg-12">
|
||
|
||
<div class="book-navbar">
|
||
|
||
<!-- For Responsive Layout -->
|
||
|
||
<header class="navbar">
|
||
|
||
<section class="navbar-section">
|
||
|
||
<a onclick="open_sidebar()">
|
||
|
||
<i class="icon icon-menu"></i>
|
||
|
||
</a>
|
||
|
||
</section>
|
||
|
||
</header>
|
||
|
||
</div>
|
||
|
||
<div class="book-content" style="max-width: 960px; margin: 0 auto;
|
||
|
||
overflow-x: auto;
|
||
|
||
overflow-y: hidden;">
|
||
|
||
<div class="book-post">
|
||
|
||
<p id="tip" align="center"></p>
|
||
|
||
<div><h1>052 区块链技术 - 区块链的革命性及技术概要</h1>
|
||
|
||
<p>才开极客时间专栏的时候,就有读者留言让我发表一下对区块链技术的一些看法。只是当时觉得区块链方面的技术一方面比较简单,感觉也没什么好说的,另一方面,我觉得还有很多更主流更能帮助大家成长的技术,所以就把区块链相关的技术文章降级处理了。</p>
|
||
|
||
<p>那为什么现在我又要写这个主题呢?</p>
|
||
|
||
<p>2010 年,我在浏览国外技术网站时,看到好多人在讨论一个叫 bitcoin 的东西,还看到有人说用几万个这个东西换了个披萨。随后,我看了一下它的<a href="https://bitcoin.org/bitcoin.pdf">白皮书</a>,这篇不到 10 页的文档读起来还是很容易的,所以建议你读一读。</p>
|
||
|
||
<p>然后,我在一台电脑上尝试安装了一下,就像用 BT 或电驴下载一样,连入了这个没有服务器的 P2P 网络,下载了账本,还尝试了一下 " 挖矿 "。</p>
|
||
|
||
<p>花了不短的时间,记下了我的比特币里的一个区块,收到了来自系统奖励的 50 个比特币。我默默地看着这个又耗硬盘空间,又非常吃 CPU 的家伙,心里想,这什么破软件,太难用了,就删除了。(是的,这 50 个比特币也就不知道去哪了。)</p>
|
||
|
||
<p>记得比特币开始有价值的时候,像维基解密这样的机构为了避开被政府控制的银行,会接受比特币的捐款。2012 年的时候,比特币已经看涨了,到了 2013 年,比特币的市值已经比较高了,突破了 1000 美金。</p>
|
||
|
||
<p>那个时候,中国有好多人在挖矿。记得最厉害的是李笑来,他的比特币持有数量很可观,如果没有卖的话,现在就更为 " 恐怖 " 了。</p>
|
||
|
||
<p>在 2016 年的时候,我听说了个叫以太坊的东西。嗯,是区块链 + 代码的东西,又被叫作智能合约,这的确给予了区块链有更多的想像空间。还听说了这个项目是被 ICO 出来的,然后我就了解了一下 ICO。同年,我有一个高中同学,搞了个创业项目,据说是中国第一个 ICO 项目。当时筹到了 1000 万人民币,然后发个币上了二级市场。</p>
|
||
|
||
<p>再然后,2017 年的一天有人带我去见薛蛮子。听他说他在很短的一段时间内出手投了好多个和区块链相关的创业项目。见薛蛮子一周后,中国政府出台政策定性 ICO 非法,开始治理市场,清除所有一切和 ICO 相关的东西。</p>
|
||
|
||
<p>似乎市场应该就此冷静下来了。</p>
|
||
|
||
<p>2018 年 1 月 9 日,真格基金创始人徐小平在一个微信群里对他投资公司的 CEO 们说,区块链是一场伟大的技术革命。他要求大家 " 对区块链不要有怀疑,不要有迟疑,立即动员全体员工,学习如何拥抱这场革命 "。</p>
|
||
|
||
<p>随着徐小平这个微信截图的流出又把区块链推到了风口浪尖。我几个关系不错的做技术的朋友也跟着入坑了……各种人,认识我的,不认识我的,全都来找我,问我区块链的事,我不想关注都不成了……</p>
|
||
|
||
<p>所以,我想我还是在这里写上几篇文章吧。一方面,我会很客观地把区块链的技术解释出来(不是那种天马行空完全不知所云的比喻,是实实在在的技术,我保证非技术人员都一定能看得懂), 包括区块链、非对称加密、挖矿、共识机制等。</p>
|
||
|
||
<p>另一方面,我会结合现有的一些金融上的交易撮合的中心化标准玩法来让你来比较一下中心化和去中心化的不同。最后,我会谈一些我的观点,可能会上升到哲学层面。当然,最后还是由你自己来做判断。</p>
|
||
|
||
<p>下面是这几篇文章要回答的关键问题。</p>
|
||
|
||
<ol>
|
||
|
||
<li><strong>为什么区块链技术会成为热点技术?它解决了什么问题?</strong></li>
|
||
|
||
<li><strong>区块链(blockchain)究竟是个什么技术?这里,我会带你抽丝剥茧看看区块链技术,看看区块链是如何做到不可篡改、什么是 " 挖矿 ",以及为什么要 " 挖矿 ",全是技术干货。</strong></li>
|
||
|
||
<li><strong>去中心意味着没有一个公司,没有公司就意味着没有服务器,没有服务器的软件是怎样提供服务的?这里主要会讲一下无中心化的系统是怎么运作的,是怎么达成一致的?</strong></li>
|
||
|
||
<li><strong>智能合约是个什么鬼?它有什么意思?</strong></li>
|
||
|
||
<li><strong>简单地谈一谈金融,你可以自行思考一下,区块链虚拟货币是否有可能取代现有的金融服务?并重组整个社会架构?</strong></li>
|
||
|
||
<li><strong>最后,我会提出几个逻辑问题来让你独立思考一下 " 去中心化 " 的优劣,以及相关的逻辑和哲学问题。</strong></li>
|
||
|
||
</ol>
|
||
|
||
<p>闲言少叙,我们开始。</p>
|
||
|
||
<h1>区块链技术的革命性</h1>
|
||
|
||
<p>你一定看过太多的文章用各式各样的比喻来讲区块链技术是什么,以及为什么牛逼。在这里,我尝试用我的话来说明一下区块链技术的革命性。</p>
|
||
|
||
<p>说区块链必然要谈比特币,比特币是一种数字货币。但最令人叫绝的是,比特币号称有下面几个特性。</p>
|
||
|
||
<ol>
|
||
|
||
<li><strong>去中心化</strong>。这意味着没有中心的服务器,不受某个人的控制,整个系统直接由用户端的电脑构成。这样的技术难度是非常大的,并不像手机 App 或是小网站一样,你想发布就发布,这需要有人来跟你一起玩。</li>
|
||
|
||
<li><strong>数据防篡改</strong>。所有交易记录全量保存,并公开给所有的人,而且还被加密和校验。并不是数据不能被篡改,而是数据被篡改的成本非常大。(有人借此说区块链的不可篡改可以解决人类的信任问题,这个并不一定。)</li>
|
||
|
||
<li><strong>固定的发行量</strong>。不会像国家中央银行那样乱印钞票,造成通货膨胀。</li>
|
||
|
||
</ol>
|
||
|
||
<p>这几个东西加在一起,就可以让那些想作弊的人,尤其是那些有权有势有钱的大公司大组织很难作恶。因为 " 去中心化 " 这个事,从本质上来说,造就了整个系统不再需要这些个大的公司和组织,人民可以达到真正意义上的自治,这些个大公司都会倒闭。</p>
|
||
|
||
<p><strong>简单说来,相信区块链的人都相信,可以通过区块链这个技术来改变整个社会的组织形成——不再需要银行、中介机构、电商平台、支付宝等中间机构,人们可以通过一个不受任何人控制和操作的 P2P 金融系统,进行完全自由和可信的交易。</strong></p>
|
||
|
||
<p><strong>当然,反区块链的人的观点也很明确。他们认为,所谓的去中心化看似很美好,但实则不可能。而且从目前的区块链的应用来看,也没有颠覆什么,连迹象都没有。反而,大家都在疯狂地炒作概念,没有实质的价值。像 ICO 和交易所这样的东西里面充满了大量的投机主义,泡沫非常大。</strong></p>
|
||
|
||
<p>于是,这种巨大无比的争议性,把人们分割成了两种阵营,把区块链推向了火热。对此,我这几篇文章会把区块链这个技术一点一点讲解清楚,让你自己判断。</p>
|
||
|
||
<p>其实,对于投资机构来说,在逻辑上,我觉得他们应该感到恐慌才对,因为他们也是被革命的对象啊。如果某个事不再需要公司,人们自治,那么投资人怎么投资啊?投资的实体都没了啊,怎样有回报?</p>
|
||
|
||
<p>如果说,投资机构想扶植一个小公司用区块链技术把大公司干掉,那在逻辑上也说不通啊,因为如果你投资的公司也可能被别人很容易地颠覆掉,那么你怎么可能会投资呢?</p>
|
||
|
||
<p>相关的逻辑问题,我们会放在最后来讨论,还是先看一下区块链的技术。下面会有非常详细的技术细节,如果你不关心技术细节,那么可以只看 " 技术概要 " 一节。</p>
|
||
|
||
<h1>技术概要</h1>
|
||
|
||
<p>首先,我们先看一下中心化和去中心化的业务流是什么样的。</p>
|
||
|
||
<p>下面的图给出了 " 传统中心化 " 和 " 去中心化 " 的对比。</p>
|
||
|
||
<p><img src="assets/cf7c446b8781434c33a536228c335b1c.png" alt="img" /></p>
|
||
|
||
<p><strong>中心化结构(大家都将记账权交给银行)</strong></p>
|
||
|
||
<p><img src="assets/93db9b74de0c73d52e4ed35f559a6348.png" alt="img" />
|
||
|
||
<strong>去中心化的交易</strong></p>
|
||
|
||
<p>去中心化的比特币交易处理流程如下。</p>
|
||
|
||
<ul>
|
||
|
||
<li>首先,需要交易的用户把交易传到网络中。</li>
|
||
|
||
<li>然后,网络上有些机器叫记账结点,它们通过比拼计算力的方式竞争记账权。这也叫 " 挖矿 "。</li>
|
||
|
||
<li>获得记账权的结点,会把待记账的交易进行计算打包,并向全网广播。收到新的记账包的结点会对其进行验证,验证通过后加入自己的区块。</li>
|
||
|
||
</ul>
|
||
|
||
<p>注意,整个比特币的世界是没有服务器的,其完全是靠大家用自己的电脑拼出来的一个分布式系统。既然这些电脑都是大家自己的,所以这种 P2P 的去中心化网络有一个前提假设——<strong>“网络中的任何结点都是不能信任的,它们中的任何一个都可能会作恶”</strong>。</p>
|
||
|
||
<p>基于这个前提假设,这个分布式的账本系统就需要有如下的设计:<strong>任何人都可以拿到所有的数据。所以,数据要能很容易被验证是合法的没有被修改过的,而且也要是很难被人修改的。</strong></p>
|
||
|
||
<p>基于这个设计,比特币使用了两个比较大的技术:<strong>“区块链技术 "和" 工作量证明共识机制”</strong>。</p>
|
||
|
||
<h2>区块链</h2>
|
||
|
||
<p>第一个技术就是区块链,区块链又叫 blockchain,其中有一个一个的区块,每个区块中包括着一组交易信息,然后,每一个区块都会有一个 ID(或是一个地址),这些区块通过记录前一个区块的 ID 来形成一条链。下面的图有助于你形象地理解这一概念,感兴趣可以看看。</p>
|
||
|
||
<p><img src="assets/7794cf8d3e41046d3d3bf215c5edae00.png" alt="img" /></p>
|
||
|
||
<p><strong>但需要注意下面这几个方面。</strong></p>
|
||
|
||
<ul>
|
||
|
||
<li><strong>每个块的 ID 都是通过其内容生成的</strong>,所以,只要是内容有一丁点儿的变化,这个 ID 都会完全不一样。</li>
|
||
|
||
<li>而生成 ID 的内容中还包括上一个块的 ID。**于是只要上一个块的内容变了,其 ID 也要跟着变(不然就不合法了),那么后面指向这个块的 ID 也要变。于是,后面指向这个块的 ID 也要重新计算,而变成另一个,这样就会形成一个连锁效应——一个块被修改,后续的所有块都要跟着一起改。**于是导致了修改成本的提升。</li>
|
||
|
||
<li><strong>这种一处改,处处改的方式,并不代表不能篡改,而只是让修改面比较大,让你的改动麻烦一点。</strong></li>
|
||
|
||
<li>越旧的区块的篡改会造成越大面积的修改,于是越旧的区块就不容易篡改,就越安全。反之,越新的区块就越不安全。</li>
|
||
|
||
</ul>
|
||
|
||
<p>而真正让区块链做到非常难篡改的是工作量证明的共识机制。</p>
|
||
|
||
<h2>工作量证明共识机制</h2>
|
||
|
||
<p>我们知道,分布式网络的数据一致性是最难的问题了,在这种去中心化的网络集群下就更难了。其中最大的本质差别是,**一个公司内的分布式系统中的结点是被假设成可信任的,而在去中心化的网络下,结点要被假设成不可信任的。**想象一下,在一堆不可信的结点上做一致性是不是一件很难的事?</p>
|
||
|
||
<p>这里,需要解决几个与 " 数据一致性 " 相关的问题。</p>
|
||
|
||
<ul>
|
||
|
||
<li>**以谁的数据为准?**任何结点都可以修改自己所下载的账本,也就是任何一个人都可以伪造账本。那么,谁的数据才是对的?**在去中心化的网络下,我们只能认为,大多数人认识的数据是对的。**只要我控制了一半以上的结点,我让这 " 大多数人 " 伪造同一份账本,那么相当于整个账本都被我修改过来了。<strong>因为在没有服务器的去中心化的网络下,所谓的真理只不过是大多数人同意的东西。</strong></li>
|
||
|
||
<li>**" 大多数人 " 的问题。**是人数吗?在网络世界里,我可以用程序模拟出无穷多的 " 人 " 出来投票,所以,用人数来解决去中心化的问题,在分不清是人还是狗,是生物还是程序的计算机世界里,是一件很愚蠢的事。</li>
|
||
|
||
<li>**意见分歧问题。**如果在同一个时刻,有多个人都在告诉其它人,这账应该这么记。比如说,有人说,左耳朵转了 10 块钱给了耗子叔,有人说,左耳朵转了 20 元给了耗子叔,还有人说,左耳朵没有花钱,是陈皓花的钱。而且,他们的数据都合法,那么,整个网络应该听谁的?</li>
|
||
|
||
</ul>
|
||
|
||
<p>是的,这种没有人组织的玩法真是乱啊。</p>
|
||
|
||
<p>**为了解决这几个问题,比特币使用了 Proof-of-Work 工作量证明机制,也就是 " 挖矿 "。所谓的 " 挖矿 " 其实就是用大规模的计算来找到一个符合系统要求的区块 ID。**要找到符合条件的区块 ID 只能通过暴力穷举的方式,所以要付出大量的系统计算资源和电力。</p>
|
||
|
||
<p>这样一来,我们用这种 " 极度消耗计算力 " 的方式来提高成本,从而有效地遏制或解决下面几个问题。</p>
|
||
|
||
<ol>
|
||
|
||
<li><strong>修改几乎变得不可能</strong>。试想,如果生成一个区块需要大量的长时间的计算力。也就是在世界上最好的电脑集群下计算 10 分钟才能打好一个包,那么,当我们要去修改数据内容的时候,这个过程也是一样的。前面说过,如果你要伪造一个块,那么你就要修改后面所有的块,修改一个块的成本如此之高,那么修改整个链的成本也就非常之高了。</li>
|
||
|
||
<li><strong>能掌握 51% 的算力的人也变得几乎不可能</strong>。除了伪造一条链的成本很高,还要控制大多数人的算力,这意味着,是一个非常大的金钱的投入。这两个难度加起来,几乎不太可能。</li>
|
||
|
||
<li><strong>解决分歧</strong>。一方面,这么大的工作量找出来的区块 ID,已经有效地降低了大家有意见冲突的概率。另一方面,就算是出现了合法冲突的区块(同时出现了多个合理的区块,即区块链出现分支 / 分叉),<strong>也就是多个合法的账本</strong>。而因为挖矿的成本太高,导致要同时跟进多个账本是不可能的,所以矿工们只能赌跟其中一个。大多数人所选择的那一个分支的链就会越来越多,于是另外一边也就无人问津,从而作废了。</li>
|
||
|
||
</ol>
|
||
|
||
<p><strong>你别看 Proof-of-Work 成本这么高,还这么耗电不环保,但是,这是目前去中心化系统中最安全的玩法。(其中的相关细节可以查看后面的 " 挖矿 " 和 " 去中心化的共识机制 "。)</strong></p>
|
||
|
||
<p>好的,上面就是区块链的相关技术概要。如果想了解相关的技术细节,你可以继续看后面的内容。如果不感兴趣,可以选择跳过。</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div>
|
||
|
||
<div style="float: left">
|
||
|
||
<a href="/专栏/左耳听风/051 弹力设计篇之“弹力设计总结”.md.html">上一页</a>
|
||
|
||
</div>
|
||
|
||
<div style="float: right">
|
||
|
||
<a href="/专栏/左耳听风/053 区块链技术 - 区块链技术细节 - 哈希算法.md.html">下一页</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
|
||
|
||
</div>
|
||
|
||
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"709978447a203cfa","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}' crossorigin="anonymous"></script>
|
||
|
||
</body>
|
||
|
||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||
|
||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
|
||
|
||
<script>
|
||
|
||
window.dataLayer = window.dataLayer || [];
|
||
function gtag() {
|
||
|
||
dataLayer.push(arguments);
|
||
|
||
}
|
||
gtag('js', new Date());
|
||
|
||
gtag('config', 'G-NPSEEVD756');
|
||
|
||
var path = window.location.pathname
|
||
|
||
var cookie = getCookie("lastPath");
|
||
|
||
console.log(path)
|
||
|
||
if (path.replace("/", "") === "") {
|
||
|
||
if (cookie.replace("/", "") !== "") {
|
||
|
||
console.log(cookie)
|
||
|
||
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
|
||
|
||
}
|
||
|
||
} else {
|
||
|
||
setCookie("lastPath", path)
|
||
|
||
}
|
||
function setCookie(cname, cvalue) {
|
||
|
||
var d = new Date();
|
||
|
||
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
|
||
|
||
var expires = "expires=" + d.toGMTString();
|
||
|
||
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
|
||
|
||
}
|
||
function getCookie(cname) {
|
||
|
||
var name = cname + "=";
|
||
|
||
var ca = document.cookie.split(';');
|
||
|
||
for (var i = 0; i < ca.length; i++) {
|
||
|
||
var c = ca[i].trim();
|
||
|
||
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
|
||
|
||
}
|
||
|
||
return "";
|
||
|
||
}
|
||
</script>
|
||
</html>
|
||
|