比特币深层技术原理浅析

摘要: 这是一篇主要针对技术小白的文章。本文尽量使用通俗易懂但又不失要义的文字,带你深入剖析当前备受追捧的比特币背后的深层技术原理,最后会简要介绍一下业界市场的现状。

这是一篇主要针对技术小白的文章。本文尽量使用通俗易懂但又不失要义的文字,带你深入剖析当前备受追捧的比特币背后的深层技术原理,最后会简要介绍一下业界市场的现状。

目前加密货币这个圈子可简要分为币圈和链圈,币圈专注于投资炒币,而链圈专注于区块链(blockchain)技术的创新发展。虽然币圈是高回报的利益驱动,但也正是他们的天使资金推动了这个领域的蓬勃发展。本文将使用“加密货币”作为与比特币同类事物的统称,也有称做“电子货币”,中本聪(Satoshi Nakamoto)本人称比特币(Bitcoin)为“电子现金(Electronic Cash)”。

为什么应该关注比特币

近一年来,加密货币的价格加速飙升,屡创新高。无论是比特币(BTC)、以太币(ETH)、创新币(泛指区别于前者而有一些有意义的技术创新的加密币)、山寨币还是合约代币(通过智能合约 smart contract 创建的 tokens),基本都是暴涨的大趋势,而尤数比特币最为金贵!一方面它是加密货币的鼻祖;另一方面总量有限(2100万个);其三,挖矿难度极高(不亚于当年机械化的淘金热潮)。相比于楼市的高不可攀、股市的动荡,币价的持续高涨总是让人按捺不住,大批投资者纷纷涌入炒币的阵营。毕竟这种低投入高收益的机会千载难逢!

在这个新兴领域,加密币受到追捧并非仅仅因为炒作,还有其内在的动因。虽有泡沫,但一方面市场刚需在增加,另一方面更多的是对技术的认可、对未来的憧憬和期待。简单讲,加密货币的底层技术(区块链)将重构世界经济体系。而这种变革也将如同我国互联网的迅猛发展历程,脚步只会更快!这可以从各国政府、银行业在该技术领域上的投入力度、以及俄罗斯总统普京会见23岁的以太坊创始人(Vitalik Buterin)事件上窥见一斑。对我们普通民众来说,也将能够切身享受到区块链技术带来的便利。因此,尽早了解加密货币及区块链技术一定是有好处的。

比特币作为加密货币的鼻祖,其协议构建了历史上第一个具有[在互联网上进行点对点价值传输]能力的去中心化网络系统。它向世人展示了去中心化的力量:在没有第三方信任背书的前提下,仍可保证资金安全。它是一个没有国家担保的银行,但没人能抢走你的钱。同时也揭示了在互联网[信息高速公路]上架设[价值高速公路]的可能性。比特币的历史意义不言而喻,在业界拥有神圣的地位。而其协议中明晰的密码学逻辑、简单粗暴却又无懈可击的共识机制,是入门加密货币或区块链知识的首选对象。

就在圈内人士炒币、投资ICO、创造新链、渗透实体商业应用造福人类闹得如火如荼、不亦乐乎之时,可能圈外人士还一脸茫然、将信将疑的不知所措!比特币靠谱吗?是不是传销?微信支付宝不够吗?我们有法币还要比特币干嘛?比特币厉害在哪?它到底解决了什么问题?都是怎么做到的?去中心化有什么用?能吃吗?……带着这些问题,让老司机带你一步步揭开比特币的神秘面纱。

一、比特币是什么

1. 由来

2008年10月31日,中本聪通过一个密码学小组发送了一封邮件,首次公布了比特币白皮书《比特币:一个点对点电子现金系统》(Bitcoin: A Peer to Peer Electronic Cash System),提出了比特币网络。其特点如下(摘自量子链Qtum白皮书):

  • 防止双重支付;
  • 无铸币厂或其他信任方;
  • 参与者可匿名;
  • 通过工作量证明方式发行新币;
  • 基于工作量证明的新币发行过程中,也同时阻止了双重支付的发生。

在2009年1月3日,比特币的创始区块被挖出,并于2009年1月12日在第170个区块发生了第一笔转账交易(从中本聪到 Hal Finney),从此开启了其作为一种点对点的价值交换网络的蓬勃发展时代。比特币网络的价值从零开始,到今天已经成长为一个价值约600亿美金的点对点支付网络。

话说,比特币创始区块的币基参数提到了伦敦《泰晤士时报》的一则报道:

2009年1月3日,财政大臣拯救银行。

这被看成比特币发明的政治动机,同时也很好的证明了第一个区块的打包时间是在上述报道出来之后。

2. 解读

