├── LICENSE.md ├── README.md ├── article ├── 01.md ├── 02.md ├── 10.md ├── 11.md ├── 12.md └── 71.md └── recom.md /LICENSE.md: -------------------------------------------------------------------------------- 1 | # 版权声明 2 | 3 | 本书虽然开源,但是保留版权。 4 | 5 | 禁止演绎,转载等。 6 | 7 | 书内示例代码,使用MIT 协议。 8 | 9 | 读者权利。 10 | 11 | 个人读者,可以自行阅读,打印,传播打印稿件等。 12 | 13 | 企业读者,分以下权限。 14 | 15 | 禁止将本书内容转载到团队博客或者网站。 16 | 17 | 18 | 0.禁止传播任何内容 19 | 20 | 1.在公司内传播电子版本 21 | 22 | 2.在公司内传播电子版本,打印,基于本书进行ppt 讲演等。 23 | 24 | 3.购买本书1份电子版,可以自行打印一份纸质稿件。 25 | 26 | 27 | 属于0的企业如下: 28 | 29 | 30 | 百度、新浪、搜狐、搜狗、腾讯、滴滴、美团、今日头条、金山、讯飞、华为、知乎、快手、500人以上企业 31 | 32 | 33 | 属于1的企业如下: 34 | 35 | 阿里巴巴、京东、网易、小米、腾讯注资企业,阿里注资本企业。 36 | 37 | 38 | 不在以上名单公司,按条件2 授权 39 | 40 | 如企业违反相关内容,则表示 授权贵公司所有专利使用权给本人及本人参与的项目。 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 学习区块链 写给产品和开发的一本区块链书 2 | 3 | 开始写书。 4 | 5 | 各位感兴趣的先star,让我看到热情。(我在骗star吗?那么多人star 不写都不行吧。) 6 | 7 | # 请不要fork,必定还没写完。 8 | 9 | 还没开始写,先看我推荐的其他人写的博客之类内容 10 | [点这里](./recom.md) 11 | 12 | 电报订阅一下,每天推荐文章。 [点这里](https://t.me/quannei) 13 | 14 | 15 | 跟老张学习区块链,持续更新。。 16 | 17 | # [版权声明](./LICENSE.md) 18 | 19 | - [ ] 为未写 20 | - [x] 为已写 21 | 22 | ## 0.写作背景 适用读者和阅读前的准备 23 | 24 | - [x] 0.1 [写作背景](./article/01.md) 25 | 26 | - [x] 0.2 [适用读者和阅读前的准备](./article/02.md) 27 | 28 | ## 1.什么是区块链,区块链能解决什么问题。 29 | 30 | - [x] 1.0 [一个故事,区块链理论的诞生](./article/10.md) 31 | 32 | - [x] 1.1 [区块链里竞争导致的分叉](./article/11.md) 33 | 34 | - [x] 1.2 [区块链防止作恶](./article/12.md) 35 | 36 | ## 2.为什么要去中心化 37 | 38 | 数据去中心化,开发与运维分离 39 | 40 | 权利去中心化 41 | 42 | 常见的去中心化方案。 43 | 44 | 网络的去中心化,维基百科。 45 | 46 | p2p kad bt下载。 47 | 48 | ## 3.基础知识 49 | 50 | ### 基础算法名词介绍 51 | 52 | ico 53 | 54 | token 55 | 56 | dapp 57 | 58 | ### 算法基础 59 | 60 | 默克尔树 61 | 62 | 有向无环图 63 | 64 | ### 网络基础知识 65 | 66 | 67 | ip,路由器,nat技术,l2p 68 | 69 | kad算法 70 | 71 | bt算法 72 | 73 | 74 | 75 | ### 密码学知识 76 | 77 | 双钥加密 78 | 79 | pki, 80 | 81 | ca 82 | 83 | ### 分布式的概念 84 | 85 | - [ ] cap原理 86 | 87 | - [ ] 一致性等 88 | 89 | 90 | 91 | 92 | ## 4.共识机制 93 | 94 | pow,pos,dpos,poa,拜占庭 zookeeper 95 | 96 | ## 5 eth 介绍 97 | 98 | eth环境的搭建 99 | 100 | eth原理。 101 | 102 | eth未来发展,侧链,sharding gas降低 103 | 104 | 105 | ## 6 eos介绍 106 | 107 | 108 | ## 7 ipfs 介绍 109 | 110 | ipfs环境搭建 111 | - [x] 7.1 [ipfs环境搭建](./article/71.md) 112 | 113 | 114 | ## 8 暗网介绍 115 | 116 | 117 | 118 | 119 | ## 9 去中心化操作系统 120 | 121 | 无需服务器 。只需要写客户端 js,ios Android 或者其他平台的应用程序 即可。 122 | 123 | [plan9官网](https://9p.io/plan9/) 124 | 125 | [plan9 贝尔实验室源码](https://github.com/0intro/plan9) 126 | 127 | [plan9 UC Berkeley 源码](https://github.com/brho/plan9) 128 | 129 | [harvey plan9衍生物 维护](https://github.com/Harvey-OS/harvey) 130 | 131 | [plan B plan9衍生物](http://lsub.org/ls/planb.html) 132 | 133 | [plan B 源码](https://github.com/zhangshanhai/planb) 134 | 135 | ## 10 区块链游戏 136 | 137 | ### 我的世界,第二人生 138 | 139 | 实现 头号玩家里的绿洲 140 | 141 | ## 11 社会主义实现 人人平等 142 | 143 | 144 | 145 | # 其他 146 | 147 | [区块链文章精选](http://100000p.com/) 。 148 | 149 | 150 | 151 | 152 | 153 | [![区块链文章精选app](http://p00001.oss-cn-hongkong.aliyuncs.com/badge-download-on-the-app-store-cn.svg)](https://itunes.apple.com/cn/app/id1348577356) 154 | -------------------------------------------------------------------------------- /article/01.md: -------------------------------------------------------------------------------- 1 | 背景1:区块链这三个字已经进入平民的眼前,而很多人并不知道区块链是什么,也区分不了 比特币和区块链啥区别。但凡带区块链三个字,都能让人很不理性的趋之若鹜了。到最后发现自己被割了一波韭菜。例如网易的星球。 2 | 3 | 4 | 5 | 背景2:很多普通web开发人员也想转行做区块链。包括我自己。转行需要指引。所以我想把自己学习过程写下来,也能加强自己的学习深度。 所以书名也叫 《跟老张一起学习区块链》。受知识水平限制 不一定写的多好。 6 | 7 | 背景3:我想证明一下自己有毅力写完一本书。能力不用证明,基本上大家都有这能力。写过一本书了,是不是找工作的时候好找一些?(是,我又失业了。) 8 | 9 | 10 | 11 | 12 | 13 | 每写一篇文章我都会 讲解 给我女朋友。如果她能懂,说明我写的已经足够通俗易懂了。当然包括默克尔书,有向无环图,加密算法,椭圆加密等。 14 | 15 | 16 | 17 | 书中会穿插一些市面上的 所谓区块链的产品,本人会揭露一下 大多数产品的骗局。这些内容会带有个人感情色彩,会引起大家不适。甚至会结仇。 18 | 19 | -------------------------------------------------------------------------------- /article/02.md: -------------------------------------------------------------------------------- 1 | # 适用读者 2 | 3 | 本书前2章为区块链基本概念,过多的专业术语。适用于几乎所有想了解区块链的读者。 4 | 5 | 第一章使用通俗的语言介绍一下区块链和货币。 6 | 7 | 第二章讲 去中心化的应用,和一些常见的去中心应用。 8 | 9 | 后面几个章节,需要有一定的计算机基础。例如简单的 数据结构,了解一些二叉树的基本概念等。 10 | 最好有一些编程基础,如果有分布式的基础,那么读起来可定得心应手。还需要了解一些网络知识。如果具有CCNA,CCNP 基础那更好不错了。遇到我没讲到的或者没讲明白的 一定要及时百度查询。 11 | 12 | 本书更适用于 互联网从业产品,开发,测试人员。是Android,iOS,前端,后端,dba,运维人员,比较容易理解的。也是本书的写作目标。 13 | 14 | # 读前准备 15 | 16 | 有一定的编程基础对理解本书是一件好事,但也容易让读者沿用自己已知的知识去理解新事物,使用过去以往经验 去寻找 新问题的解决方法。这是一件可怕的事情。 17 | 18 | 当现有的知识和以往的经验 让人无法理解一件事 或者 解决一个问题时,大脑往往抵触 并 拒绝承认这一事实。 19 | 20 | 一个具有革命性的东西,不会简单的现有方法的升级。马车再改良,也跑不过蒸汽机。因为两者的原理完全不一样。 21 | 区块链或者区块链上的货币与传统意义上的货币也有本质的不同。 22 | 所以,希望读者不要带着已有的知识和经验 去看待一个完全不一样的事物。 23 | 24 | **忘掉已知的知识,从新开始学习另一套东西吧** 25 | 26 | 忘记传统技术上的改良工作吧。直接采用新的技术去解决现有问题吧。 27 | 别再改良马车了,直接用蒸汽机吧。 -------------------------------------------------------------------------------- /article/10.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | 一个故事开始。 4 | 5 | 一万多向往自由,不愿意被领导、被剥削、被压迫,且具有一般自私利己的人。其中不乏一些各个领域的科学家。作为第一批人员移民 火星。在火星的目的就是生存和发展人类 文明。 6 | 因为飞船载重量有限,所以不能带过多的东西上飞船。只能带必需品,比如种子等。 7 | 8 | 飞船启动后,地球就再也无法为他们提供补给。到火星后,第一任务自然是活下去。第二任务就是活的更好。 9 | 由于飞船上自带的物资非常少,所以他们必须要想出一套方法怎样分配物资,和怎样快速的发展生产力。 10 | 11 | 眼前最重要的问题,1.居住问题,不能一直居住在飞船上。2.粮水问题。两种统称为民生问题。 12 | 13 | 没人有人会愿意主动下船去盖房子和去开垦一块土地去种土豆(人都自私)。如果这样发展下去,消耗完粮食后大家都会被饿死。飞船没有船长,因为大家都不希望被人领导。每个人都是平等的。 14 | 15 | 如果这个问题不解决,必定会因为粮食短缺引起战争。 16 | 17 | 有经济学家,提出一个理论。他说,每个人的劳动成果都应该被记录下来。劳动的人应该享有自己的劳动成果,同时可以把自己的劳动成果分享给别人 或者交换 其他人的劳动成果。例如 可以用在火星上的房子 换 一吨土豆。 18 | 19 | 这是,有个会计站出来说,“我帮大家记账。大家都信任我就行。我每个月只收50个单位的劳务费。” 20 | 21 | 会计被杀死。因为大家都知道,如都信任他了,就有出现权利集中,有了权利就可以作恶。 22 | 23 | 这时候有个叫,阿聪说,既然大家都不相互信任,不如每个人都记录,所有人的劳动成果和交易记录。这样不用信任每个人或者某一个小组。 24 | 25 | 阿聪做了一些规定,希望得到大家的认可。他说,大家每人制作一个本子。本子每页有4000行,每行记录一条交易记录。10分钟 翻页一次。无论是否这页面记满了。这样最多 4000/10*60 =6.7 笔每秒。 26 | 同一时间必须只有一个人记录是有效的,要不然大家的账就会出现不数据不一致。同时标明 页码,而且转账的手续费也都归记录此页账目的人所有。而且,需要记录上一页面的hash值。 27 | 28 | 而且谁记录这10分钟内的 转账记录,就可以凭空给自己记录一笔 50个单位的 收入。这50个单位的收入,作为记录 本页 记录奖励。 29 | 30 | 既然有了奖励,大家都争着记账了。阿聪说,谁要想获得 某10分钟内的 记账权。谁就会得到一个魔方,还原魔方最快的就可以有这个记账权 ,账本里,还要写 还原魔方的步骤(每个人得到的魔方不一样fun(上衣页账目的hash值,拿到魔方的人),每次的也都不一样)。 31 | 32 | 然后将自己记录的10分钟内的交易记录 和 凭空给自己生成的50个单位,一起复制一份交给邻居。邻居在复制给他的邻居。所有人都会对这十分钟内的记录做一次校验,而且还会按记账人的步骤去还原魔方(如果无法还原魔方,这丢弃这页记录,直到有可以还原的为止)。防止作假。 33 | 34 | 35 | 36 | 谁要将自己的一笔 【别人转给自己的一笔记录的余额】 转给其他人,需要对这笔 记录的余额进行签名,然后自己写草稿纸上,同时告诉邻居,邻居也告诉他的邻居,大家都写草稿纸上。 37 | 38 | 直到有人还原了魔方。这个人,就把自己10分钟内的草稿纸上的交易,写入 账本里。最多 只能写4000笔。如果比4000笔多,他肯定先记录 手续费高的。因为手续费也归他。 39 | 40 | 41 | 如果有同时还原了魔方。并且记录在自己的本子上了。并且一起将 此页记录告诉邻居,邻居再告诉邻居。那么以谁的为准? 42 | 43 | 假设开始1万个人都记账。船头一个操场,船尾一个操场。正好,两边同时还原魔方。一起广播给邻居自己的记账结果 和 还原魔方的步骤。 假设该页码为 第10页。船头为 10a,船尾为10b。 44 | 45 | 假设 大家记录的速度和验证结果的速度一样。那么,在船中间的人,就会是最后一个得到结果的。但是,大家不能站成一个直线吧,邻居前后左右,上下铺都有。 46 | 47 | 但总会有人最后一个收到结果。也有人可能收到来自船头和船尾的结果。 48 | 49 | 假设a是第5000个收到船头的结果(10a)(交易记录和魔方)a开始还原拿到的魔法。、 50 | b是第5000个收到船尾的结果的(10b)(交易记录和魔方)b开始还原拿到的魔法。 51 | 52 | ab是邻居。a 给b 来自船头的结果(10a),b给a来自船尾的消息(10b)。 53 | 54 | a已经还原一会来自船头的魔方了,b同理。 55 | 56 | **```考虑一下 a会接受来自己船尾的结果(10b)吗?b同理。```** 57 | 58 | 注意,比a靠近船头的 第4999个收到船头结果的人,也是b的邻居。a1他接受 b的消息(10b)吗?同理,b1。 59 | 60 | 在一个账簿上,10页只能有一个。要不然就会出现多个版本的账簿。大家就不知道那个是真实的。 61 | 62 | 63 | 64 | 提示一下,10000个人,各自还原自己的魔方(此魔方不是3阶,且没有规律)的数学期望时间是 10分钟,一个人还原自己的魔方 期望时间是多久? 10000* 10 分吧。 65 | 66 | 67 | 68 | 69 | 70 | ``` 71 | 去中心化记账,就是不能信任某一个人,而是大家都可以记账,都有记账权。都可以竞争记账权。 72 | 不信任某一个人或者组织。因为他们会作恶。 73 | 整个账簿就相当于区块链。 74 | 每一页就是一个区块。 75 | 每10分钟 记录一页。 76 | 下一页,必须跟着上一页。 77 | 比特币就是一种特殊的区块链,它只能记账。后面我会将一些其他的区块链,如以太坊,还能运行脚本。 78 | 79 | 比特币使用UTXO (Unspent Transaction Output,“未花费事务输出”)模型。 80 | utxo模型就是,用流水计算余额。比特币并不会记录某一地址 余额多少。而是查询对应地址 有多少入账,有多少出账,计算出还剩多少。 81 | 82 | 挖矿,就是计算魔方的解。总得有一种方法,决定谁来记录 这一页的账。 83 | 挖矿还要其他作用,例如故意拖慢记账速度和让攻击成本提高。(稍后逐渐讲解)。 84 | 85 | 比特币也是,自己花一笔比特币,就需要将这个事件告诉邻居,邻居再告诉邻居。达到全部人都知道 的目的。(大家都知道了,你还想抵赖吗?) 86 | 87 | 我就想抵赖,有办法吗?有。稍后文章介绍。 88 | 89 | ``` 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /article/11.md: -------------------------------------------------------------------------------- 1 | 考虑一下 a已经接受来自船头(10a)的结果,他还会接受来自己船尾的结果(10b)吗? 2 | 3 | 答: 会的接受,但是不会在基于这个解魔方(做运算)。 4 | 5 | 假设,a不接受,比a靠近船头的 第4999个收到船头结果的人a1,也是b的邻居。a1他接受了 b的消息。 6 | a2,a3 ... aN 都接受了 来自船尾的结果。 7 | 8 | 这时候,a1...a4999 ,b...b4999,都一个一样的结果。 共9999人,都有 船尾的那个结账的结果。a 9 | 10 | a ,a1...a4999 共5000 和 b...b4999 共 10000人认同 船头的结果。 11 | 12 | 13 | 此时。只有a 有一种结果。 他只认 船头的结果。 14 | 15 | 而且他人 有两种结果。 16 | 17 | 这时候,除a以为,其他人9999人都有两个版本的账簿。(第10页是 10a,或者10b)只有a第十页是10a。 18 | 19 | 9999个人,可以基于10a/10b 的结果,一会还原10a的魔方,一会还原10b的魔方。a就一直还原10a的魔方。 20 | 21 | 全网共10000个还原魔方的能力(计算力)。 22 | 23 | ```**如果使用10000个计算力去解第11页的魔方,时间期望值是 10分钟。**``` 24 | 25 | 26 | 如果大家都在 10a上解,期望是 10* (10000/10000) 27 | 28 | 29 | 目前情况是: 30 | 现在 10a 的计算力是,9999/2 +1; 31 | 概率是 (9999/2 +1)/10000=0.50005, 32 | 时间期望是 10 * 10000/(9999/2 +1)= 19.9998 33 | 34 | 35 | 10b的计算力是,9999/2; 36 | 概率是 9999/2/10000=0.49995, 37 | 38 | 时间期望是 10* 10000/(9999/2)=20.0002 39 | 40 | 41 | 42 | a第一个解锁魔方的概率为 10a 成为有效 * a的计算力/计算难度: 43 | 44 | ((9999/2+1)/10000) * 1/10000 = 0.000050005 45 | 46 | 其他人获得奖励的概率为 : 47 | 48 | 10a成为有效 * 该人的计算力/计算难度 49 | + 10b成为有效 * 该人的计算力/计算难度 50 | 51 | 52 | ((9999/2+1)/10000)*(0.5/10000) + 53 | 54 | ((9999/2)/10000)*(0.5/10000) 55 | 56 | = 1/20000 57 | 58 | 59 | 60 | 61 | 可见,a选则 不在接受10b,自己反而获得奖励的概率高??? 62 | 63 | 先等等。 64 | 65 | # 时间期望 66 | 67 | a,在10a 的基础上 解出11页 魔方的时间期望 是 10分钟 除以 ( a的计算力/计算难度)。 68 | 69 | a在10a上解锁魔方的时间期望为 70 | 71 | 10/(1/10000) = 10万 分钟。 72 | 73 | a在10b上解锁魔方数学期望为 无限大。 74 | 75 | 76 | 77 | 其他所有人在10a基础上解出11页的时间期望。 78 | 10/(0.5/10000)/9999 = 100000/9999 > 10.001 79 | 80 | 81 | 其他所有人在10b基础上解出11页的时间期望 为 82 | 10/(0.5/10000)/10000 = 20分钟。 83 | 84 | 85 | 86 | 确实是 a 只承认10a 获得奖励的概率高。 87 | 88 | 89 | 90 | 91 | 可见,一心一意计算一个魔方对自己更有利。 92 | 93 | 94 | 95 | 96 | 97 | 第11页,在10a和10b的基础上发展出来的概率 10a (0.50005)高于10b (0.49995)。 98 | 99 | **但是,很不幸的情况下**,在10b基础上发展了11页(10分钟后发生)。此时,a 解出10a的魔方的时间期望为,10万-10,而其他人已经 收到11页信息(确认在10b上发展),a,自然也不接受这个结果。除a以外已经放弃第11页,开始算第12页。而 a还停留在10a的基础上 解 11页。 100 | 101 | 这时候,a放弃,接受10b和11 最经济,因为如果他不同步其他人的账簿,他的账簿将落后别人很多。 102 | 大家只信任 获得最多信任的那一版本的账簿。 103 | 104 | 105 | 106 | 107 | 108 | 109 | ``` 110 | 10a与10b,本质上已经是两个链子了,如果矿工在哪条链子上做计算,就是在哪条链子上下注了。 111 | 112 | 如果矿工最好两队执意在各自的分叉链上记账,那会导致出现两条链子,这种情况下有害的,不容许的。 113 | 114 | 你有10个比特币,在 10a上给了甲,在10b上给了乙。这就出现 双花问题了。两条链子,就是条套账簿了。 115 | 116 | 117 | 118 | ``` 119 | 120 | 121 | 122 | ```在解魔方的过程,是记账者(矿工)在与其他所有人去竞争。``` 123 | 124 | 例如,我挖矿,是我与除我以外的人竞争,我把他们看成联盟。 125 | 126 | 是一个人与 其他人所有的竞争。 127 | 128 | 那有没有一种办法,a 就在10a解 魔方,竞争过其他所有人的办法? 129 | 有。a自己具有10000个计算力,其他9999人共有9999个计算力。 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | -------------------------------------------------------------------------------- /article/12.md: -------------------------------------------------------------------------------- 1 | # 区块链防止作恶 2 | 3 | 4 | a不能凭空产生很多手同时去解魔方。 5 | 6 | 次数,a想到一个办法。他说服了自己的亲朋好友,假设共联合10人(含a自己),让大家都去解a的魔方,a收到魔方后,就将 自己的魔方复制 分发给 10个人(含自己)。 7 | 8 | 这时候 10个人一起解。他获得 记账权的概率 就是 10/10000。 自己持有的计算力/全网的计算力。 9 | 然后a承诺,只要自己获得记账权,并获得50个单位的奖励和记账的手续费,就将收入平均分给10个人。 10 | 11 | 此时,a就有一个家族了。这个家族 在区块链里 叫做矿池。 12 | 13 | 读者也会发现。这与开始提出的,每个人都有权利记账,实现人人平等的初衷 有悖。 14 | 15 | 假设a联合了1万人(全部),那么不久跟开始 第一个会计提出来的那个一样了么? 16 | 17 | 如果大家都信任a,a就可以任意改账,给自己加钱。 18 | 19 | 所以在现有状况下,如果a将近达到这种状态,势必会引起很多人反对,必定会引起冲突,甚至战争。 20 | 21 | 实际上,当a达到快联合一半人的时候 就会引起冲突。 22 | 23 | 假设a 联合了5000人。此时,a说,一页记录4000笔,太少,不如改成4万笔吧。有5000人听他的,5000人不听,这时候,就会出现两个版本的账簿。导致本来 一条链子,变成2条。从而形成硬分叉。 24 | 25 | 还要更可怕的。 26 | 27 | 28 | 29 | a已经联合了5001个人,他完全可以 5001个人 杀死另外4999人,从而掠夺。但是这样代价比较大。 30 | a很聪明,他有更好的办法实现掠夺。 31 | 32 | 33 | 34 | a有全网 5001/10000的人,他给b转一笔钱购买b的一顿土豆。此时,a转给b的消息被广播出去,某一人解出魔方,记录下来。(假设为 100页)。 35 | 36 | a 获得 第100页的记账权是 50.01%。非a为 49.99%。 37 | 38 | 无论是a还是非a,记录了这一笔账,都会被广播出去。b确实看到了,然后把土豆给了a。 39 | 40 | 此时,a开始作恶。 41 | 42 | 因为a已经拿着土豆跑了。 43 | 44 | a说,刚才那笔钱不算数。a开始重新 解第100页的魔方并不记录a给b转账的事情。 45 | 46 | 非a,已经记录了 a转给b钱的事实,在第100页。此时,a只需要让非a 不承认 原来的第100页账即可。 47 | 48 | 49 | | 时间 | 页码 a 不含(a转给b的账目)概率 | 非a(含)概率 | 50 | | ------|----- | ---- | 51 | |0 | 100 0 |100 1 | 52 | |10 | 100 50.01% | 101 49.99%| 53 | 54 | ???? 55 | 56 | 57 | 58 | a 有 50.01% 的计算力,非a有49.99%。 59 | 60 | a 落后 非a一个块。这是一个追击问题。总有一个时间,a会超过非a。此时,非a,会放弃 原来 包含(a转给b买土豆的钱)那条分支。(原理见11.md) 61 | 62 | a就成功的骗取了 b的一顿土豆。 63 | 64 | 这就是51% 攻击。 当然不一定能攻击成功。但是从概率上有可能。a持有的人越多,成功概率越高。 65 | 66 | 最极端的情况,除了b以外,大家都信任a。 67 | 68 | 69 | 因为大家都是聪明人,如果让a联合了50% 以上的人,今天他坑了b,明天就会坑到自己的头上,所以大家都不会容许这种情况发生。 70 | 71 | 一旦发生了,这账簿也就失去了公信力。大家就不信这账簿,他的存在也就没有意义了。注意,这个账簿 只记录谁有未花销的收入,不能记录谁欠别人钱。也就是不能出现负债。 不会出现某人资产是负数。 72 | 73 | ``` 74 | 本节,讲 矿池,和51%攻击的基础概念。 75 | 76 | 讲到这里,读者也该明白,什么是比特币,就是一堆账目。确认这笔钱谁有权利转给别人。 77 | 78 | ``` 79 | 80 | 81 | 到这里,读者发现,实际上,大家都在解魔方,没人去种土豆,没人去开垦荒地发展房地产,实际上没有任何意义。本质上这账簿并没有创造价值?? 82 | 83 | 84 | 是这样的。 85 | 86 | 所以,大家都决定 不用人去解魔方了,改成程序。 87 | 将上面的规则 写成程序。让 计算机去做。 88 | 人们可以走出船舱,去发展发地产,去种土豆。劳动才能创造价值。人要是不出去种土豆,当船舱里的食物消耗完,账簿了,再多的收入也是要饿死。 89 | 90 | ``` 91 | 区块链也解决不了,链下的问题。比如,b给a的土豆是有毒的呢? 92 | 更解决不了 粮食问题,必定土豆不能从账簿里出来。 93 | 94 | 区块链 有效的解决,相互不信任的情况下,取得信任的问题。也很公平的保证人人平等。 95 | 也可以有效的 实现交易环节的 货币问题。(比特币这个链)。 96 | 97 | ``` 98 | 99 | 几个疑问? 100 | 101 | 为啥船员不用纸币? 102 | 103 | 谁去负责印刷纸币?这还会导致一个中心的问题。 104 | 105 | 106 | 为啥船员不用黄金? 107 | 108 | 那就下船去开采黄金,用黄金去换土豆。开采黄金也可以实现人人平等,因为大家都可以去开采。 109 | 110 | 但是大家想想,这跟接魔方有区别吗? 111 | 开采黄金,矿工下矿井去挖黄金。 112 | 开采区块,矿工计算魔方 获得比特币奖励。 113 | 114 | 115 | 116 | # 那么这个程序如何设计? 117 | 118 | 怎么把信息广播给邻居? 119 | 120 | 怎么确定 解魔方算法? 121 | 122 | 怎么确认这比收入是谁的? 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | -------------------------------------------------------------------------------- /article/71.md: -------------------------------------------------------------------------------- 1 | # IPFS 的安装 2 | 3 | 1. 在官网下载 编译好的包。https://ipfs.io/docs/install/ 4 | 5 | 2. 解压 6 | 7 | 3. 安装,Linux 可以直接运行。 8 | 9 | ipfs init 初始化。 数据信息在 ~/.ipfs 文件夹里。 10 | 11 | 4. ipfs daemon 运行服务。 12 | 13 | ipfs swarm peers 查看已经连接的peer节点 14 | 15 | 5. http://localhost:5001/webui 访问页面。 16 | 17 | 现在已经可以使用ipfs了。 18 | 19 | 下面搭建ipfs源码,开发环境。 20 | 21 | 6. 选择ipfs代码 22 | 23 | go get github.com/ipfs/go-ipfs 24 | 25 | 7. 下载gx http://127.0.0.1:8080/ipfs/QmZLYJBVBK8nqc5JTHp6CZU1v9Ja3MvGrkCe61PfCecc6E/#gx-go 26 | 27 | 也可以自己编译 28 | 29 | go get github.com/whyrusleeping/gx 30 | 31 | go get github.com/whyrusleeping/gx-go 32 | 33 | cp gx $GOPATH/src/github.com/ipfs/go-ipfs/bin 34 | 35 | cp gx-go $GOPATH/src/github.com/ipfs/go-ipfs/bin 36 | 37 | gx 是ipfs 使用的go语言依赖包。类似 godep,dep,vgo。 38 | 39 | 8. 修改文件, bin/dist_get 40 | 41 | 把里面的 https://ipfs.io 改成 http://127.0.0.1:8080 42 | 43 | 9. 在 ipfs 目录里,用 gx install --global 下载依赖包。 44 | 45 | 此时,gx 会从 本地的ipfs 网关下载依赖文件。 第4部运行的 ipfs 不要关闭。 46 | 47 | 下载完后可以在 $GOPATH/src 下有个gx目录。 48 | 49 | 10. 现在可以使用 gland 打开。查看源码。 50 | 51 | 52 | gx 源码以及使用,查看这里。https://github.com/whyrusleeping/gx 53 | 54 | -------------------------------------------------------------------------------- /recom.md: -------------------------------------------------------------------------------- 1 | # learn-blockchain 2 | 跟老张学习区块链,持续更新。。 3 | 4 | - [ ] 为未读 5 | - [x] 为已读 6 | 7 | ------ 8 | 9 | - [ ] [基于以太坊的一元夺宝实现](https://github.com/yushuohuanxiu/OneChance) 10 | 11 | - [x] [区块链技术指南](https://github.com/yeasy/blockchain_guide) 12 | 13 | - [x] [区块链技术指南 book](https://www.gitbook.com/book/yeasy/blockchain_guide) 14 | 15 | - [x] [Blockchain Tutorial](https://github.com/liuchengxu/blockchain-tutorial) 16 | 17 | 18 | # eth 系列 19 | 20 | - [ ] [以太坊官网文档中文版](http://book.8btc.com/books/6/ethereum/_book/) 21 | - [ ] [Solidity语言](http://www.tryblockchain.org/) 22 | - [ ] [Solidity语言Truffle - 以太坊Solidity编程语言开发框架](http://truffle.tryblockchain.org/) 23 | 24 | ## eth 源码分析 25 | 26 | 27 | - [ ] [以太坊源码 很全](https://github.com/ZtesoftCS/go-ethereum-code-analysis) 28 | 29 | ----- 30 | 31 | - [x] [以太坊源码(01):P2P网络及节点发现机制](https://mp.weixin.qq.com/s?__biz=MzA4Mzk2MzUzNg==&mid=2651223325&idx=1&sn=fc1b8b1240f930a9b344c14dd962c7b8) 32 | 33 | - [ ] [以太坊源码(02):交易收发机制](https://mp.weixin.qq.com/s?__biz=MzA4Mzk2MzUzNg==&mid=2651223331&idx=1&sn=ca4d56b3ea6c5dc9b9bcec5bc9dd6e65) 34 | 35 | - [ ] [以太坊源码(03):POA委员会选举机制](https://mp.weixin.qq.com/s?__biz=MzA4Mzk2MzUzNg==&mid=2651223351&idx=1&sn=17b6594008681fcc33f7de2ad6bfbf6f) 36 | 37 | - [ ] [以太坊源码(04):POA区块生成机制](https://mp.weixin.qq.com/s?__biz=MzA4Mzk2MzUzNg==&mid=2651223362&idx=1&sn=58bd8ff8511f65faaff7c69ba729e32f) 38 | 39 | - [ ] [以太坊源码(05):网络服务分析](https://mp.weixin.qq.com/s?__biz=MzA4Mzk2MzUzNg==&mid=2651223371&idx=1&sn=d82f0d4d9e1cba8ca87b64e4f4a0020a) 40 | 41 | - [ ] [以太坊源码(06):RLP 机制分析](https://mp.weixin.qq.com/s?__biz=MzA4Mzk2MzUzNg==&mid=2651223377&idx=1&sn=5c8404f7e10b6d3d72c193d830f312fa) 42 | 43 | 44 | # HyperLedger 系列 45 | 46 | - [ ] [Hyperledger Fabric 1.0 从零开始](https://www.cnblogs.com/aberic/p/7527831.html) 47 | 48 | 49 | # 推荐博客 50 | 51 | [区块链技术博客 主要eth合约](http://me.tryblockchain.org/) 52 | 53 | # 其他 54 | 55 | 我的网站 [圈内人士](http://100000p.com/) 注册送800 cc代币。 56 | 57 | 点击链接加入群534209981 [区块链开发者交流](https://jq.qq.com/?_wv=1027&k=5T4XPec) 58 | 下载app学习 59 | 60 | 61 | 62 | [![AppStore](http://p00001.oss-cn-hongkong.aliyuncs.com/badge-download-on-the-app-store-cn.svg)](https://itunes.apple.com/cn/app/id1348577356) 63 | --------------------------------------------------------------------------------