资讯专栏INFORMATION COLUMN

区块链学习之比特币(六)

xingpingz / 3821人阅读

摘要:侧链侧链协议允许资产在比特币区块链和其他区块链之间互转。实现了比特币区块链的扩展证明在比特币系统中验证交易时,涉及交易合法性检查双重花费检查脚本检查等。

比特币项目简介

比特币是基于区块链技术的一种数字货币实现,比特币网络是历史上首个经过大规模、长时间检查的数字货币系统

比特币网络在功能上具有如下特点:

去中心化: 意味着没有任何独立个体可以对网络中的交易进行破坏,任何交易请求都需要大多数参与者的共识。

匿名性: 比特币网络中账户地址是匿名的,无法从交易信息关联到具体的个体,但这也意味着很难进行审计

通胀预防: 比特币的发行需要通过挖矿计算来进行,发行量每四年减半,总量上限为2100万枚,无法被超发。

原理和设计

比特币网络是一个分布式的点对点网络,网络中的矿工通过“挖矿”来完成对交易记录的记账过程,维护网络的正常运行。

区块链网络提供一个公共可见的记账本,该记账本并非记录每个账户的余额,而是用来记录发生过得交易的历史信息。该设计可以避免重放攻击,即某个合法交易被多次重新发送造成攻击。

基本交易过程

基本交易过程: 每次发生交易,用户需要将新交易记录写到比特币区块链网络中,等网络确认后即可认为交易完成。每个交易包括一些输入和一些输出,未经使用的交易的输出(Unspent Transaction Outputs,UTXO)可以被新的交易引用作为合法的输入,被使用过的交易的输出(Spent Transaction Outputs,STO)则无法被引用作为合法输入。一笔合法的交易,即引用某些已存在交易的UTXO作为交易的输入,并生成新的输出的过程

在交易过程中,转账方需要通过签名脚本来证明自己是UTXO的合法使用者,并且指定输出脚本来限制未来本交易的使用者(收款方)

注意: 刚放进网络中的交易(深度为0)并非是实时得到确认的。进入网络中的交易存在着被推翻的可能性,一般要再生成几个新的区块(深度大于0)才认为该交易被确认。

重要概念

账户/地址
比特币采用了非对称的加密算法,用户自己保留私钥,对自己发出的交易进行签名确认,并公开私钥。
比特币的账户地址其实就是用户公钥经过一系列Hash及编码运算后生成的160位(20字节)的字符串。

交易
交易是完成比特币功能的核心概念

交易脚本
脚本是保障交易完成(主要用于检验交易是否合法)的核心机制,当所依附的交易发生时被触发。通过脚本机制而非写死交易过程,比特币网络实现了一定的可扩展性。比特币脚本语言是一种非图灵完备的语言,类似Forth语言。

一般每个交易都会包括:

输出脚本: 一般由付款方对交易设置锁定,用来对能动用这笔交易输出(例如,要花费交易的输出)的对象(收款方)进行权限控制,例如限制必须是某个公钥的拥有者才能花费这笔交易。

认领脚本: 用来证明自己可以满足交易输出脚本的锁定条件,即对某个交易的输出(比特币)的拥有权。

区块
比特币区块由区块头和区块体组成,要对区块链的完整性进行检查,只需要检查各个区块头信息即可,无需获取具体的交易内容,这也是简单交易验证的基本原理。

创新设计

比特币在设计上的创新点主要体现在避免作恶、负反馈调节和共识机制三个方面。

避免作恶
避免作恶基于经济博弈原理。通过经济博弈来让合作者得到利益,让非合作者遭受损失和风险。

负反馈调节
比特币网络中矿工越多,系统就越稳定,比特币价值就越高,但挖到矿的概率会降低。反之,网络中矿工减少,会让系统更容易被攻击,比特币价值降低,但挖到矿的概率会提高。

共识机制
传统共识问题往往是考虑在一个相对封闭的分布式系统中,允许同时存在正常节点、故障节点如何快速达成一致

比特币提出了基于Proof of Work(Pow)的共识机制:基于概率、随时间逐步增强确认的共识。现有达成的结果在理论上可能被推翻,只是攻击者要付出的代价随时间而指数级上升,被推翻的可能性随之指数级下降。
可用性的提升:考虑到Internet的尺度,达成共识的时间相对比较长,因此按照区块(一组交易)来进行阶段性的确认(快照),从而提高网络整体的可用性。
减少提案的个数:限制网络中共识的噪声,通过大量的Hash计算和少数的合法结果来限制合法提案的个数,进一步提高网络中共识的稳定性。

