区块链技术原理介绍

发布时间 : 2024-04-18  作者: 产品中心

  2008年,一位化名中本聪的人在加密技术邮件列表中发表比特币白皮书《比特币:一种点对点的电子现金系统》,论文详细描述了如何创建一套去中心化的电子交易体系,这套体系主要解决了通过技术方法实现交易主体间共识机制建立的问题,简单来说,就是不经过任何中介机构,实现将一笔钱支付给另外一个人。

  2014年以后,区块链才作为比特币背后的技术被挖掘出来,受到关注。那么什么是区块链?先来看一下定义:

  区块链是一种利用块链式数据结构来验证与存储数据、分布式节点共识算法来生成和更新数据、密码学方式保证数据传输和访问的安全、由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式 。

  顾名思义,区块链是由区块和链组成的,区块负责承载数据(对于比特币而言就是交易数据),链将区块链接起来,而且这种链接并非简单的链接,对于每个区块而言,他在链条上的前区块的哈希值,会作为该区块内容的组成部分,这样做能提高整个链条的防篡改能力。

  b) 高度自治,无须中介机构信用背书,所有节点能够在去信任的环境自由安全的交换数据;

  a) 业务开展需要跨主体协作,在业务参与方之间相对独立平等的跨主体业务协作的场景下,利用区块链的共有数据、 防篡改、分布式和数字化合约的特点,能够把一些以往需要在业务层面协调解决的问题,放到技术层面来解决,使得问题的解决过程更高效、灵活以及更具客观性。

  b) 需要参与方之间建立低成本信任,区块链结合了密码学哈希和数字签名,以区块链条的形式将数据的变更历史按时间先后链在一起,并通过共识协议使得参与的各方都共同拥有这些数据。

  c) 存在长交易、长周期链条,区块链从技术上保证整个长交易、长周期链条的各参与主体身份真实,数据可信,实现信用的多级传递,促进业务链条扁平化,提升业务效率 。

  对于京东而言,区块链可适用但不仅限于以下场景:商品防伪追溯、贸易融资、金融领域等。例如目前已上线的京东智臻链防伪追溯平台,可实现品牌商、渠道商、零售商、消费者、监管部门、第三方检验测试的机构之间的信任共享,全方面提升品牌、效率、体验、监管和供应链整体收益。将商品原材料过程、生产的全部过程、流通过程、营销过程的信息进行整合并写入区块链,实现精细到一物一码的全流程正品追溯。

  a) 公有链,完全去中心化的、不受任何机构控制的区块链。世界上任何个体或者团体都可以发送交易,且交易能轻松的获得该区块链的有效确认。

  b) 联盟链,由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定,其他接入节点可以参与交易,但不过问记账过程,其他任何人能够最终靠该区块链开放的API进行限定查询。

  c) 私有链,是指存在一定的中心化控制的区块链。仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限。

  自2008年比特币问世以来,区块链也随之一起成长,到目前为止,大概分为以下几个阶段:

  a) 区块链1.0,中本聪发布比特币论文,以比特币为代表的加密货币百花齐放。

  b) 区块链2.0,以智能合约为依托的以太坊作为典型代表,也就是可编程区块链。

  因比特币是目前为止基于区块链技术构建的最成功应用,以下将以比特币为例,对区块链的基本技术原理作简单介绍。

  比特币使用UTXO模型来记录交易,有别于传统记账模型(例如银行卡)记录每个账户余额,比特币并不直接记录账户的剩余金额,而是通过记录全网所有交易,通过交易推算出每个账户的余额。UTXO模型定义如下:

  (Unspent Transaction Outputs,未使用过的交易输出),比特币不记录余额,每次发生交易,实际是将交易记录写到比特币网络账本中,待网络确认后即可认为交易完成。所以比特币网络其实就是一个公共记账本,记录了全网所有交易。

  那么什么是比特币的钱包地址呢?在比特币中,收款地址实际上由非对称加密算法生成的公钥和私钥组成。通过非对称加密算法生成一对公钥和私钥后,公钥经过一系列 Hash(HASH160,或先进行 SHA256,接着进行 RIPEMD160)及编码运算后生成的 160 位(20 字节)的字符串,作为比特币收款地址。私钥由用户自己保存,用于证明对公钥的合法拥有,失去私钥,等同于失去公钥对应地址上的所有比特币。一个自然人能拥有不限制数量的收款地址,其掌握的私钥,是唯一证明其对该收款地址资产的合法性证明,而验证过程是基于数学原理之上,和自然人的社会身份无任何关联,这也是比特币匿名的原理所在。

  有了账户以后就能开始交易,基础知识介绍中有提到过,比特币的交易,会存放在区块中,一个区块是由若干笔交易组成,每一笔交易主要包含以下信息:

  a) 交易参考的版本,通过版本号字段,能明确本次交易参照的规则,节点按照对应规则校验交易有效性。

  b) 一个或多个输入,每个输入包括了引用交易的哈希及索引,同时也包含了解锁脚本,以证明对其使用的合法性。

  c) 一个或多个输出,每个输出包含了输出的金额,以及锁定脚本,用来限定谁能使用该笔交易输出。

  当一笔交易信息按照以上信息组织好以后,进行全网广播,矿工接收到交易信息后,将其记录到区块中,在记录前,矿工需要验证以下问题:

  c) 地址是不是合乎法律,发起交易者是否是输入地址的合法拥有者,是否是UTXO?

  a、b很容易验证,如何验证c?这时要使用到交易中,输入信息中的解锁脚本和输出信息中的锁定脚本。假设交易为A转账给B,则交易由A发起,A需要提供之前其他人向A转账且未使用过的交易(UTXO),同时提供解锁脚本,证明其对这一笔交易输出的使用合法性。而输出为B,包括B的收款地址(能够理解为B的公钥),以及附上一个锁定脚本,用来限定这一笔交易日后只能被B使用。以上说的解锁脚本和锁定脚本,其实就是一种类Forth脚本语言,是一种非图灵完备堆栈的执行语言,矿工收到交易后,取出脚本执行,即可验证交易,过程大概如下:

  如果最终结果为true,说明交易合法,矿工将其加入区块中,广播后,其他节点将该区块同步到自身链条中,交易完成。

  这就完了吗?当然没有,可能有人会问,矿工不止一个,大家都在广播区块,这样下去,岂不是乱套了,所以还有一个很重要的概念,那就是工作量证明。在区块中,有个随机值,矿工在全网广播前,需要做如下计算:Hash(区块+随机数) 目标哈希,由于哈希计算不能逆向计算,所以矿工需要反复更换随机数,使得等式成立,这一过程就是常说的挖矿。比特币网络中通常10分钟左右产生一个区块,系统每2016个区块(大概是两周)会自动调整难度(即目标哈希),使得整个网络的区块产生速度控制在10分钟左右。

  第一个计算出随机数的矿工,会得到全网的认可并将其区块加入到区块链的末尾,作为奖励,比特币规定,每个区块记录的第一笔交易为系统向挖矿者收款地址的转账,奖励初始值为50个,每四年减半,比特币总量2100万个即由据此计算而来。挖矿是非常耗费资源的操作,记账成功后的比特币奖励,使得矿工有动力投入资源参与记账,也使得恶意记账的动力减少,因为恶意记账的成本,其实要远大于诚信挖矿(记账)带来的收入。当所有比特币被挖出后,每笔交易的输入减去输出,剩余部分称为交易费,交易费将替代奖励,维持系统正常运转。

  不像传统软件的升级,一个分布式共识系统的升级是十分艰难的,需要协调好所有的系统参与者。每次升级可能会伴随着区块链的共识规则改变,这会导致整个网络中升级了软件的节点与未升级软件的节点运行在不同的规则下,于是分叉就产生了。比特币中分叉通常分为硬分叉和软分叉。

  a)硬分叉,如果区块链软件的共识规则被改变,并且这种规则改变无法向前兼容,旧节点无法认可新节点产生的区块,即为硬分叉。这时候旧节点会拒绝新规则的区块,于是新节点和旧节点会开始在不同的区块链上运行(挖矿、交易、验证等),由于新旧节点可能长期存在,这种分叉也有一定可能会长期持续下去。

  b)软分叉,如果区块链的共识规则改变后,这种改变是向前兼容的,旧节点可以兼容新节点产生的区块,即为软分叉。软分叉通常刚开始并不可能会产生两条区块链,因为新规则下产生的块会被旧节点接受,旧节点只是没办法识别新规则的真实意义。所以新旧节点仍然处于同一条区块链上,对总系统的影响也就较小。

  以上全文从技术视角对区块链的基础原理做了简单介绍,想必大家也对区块链有了些许技术上的认知,其实区块链并不是一项新技术,而是现存技术的组合式创新,借鉴了来自数字货币、密码学、博弈论、分布式系统、控制论等多个领域的技术成果,可谓博采众家之长于一身。随着关注度的提升,慢慢的变多的使用场景会被发掘,届时各行各业都会从中收益。返回搜狐,查看更加多