我们常说的比特币是指在比特币网络中产生并流转的加密货币。而比特币网络本质上是一个公开的分布式账本,也就是人手一本账,谁都可以查看并审核其他人有没有造假:有没有非法铸币、有没有谁把一笔钱同时花给几个人(双重支付问题,因为互联网上的信息是可以无限复制并发给任何人的,这也是历史上所有做电子现金的人首要解决的问题,但显然在此之前都失败了)等,只不过你可能只认识自己和与自己有支付往来的人,而不知道其他人是谁(匿名性),但这并不影响你审查造假,如果有,可以说不!如果有半数以上的人都说不(51%攻击/共识),那这个账会被丢弃,就像没有发生过,除非重来直到半数以上的人(其实审核过程是由运行比特币协议程序的网络节点自动完成)都同意。这是怎么做到的呢?请看下文。

二、去中心化

谈到分布式账本,得先谈谈去中心化。去中心化的概念并不新鲜,比如我们熟悉的电子邮箱,每个公司都可以搭建属于自己域名后缀的邮件服务器,而这些不同的邮件服务器之间可以互相收发邮件,假如我注册了域名叫 http://dog.com,然后搭建了邮件服务器并注册自己的邮箱叫 [email protected],该邮箱可以给 @http://qq.com 邮箱发邮件。那它有什么优势呢?如果我的 @http://dog.com 服务器挂掉了,不影响 @http://qq.com 邮箱与 @http://aliyun.com 邮箱发邮件。

可能你突然要问了,为什么 qq 和 aliyun 可以互发邮件,但微信不能跟支付宝互相聊天?这就是中心化的问题所在。微信和支付宝的聊天系统都是中心化的(与去中心化相反),他们技术上其实是可以做到互联互通的,但很显然,谁愿意把自己赖以生存的根基与人共享呢!大家或许都记得有那么几次微信突然用不了,说是机房的光缆被挖断了。这凸显了中心化的弊端。那么如果某一天支付宝机房也瘫痪了,你支付宝里的钱?(当然不会丢啦,有国家监管,大可放心)

但这些危机对于比特币网络来说,都不是问题。它没有一个中心化的公司或组织来控制这些服务器,每个人都可以选择运行你相信或认可的那个[支持比特币协议的]程序,这个程序运行时就是一个服务器或节点,它与成千上万的别人的比特币程序节点相连,它们互相平等,没有谁管理控制谁。这些节点共同维护比特币网络,部分节点的加入、退出、掉线都不会影响整个网络的健壮运行。除非全部同时掉线,显然这是不可能的。

三、交易与账本

有了去中心化的分布式的运行比特币协议的节点,前文提到分布式账本,怎么个分布式?其实就是每个节点复制账本的一个备份,同时这个账本里的账单也由这些节点共同记录完成。那...怎么记?

  • 导读

    节点运行程序只是帮人完成重复劳动,它运行的每一步都体现了设计它的人的意图,这包括记账。但是如果记账方式采用人们的传统方式,你翻到这页写一笔,我翻到那页写一笔,这么多人同时进行,显然一下就乱套了。

1. UTXO

我们不妨先来分析一下,对于一个货币支付系统,到底要记什么?无非就是谁给谁钱了(转账),或者谁的钱少了,少的去哪了,而谁的钱又多了(还是转账,只不过记录方式不同)。这个“谁”都可以用一个账户id来表示,前者可以记录为从一个账户id_a到另一个账户id_b的转账明细,后者可以记录为给账户id_x减去n个币,同时给账户id_y加上n个币。这两种方式正是当前比特币和以太坊的两种不同记账方式。前者称为UTXO(Unspend Transaction Output)模型:未花费的交易输出;后者称为账户(Account)模型。比特币记录的便是交易明细,其中收款者 id 被称为地址。我们可以把一笔钱简称为一个UTXO。

2. 区块链

知道了记什么,那么还是那个问题:怎么记?我们并没有更好的办法,仍然只能一页页的来,而且一个个的来。也就是说,我们不但不能改动前面的账本页,在一段时间内只能新启一页,而且还得每个交易都排着队一个个的审核确认。我们把这个“页”构造为数据“区块(block)”,并把区块按页码顺序“链接(chain)”起来,即构成了账本“区块链(blockchain)”(听上去倒是挺简单的嘛!——我都说了简单粗暴)。怎么链接?纸页可以用线串,难不成...?嗯,还真有:我们叫它哈希(hash)指针。

哈希指针是给前一个数据区块生成哈希值,然后存储在后一个新产生区块的头部。它不仅可以唯一标识前一个块是谁,而且还可以检测前一个块是否被篡改:如果前一个区块的交易被篡改,那么算出来的哈希值就跟后一个区块头部存储的哈希指针不一致。这可以帮助新加入的节点在网络中查找历史区块时鉴别真伪,也可用于审核最新产生的区块是否合法(对于新区块这还不够)。在比特币共识协议中,哈希指针更有其独特的作用。后文再详细论述。

