本人转载字腾讯云社区,
原文地址:https://cloud.tencent.com/developer/article/1099716
广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。
狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本(分布式数据库)。
那么区块链有什么特征呢?
区块链是一种共享的分布式数据库技术。主要有以下4个特征:
以参与方分类,区块链可以分为公有链、联盟链和私有链;从链与链的关系来分,可以分为主链和侧链。
公有链通常也称为非许可链(Permissionless Blockchain),无官方组织及管理机构,无中心服务器,参与的借点按照系统规格自由接入网路、不受控制,节点间基于共识机制开展工作。
公有链一般适合于虚拟货币、面向大众的电子商务、互联网金融等B2C、C2C或C2B等应用场景,比特币和以太坊等就是典型的公有链。
联盟链是一种需要注册许可的区块链,这种区块链也称为许可链(Permissioned Blockchain)。联盟链仅限于联盟成员参与,区块链上的读写权限、参与记账权限按联盟规则来制定。整个网络由成员机构共同维护,网络接入一般通过成员机构的网关节点接入,共识过程由预先选好的节点控制。
一般来说,联盟链适合于机构间的交易、结算或清算等B2B场景。例如在银行间进行支付、结算、清算的系统就可以采用联盟链的形式,将各家银行的网关节点作为记账节点,当网络上有超过2/3的节点确认一个区块,该区块记录的交易将得到全网确认。
由40多家银行参与的区块链联盟R3和Linux基金会支持的超级账本(Hyperleder)项目都属于联盟链架构。
私有链建立在某个企业内部,系统的运作规则根据企业要求进行设定。私有链的应用场景一般是企业内部的应用,如数据库管理、审计等;
侧链是用于确认来自于其它区块链的数据的区块链,通过双向挂钩(TwoWay Peg)机制使比特币、Ripple币等多种资产在不同区块链上以一定的汇率实现转移。
侧链进一步扩展了区块链技术的应用范围和创新空间,使区块链支持包括股票、债券、金融衍生品等在内的多种资产类型,以及小微支付、智能合约、安全处理机制、真实世界财产注册等;侧链还可以增强区块链的隐私保护。
基础网络层由数据层、网络层组成,其中数据层包括了底层数据区块以及相关的数据加密和时间戳等技术;网络层则包括分布式组网机制、数据传播机制和数据验证机制等。
中间协议层由共识层、激励层、合约层组成,其中共识层主要包括网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要包括各类脚本、算法和智能合约,是区块链可编程特性的基础。
应用服务层作为区块链产业链中最重要的环节,则包括区块链的各种应用场景和案例,包括可编程货币、可编程金融和可编程社会。
从技术上来讲,区块是一种记录交易的数据结构,反映了一笔交易的资金流向。系统中已经达成的交易的区块连接在一起形成了一条主链,所有参与计算的节点都记录了主链或主链的一部分。
每个区块由区块头和区块体组成,区块体只负责记录前一段时间内的所有交易信息,主要包括交易数量和交易详情;区块头则封装了当前的版本号、前一区块地址、时间戳(记录该区块产生的时间,精确到秒)、随机数(记录解密该区块相关数学题的答案的值)、当前区块的目标哈希值、Merkle数的根值等信息。从结构来看,区块链的大部分功能都由区块头实现。
概括来看,一个区块包含以下三部分:交易信息、前一个区块形成的哈希散列、随机数。
交易信息是区块所承载的任务数据,具体包括交易双方的私钥、交易的数量、电子货币的数字签名等;前一个区块形成的哈希散列用来将区块连接起来,实现过往交易的顺序排列;随机数是交易达成的核心,所有矿工节点竞争计算随机数的答案,最快得到答案的节点生成一个新的区块,并广播到所有节点进行更新,如此完成一笔交易。
哈希函数可将任意长度的资料经由Hash算法转换为一组固定长度的代码,原理是基于一种密码学上的单向哈希函数,这种函数很容易被验证,但是却很难破解。通常业界使用y =hash(x)的方式进行表示,该哈希函数实现对x进行运算计算出一个哈希值y。
常使用的哈希算法包括MD5、SHA-1、SHA-256、SHA-384及SHA-512等。
Merkle树是一种哈希二叉树,使用它可以快速校验大规模数据的完整性。在区块链网络中,Merkle 树被用来归纳一个区块中的所有交易信息,最终生成这个区块所有交易信息的一个统一的哈希值,区块中任何一笔交易信息的改变都会使得Merkle 树改变。
非对称加密算法是一种密钥的保密方法,需要两个密钥:公钥和私钥。
公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密,从而获取对应的数据价值;如果用私钥对数据进行签名,那么只有用对应的公钥才能验证签名,验证信息的发出者是私钥持有者。
因为加密和解密使用的是两个不同的密钥,所以这种算法叫做非对称加密算法,而对称加密在加密与解密的过程中使用的是同一把密钥。
然后来看网络层
P2P网络(对等网络),又称点对点技术,是没有中心服务器、依靠用户群交换信息的互联网体系。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能。
P2P网络其具有去中心化与健壮性等特点。
然后是共识层
共识机制,就是所有记账节点之间如何达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。目前主要有四大类共识机制:PoW、PoS、DPoS和分布式一致性算法。
重点看一下POW
PoW机制,也就是像比特币的挖矿机制,矿工通过把网络尚未记录的现有交易打包到一个区块,然后不断遍历尝试来寻找一个随机数,使得新区块加上随机数的哈希值满足一定的难度条件。找到满足条件的随机数,就相当于确定了区块链最新的一个区块,也相当于获得了区块链的本轮记账权。矿工把满足挖矿难度条件的区块在网络中广播出去,全网其他节点在验证该区块满足挖矿难度条件,同时区块里的交易数据符合协议规范后,将各自把该区块链接到自己版本的区块链上,从而在全网形成对当前网络状态的共识。
优点:完全去中心化,节点自由进出,避免了建立和维护中心化信用机构的成本。只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就能达成一致。
缺点:目前比特币挖矿造成大量的资源浪费;另外挖矿的激励机制也造成矿池算力的高度集中,背离了当初去中心化设计的初衷。更大的问题是PoW机制的共识达成的周期较长,每秒只能最多做7笔交易,不适合商业应用。
最后是激励层
智能合约是一组情景应对型的程序化规则和逻辑,是通过部署在区块链上的去中心化、可信共享的脚本代码实现的。通常情况下,智能合约经各方签署后,以程序代码的形式附着在区块链数据上,经P2P网络传播和节点验证后记入区块链的特定区块中。智能合约封装了预定义的若干状态及转换规则、触发合约执行的情景、特定情景下的应对行动等。区块链可实时监控智能合约的状态,并通过核查外部数据源、确认满足特定触发条件后激活并执行合约。
在《区块链:新经济蓝图及导读》一书中,作者MelanieSwan按照应用范围和发展阶段将区块链应用划分为区块链1.0、2.0、3.0。
区块链1.0支撑虚拟货币应用,也就是与转账、汇款和数字化支付相关的密码学货币应用,比特币是区块链1.0的典型应用;
区块链2.0支撑智能合约应用,合约是经济和金融领域区块链应用的基础,区块链2.0应用包括了股票、债券、期货、贷款、抵押、产权、智能财产和智能合约,以太坊、超级账本等是区块链2.0的典型应用;
区块链3.0应用是超越货币和金融范围的泛行业去中心化应用,特别是在政府、医疗、科学、文化和艺术等领域的应用。
区块链应用于金融领域有着天生的绝对优势,用互联网语言来说,这是区块链的基因决定的。主观来看,金融机构在区块链应用的探索上意愿最强,需要新的技术来提高运营效率,降低成本来应对整个全球经济当前现状。客观来看,金融行业市场空间巨大,些许的进步就能带来巨大收益。金融行业是对安全性、稳定性要求极高的行业,如果区块链在金融领域应用得以验证,那么将会产生巨大的示范效应,迅速在其他行业推广。
在金融领域,除去数字货币应用,区块链也逐渐在跨境支付、供应链金融、保险、数字票据、资产证券化、银行征信等领域开始了应用。
该领域的痛点在于到账周期长、费用高、交易透明度低。以第三方支付公司为中心,完成支付流程中的记账、结算和清算,到账周期长,比如跨境支付到账周期在三天以上,费用较高。
区块链去中介化、交易公开透明和不可篡改的特点,没有第三方支付机构加入,缩短了支付周期、降低费用、增加了交易透明度。
该领域痛点在于三个风险问题。操作风险:由于系统中心化,一旦中心服务器出问题,整个市场瘫痪;市场风险:根据数据统计,在2016年,涉及金额达到数亿以上的风险事件就有七件,涉及多家银行;道德风险:市场上存在"一票多卖"、虚假商业汇票等事件。
区块链去中介化、系统稳定性、共识机制、不可篡改的特点,减少传统中心化系统中的操作风险、市场风险和道德风险。
该领域的痛点在于:数据缺乏共享,征信机构与用户信息不对称;正规市场化数据采集渠道有限,数据源争夺战耗费大量成本;数据隐私保护问题突出,传统技术架构难以满足新要求等。
在征信领域,区块链具有去中心化、去信任、时间戳、非对称加密和智能合约等特征,在技术层面保证了可以在有效保护数据隐私的基础上实现有限度、可管控的信用数据共享和验证。
这一领域业务痛点在于底层资产真假无法保证;参与主体多、操作环节多交易透明度低出现信息不对称等问题,造成风险难以把控。数据痛点在于各参与方之间流转效率不高、各方交易系统间资金清算和对账往往需要大量人力物力、资产回款方式有线上线下多种渠道,无法监控资产的真实情况,
区块链去中介化、共识机制、不可篡改的特点,增加数据流转效率,减少成本,实时监控资产的真实情况,保证交易链条各方机构对底层资产的信任问题。
这一领域的痛点在于融资周期长、费用高。以供应链核心企业系统为中心,第三方增信机构很难鉴定供应链上各种相关凭证的真伪,造成人工审核的时间长、融资费用高。
区块链去中介化、共识机制、不可篡改的特点,不需要第三方增信机构鉴定供应链上各种相关凭证的真实性,降低融资成本、减少融资的周期。
随着区块链技术的发展,未来关于个人的健康状况、事故记录等信息可能会上传至区块链中,使保险公司在客户投保时可以更加及时、准确地获得风险信息,从而降低核保成本、提升效率。区块链的共享透明特点降低了信息不对称,还可降低逆向选择风险;而其历史可追踪的特点,则有利于减少道德风险,进而降低保险的管理难度和管理成本。
医疗领域,区块链能利用自己的匿名性、去中心化等特征保护病人隐私。电子健康病例(EHR)、DNA钱包、药品防伪等都是区块链技术可能的应用领域。
物联网是一个非常宽泛的概念,如果将通信、能源管理、供应链管理、共享经济等涵盖在内,区块链技术的物联网应用将成为一个非常重要的应用领域。
现代企业的供应链不断延长,出现零碎化、复杂化、地理分散化等特点,给供应链管理带来了很大的挑战。核心企业对于供应链的掌控能力有限,同时对假冒商品的追溯和防范也存在很大的难度。作为一种分布式账本技术,区块链能够确保透明度和安全性,也显示出了解决当前供应链所存在问题的潜力。
共享经济是“去中心化”的典型例子。如Airbnb对接了有闲置房屋或者床位的房东和租房者,Uber、滴滴对接了闲置的汽车和乘客,摩拜、ofo提供的共享单车,等等。但共享经济始终面临的一大问题便是信用缺失。区块链技术可以很好的解决这个问题,区块链去中介化、共识机制、不可篡改的特点能有效解决人与人之间信任基础薄弱、个人信用体系不健全等阻碍共享经济发展的因素。
分布式能源的发展带来的一个问题是微电网的管理以及与现有的中央电网之间如何平衡。区块链具有分布式账本和智能化的合约体系功能,能够将能源流、资金流和信息流有效地衔接,成为能源互联网落地的技术保障。
除了上述提到的三大应用场景,区块链技术在物联网领域还可应用于充电桩共享、工业互联网、智能家居等领域。
互联网流行以来,数字音乐、数字图书、数字视频、数字游戏等逐渐成为了主流。知识经济的兴起使得知识产权成为市场竞争的核心要素。但当下的互联网生态里知识产权侵权现象严重,数字资产的版权保护成为了行业痛点。
区块链去中介化、共识机制、不可篡改的特点,利用区块链技术,能将文化娱乐价值链的各个环节进行有效整合、加速流通,缩短价值创造周期;同时,可实现数字内容的价值转移,并保证转移过程的可信、可审计和透明,有效预防盗版等行为。
在公共服务、教育、慈善公益等领域,档案管理、身份(资质)认证、公众信任等问题都是客观存在的,传统方式是依靠具备公信力的第三方作信用背书,但造假、缺失等问题依然存在。区块链技术能够保证所有数据的完整性、永久性和不可更改性,因而可以有效解决这些行业在存证、追踪、关联、回溯等方面的难点和痛点。
第一,一个好的区块链技术应用场景一定会涉及到多个信任主体,大家需要有去信任中介的方式来合作。
第二,一定是主体之间有比较强的合作关系,这是商业的需要。
第三,目前的区块链技术还只能用于中低频交易,是否可以满足交易需求。
第四,商业模式一定要完备、可持续。
智能合约是由事件驱动的、具有状态的、运行在一个复制的、分享的账本之上的、且能够保管账本上资产的程序。
在区块链社会里,大家共同维护一个区块链账本,所有交易数据无法篡改、不可伪造,还能减少人工对账的出错概率和人力成本;随着智能合约普及,我们也会变得更加佛系。面对潜在的纠纷,无需自己出马,一切代码说了算。
假设你借了一大笔钱给亲戚,虽然打了白纸黑字的借条,但催款的时候,如果对方有一种坚持不要脸的精神,而你也没有撕破脸、或者把对方告上法庭的勇气,你就拿不回本属于自己的钱。智能合约也许是解决办法之一,当然前提是双方把借款金额、还款时间、对方绑定银行卡信息等打包进合约中。到了约定还款日,借款自动划到你的账户里。
最后就是对区块链的总结,作为一种新兴的技术模型,我们应该保持冷静的态度来应对,目前,除了比特币之外,其它的落地应用还不是非常的多,但是,风险和机会都是相对的,所以,辩证的看待才是最佳的方式。
目前区块链底层协议的成熟度和稳定性都还有很大欠缺,这也给优秀的技术团队提供了更大的发展空间。长期来看,掌握底层核心技术研发及优化能力的团队更有机会成长为底层技术和协议开发的平台公司,基于对性能和安全性及应用场景的不同需求开发公有链或联盟链,然后上面生长嫁接出很多不同行业的应用。