1.什么是比特币
区块链现状
1.极客 -> 黑市货币(暗网) -> 交易炒作 -> ICO圈钱 -> 私募圈钱 -> 矿场矿池 -> 应用开发
2.区块链2018年情况简介
挖矿:算力猛增,门槛越来越高,依赖于人工智能挖矿
炒币:国家禁止,二级市场赚钱难度迅速提升,是割韭菜还是被割?
交易所:数量急剧膨胀, 国内不合法, 政策风险大
ICO:国内不合法,转型私募,投资逻辑变化,回归理性投资
工具服务:机会多,门槛高, 辛苦钱
DApp:巨大蓝海,机会无限,需要理解区块链,经济系统,用户痛点,具备产品能力
3.区块链灰色功能
野火/ 资产转移/ 无国界贸易,抗击自裁/ 募集资金/ 博彩/ 避税/ 流量收割
比特币的诞生
比特币发展故事
1.在比特币出来之前,技术极客和密码学界 就已经开始研究如何在网络上"花钱"的问题了
2.黑市发现比特币已经具备了货币属性,就在小圈子里使用起来
3.2008年美国金融危机发生后,引发了非金融领域精英的抗争
4.一些投机者、矿场主和金融机构,为了牟取暴利,开始炒作比特币
5.现在已经基本在世界范围内认可,最少可以作为有价值的收藏品
中心化 与 去中心化
中心化: 每家银行都有自己独立的账本(数据、数据结构都不一样),通过央行提供的系统对账
去中心化: 每个节点都有一个相同的账本(数据、数据结构都一样),通过共识和算法维持一致
2.区块链入门
什么是区块链?
区块链概念分两部分, 账本和分布式, 比特币的底层技术就是区块链
区块链本质是一种存储数据的账本,使用 区块 记录数据,每个 区块 能存储一定数量的数据
区块: 可以看做是一页账单,上面记录了若干条 交易数据
区块链: 可以看做是一个账本,里面按照顺序将若干个账单"装订"在一起
一个分布式数据库如果能做到 实时同步 和 数据校验 ,那它就是 区块链。
区块链是一个去中心化的账本, 区块链会维护一个节点网络,每个节点都保存相同的账本(数据),自带数据同步功能。
区块链基础结构
区块链是一串使用密码学方法相关联产生的数据块
每一个区块: 工作量证明 + 本区块内容 + 上一个区块的Hash值 + 自身区块所有内容的Hash值
区块链应用发展
区块链1.0
代表应用:比特币
数据结构:只能记账
开发语言:C++
区块链 2.0
区块链2.0
代表应用:以太坊(智能合约)
数据结构:整型、数组、map等
开发语言:solidity
可以编写程序传入以太坊节点网络,并由以太坊网络执行并记录过程结果
区块链3.0
代表应用:hyperledger
数据结构:任意数据结构
开发语言:nodejs、java、go、python 等
特点:带授权的网络
区块链技术生态图解
应用场景
适合场景:
1.金融服务:银行业、证券交易、众筹
2.征信权属管理:征信管理、权属管理、音乐版权保护
3.资源共享:共享单车、社会能源共享、电商平台、大数据共享、减少共享风险
4.贸易管理:跨境贸易结算、物流供应链、一带一路
5.物联网:IBM、Finament、NeuroMesh(物联网疫苗)-360摄像头被黑客攻破、公共网络服务
6.其它场景:云存储、医疗、通讯软件、电子游戏、投票 ...
不适合场景:
业务场景涉及机密数据 - 同步记账
业务过程存储大量的静态数据,或者数据非常大 - 同步备份
交易规则经常变化
使用外部或者三方服务来收集/存储数据
按照访问权限分类
公有链:比特币、以太坊等
私有链:企业内部使用
联盟链:同行企业使用(如银行)
决策树:
胖瘦协议
发布的胖协议
1.区块链应用发的 "币" 其实是一种 "积分",也叫做 "通证"
2. 基于区块链的新型模式属于,底层协议由币增值而体现价值,应用火爆会带动代币需求激增
如:加入比特币节点后,负责为比特币系统记账,可以获取比特币系统奖励的 "比特币"
3. 电子货币 与 交易所(国内禁止)
不发币的瘦协议
1. 基于传统tcp/ip的互联网模式属于,协议没利润,应用更体现价值 如:支付宝的蚂蚁区块链
3.比特币的诞生
重要规则
a.区块大小上限1M
b.总计2100万枚, 2140年挖完
c.每10分钟出一个区块,通过难度值调整实现
d.21万个区块后奖励减半,大约四年,目前奖励12.5
本质
a.是一个P2P软件,下载后安装在电脑中运行(迅雷、QQ),多个比特币软件组成比特币网络
b.比特币软件会按照规则给为它工作的人奖励一种特殊的积分 - "比特币"
比特币的两大功能
A.节点功能
1.运行比特币软件,自动加入比特币网络的计算机,就可以看做一个 比特币节点
2. 包含挖矿、记账、验证、同步、奖励等一系列数据功能,所有节点共同维护着 公共共享总账本
3. 如果只是想查看账本数据,可以直接通过网站查询:blockchain , 方便我们使用浏览器查看 比特币的账本数据B.钱包功能
1.钱包可以看做手机银行App,所有交易转账都是向 账本 添加数据,账本数据不能改
2.创建地址(账号)和密码
3.密码 只在转出帐时需要使用
4.根据 地址(账号) 去 区块链账本 中查询余额
5.使用 地址(账号) 转账和接受转账 ( 挖矿奖励、转账手续费、转入转出比特币 )
比特币地址
地址:
一个比特币钱包中包含一系列的密钥对,每个密钥对包括一个私钥和一个公钥。私钥(k)是一个数字,通常是随机选出的。有了私钥,我们就可以使用椭圆曲线算法这个单向加密函数产生一个公钥(K)。有了公钥(K),我们就可以使用一个单向加密哈希函数生成比特币地址(A)
在比特币交易中,私钥用于生成支付比特币所必需的签名以证明资金的所有权
钱包:
1.如果只是想交易,不想挖矿和下载交易数据,也需要下载比特币软件吗?
比特币官方提供了钱包接口,可以开发 轻钱包软件,只进行交易,不做挖矿
2.比特币算力(n Hash值/秒) 、矿工、矿场、矿池
3.两个节点问题
节点之间怎么保证数据一致性
节点之间怎么快速验证账本数据
比特币交易详细流程
比特币使用的是 sha256 算法
密码学
对称加密
1.使用 同一个密钥 进行 加密 和 解密,这种加密方法称为 对称加密,也称为 单密钥加密 ;
2.算法:DES、3DES、AES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK
3.特点:
加解密使用 相同 秘钥
高效,适用于大量数据的加密场景
算法公开,安全性取决于秘钥大小,但秘钥越大效率越低,需要权衡在安全和效率中做权衡
4.缺点:
算法本身安全,但使用场景不够安全,因为解密和加密都是同一个秘钥非对称加密
1.使用 匹配的一对密钥 来分别进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)
2. 公钥加密的数据 只能 用 对应的私钥解密,同理,私钥加密的数据 只能用 对应的公钥解密;
3. 算法:
RSA、ECC、Elgamal、背包算法、Rabin、D-H 等
RSA算法,网易公开课的介绍视频
ESS算法,椭圆曲线算法(比特币,巧妙避开美国NSA后门,V神认为是巧合)
比特币解决的几个问题
1.工作量证明
2.多节点算出nounce
3.验证nounce
4.验证签名 : 使用非对称加密做签名, 信任最长链机制
4.模拟实现比特币的思路
1.记账
2.Hash校验
3.工作量证明pow
4.区块链
5.web接口
6.节点网络