学习
实践
活动
工具
TVP
写文章

区块链技术指南——比特币项目导读

我是沉官官,励志做一名最骚的宽客

一、比特币简介

比特币是基于密码学、计算机科学和经济学博弈等综合学科结合的一种数字货币,也是历史上首个经过大规模长时间运作检验的加密数字货币系统。

在2008年10月31日,中本聪发布比特币白皮书:《Bitcoin:A Peer-to-Peer Electronic Cash System 比特币:一种点对点的电子现金系统》。

在2009年1月3日,中本聪在位于芬兰赫尔基辛的一个小型服务器上挖出了第一批50个比特币,并记录下当天泰晤士报的头版标题:The Time 03/Jan/2009 Chancellor on brink of second bailout for banks.

二、挖矿

1、原理与过程:

数字货币挖矿与传统意义上的挖矿不同,比特币的挖矿是指参与维护比特币网络的节点,通过协助生成新区块来获取一定量的比特币奖励。当用户发布交易后,需要有人将交易进行确认,然后写到区块链中,形成新的区块,比特币网络通过“挖矿”的方式决定由谁来完成这件事。

当一个交易发生时,参与者根据上一个区块的hash值,10分钟内的验证过的交易信息,再加上自己的一个随机数,让新区块的hash值小于比特币网络中给定的一个数。接下来,系统每个两周(即经过2016个区块,24*60/10*14)会根据上一周期挖矿时间来调整挖矿难度(通过调整限制数的大小),来调节生成区块的时间稳定在10分钟左右。

2、如何看待挖矿

在早期,有不少人通过挖矿囤积了不少比特币,但是那时候的比特币相对于现在价格低很多,所以很多人挖到的比特币并没有好好保存,加上黑客的盗取,因此目前是有大量比特币是永久丢失的。而随着比特币价格暴涨,矿机价格也应声上涨,当前参与挖矿的算力实在过于庞大,获得比特币的收益已经快抵不上电费的成本了。因此,挖矿的收益、成本、数量等相关因素一直处于一种动态平衡中。

三、参与工具

1、客户端

客户端分为完整客户端、轻量级客户端和在线客户端三种,其中完整客户端可以存储所有的交易历史记录,功能最为完备;轻量级的客户端不保存交易副本,交易需要向别人查询;在线客户端通过网页模式来浏览第三方服务器提供的服务。

2、钱包

钱包分为冷钱包和热钱包,冷钱包即为离线钱包,可不联网,热钱包需联网,以交易所钱包为主。不同于传统的互联网钱包,它不会包含某一种资产或者某一种代币,而是一个密钥管理器(包括公钥和私钥),其中公钥用来生成地址,私钥在用户交易时用于签名,从而证明拥有该交易的输出权,其交易信息并不存储在钱包内,而是存储在区块链中。

3、矿机

早期的时候使用CPU即可挖矿,随着全网算力提高,挖矿难度提升,一些专为“挖矿”设计的硬件硬件出现了,包括基于GPU和ASIC的芯片。

4、脚本

是指在交易发生时,输入的解锁脚本和输出的锁定脚本进行执行,检验交易的合法性。

四、共识机制

目前主流的共识机制有四种,包括Pow(工作量证明)、Pos(权益证明)、Dpos(委托权益证明)、PBFT(实用拜占庭容错),比特币区块链系统采用了Proof of Work(Pow)的机制来实现共识,Proof of系列中比较出名的一致性协议就是Pow和Pos,都是通过经济惩罚来限制恶意参与。

1、Pow(工作量证明)

工作量证明,通过计算来猜测一个数值(nonce),来解决规定的hash(来源于hashcash),这些hash问题具有不可逆的特点,因此,目前除了暴力计算外,还没有有效的算法进行解决。保证在一段时间内,系统中只能出现少数合法提案。这些少量的合法提案会在网络中进行广播,收到的用户进行验证后会基于它认为的最长链上继续进行难题的计算。这个过程中,系统可能会出现Fork(分叉),但最终会有一条链成为最长的链,当某一个节点掌握的算力超过全网一半时,从概率上就能控制网络中链的走向,这就是所谓的51%算力攻击。如果有人恶意攻击,需要付出大量的经济成本,毕竟51%的算力不是这么好掌握的,而且从人性上讲,越是掌握大量算力的人,越是想维护整个生态的和谐发展,否则生态破坏了,付出的成本也就付诸东流了。

2、Pos(权益证明)

权益证明,类似现实中的股东机制,拥有股份越多的人越容易获得记账权。在交易中,通过保证金(代币、资产、名声等具备价值属性等物品即可)来对赌一个合法的块成为新的区块,收益为抵押资本的利息和交易服务费。恶意参与者将存在保证金被罚没的风险,即损失经济利益。

