区块链从2008年聪哥提出到现在,因为中间很多币的热炒,加上这个东西偏技术很适合去忽悠人,尤其是经过了2017年区块链元年(确实有很多基于区块链的产品或公司诞生)。
所以最近区块链越来越火,火到了养鸡都用区块链,什么垃圾股粘上区块链都会暴涨,一个码农在婚恋网站个人资料里加了一句“区块链工程师”,短短几天,从无人问津立马收到了238封妹子的交友私信。
不过,存在即合理,虽然有过渡夸大,但不可否认区块链带来的技术变革,必然会带来一些产品或思维模式的变革。我们能做的就是拥抱它,而不是错过之后临渊慕鱼。 加上区块链在音乐行业有很多可能性 ,所以我最近研究了下区块链技术,有了这篇文章。
码字太累,文章里部分是引用的,部分是自己理解写和画的。
因为比特币和区块链几乎是同时出来的东西,关系异常紧密,抛开任何一个去讲另外一个都不容易理解,所以本文先简单介绍比特币,然后引出重点介绍的区块链。
比特币(Bitcoin,简称BTC)是目前使用最为广泛的一种数字货币,它无中心,匿名化,不属于任何国家和金融机构管理,通过旷工挖矿产生。
之后第一笔比特币诞生于2009年1月3日,BTC是一种点对点(P2P)传输的数字加密货币,比特币被投资者称为“数字黄金”。比特币依据特定算法,通过大量的计算产生,不依靠特定货币机构发行,其使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学设计确保货币流通各个环节安全性,可确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实拥有者转移、支付及兑现。同样确保了货币所有权与流通交易的匿名性。
为了快速对比特币有一个全局概念,这里引用一网友给比特币写的诗(为了押韵,我改了一处)
比特币-雪
安全透明无风险,稀缺恒定能发家。
椭圆曲线保安全,工作证明防双花。
交易匿名去中心,账本透明都可查。
技术大牛都说好,民主国家全用它。
投资速买莫犹豫,早买显卡把矿挖。
当年披萨一万币,如今一币一万八。
互联之初不努力,徒管马云叫爸爸。
如今天降中本聪,信比特币保全家。
我认为矿工和比特币的关系有点像:XX。
解释这个问题其实又回到了比特币是怎么产生的:比特币总量2100万枚;从诞生之日开始,比特币约每10分钟释放出一定数量币,直到不能发放为止.
那么问题来了,这个币池怎么流转起来,池子里的币分给谁,当然分给劳动者,这也就就是旷工的角色。
旷工就是通过比拼算力,基于一定的算法规则,来赢取比特币的个人或组织。
旷工在争取比特币的同时,也在帮忙维护整个底层系统的数据同步存储等工作;
比特币总量2100万枚,2009年第一笔被中本聪挖到开始,前4年每块送50个,以后每隔4年减半,一直减到不可发放的单位(1BTC=100000000聪),大概发放到2140年结束。
为了控制速度,挖矿难度值随着每个区块的创建时间长短,一段时间内动态调控,达到约10分钟一个的目标;
去中心
开放性
安全性
匿名性
区块容量和交易速度限制
挖矿浪费巨大资源
缺少图灵完备性
价格波动大
常见的有BTC比特币、BCH比特币现金、ETH以太币、LTC 莱特币、MLGB等等等等等,下面举例
由于比特币协议规定,平均10分钟诞生一个区块。区块的大小只有 1MB,最多只能包含2000多笔交易。也就是说,比特币网络每10分钟,最多只能处理2000多笔交易,换算一下,就是处理速度为3~5笔/秒。这已经成为制约比特币发展的一个瓶颈。
基于这些问题,比特币维护团队内部开始不断有分歧,但迟迟没有进展,陆续有人退出。一直到2017年8月区块链发生了一次分叉,诞生了一个新协议,称为 Bitcoin Cash(简称 BCH).BCH 的协议是在 core 版本的代码基础上删除了"隔离见证",同时将区块大小增加到 8M 而形成的。
估计很多同学看到隔离见证四个字有点迷惑,这个名字确实拗口 ,这个技术本来是比特币为了增加区块交易容量而设计的,简单理解就是有了这个,可以让1M的区块容纳更多的交易。底层是把签名验证信息用指针指向了另外一个地方。话说bitcore 团队部分人为什么不同意增加块的大小,宁愿去用隔离见证实现,当然他们都不是傻子,他们应该是更多从安全出发考虑的.
2013年,19岁的VitalikButerin(我叫他小马,如图)在一本主题为“以太坊白皮书(下一代智能连接与去中心化应用平台)的书中首次提到了以太币的构想。随后在2014年,以太币的算法及协议正式落地,并募集了1.5亿美元,系统于2015年7月30日最终完成。以太币底层系统是基于以太坊构建的。