区块链是比特币的底层技术,比特币区块链的一个数据块大小目前的上限是1M,但即将要扩容到2~4M。

  • 哈希到底是个什么东西?

    它是“hash”的音译。指代一种摘要算法,这种算法可以将一个很大的数据内容(如:ppt文件、电影或程序包)用一个简短的字符串表示。厉害之处在于:只要那个文件有一点改动(即使一个字节、一个标点符号),那么重新算出来的这个哈希字符串就会跟着变化,往往跟原始的那个有很大不一样,一眼就能看出来。
    那...这能干什么用呢?如果你发现有人偷偷改了你的ppt, 比起一个字一个字的去对比检查,直接生成一个哈希值进行对比岂不是方便多了。
    常用的哈希算法有md5, sha1, sha2等,可以在这里体验或问度娘下载使用。区块链使用sha256(隶属于sha2族)。

3. 密码学

前文有简单提到过匿名性,那是不是意味着任何人包括系统本身都不知道任何一个地址的真实身份是谁。那么系统又如何知道这个地址的钱谁有权限支配,以及收款人...?

这要归功于数学的奥妙和密码学的成功。这里不多展开。简单讲,你既可以用同一个密码和相对应的加密算法去加/解密任何电子文档内容(对称加密),又可以用某种算法先生成一对密码(密钥对),一个叫公钥,另一个叫私钥,然后用公钥加密即可用私钥解密,用私钥加密又可用公钥解密(非对称加密)。比特币的公私钥使用了椭圆曲线密码算法secp256k1(还有个secp256r1可参见这里)。而比特币中的密码学还包括哈希证明及谜题,后文再细讲。

在比特币系统里密码是怎么使用的呢?先生成一对公私钥,私钥一定要藏好。然后把公钥通过某种转换(SHA256 + RIPEMD160 hash算法)生成一个字符串,即比特币地址,该地址即可发给任何人,让他们给你付款(只要人家愿意)。就像支付宝收款码,你也可以生成一个收款二维码贴在任何地方。不过你以字符串方式发给别人的地址其实通常会再进行一次转换(Base58编码),以便更短更可读。如果还不了解可下载手机钱包app体验一下:http://blockchain.info、Jaxx等。

比特币以及其他类似货币的整个技术体系都是以密码学为基础,这正是笔者为何称其为“加密货币”的原因。

4. 提款权

有了公私钥密码,确认身份就好办了,我私钥加密的内容只有我这个公钥可以解开。这正是比特币协议验证身份的基础:

你想要花掉一个UTXO的钱给另一个地址,就看你有没有提款权。

而你的这个UTXO本身也是由别人支付给你的,系统曾经验证过他的提款权。

提款权的验证由一组简单的脚本程序来完成,这里不作展开。一笔交易包括输入(要转出的那些交易的hash ID、公钥、提款权签名)、输出(收款人的地址脚本及数量)、本交易hash ID以及元信息。需要注意的是,对于本交易并不会验证输出的收款地址,因为无法验证也没必要(收款人需要自行保证正确性,除非他想要丢掉这笔钱),只有在收款人想花掉它的时候才一并验证,收款地址是提款权验证时的一个必须参数。那么本交易仅需验证输入参数提供者是否对其指定的UTXO有提款权。

需要注意的是:一个UTXO每次都得花完。你说我不想给人家这么多钱!那可以同时支付给自己的另一个地址,不然

没花完的,就被矿工捡去了!

什么?Are you joke me?是的,矿工就是捡漏的,这也就是所谓的交易费。

  • 话说,即将在数月内实施的隔离验证方案将改变交易的数据结构。

5. 资金安全

前文提到,私钥一定要藏好。只要你不泄露收款地址的那个公钥对应的私钥,就没人能取走你的钱。也许有人想到了暴力破解,或者碰巧正好别人生成了跟我一样的密钥对怎么办呢?这或许是个问题,但你知道比特币的椭圆曲线密码算法能生成多少个不同的密钥对吗?

理论上比银河系中所有星球上的沙子还要多(假设都跟地球一样)。

不过也许你会想到应对措施:借鉴银行的方法重试3次就冻结。其实这是不行的,银行是中心化的黑盒子,每个环节都控制在他们手里。但对于一个去中心化的公开账本,我可以先拿到你UTXO的收款地址,用本地计算机穷举出你的私钥之后再发送一次交易(不需要3次),只不过这要算出来得好多万年呢!此时你一定想到了量子计算机,不过仍然不用担心,首先已经有了抗量子计算的密码算法;其次,社区一直在积极应对当前面临的各种问题,到时候提前升级节点程序即可。

6. 双重支付