Pos试图解决Pow的大量资源浪费问题,但又面临后来玩家的机会减少的弊端。

五、闪电网络

闪电网络试图解决比特币交易网络交易性能低下的缺陷(全网每秒7笔交易),其主要思路是将大量交易放到比特币区块链之外进行。

1、RSMC(Recoverable Sequence Maturity Contract)

中文译为“可撤销的顺序成熟度合同”,类似准备金机制。

假设双方之间存在一个“微支付通道”(资金池),双方都预存一部分资金到“微支付通道”里,之后每笔交易,就对交易后的资金分配方案共同进行确认,同时签字作废旧的版本,当需要体现时,将最终交易结果写到区块链网络中,被最终确认,任何一个版本的方案都需要经过双方的签名认证才合法。提现需要提供双方都签名过的资金分配方案,在一定时间内,如果另外一方提出证明表明这个方案其实之前被作废了(非最新的交易结果),则资金罚没给质疑成功方,以确保没人会拿旧的交易结果去提现,即使双方确认了某次提现,首先提出提现的一方的资金到账时间会晚于对方,这就保证大家尽量会选择在链下完成交易。

2、HTLC(Hashed Timelock Contract)

中文译为“哈希的带时钟的合约”,也就是限时转账。

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

六、侧链

允许资产在比特币区块链和其他链之间进行交互,降低核心的区块链上的交易次数。通过简单地复用现有比特币的方式,实现比特币和其他账簿资产在多个区块链间的转移。

七、比特币原理与设计

1、原理

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

比特币通过区块链网络提供一个公共可见的“账本”,用来记录发生过的交易的历史信息,每次发生交易,用户需要将新的交易记录写到比特币区块链网络中,等待网络确认后即可认为交易完成。每笔交易包括一些输入和一些输出,未经使用的交易输出(Unspent Transaction Outputs,UTXO)可以被新的交易引用作为合法的输入,对于每一笔交易,转账方需要进行签名确认,并且总输入不能小于总输出。

2、账户/地址

比特币的账户地址其实就是用户公钥经过一系列hash(HASH160,或者进行SHA256,然后进行RIPEMD160)及编码运算生成后的160位(20字节)的字符串。账户采用了非对称的加密算法,用户自己保留私钥,对他发出的交易进行签名确认,并公开公钥。账户并非直接是公钥,而是hash后的值,避免公钥过早暴露导致反解私钥。

3、交易

交易发起包含的信息经网络中节点检查通过后,就可以在网络中进行广播。

一条交易可能包含以下信息:

●付款人地址:合约的地址、公钥经过SHA256和RIPEMD160两次hash,得到160位hash字符串。

●付款人对交易的签字确认:确保交易内容不被篡改。

●付款人资金的来源交易ID:从哪个交易的输出作为本次交易的输入

●交易的金额:多少钱,跟输入的差额为交易的服务费

●收款人地址:合法的地址

●收款人公钥

●时间戳:交易合适生效。

当交易发生后,网络节点进行检查,检查交易是否已经通过、交易是否合法、交易的输入之和是否大于输出之和。

4、脚本

脚本包括输出脚本(scriptPubkey)和认领脚本(scriptSig)

输出脚本一般由付款方对交易设置锁定,用来对能动用这笔交易输出(例如要花费交易的输出)的对象(收款方)进行权限控制。包括P2PKH和P2SH两种类型,其中P2PKH允许用户将比特币发送到一个或多个典型的比特币地址上(证明拥有该公钥),前导字节一般为0x00。P2SH为支付者创建一个输出脚本,里面包含另一个脚本(认领脚本)的哈希,一般用于需要多人签名的场景,前导字节一般为0x05。

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

5、设计理念

比特币的设计基于经济博弈原理,在一个开放的网络中,无法通过技术手段保证每个人都是合作的,但可以通过经济博弈手段来让合作者得到利益,让非合作者遭受损失或风险。

比特币网络需要所有试图参与者(矿工)都首先付出挖矿的代价,进行算力消耗,越想拿到新区块的决定权,意味着抵押的算力越多。一旦失败,这些算力都会被没收掉,成为沉没成本。当网络中存在众多参与者时,个体试图拿到新区块决定权要付出的算力成本是巨大的,意味着进行一次作恶付出的代价已经超过可能带来的好处。

比特币网络类似生物学的负反馈调节,比特币网络中的矿工越多,系统就越稳定,比特币价值越高,但挖矿难度会越大。因此比特币价格理论上应该稳定在一个合理的值域,这个价格乘以挖矿概率应该恰好达到矿工收益预期。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180730G19YIJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券