挖矿 基本原理

挖矿是参与维护比特币网络的节点,通过协助生成新区块来获取一定量新增比特币的过程。

挖矿过程

具体过程: 参与者综合上一个区块的Hash值,上一个区块生成之后的新的验证过得交易内容,再加上自己猜测的一个随机数X,一起打包到一个候选新区块,让新区块的Hash值小于比特币网络中给定的一个数。

系统每隔两周会根据上一周期的挖矿时间来调整挖矿难度(通过调整限制数的大小),调节生成区块的时间稳定在10分钟左右。为了避免震荡,每次调整的最大幅度为4倍。

如何看待挖矿

矿工个体达到全网1/3的算力,比特币网络就存在被破坏的风险了;达到1/2的算力,从概率上就掌控了整个网络了。但是要实现这么大的算力,将需要付出巨大的经济成本。除了尽量避免将算力放到同一个组织手里,没太好的办法,这是目前Pow机制自身造成的。

共识机制

比特币区块链采用 PoW 的机制来实现共识,对PoW试图改进衍生了PoS和DPoS, 原理仍然为通过经济惩罚来限制恶意参与。

工作量证明

工作量证明(Pow)通过计算来猜测一个数值(nonce),使得拼凑上交易数据后内容的Hash值满足规定的上线。由于Hash难题在目前计算模型下需要大量的计算,这就保证在一段时间内系统中只能出现少数合法提案。反过来,能够提出合提案也证明提案者确实付出了一定的工作量。

权益证明

权益证明:类似于现实生活中的股东机制,拥有股份越多的人越容易获取记账权(同时更倾向于维护网络的正常工作)

典型过程:通过保证金(代币、资产、名声等具备价值属性的物品即可)来对赌一个合法的块成为新的区块,收益为抵押资本的利息和交易服务费。提供证明的保证金(例如通过转账货币记录)越多,则获得记账权的概率就越大。合法记账者可以获得收益。

PoS试图解决在PoW中大量资源被浪费的缺点,受到了广泛的关注。恶意参与者将存在保证金被罚没的风险,即损失经济利益。

一般情况下,对于PoS来说,需要掌握超过全网1/3的资源,才有可能左右最终的结果。

闪电网络

比特币的一大缺点为交易性能:全网每秒7笔左右的交易速度,远低于传统金融交易系统;同时,等待6个区块的可信确认将导致约一个小时的最终确认时间。为了提升性能,提出了闪电网络等创新设计

闪电网络: 将大量交易放到比特币区块链之外进行,只把关键环节放到 链上进行确认。

闪电网络主要通过引入智能合约的思想来完善链下的交易渠道。核心的思想主要有两个:

RSMC: 解决链下交易的确认问题

HTLC: 解决支付通道的问题

RSMC

RSMC 即 “可撤销的顺序成熟度合同”。主要原理类似于资金池机制。

基本过程: 首先假定双方之间存在一个“微支付通道”(资金池)。交易双方先预存一部分资金到“微支付通道”里,初始情况下双方的分配方案等于预存的金额。每次发生交易,需要对交易后产生资金的分配结果共同进行确认,同时签字把旧版本的分配方案作废掉。任何一方需要提现时,可以将他手里双方签署过得交易结果写到区块链网络中,从而被确认。

优点: RSMC整个过程只有提现时才需要通过区块链,可以实现大量中间交易发生在链外。

HTLC

微支付通道是通过HTLC来实现的,中文意思是“哈希的带时钟的合约”。这其实就是限时转账

基本过程:通过智能合约,双方约定转账方先冻结一笔钱,并提供一个哈希值,如果在一定时间内有人能提出以个字符串,使得它的哈希后的值与已知值匹配(实际上意味着转账方授权了接收方来提现),则这笔钱转给接收方

闪电网络的概念

RSMC 保障了两个人之间的直接交易可以在链下完成,HTLC保障了任意两个人之间转账都可以通过一条“支付”通道来完成。闪电网络整合者两种机制,就可以实现任意两个人之间的交易都在链下完成。
在整个交易中,智能合约起到了中介的重要角色,而区块链网络则确保最终的交易结果被确认。