前文论述了如何验证身份,应对盗取。但是如果一个合法的身份通过发送多笔交易把一个UTXO同时支付给好几个地址,又该怎么应对呢?

对每笔交易的验证,除了提款权,其实还有是否已花费的验证。

这些验证在一个区块的产生过程中将顺序执行,即:如果一个UTXO在历史上任何一笔交易中被花费,那么它在后续另一笔交易中一定会被检测驳回;同时由于块的产生也是顺序的,这意味着在任何情况下,双重支付交易总能被检测,这得益于区块链的数据结构和UTXO记账模型,双重支付的问题终于得到解决。事实上,还有一种情况会导致双重支付:区块链分叉,将在后文讨论。

7. 匿名性

前文提到的“验证身份”其实并不准确,比特币交易仅需验证提款权而非身份。在整个比特币网络中,手握密钥走天下,没人管你是谁。这便是其匿名性。也许你听说过前不久的比特币勒索病毒(它只是勒索让你给它支付比特币,而不是攻击比特币网络系统),为什么不勒索美元、欧元或人民币?这也正是匿名性的优势所在。也许你会问:

匿名性岂不是会助长犯罪?

确实是这样的,著名的暗网(deep web)黑市交易网站“丝绸之路(Silk Road)”就是一个例子,仅支持比特币。但任何事物都有两面性,就看怎样使用它。菜刀可以切菜,也可以...?杀猪。

匿名性真好,我岂不是可以为所欲为了?To young to simple, 警察蜀黍想找到你还是很容易的。丝绸之路的创建者已被FBI拘捕(暗网本身就具有很强的匿名性,但仍然被找到)。

四、新币发行与挖矿

先简要回答几个问题:

  • 矿工是谁

比特币网络节点就是矿工,它们验证交易、争夺出块权,同时也维护着整个比特币网络的健壮运行。

  • 为什么要挖矿

获得奖励报酬(可是很赚钱的呢!利益驱使,大部分是这样的);
就是想维护比特币网络(情怀,估计是占很少数吧)。

  • 那又是为什么叫“挖矿”呢?

比特币挖矿所经历的阶段与上世纪的淘金热挖矿历史非常相似。

黄金挖矿从个人拿着盘子在沙里淘金,到一小群人用流沙槽来淘金,到一群人用水冲刷金山来淘金再到现代化机械露天挖矿;比特币挖矿则从个人用CPU电脑,到GPU,到FPGA定制硬件再到ASIC专用芯片。两者都是由个人操作为主演变为大公司专业运作。目前比特币的挖矿主要由全球几大专业矿池在运作。

1. 交易费

维护比特币网络节点的运维成本日趋高昂,而矿工的默认行为也早已变为“费用替代策略”,即优先处理交易费较高的交易(包括对一个双重支付的二选其一的优先权)。交易费的收取方式便是前文提到的“捡漏”,即当发送一笔交易时,支付给收款地址的数量比可花费的要少一点点,留下的这部分便是交易费。那具体应该留多少呢?通常钱包会给你一个建议值,如果不想支付任何费用,最终还是会被确认的,只是不知道需要等多久。由于受限于区块大小1M的限制,而当前网络的待确认交易量远大于该限制,导致网络非常拥堵,所以费用太低的话,就遥遥无期啦。

交易费的巧妙之处还在于保证了总量不会流失。

2. 挖矿(新币发行)

那么除了交易费以外,矿工还有其它收入来源吗?当然有。每一个创建新区块的矿工都可以写一笔交易支付给自己,但这笔交易比较特殊:没有输入。这叫做币基交易,是产生新币的过程,也是给矿工的奖励。矿工基本都是逐利的,它们付出高昂成本维护比特币网络,大多不是因为情怀,而只是为了赚取这个奖励和交易费,这就是所谓的挖矿。试想:

如果没有这些交易费和奖励作为收入来源,矿工入不敷出,纷纷退出挖矿,那比特币网络也将不复存在。

这个激励措施也是比特币协议设计的另一个巧妙之处。

3. 网络调整

不过呢,给矿工的奖励每过四年将减半,当前是25个比特币,最终会减少到0,总量的2100万个便是据此推算出来的。注意总量并不是确定的2100万,具体是多少会有出入,无法确定确切的数目。因为

比特币平均每10分钟挖出一个数据区块(block)。

快则能到6分钟,慢则10几分钟,一年到底能出多少个块也并不确定。

由于全网的算力总在不断增强(竞争),那么出块速度也会不断变快,如果一直持续下去岂不是越来越快?中本聪早就考虑到了这个问题,因此设计为

每两周调整一次难度系数(其实是每2016个块调整一次)。

慢了就调快,快了就调慢。新的问题来了:怎么调?矿工又为什么必须得照做?

五、工作量证明与51%攻击

前文一直没有谈到一个问题:由谁创建区块。

