区块链专题
来源:互联网 发布:特别纳税调整 知乎 编辑:程序博客网 时间:2024/06/14 11:19
简介
近两年火起来的除了人工智能(机器学习),P2P还有区块链。作为IT从业者也需要紧跟潮流,了解下技术动态。简单整理了网上一些琐碎资料,加上个人理解,作为一篇小报告吧。
为什么火?个人感觉是比特币的火爆,尤其前几天的黑客事件,勒索的是比特币而非法定货币。问题来了,为何勒索比特币?这就是他的匿名性,目前凡电子形式法定货币都是比较容易追踪的,这也有好处,比如把钱打错人了,理论上是可以追回的。由于比特币的这种特殊性质,成为理想的“电子黄金”(黄金显然也是不记名的)。
作为技术人员,不关系其应用,关心下技术框架吧(技术细节也不关系,否则要整个专题了,推荐图书《精通比特币》,若不打算从事此方向,不必深究)。
要讲比特币,先说区块链。
什么是区块链?
在这个世界上某个原始的封闭小村庄里,目前还处在用金条作为货币来进行商品交换的时期。
![](http://8btc.com/data/attachment/forum/201607/19/104436vpj2mjij4pe468p3.jpg)
![](http://8btc.com/data/attachment/forum/201607/19/104436uawd494d5mfjcjqr.jpg)
![](http://8btc.com/data/attachment/forum/201607/19/104436b19cxg6kxevgnx4e.jpg)
这年的年初,村长在某村的村口召开全体大会,宣布要在自己家设立一个大账本,村民们上交金条,村长就在账本上做记录。
![](http://8btc.com/data/attachment/forum/201607/19/104436zy5vspyffh3ssbns.jpg)
![](http://8btc.com/data/attachment/forum/201607/19/104437ig2ew0g0a8k8l889.jpg)
![](http://8btc.com/data/attachment/forum/201607/19/104437l2fql5z577fgvs5d.jpg)
一个春天过去了,一切交易都井然便利地进行着,只是村长一个人渐渐应付不了繁多的记账和电话,就雇佣了几个帐房先生管理账本。
![](http://8btc.com/data/attachment/forum/201607/19/104437wxg4kvonpqrxvgpq.jpg)
秋天收获了,盛产庄稼的某村和盛产水果的隔壁东村开始有了频繁的商品交易,村民们懒得换现金,就请求村长把账本业务拓展到隔壁村。没想到,当村长拿着账本到了东村的地界,东村村长根本不认村长的账:“俺们村也有账本,但不是这么记的。你们这种记法俺们看不懂。”这时候,村民们开始有点沮丧。
![](http://8btc.com/data/attachment/forum/201607/19/104437m6giygzguwjwuz4w.jpg)
虽然经历了种种波折,但终于挨到了过年,在年夜这天傍晚,村长又在村口召开了一次村民联欢晚会,想要回顾一下这一年的账本计划,重振一下村民对账本模式的口碑。可是还没等他说完,他家宝贝小儿子就因为玩炮仗把他家给炸了,账本也给毁了……
![](http://8btc.com/data/attachment/forum/201607/19/104437oys8qj8s5l3fg31s.jpg)
![](http://8btc.com/data/attachment/forum/201607/19/104438g6406en23p0inn69.jpg)
![](http://8btc.com/data/attachment/forum/201607/19/104438sugnv5fnzuw4u9un.jpg)
当张三要拿两个金条换李四的一头牛时,中本聪悬赏一定的金额让大家帮着检验记账,第一个验证出“张三确实有两个金条并且确实把两个金条给了李四”的人被授予“矿工”称号并获得一定奖赏。“矿工”需要把这一笔交易写在一张编号001的纸条上;第二天李四拿出一个金条找王二买一只鸡,村民们便抢着翻阅大账本和编号001的纸条,验证成功后把交易内容写在编号002的纸条上,并在纸条上写上“之前交易内容见001”,以此类推。这时候,只要账本的“初始状态确定”,每一张纸条的记录“公开可验证并有时序”,当前每个人持有的钱数都是可以推算出来的。
![](http://8btc.com/data/attachment/forum/201607/19/104438p6sd0mgmlvo0d436.jpg)
区块链方案所有的规则都是公开透明的(建立的数学算法上),所以村民们获得了共识,可以相互之间达成信任;
账簿只在村长或者账房先生手上,造假的可能性就非常高,但每个人手里都有一本账簿,除非你说服了整个村里超过51%的人都更改某一笔账目,否则你的篡改都是无效的。另外,就算某个人手里的账本损坏,其它人手里都有副本,完全不用担心。
更进一步,除了账目,还可以把个人身份按照同样的原则记录在案,在需要核实的时候进行查询,实现自证的目的。
听到这里,村民们明白区块链的本质了:一个公开透明的可信赖的帐务系统,它能安全的存储交易数据,并且无需任何中心化机构的审核,因为这个过程完全是由整个网络来完成的。
从比特币的角度再次理解区块链
在以上这个故事的前提下我们再来说说比特币,由于区块链是伴生着比特币出现的,这样可以加深对区块链的理解。和全体村民共同拥有的账本一样,比特币只有一个区块链——那就是在全球拥有的,没有任何主权国家去管理它,也没有任何中心 机构可以管理它,而且几乎没有哪个国家能够伤害它,不仅黑客无法伤害比特币区块链,政府也无法伤害比特币区块链。
我们将比特币的交易过程和上文中村民抢着记账的过程进行类比:如果你在区块链上,把比特币从A帐户付到B帐户,每个帐户有一把公钥、私钥,采用非对称的加密方法,所以你公钥是可以解码的,但是私钥到现在为止,没有人有这个能力,不管是政府还是黑客。
你只需要向全网广播:我要从这个帐户汇一笔钱到B帐户去,然后把B帐户的公钥也公布了,这事情就结束了,跟你没有关系了,剩下的就是由在网络上其他的人去抢,抢到这个把你这笔交易记帐的权利。
怎么抢呢?开始对你公布的这两个公钥进行解密,所以需要拥有很大的计算能力,才能够把它解开,对公钥解密,确认A帐户里面确实有100个比特币,然后再把B帐户的公钥解开,你把钱寄到他那里去,这就是我们俗称的挖矿,你把这个事情做了,每个区块会产生25个新的比特币(奖励每四年会减半,比特币到如今已经7个年头了),你就可以得到这个奖励。
大家应该看过这样的一个段子:数年前,A借了B君20000块,但是到了期限没有现金还给B,只好给了B君2000个比特币,B君当时不知道比特币是什么玩意儿,也就把这事儿忘了。某一天突然看到新闻说比特币大涨,多么多么值钱,赶紧回去看了眼自己的账户,于是,转眼他就变成百万富翁了........
且不论这个事情的真假,至少说明,几年前挖比特币是很赚钱的,但是鉴于目前比特币快被挖完了,挖的难度也越来越大,没有原来那么好赚了而已.....
当前比特币交易的一次确认时间大约平均是10分钟,这个特点跟现有银行体系和企业的结算方法有很大的差别。银行下午5点钟必定关门,不可能24小时营业,因为每天要结算,所以大部分的金融欺诈就这样产生净额交收当中——因为你事情已经记了,但是钱还在途,每家银行第二天一定要对头一天的帐进行修正,没有一家银行能够在下午5点钟截止之后,把事情和帐做平的,一定有钱在途而银行还没有收到,但是那个帐银行得先记,钱是没来的。第二天也许钱来了,你就要对头一天的帐重新平衡,也许这个帐就没收到,出现差错,这是必然的现象,但是比特币的区块链是24小时的,每10分钟结一次帐,比特币区块链上,10分钟的比特币交易变成一个区块,结一次帐一个区块就形成了,10分钟一个区块,任何一个区块,任何这10分钟的区块结帐的时候,基本上有三方面的内容:
- 上一个10分钟的所有比特币交易的摘要。
- 10分钟内比特币区块链上所有比特币交易的详细记录。
- 网络上盖一个时间戳,表现是这一段时间所有的帐。
那么这个区块就完成了,接着再进行下一个区块。
区块链对若干核心问题的处理
链接:https://www.zhihu.com/question/27687960/answer/38301765
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
把区块链想象成一个比特币的公共账本,这个账本:
1.存放在互联网的各个比特币节点上,每个节点都有一份完整的备份
2.里面记录着自比特币诞生以来的所有比特币转账交易
3.账本是分区块存储的,每一块包含一部分交易记录。每一个区块都会记录着前一区块的id,形成一个链状结构,因而称为区块链
4.当你要发起一笔比特币交易的时候只需把交易信息广播到p2p网络中,矿工把你的交易信息记录成一个新的区块连到区块链上,交易就完成了。
这里有几个问题:
1.如何保证用户有足够的余额,例如你只有十个币,而你居然发起了一笔转20个币的交易怎么办。
回溯所有的和你账户相关的历史交易就能知道你这个账户上到底有多少余额,余额不对矿工是会拒绝记录你的交易的
2,最初的比特币是从哪里来的呢?
最初的比特币是由系统奖励给记录区块的矿工的。每一个区块在生成的时候就会在生成这个区块的矿工的账户上生成一定数量的新比特币作为奖励。
3,如何保证你的账户不被冒名顶替
数字签名技术。每个比特币账户都有公钥和私钥。你发起交易的时候用私钥对交易信息签名,矿工收到信息后用公钥检查一下签名就好了。所以你的钱不一定是你的钱,而是你的私钥的前,私钥没了,钱就没了。即使你从其他地方偷到了比特币,别人也无法追踪或讨回,除非你泄露私钥。
4.那么多矿工,如何决定该由哪个矿工生成下一个区块?
解决方案是这样的:
中本聪设计了一个数学问题,这个数学问题会耗费大量的计算机cpu时间才能得出答案,同时每一次得出的答案都会作为下一次计算的初始条件进行技术。全世界的矿工一起来计算这个问题,谁先得出答案,他就可以用这个答案生成一个新的区块,再广播到网络中。收到这个新块数据的矿工会立即停止当前的计算,用新块里的数据重新进行下一次计算。这就是所谓的“挖矿”。矿工产生的区块一旦被网络接受,他就能获得一笔比特币作为酬劳。
这时要考虑一种情况:如果同时有两个矿工各自得到一个正确答案,并各自生成了一个区块广播出去会发生什么呢?
这时候在区块链上同一个位置就有了两个区块,所谓的“分叉”就出现了。
分叉是绝对不允许的,所以当矿工发现区块链分叉之后,会选择最长的一条继续计算,短的那条区块链会被丢弃。由于会有丢弃现象,所以就存在隐患。所谓51%攻击。
5,仔细思考下这个体系,你会发现它几乎无懈可击。首先你不能凭空造出比特币,只能挖矿获得;其次你无法伪造交易,无法控制不属于你的账户。一旦交易被确认,几乎无法取消。我这里说“几乎”,是因为有“51%攻击”的存在。51%攻击条件非常苛刻,这里就不扩展开讲了。感兴趣的朋友可以自行查阅相关资料。
51%攻击
标题:什么是比特币51%攻击?
地址:http://8btc.com/article-1949-1.html
一个典型51%攻击案例
- 区块链专题
- 区块链开发专题(真正的区块链定义)
- 数字货币开发专题(分布式和区块链技术)
- 数字货币开发专题(区块链会不会被攻击)
- 虚拟货币开发专题(区块链如何防止数据膨胀)
- 区块链开发专题(数字货币如何实现交易支付)
- 区块链开发专题(P2P技术如何验证消息)
- 数字货币开发专题(区块链技术详细介绍)
- 比特币开发专题(区块链内核密钥、地址、钱包)
- 区块链开发专题(数字货币分叉、矿池、共识攻击)
- 区块链开发专题(数字货币矿池挖矿如何挖)
- 区块链开发专题(数字货币的数据结构解析)
- 虚拟币开发专题(二代币区块链专业名词解释)
- 虚拟币开发专题(钱包无法下载区块链解决办法)
- 数字货币开发专题(精通比特币使用区块链技术原理)
- 比特币开发专题(区块链是如何执行交易数据的)
- 区块链开发专题(比特币网络是如何构架起来的)
- 区块链开发专题(数字货币运行过程中安全性如何保障)
- 爬虫
- LigerUI
- Weblogic 远程调试服务器代码
- android AudioFlinger的启动流程
- activeMQ实例在项目中的运用【项目实战系列】
- 区块链专题
- 设计模式——适配器模式
- jQuery Mobile 工具栏
- EA&UML日拱一卒--序列图(Sequence Diagram)::状态不变量
- 线程的五大状态
- Android走马灯滚动效果的实现
- github之保存当前状态git stash
- ssh无密登陆localhost
- 逻辑和判断谁是小偷