侧链

侧链协议:允许资产在比特币区块链和其他区块链之间互转。简单来说,以比特币区块链作为主链,其他区块链作为侧链,二者通过双向挂钩,实现比特币从主链转移到侧链进行流通。(实现了比特币区块链的扩展)

SPV 证明

在比特币系统中验证交易时,涉及交易合法性检查、双重花费检查、脚本检查等。由于验证过程需要完整的UTXO记录,通常要由运行着完整功能几点的矿工来完成。而很多时候用户只关心与自己相关的那些交易,只希望能够知道交易是否合法、是否已在区块链中存在了足够的时间(即获得足够的去人),而不需要自己成为完整节点做出完整性验证。

简单支付验证(Simplified Payment Verfication, SPV): 能够以较小的代价判断某个支付交易是否已经被验证过(存在于区块链中),以及得到了多少算力保护。SPV 客户端只需要下载所有区块的去块头,进行简单的定位和计算工作,就可以验证结论。

侧链协议中,用SPV来证明一个动作却是已经在区块链中发生过,称为SPV证明。SPV证明包括两部分内容:

一组区块头的列表,表示工作量证明

一个特定输出确实存在于某个区块中的密码学证明

双向挂钩

侧链协议的设计难点在于如何让资产在主链和侧链之间安全流转。

具体来说,协议采用双向挂钩机制实现比特币向侧链的转移和返回。主链和侧链需要对对方的特定交易做SPV验证。过程如下:

热点问题 设计中的权衡

比特币的设计目标在于支持一套安全、开放、分布式的数字货币系统。围绕着一目标,比特币协议的设计中很多地方都体现了权衡的思想:

区块容量: 大容量可带来更高的交易吞吐率,但会增加挖矿成本,带来中心化的风险,同时增大存储的代价。权衡设计当前的区块容量上限设定为1MB。

出块间隔时间: 更短的出块间隔时间可以缩短交易确认时间,但也可能导致分叉增多,降低网络可用性。

脚本支持程度: 更强大的脚本指令集可以带来更多的灵活性,但也会引入更多的安全风险

分叉

当需要修复漏洞、扩展功能或调整结构时,比特币需要在全网的配合下进行升级。升级通常涉及更改交易的数据结构或区块的数据结构。

分布在全球的节点不可能同时完成升级来遵循新的协议,因此升级时可能出现分叉。把网络中升级的几点称为新几点,未升级的节点称为旧节点,根据新旧节点相互兼容性上的区别,可分为软分叉硬分叉

软分叉: 如果旧节点仍然能够验证接受新节点产生的交易和区块,则称为软分叉。

硬分叉: 如果旧节点不能接受新节点产生的交易和区块,则称为硬分叉。

硬分叉升级区块链协议的难度大于软分叉,但软分叉能做的事情有限,大的改动只能通过硬分叉来完成。

交易延展性

交易延展性:是比特币的一个设计缺陷,是指当交易发起者对交易签名之后,交易ID仍然可能被改变。

延展性攻击会带来一些问题:

在原始交易未被确认之前广播ID改变的交易可能误导相关方对交易状态的判断,甚至发动拒绝服务攻击

多重签名场景下:一个签名者有能力改变交易ID,会给其他签名者的资产带来潜在风险

阻碍闪电网络等比特币扩展方案的实施

扩容之争

比特币区块容量现在在1MB以下,交易量已不能满足交易需求。比特币的一系列的方案提出:链上扩容提议、用侧链或闪电网络扩展比特币等

扩容之争主要有两派提出的方案:

核心开发者的 Bitcoin Core 团队主推的隔离见证方案(SegWit): 将交易中的签名部分从交易的输入中隔离出来,放到交易末尾的被称为见证的字段当中。同时,将区块容量上限理论上提高到4MB

Bitcoin Unlimited 团队推出的方案(BU): 扩展比特币客户端,使矿工可以自由配置他们想要生成和验证的区块容量

比特币的监管和追踪

比特币的匿名特性,使得其交易的监管变得十分困难。
不过通过分析大量公开可得的交易记录,有很大概率可以追踪到比特币的实际转移路线,甚至可以追踪到真实用户