目前一个块奖励25个比特币,加上交易费,按照当前的价格,大概50万RMB。如果都让我一个人来挖,每10分钟入账50万,一天7200万。除去成本,两天完成小目标:一个亿 ...

简直不能更美!

1. 出块权

现实总是残酷的,遇到这种好事情人们只会做一件事:抢!比特币是竞争挖矿,那就需要有一个标准来判定竞争的输赢。前文提到哈希指针,它是一个有256个比特位的大整数,有大小之分;还提到每两周调整一次难度,这会产生一个难度系数。中本聪设计了一个简单的规则:结合难度系数先算出一个值作为限定范围,即哈希指针的最大值。直观来看,可简单认为就是

限定所生成的哈希指针字符串前面0的个数,显然0越多,难度越大。

所有矿工谁先生成该范围内的哈希指针值,谁赢得出块权。

  • 这里的出块权是一个抽象的概念,实际上并非这么一个简单的竞争过程。

2. 哈希谜题

由于哈希函数的不可预测性,使得要找到这个值并没有捷径。这是一个数学难题,被称为哈希谜题。假设哈希函数的输出值分布是均匀的,则要使得每次输出的运算结果值落在限定值w范围内的概率为:

w / 2^256

显然w越小,每次成功的概率越小,要找到目标值的平均运算次数就越多。而由于矿工单位时间内的运算次数跟算力成正比,也就意味着,算力的提升可以缩短找到的时间。矿工们在解决哈希谜题上的比拼,就是算力的比拼;反过来,出块的数量比例也反映了矿工在全网的算力比例。这种基于难度调整的哈希谜题设计,也使得限定每10分钟一个的平均出块速度成为可能。

3. 工作量证明

前面已经知道了判定标准,那怎么生成呢?在确认将要纳入的全部交易(交易全都合法并且总量不超过块大小的上限)之后,需要做两件事:

  1. 修改随机数。不重复的更改正在试图创造的这个数据块中的两处随机数:块头部和币基交易中各一个,一般只更改头部随机数,如果在更改一圈之后还没找到符合要求的哈希值,则修改币基交易中的随机数,这会触发梅克尔树(merkle tree)的重新生成并将改变传导到树根(root),树根存储在块头部;
  2. 计算哈希值。将头部数据作为输入参数通过相关哈希算法生成哈希值,并确认该值是否在限定范围之内。

不停重复这两个步骤,直到找到符合限定条件的哈希指针值。虽然要找到符合条件的值非常困难,但要验证别人找到的是否符合条件却十分容易,因为所有需要的数据都在块里,那么仅需计算一遍即可。

这整个过程其实是一个简单粗暴的穷举运算,没有捷径也无法伪造它,只能拼实力老老实实去一遍遍运算,付出多少便回报多少。那么若一个矿工能够生成一个合法的数据区块,也就证明了其确实付出了实实在在的劳动,这被称为工作量证明。它提高了维护比特币网络的准入门槛,也增加了破坏网络的难度。

工作量证明在现实中也有很多例子,比如高考:如果没有付出辛勤的学习,是难以考出好成绩的。10000小时理论,也是同样的道理。

4. 自举仲裁

但这还没完,前面说到出块权,那具体如何实施,谁来做裁判?在一个点对点的对等网络里,没有谁能当得了裁判,因为你控制不了谁,也没人愿意听你的。但这些节点会有个群体效应,或者说,全都是裁判。谁都不希望别人捡便宜,也没人愿意自己吃亏。那么这是一个怎样的过程呢?首先难度系数在整个网络里是达成一致的。这意味着,一个哈希指针确实符合要求的区块在广播到全网以后,一定会被大多数节点认可。那矿工要做的便是在挖到某块B之后,尽快的把它广播出去。此时如果大多数矿工在收到块B的时候自己还没有挖到符合要求的块,它们会首先验证块B,通过之后,将立即基于块B重新开始挖矿。

它们为什么要这么积极?因为如果不这么做,将得不偿失。如果有一个矿工X在收到块B之后仍执意要继续基于B之前的块挖,会发生什么呢?可能很快就挖到了块C,也可能很久挖不到。如果挖到,立即将块C广播出去,那么由于大多数其他矿工都基于块B在挖了,当它们发现C和B产生了分叉,则很可能丢弃C。因为它们也会想:其它节点应该也是基于B在挖了,如果我基于C挖,我和X所在的这个分叉很可能追赶不上其它大多数基于块B挖矿的那个分叉链的长度。比特币协议有一条共识:

最长的链代表了最大的工作量。

