最近学习了几本区块链的书,总结记录一下自己的理解。
一、基本概念
1,区块链:一种分布式的数据链表结构,包含区块之间的逻辑运算脚本(智能合约)。用于记录节点之间的交易记录,是一部巨大的N多节点共同维护的交易账本,实现网络上价值转移,不可篡改和删除,可以用来建立彼此之间的信任。
2,哈希加密函数:可以将不等长的输入信息映射为等长的字符串,记住两个公式:1),com:= commit( msg, nonce),将信息(msg)和一个临时随机数(nonce)作为输入,输出固定长度结果;2),verify( com, msg, nonce),验证函数可将某个函数输出(com)、临时随机数(nonce)及信息(msg)作为输入,如果com== commit( msg, nonce),则返回“真”(true);反之则返回“假”(false)。
满足两个特性:1),隐秘性:已知com,没有可行的方法逆向推导出msg,实现安全加密功能。2),约束性:没有可行的办法找到两组( msg, nonce) 和( msg’, nonce’),msg ≠ msg’,而commit( msg, nonce)== commit( msg’, nonce’)。3),我认为还应该有可重复性,就是同样的输入信息,多次运行commit,得到的结果是唯一的。
3,数字签名:也是两个公式
1),(sk, pk) :=generateKeys( keysize) generateKeys 方法是把keysize 作为输入,来产生一对公钥和私钥。私钥sk 被安全保存,并用来签名一段消息;公钥pk 是人人都可以找到的,拿到它,就可以用来验证你的签名。2),sig:= sign( sk, message) 签名过程是把一段消息和私钥作为一个输入,对于消息输出是签名。3),isValid:= verify( pk, message, sig) 验证过程是通过把一段消息和签名消息与公钥作为输入,如果返回的结果是真,证明签名属实;如果返回的结果为假,证明签名消息为假。
在这里特别说明的是,数字货币交易所钱包的存钱地址就是公钥的哈希值,但私钥是不告诉你的,因为交易所要全权代理个人做交易。在交易所内的各种货币交易其实只是在交易所内做了记录,而真正的区块链上根本没有体现你的资产,除非你提款到另一钱包,你的数字货币资产才真正落到区块链上。
每个交易所和银行一样,你账面上的钱不提出来就是交易所一个数字而已,如果大家都提款那就可能出现挤兑造成银行破产,曾经最大的门头沟交易所就是这么完蛋的,造成数万比特币无处可寻。所以,如果你想把资产落到实处,那就定期提出到别的钱包实现真正交易,当然要缴纳很少的提款费。
4,区块:包含区块头(包含指向前一节点指针)、交易记录等数据,原始比特币区块大小是1MB,因交易量太大,比特币交易确认时间少则10分钟多则几十分钟。
5,交易:区块链节点之间资产转移的记录,每一交易的输入和输出量是严格相等的,否则就是无效交易。
6,节点:区块链的应用端软件是相互平等的运算和处理节点,遵循相同的算法(共识),共同计算、存储和维护这一链条。
7,矿工:拥有计算资源以牟取挖矿奖励的人,挖矿设备从个人普通PC和专用显卡,到FPGA ,再到ASIC,现在出现了利益互助、风险收益共担的保险组织“矿池”。其实普通人已经根本没法玩了,违背了中本聪当初的自由平等参与的初心
8,挖矿:以比特币为例,挖矿节点要计算符合目标要求的SHA256哈希值,谁先获得谁就可以组装交易记录建立新区块,如果获得其它节点认可,就相当于挖矿成功,获得奖励(目前是25比特币/区块)。
9,分叉:由于种种原因要升级程序,比如比特币因为交易太慢,出现多种升级优化方案,硬分叉不兼容旧版产生的新区块,软分叉可以兼容新旧版区块。由此会造成区块链条的不同分支并行发展,哪个分支发展如何依赖跟从的人数多少。
10,比特币软件:最初中本聪,后来交给几个核心开发人员维护。由于分叉,出现了多个升级软件。
11,智能合约:这是以太币的重要发明,可以在每个交易嵌入可编程的程序,实现交易之间自动遵从协议以实现不同应用,比如网购、博彩等。
12,交易所:拿bitfinex为例,供大家在网上进行数字货币交易和买卖,实现各种股票交易所的功能,比如融资、借贷、各种订单(限价单、市价单、止损单、限价止损单、移动止损单等),还支持远程API自动操作下单买卖。
二、疑问
1,如何避免同一资产使用两次?
任一交易有效的前提是在区块链上没有重复记录,如果同一资产交易两次,不同节点都会收到这两个交易,但任一节点只会验证通过其中一个有效,最后进入区块时会被建立区块的节点丢掉其中一个。
2,如何避免区块挖矿竞争?
当两个节点在同一区块后同时挖到新区块并挂在该区块后,其它节点首先选择最长的链条,长度相同则会丢弃一个。只有进入大家都认可的最长区块链时,该区块和挖到该区块的节点才会被奖励。
三、区块链技术应用
利用区块链技术,陌生人之间不需担心和投入信任成本,不需依赖中介信用背书。这种无中心化、点对点的技术可以应用各行各业中。
1,数字货币:如比特币,2011-2017涨幅2万倍,可以实现匿名洗钱、投资、货币兑换,上次爆发的计算机勒索病毒就要300美元的比特币赎金。
2,金融支付:不需要银行等金融中介,可以实现自由的点对点支付、汇款等操作。
3,电力共享:某户家庭光伏发电上传电网,另一户可以通过区块链购买。
4,物联网:物联网是最需要去中心化的交互技术,区块链和物联网似乎有天然的共生关系。比如可穿戴医疗设备,可以把收集的生理数据保存到区块链上,数据安全和不可修改,医生可以通过授权访问相关数据做出远程诊断和治疗建议。
5,医疗大数据:
引用吴军老师226封信:讲到数据安全性和隐私,今天大数据医疗之所以难以开展的一个重要原因,是大家对隐私问题的担心。比如,如果将我们的病例交给一个大数据公司,那么他们就看到了我们每个人的健康状况。简单地将我们的姓名和身份证号隐藏起来,并不能解决问题,因为根据大数据的多维度特点,很容易挖掘出这个人是谁。对于一个实体是否具有某个属性,区块链可以在不获得数据的情况下,通过协议问一下这个实体,你是否具有这个属性,或者某个具体的指标数值是多少,这个实体可以给你一个回答,但是你无法知道是谁作出的回答。如果使用区块链技术,大家可以将数据放在由区块链构成的超级计算机(其实是整个互联网)中,数据的拥有者真正实现对数据的所有,其它公司,无论大小,都是按照协议使用数据,这样一来,不仅大家有安全感,而且能做到互联网上的公平。
引用吴军老师226封信:Tom Ding认为,机器智能可以使得我们社会的生产力极大地提升,因此相当于生产力,而区块链则是在处理经济活动中人和人的关系,利益分配方式,因此相当于生产关系。生产关系中三个基本要素就是生产工具的所有权,生产和商业活动中人和人的关系,以及分配制度。当这三个都改变时,生产关系就变了,因此Tom Ding认为,区块链改变的是生产关系。
人工智能、大数据和区块链将是未来最重要的三大技术,大数据是金矿,人工智能处理大数据获取各种价值,而区块链可以实现安全可靠的价值转移。但技术的应用是逐渐演变的,区块链这种分布式去中心化的数据库需要与现有的数据库长期融合应用和取长补短。