相关工具 客户端

比特币客户端用于和比特币网络进行交互,同时也可以参与网络的维护。
客户端分为三种:

完整客户端: 存储所有的交易历史记录,功能完备

轻量级客户端: 不保存交易副本,交易需要向别人查询

在线客户端: 通过网页模式来浏览第三方服务器提供的服务

钱包

比特币钱包可以存储和保护用户的私钥,并提供查询比特币余额、收发比特币等功能。
根据私钥存储方式不同,钱包分为以下几种:

离线钱包: 离线存储私钥,也称为“冷钱包”,安全性相对较强,但无法直接发送交易,便利性差

本地钱包: 用本地设备存储私钥,可直接向比特币网络发送交易,易用性强,但本地设备存在被攻击风险

在线钱包:用钱包服务器存储经用户口令加密过得私钥,易用性强,但钱包服务器同样可能被攻击

多重签名钱包:由多方共同管理一个钱包地址,比如2 of 3 模式下,集合三位管理者中两位的私钥便可以发送交易

矿机

比特币矿机是专门为“挖矿”设计的硬件设备,目前主要包括基于GPU和ASIC芯片的专用矿机。

总结

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24126.html

相关文章

  • 区块链学习之区块链思想的诞生(一)

    摘要:区块链最早出现在比特币开元项目中。了不起的社会学实验比特币的诞生年化名中本聪的人发布比特币白皮书,并在年公开了实现代码比特币的意义和价值比特币首次真正从实践意义上实现了安全可靠的去中心化数字货币机制。 区块链最早出现在比特币开元项目中。比特币在诞生和发展过程中,借鉴了来自数字货币、密码学、博弈论、分布式系统、控制论等多个领域的技术成果,作为核心支撑结构的区块链技术大放异彩。 从实体货币...

    rozbo 评论0 收藏0
  • 区块链学习之核心技术概览(二)

    摘要:关键步骤完成对一批交易的共识新区块添加到区块链结构上,被大家认可,确保未来无法被篡改比特币的这种基于算力寻找串的共识机制称为工作量证明。 定义与原理 定义 维基上给出定义: 一种分布式数据库技术,通过维护数据块的链式结构,可以维持增长的、不可篡改的数据记录 基本原理 区块链包括三个概念: 交易: 一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录 区块: 记录一段时间内发生...

    zhangwang 评论0 收藏0
  • 区块链学习之以太坊(七)

    摘要:基于以太坊项目,以太坊团队目前运营了一个公开的区块链平台以太坊网络。主要特点以太坊区块链底层也是一个类似比特币网络的网络平台,智能合约运行在网络中的以太坊虚拟机里。以太坊采用交易作为执行操作的最小单位。 以太坊将比特币针对数字交易的功能进一步进行了拓展,面向更为复杂和灵活的应用场景,支持了智能合约这一重要特性。 以太坊项目简介 以太坊:项目最初的目标是打造以个智能合约的平台,该平台支持...

    xiongzenghui 评论0 收藏0
  • node调取区块链学习之以太坊(eth)主和代余额查询

    摘要:查询以太坊的主币可以直接公钥地址查询,使用其里面的方法。币种名称币种余额小数位以上的几个方法可以获取其代币信息。但是获取的余额同样是以以太坊最小单位为单位的数值,所以需要对其进行处理。 这段时间有幸能接触到区块链,这对于一个前端来说是一个全新的世界。同时,也特别感谢领导给我机会,能让我接触学习这方面的东西。以下是这段时间的学习总结,可能认识比较浅薄,但是觉得写出来也是对自己学习的一个交...

    qieangel2013 评论0 收藏0
  • 区块链学习之分布式系统核心问题(四)

    摘要:区块链系统首先是一个分布式系统,分布式系统的核心问题包括一致性共识一致性问题一致性问题是分布式领域最为基础也是最重要的问题。算法与算法问题是指分布式系统中存在故障,但不存在恶意节点的场景即可能消息丢失或重复,但无错误消息下的共识达成问题。 区块链系统首先是一个分布式系统,分布式系统的核心问题包括一致性、共识 一致性问题 一致性问题是分布式领域最为基础也是最重要的问题。如果分布式系统能实...

    Heier 评论0 收藏0

发表评论

0条评论

xingpingz

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<