用一句话解释区块链:
从技术角度:无中心,分布式数据库;
非技术:区块链好比一本公开的账簿,它记录了自比特币诞生以来的所有交易,任何人(也可能要授权)都可自行下载、查看甚至记录。一个区块相当于账簿上的一页。
了解区块链,首先说下区块链这个词从哪里来的。区块链(Blockchain)的概念最早可以追溯到2008年中本聪的比特币白皮书,其实中本聪的论文里没有提及区块链,只是把数据结构用一些词来解释和定义。数据结构里有transaction,block,chain。后来者把整个体系拿出来,叫做blockchain。
所以,比特币的底层设计思想,衍生出了blockchain这个词,区块链并没有使用牛掰的技术,而是提出了一个伟大的思想。从经济学和数学角度,结合一些技术(几乎所有的都是现有的,如非对称加密,数字签名,P2P等)构建了一套可持续、高安全、低维护的系统;
区块链是比特币的底层技术框架,比特币是基于区块链的一种产品表现,比特币是区块链技术的第一个应用,也是目前最成功的一个应用;基于区块链设计思想可以有多种产品表现,如以太币商业应用等;可以类比TCP协议于http 的关系;
bitcoin牛逼的地方不在于技术,这些技术都存在很多年了,bitcoin牛逼的地方在于从经济的角度出来构建了一套系统,而这套系统包含了这些技术。所以本质上bitcoin牛逼之处的确在于巧妙的结合了这些技术,但牛逼之处也在于经济学与技术的完美结合。
如果要更深入的了解比特币或探索其他商业场景的可行性,必须要了解区块链技术原理.
坊间有人曰过:没有人工智能拯救不了的垃圾股,如果有,就上区块链。
区块链最近的火爆程度一点不亚于当时O2O、AR、AI, 像国内众安科技合作的某养鸡场都上了区块链。如果关联到股票市场更加火爆,美国软饮料公司长岛冰茶公司(The Long Island Iced Tea Corporation)的股价盘前交易中一度飙升500%,而原因是因为:该公司计划把名字改成“长区块链公司”(Long Blockchain Corp.),准备探索区块链业务。
从存在即合理的理论来看,如果区块链只是支撑了几个币而已,那么区块链完全不会到现在的火热程度。那么它到底有多神秘和全能呢
下图引用自腾讯区块链方案白皮书
从上图可以看出,区块链具有去中心化、去信任化、可扩展、匿名化、安全可靠等特点;*
下图一个大块就相当于一个区块,上面带颜色的是区块头,灰色的是除了头之外的部分,共同构成了一个完整区块。
而几个区块串联起来就构成了区块链
官网区块链接图
Magic no 魔术数没什么意义,就是一般很多软件里会刻意的当一个常量,可能为了装13或者标记,就像linux 上你把一个文件改了后缀,有了这个标记file 命令依旧知道他原来是什么文件;
其他几个字段看后面的单词应该就知道什么意思了,下面单独解释下Blockheader
hashPrevBlock前一区块的256位HASH值,也是链的基础,该字段使得Block之间链接起来,形成一个巨大的“链条”。单个Block是很平常的数据结构,但以链式结构组织起来后却使得它们具有非常深远的意义;
Bits 当前目标HASH值,挖矿的难度和这个有很大关系,一个区块头的SHA256值必定要小于或等于目标HASH值,该区块才能被网络所接受,目标HASH越低,产生一个新区块的难度越大。
如果还是不理解这个字段的意义,那可以把它想象为足球的球门,越小越难进,而且会越来越小
Nonce 随机数,产生HASH时用到它,不然每次hash 就一样了;
hashMerkleRoot
这个hashMerkleRoot 是什么呢?
默克尔树(又叫哈希树)是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。
它的算法特性是,底层数据的任何变动,都会传递到其父亲节点,一直到树根。
这种数据结构在处理比对或验证的应用场景中时,特别是在分布式环境下进行比对或验证时,会大大减少数据的传输量以及计算的复杂度。
像Git 版本控制系统,ZFS 文件系统以及我们自己下载电影常用的点对点网络 BT 下载,都是通过 Merkle Tree 来进行完整性校验的
节点监听全网交易,通过验证的交易进入节点的内存池,并更新交易数据的Merkle Hash值
更新时间戳
尝试不同的随机数(Nonce),进行hash计算
重复该过程至找到合理的hash
打包block:先装入block meta信息,然后是交易数据
对外部广播出新block
其他节点验证通过后,链接至Block Chain,主链高度加一,然后切换至新block后面挖矿
新难度值 = 旧难度值 * ( 过去2016个区块花费时长 / 20160 分钟 )
目前有多少个区块?
<a href="https://btc.com/stats">https://btc.com/stats</a>
区块的最大数量是多少?
没有最大数量,区块以平均每10分钟一个的速度,源源不断地加到块链结尾。
甚至当所有的2100万个比特币全部被挖完,还是没有最大数量吗?
对的,区块用来确认交易在某一特定时间存在,即使比特币全部被挖完,交易还是会发生,所以只要人们还在交易比特币,区块还会被创建。
如果两个矿场同时挖到一个区块怎么办?
由于算哈希是随机的,加上网络有延迟,是有同时挖出两个区块的可能,然后不同的矿工根据他们收到的区块不同继续挖,然后还是有可能再出现分叉,但是几率会越来越小。
一般认为一个区块在最长链上后面跟了五个区块,就不可能被分叉了,挖矿公司实际上还会积极检测网络中的分叉然后主动放弃算力少的那个。
六个区块是根据该人拥有百分之一的算力刚好确认一个区块,但要进行6个区块确认的概率是100的六次平方分之一。这种情况可以说是相当于零。
可不可以作弊
如果有恶意的攻击者为了作废你的交易,就在你交易所在的前一个块挖,然后保证它的分支比你的分支增长的快就可以,这种攻击却是是有成功的可能性,不过前提是你要拥有很大的算量,足够左右链的走势。如果你的算量可以占据全世界的51%,那么你就可以说控制了Bitcoin,这也就是传说中的51%攻击。话说回来,目前比特币基本被极大矿池垄断了,所以理论上不用超过51%就可以作弊。Bitcoin火爆之后一种专门为挖矿设计的刀片机产生--挖矿机(ASIC),其中中国矿工大量的使用挖矿机,据统计他们手里掌握了比特币网络中70%的算量,打破了Bitcoin的生态平衡,去中心化的数字货币体系出现了“中心化”
我想搞一个矿场,会不会赔本?看这里
<a href="https://btc.com/tools/mining-calculator">https://btc.com/tools/mining-calculator</a>
简单地说,比特币交易就是把比特币从一个地址发送到另一个地址。打开比特币钱包,填写发送对象的地,发送即可完成交易。
栗子:A要给B 5个比特币
A发广播。广播内容包含:
a: 上一笔交易的 Hash(你从哪里得到这些比特币);
b: 本次交易双方的地址;
c: 支付方的公钥;
d: 支付方的私钥生成的数字签名;
旷工节点收到了A发来的广播,验证有效性,把这笔交易放到一个队列里
找到上一笔交易,确认支付方的比特币来源;
算出支付方公钥的指纹,确认与支付方的地址一致,从而保证公钥属实;
使用公钥去解开数字签名,保证私钥属实;
此时所有节点正在算题
C算出了一个解,C广播给所有节点
所有节点对C的结果进行验证
验证成功后,C得到奖励比特币,所有节点建立新的区块,写入队列中交易,继续算下一题
区块链没有用到新的技术,也不是一个单项的技术,而是一个集成了多方面研究成果基础之上的综合性技术。普遍认为有三项必不可缺的核心技术,分别是:共识机制、密码学原理和分布式数据存储。
所谓共识,是指多方参与的节点在预设规则下,通过多个节点交互对某些数据、行为或流 程达成一致的过程。共识机制是指定义共识过程的算法、协议和规则。 区块链的共识机制具备“少数服从多数”以及“人人平等”的特点,其中“少数服从多数” 并不完全指节点个数,也可以是计算能力、股权数或者其他的计算机可以比较的特征量。“人 人平等”是当节点满足条件时,所有节点都有权优先提出共识结果、直接被其他节点认同后并 最后有可能成为最终共识结果。
常见的共识机制(共有链场景)有:POW、POS、DPOS、PBFT,后面详细讲
以上提到了比特币的一个特性是安全性,那么这个安全是怎么保证的,是不是会被挑战呢,此时就要了解下非对称性加密、比特币地址、公钥、私钥几个概念了。
一句话讲就是:加密和解密所用的密钥是不一样的,所以叫“非对称”。
非对称加密算法的两个密钥,一个称为公钥,一个称为私钥。
举一个栗子:“在已知x的情况下,通过算法很容易求得y,但是知道了y,反过来求x却非常非常的困难”。
看一道初中数学题,公式:y=3x^3+2x^2-1,假设x=1,然后你马上算出y=4。
那现在y=1的时候,x等于多少呢,可能有很多情况,那如果这个数学公式复杂到反过来计算要话费2的256次方次呢,至少在现在看不是几百万年可以完成的事情。
比特币的非对称性加密算法采用的是椭圆曲线加密算法。这种加密算法的应用范围很广,主要的三个技术 TLS、PGP以及SSH 都在使用它。具体椭圆加密算法本文不详细说,一个是这个三两句说不清楚,另一个是我也有几个地方存有疑惑。想详细研究这个的同学推荐看下下面这个图,很经典。
『私钥』用来生成『公钥』,也用来对交易进行签名。拥有了『私钥』就是拥有了对这个钱包余额的一切操作权力。保护『私钥』是所有比特币钱包应用最基本也是最重要的功能。
1.公开的密钥叫公钥,只有自己知道的叫私钥
2.用公钥加密的数据只有对应的私钥可以解密
3.用私钥加密的数据只有对应的公钥可以解密
4.用私钥可以生成公钥,反之不行
如果还是不理解建议度娘或谷歌下或者直接把HTTPS原理搞懂就好。
公钥太长了,所以就有更短一些的地址的概念,另一方面没有发送过交易的地址,并不想暴露自己的公钥,而地址是通过摘要算法生成的,不会暴露公钥的真实内容
PS:为了更好的识别,比特币地址采用base58编码
区块链中的分布式存储是参与的节点各自都有独立的、完整的数据存储。 跟传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:
区块链每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的 规则分成多份进行存储。
区块链每个节点存储都是独立的、地位等同的,也就是没有master,依靠共识机制保证存储的一致性,而传统分布式存储一般是通过中心节点往其他备份节点同步数据。数据节点可以是不同的物理机器,也可以是云端不同的实例。
PoW是最熟知的一种共识机制。就如字面的解释,PoW就是工作越多,收益越大。这里的工作就是猜数字,谁能最快的猜出这个唯一的数字,谁就能做信息公示人。具体怎么猜,上面区块链底层结构里有讲过,这里不详细讲了。
算法简单,容易实现;
节点间无需交换额外的信息即可达成共识;
破坏系统需要投入极大的成本;
浪费能源;
共识达成的周期较长,不适合商业应用
应用案例:比特币
也称股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。
简单来说,就是一个根据你持有货币的量和时间,给你发利息的一个制度,在股权证明POS模式下,有一个名词叫币龄,每个币每天产生1币龄,比如你持有100个币,总共持有了30天,那么,此时你的币龄就为3000,这个时候,如果你发现了一个POS区块,你的币龄就会被清空为0。你每被清空365币龄,你将会从区块中获得0.05个币的利息(假定利息可理解为年利率5%),那么在这个案例中,利息 = 3000 * 5% / 365 = 0.41个币,这下就很有意思了,持币有利息。
在一定程度上缩短了共识达成的时间;不再需要大量消耗能源挖矿
还是需要挖矿,本质上没有解决商业应用的痛点
应用案例:未来币,以太坊采用了Pow+POS的混合机制
DPOS又称受托人机制,它的原理是让每一个持有比特股的人进行投票。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们
大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证
整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的
应用案例:比特股
PBFT也是一种常见的共识证明。它与之前几种都不相同,PBFT以计算为基础,也没有代币奖励。由链上所有人参与投票,少于(N-1)/3个节点反对时就获得公示信息的权利。
此图如果看不懂不影响继续往下看,可以回头单独研究PBFT
系统运转可以脱离币的存在,pbft算法共识各节点由业务的参与方或者监管方组成,安全性与稳定性由业务相关方保证。
共识的时延大约在2~5秒钟,基本达到商用实时处理的要求。
共识效率高,可满足高频交易量的需求。
区块数限制;当有1/3或以上记账人停止工作后,系统将无法提供服务;
应用:央行的数字货币、布萌区块链、 蚂蚁区块链平台
比特币1.0是货币–与转账、汇款和数字化支付相关的密码学货币应用。
比特币2.0是合约–经济、市场和金融的区块链应用的基石,例如股票、债券、期货、贷款、抵押、产权、智能财产和智能合约。
比特币3.0是超越货币、金融和市场的区块链应用,特别是在政府、健康、科学、文化和艺术领域的应用。
公共区块链是指全世界任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链——共识过程决定哪个区块可被添加到区块链中和明确当前状态。作为中心化或者准中心化信任的替代物,公共区块链的安全由“加密数字经济”维护——“加密数字经济”采取工作量证明机制或权益证明机制等方式,将经济奖励和加密数字验证结合了起来,并遵循着一般原则:每个人从中可获得的经济奖励,与对共识过程作出的贡献成正比。这些区块链通常被认为是“完全去中心化”的。
共同体区块链是指其共识过程受到预选节点控制的区块链;例如,不妨想象一个有15个金融机构组成的共同体,每个机构都运行着一个节点,而且为了使每个区块生效需要获得其中10个机构的确认。区块链或许允许每个人都可读取,或者只受限于参与者,或走混合型路线,例如区块的根哈希及其API(应用程序接口)对外公开,API可允许外界用来作有限次数的查询和获取区块链状态的信息。这些区块链可视为“部分去中心化”。
完全私有的区块链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被任意程度地进行了限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。
Ethereum是一个全新开放的区块链平台,它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。就像比特币一样,以太坊不受任何人控制,也不归任何人所有——它是一个开放源代码项目,由全球范围内的很多人共同创建。和比特币协议有所不同的是,以太坊的设计十分灵活,极具适应性。同时以太坊具备图灵完备性,所以它可以实现智能合约机制。
Ethereum目的是为了打造一个平台,就像是一个计算机系统一样,你可以去在这个系统上去开发各种应用,比如博彩、P2P信贷、拍卖之类的。
超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,目前已在全球拥有160多个成员。目标是让成员共同合作,共建开放平台,满足来自多个不同行业各种用户案例,并简化业务流程。由于点对点网络的特性,分布式账本技术是完全共享、透明和去中心化的,故非常适合于在金融行业的应用,以及其他的例如制造、银行、保险、物联网等无数个其他行业。通过创建分布式账本的公开标准,实现虚拟和数字形式的价值交换,例如资产合约、能源交易、结婚证书、能够安全和高效低成本的进行追踪和交易。
周一消息,腾讯云正式加入Linux基金会旗下Hyperledger(以下简称“超级账本”)开源项目,成为全球领先的区块链组织中的一员。后续,腾讯云将深度参与国际区块链生态建设,参与并推动区块链技术以及相关标准的制定。
除了以上两种有代表性的之外,还有很多很多,他们为了解决不同的业务问题,所以侧重点也不尽相同,从去中心化程度、交易确认时间、是否有挖矿费、是否支持编程、是否全节点记账、私钥重要性等方面都不太一样,不一一列举。
人人坊
成立时间:2018.1.02
应用领域:社交平台与区块链
招财猫
成立时间:2018.1
应用领域:宠物游戏与区块链
链克
成立时间:2017.4
应用领域:视频产业与区块链
共享云
应用领域:安全共享与区块链
黄金红包
成立时间:未知
应用领域:支付与区块链
蚂蚁区块链
其他
鉴于公有链的安全性及交易量与日俱增对现网容量之间的平衡问题, 未来区块链的应用领域将以联盟链、私有链或混合链为主。比特币模式增加了区块链网络的维 护成本,对于低价值、低风险的交易来说并非完全适用。考虑到效率及安全的提升,未来将是 以联盟链、私有链、或由联盟链和私有链组成的混合链组成。
未来区块链系统架构将是构建可信任的多中心体系,将分散独立的各自 单中心,提升为多方参与的统一多中心,从而提高信任传递效率,降低交易成本。即在信息不 对称、不确定的环境下,建立满足各种活动赖以发生、发展的“信任”生态体系。
区块链的应用领域将先从对交易各方有相互建 立信任的需求,但又不容易建立信任关系的领域切入,如金融、证券、保险等领域。随着应用 普及和社会认知度的提高,区块链将逐渐向社会各领域渗透。比如区块链已经初步的应用于政 治选举、企业股东投票、博彩、预测市场等领域。
未来,所有的契约型的约定都实现智能化,利用智能合约可以 保障所有约定的可靠执行,避免篡改、抵赖和违约。除了将社会中的有形资产转变为数字智能 资产进行确权、授权和实时监控外,区块链还可应用于社会中的无形资产管理,如知识产权保 护、域名管理、积分管理等领域