所有节点都应该延长最长的链。研究表明:低于一半算力的节点所延长的分叉链,将永远追不上超过一半算力的节点所延长的分叉链,而差距只会越来越远。当短的链越来越得不到认可,它们的信心也会慢慢丧失:在这个分叉上挖到的块获得的奖励,并不会被市场承认,市场也会害怕损失而只相信长链,这些奖励卖不出去,无法获得收益,最终导致放弃。因此,矿工都会有自知之明,会自觉的积极的维护长链。这是一种自举效应,使得分叉的可能性得到收敛。这正是比特币区块链至今还没有出现过分叉的原因。

5. 分叉

新的问题又来了:如果在某个时刻网络里有两个矿工同时挖到区块(肯定是不一样的两个块)并广播了出去,而一个矿工同时收到这两个块该如何处理?正常情况下,当验证到一个块合法,则会丢弃另一个块。不过假设一定要作个选择,那该选哪个呢?网络中难以统计当前哪个块被大多数算力所支持,而只能靠时间来证明。经过时间的推移,各分叉链长度的差距将越拉越大,最终短的被迫放弃。事实上,由于比特币网络的出块时间很长,10分钟足以完成全网同步,节点很容易检测出分叉并立即纠正。即往往分叉只有一个块高度,称为孤块。

6. 51%攻击

前面提到,短的分叉链由于算力低于全网的一半,导致无法追上长链,而得不到承认。但假如我突然获得了一台超级计算机,甚至超过全网的算力,此时我回滚到较早的某个块高度开始分叉挖矿,很快分叉高度便超过了主链高度,此时会发生什么呢?这其实就是所谓的51%攻击。此时全网会不会放弃主链而接受这个分叉还很难说。显然这会造成混乱,市场不知道该相信谁,分叉之前的一个UTXO可以分别在两个分叉上各花费一次,都会被确认。但这会导致市场对比特币逐渐失去信心,比特币将会被抛弃,从而走向失败。

7. 双重支付攻击

如果在非51%攻击的情况下正常产生了短分叉,有人将一个UTXO发送了两笔交易,分别在两个分叉上被打包。而由于其中一个分叉最终一定会被丢弃,这个分叉上被打包的交易也随之失效。那假如我作为收款人,明明前面看到这笔交易被打包广播出来,过了一段时间却发现被丢弃了,岂不是坑爹。这实际上是一种双重支付攻击。所以我们在进行比特币转账的时候,通常应该等待确认6个块左右,才能认为这笔交易是确定无疑的了。双重支付攻击成功的可能性会随着确认数目的增加而指数级降低。

六、比特币的神圣地位

我们每个人都或多或少有一些英雄情结,有崇敬武松、诸葛亮、周公瑾的,有喜欢杨过、令狐冲、张无忌的,有向往超人、蜘蛛侠、变形金钢的,也有信仰救世主的。他们要么聪明绝顶,要么神功盖世,要么英勇无敌、一身正气,要么令人敬仰、跪拜臣服。

我们每个人也都越来越离不开数字世界。要获取信息,也要与外界交流。虽然信息化极大的方便了人们的生活,但有时候却特别麻烦。比如每下载一个新的App,都需要注册账号;安装了微信还得安装QQ、脉脉、钉钉等,为什么就没有一个技术把这些问题全搞定?包括各家推出的智能家居设备也都局限于自家服务的全家桶,甚至我们的跨国转账成本非常高昂。大家也许觉得这很正常啊,本来就是这样的啊。其实不然!原因就是前面去中心化部分讲到的。而区块链技术的开放性、匿名性和安全性将使得以前不可能的事情成为可能,在人工智能和物联网时代,亦将如同DNA般大放异彩!当然这需要从业者的积极开放共享心态,以及前瞻性的思维,而笔者也正在为推动实现这样的目标而努力。

前面也说过,区块链技术是比特币的底层技术。比特币不仅是一种加密货币,不仅使得价值高速公路成为可能,也给我打开了智能新经济时代的大门。而其协议本身完全拼算力实力的简单粗暴,也正如一位拿着板斧开天辟地的英雄,在这个暗流涌动的数字世界里屹立不倒!无论是黑客、病毒、DDoS攻击亦或是算法的发展、人工智能的进步,都拿整个网络系统毫无办法!自面世以来安全运行8年却从未发生过一次事故包括down机(除了拥堵。这也是为了安全,慢工出细活嘛,成功的纽约共识大会推动了这个问题很快会被解决)。比特币的划时代创举,奠定了其在从业者心中神一般的地位。

七、生态

虽然比特币网络已运行8年多,但目前仍处于区块链和加密货币的发展早期,生态圈内各个环节都在蓬勃健康发展,从钱包、矿机制造、挖矿池、交易所、媒体(如渡鸦区块链公众号jingqubc)、区块链服务网站(如info)、技术人才库inblockchain到实体行业购物支付,ATM兑换取款,都已经很完善。目前已有很多国家把比特币合法化了,如美国、日本等,甚至有小国家如委内瑞拉将其直接作为法定货币。而我国将其视为一种数字商品。早期常出现的交易所跑路事件,现在也基本没有出现了。

1. ICO

除了加密货币的交易,还出现了一种新的募资方式,叫 ICO(Initial Coin Offerings 代币首次公开发行)。传统的创业天使投资通常由机构参与,一个估值,一笔大钱,流程复杂。但 ICO 模式对其进行了颠覆,使得每个人都有机会成为天使投资人,而且不限金额。基本原理是,通过以太坊智能合约生成要发行的代币(token),只要投资者向这个合约地址发送指定的加密货币,便可以获得相应数量的代币。代币具有加密货币的属性,可以自由流通。显然 ICO 将是未来投资的新模式,也是资产数字化的途径。国内的 ICO 投资平台有ico365icoage等。

2. 交易所

加密货币的产生除了挖矿,还有就是花钱购买。交易所就是提供[用法定货币去兑换加密货币]或者[加密货币互换]服务的平台。这里的加密货币包括 ICO 产生的代币。交易所就像银行,甚至比银行业务更复杂,除了放贷。由于监管的不同,他们的可操作空间也很大,对投资者的风险通常是可能会出现兑付危机,甚至卷钱跑路。目前很多国家都有很多交易所,我国的有云币网比特时代等。也有提供线下撮合交易的平台,如币信App等。

3. 骗局

但不得不吐糟的是,由于处在监管早期,存在法律的空白,这个行业目前仍然鱼龙混杂,乱象丛生。主流机构大力投入,开源社区积极贡献,各种区块链峰会也络绎不绝,看似一片欣欣向荣的景象,却也为骗子营造了滋生的土壤。各种山寨币如雨后春笋,抄袭造概念的新链轻松圈钱 ICO,圈内戏称就差狗链、拉链了。

韭菜年年有,今年何其多。由于今年加密货币的暴涨,让很多早期投资者赚的盆满钵满,很多人抱着十投一中、一中也倍赚的心态,这滋长了骗子的信心。然而很多时候我们真的很难分辨一个 ICO 项目的好坏(山寨币还好一点),好项目也可能因为团队的能力或其他原因导致失败。因此即使是完善了监管,也不能保证你的投资不会打水漂。总之,投资有风险,还是需要自己擦亮眼睛,仔细调研辨识。

除了乱象,圈内也有很多趣闻。许多人甚至包括一些专家、公知,在根本没搞清楚比特币、区块链到底是什么的情况下,到处发表高见;也有一些项目提出了很多伪概念伪命题;还有一些不良媒体制造恐慌,比如就在笔者写此文的早晨一则假新闻说,以太坊创始人车祸死了!甚至还出现了区块链示范村“一村一区块村村相连接”,大家就当玩笑好了。

八、监管

根据央行对比特币和交易所的态度,能够看到一个词“包容”。日前,李克强总理说:“如果沿用老办法管制,就可能没有今天的微信!”。总理举此例,要求政府部门对待各类新业态、新模式要有“包容审慎”的态度。我们的民族曾经有过落后,也付出了惨痛的代价。我想,拥抱新事物将会是监管的大方向。

九、未来

区块链仍然处于发展早期,还有很多很多问题有待解决,比如:交易吞吐量低、确认速度慢、交易费高、智能合约不够安全、不能抗量子计算等等,这需要社区、技术开发者以及各种能人志士的共同创新努力;在商业应用拓展方面还有很多阻力,这需要推动大众对相关知识的普及和认可。但放眼未来,区块链技术的潜力和应用前景无限。一句话总结:它是世界经济发展的新方向。

十、建议

也许说了这么多,你还是没能理解比特币和区块链这个新兴领域。那么不用着急,笔者本人也是花了很长时间的研究思考才慢慢了解的。这个领域本身也是偏重于技术,笔者给你的建议是,勤思考,转换思维方式,摒弃传统惯性思维,拥抱变化,接受新事物。

原文地址:https://www.cnblogs.com/timlong/p/9495111.html

时间: 2024-10-11 19:47:34

比特币深层技术原理浅析的相关文章

安卓手机屏幕投射到电脑以及一台电脑控制多台手机技术原理浅析

奥创软件研究院推出的奥创微群控让越来越多的人了解到了电脑控制手机的操作.自奥创软件研究院首家发布电脑批量控制手机的解决方案以来,有很多人开始探讨电脑控制手机技术在实际工作中的应用. 由于市场太大,仅靠奥创软件研究院一家也是做不过来的,现在将手机屏幕投射到到电脑的技术原理,以及一台电脑批量控制多台手机的技术(即所谓的手机反响控制)简单的给大家介绍下,在此抛砖引玉,希望能给大家一些思路上的指导. 说到安卓手机的屏幕投射,就不得不说安卓的adb,ADB的全称为Android Debug Bridge这

【Spark Core】TaskScheduler源码与任务提交原理浅析2

引言 上一节<TaskScheduler源码与任务提交原理浅析1>介绍了TaskScheduler的创建过程,在这一节中,我将承接<Stage生成和Stage源码浅析>中的submitMissingTasks函数继续介绍task的创建和分发工作. DAGScheduler中的submitMissingTasks函数 如果一个Stage的所有的parent stage都已经计算完成或者存在于cache中,那么他会调用submitMissingTasks来提交该Stage所包含的Tas

大中型网站技术架构浅析 - 实时通信

本文所讲述的『实时通信』主要围绕浏览s器端和服务器端之间的实时通信.大中型网站技术架构浅析 系列之一. 实时通信主要分3大类: 1. Pull技术,轮询(Polling) 客户端定时轮询请求,服务器端立刻返回. 优点:短链接,服务器处理方便,支持跨域. 缺点:有一定延迟 微博未读微博数和未读消息(评论,@)就是用polling实现的. 应用场景:对实时性要求不高的应用,如新微博提示,评论提示,回复提示等. 2. Push,反向Ajax(Reverse Ajax)或者叫Comet. 实现方式主要有

LINQ内部执行原理浅析

C#3.0 增加LINQ的特性 一.基本概念 LINQ,语言级集成查询(Language INtegrated Query) 经过了最近 20 年,面向对象编程技术( object-oriented (OO) programming technologies )在工业领域的应用已经进入了一个稳定的发展阶段.程序员现在都已经认同像类(classes).对象(objects).方法(methods)这样的语言特性.考察现在和下一代的技术,一个新的编程技术的重大挑战开始呈现出来,即面向对象技术诞生以来

Android应用内社区SDK技术架构浅析

Android应用内社区SDK技术架构浅析 应用内微社区是什么 ? 图1 图2 雪球财经应用内社区 一.以友盟微社区为例 简单来说,友盟的微社区就是一款帮助开发者在应用中快速搭建一个社区( 类似于新浪微博.朋友圈 )的产品.在很多应用中,开发商往往都会需要一个用户之间以及用户与开发商之间互动的社区,用户往往又会在社区里选择赞.评论.关注.转发.发帖等各种互动方式.但是开发一个社交系统可不是那么容易的一件事,复杂的用户关系.消息流.服务器架构等等都是棘手的问题,更重要的是大家都是重复地劳动!每个开

【Spark Core】TaskScheduler源代码与任务提交原理浅析2

引言 上一节<TaskScheduler源代码与任务提交原理浅析1>介绍了TaskScheduler的创建过程,在这一节中,我将承接<Stage生成和Stage源代码浅析>中的submitMissingTasks函数继续介绍task的创建和分发工作. DAGScheduler中的submitMissingTasks函数 假设一个Stage的全部的parent stage都已经计算完毕或者存在于cache中.那么他会调用submitMissingTasks来提交该Stage所包括的T

PalletOne调色板Token PTN跨链转网的技术原理

之前一直在忙于通用跨链公链PalletOne的研发,没有怎么做技术分享的博客,最近PalletOne主网上线也有几个月的时间了,即将进行PTN(PalletOne上面的主Token)从ERC20到主网的转网工作.在转网进行时,正好将这其中的技术原理与大家分享. 一.Token转网的方式 因为ERC20同质化通证标准的流行,大量区块链项目都是通过先在以太坊上以ERC20的形式发行Token,进行募资.糖果发放.Token买卖等,等到自己的主链研发完成,就会将ERC20上的Token销毁或者冻结,而

Handler原理浅析

    理解Handler的原理首先要搞清楚什么是Looper,在我的上一篇博文中对此有专门的介绍.Looper的作用是开启一个消息循环,从MessageQueue(Message队列,是Looper的成员变量)中循环取出消息处理.一个线程要使用Handler来处理来自其它线程的消息,这个线程必须有且仅有一个Looper对象与之绑定,也可以说一个Looper对象是是与一个线程一一对应的. Hander有一个Looper类型的成员,在Handler的构造函数(new Handler()或者new

微信QQ的二维码登录原理浅析

在很多地方就是都出现了使用二维码登录,二维码付款,二维码账户等应用(这里的二维码种马,诈骗就不说了),二维码验证,多终端辅助授权应用开始多起来,这里先说下啥是二维码,其实二维码就是存了二进制数据的黑白图片,当出现要求二维码登录的时候,服务器会生成一条临时的唯一的二维码信息,发送到客户端以二维码(图片)的形式写入到网页,然后你就会看到统一的四个方形的二维码,如果做的好这个二维码信息应该是有时效的,这里暂且不考虑这些,就简单的微信登录作为例子看看吧: 首先说下整个授权流程: 在客户端网页中会不断向服