比特大陆蚂蚁矿机S7

电子货币的技术基础 (比特币章节)

长铗 发布在 技术指南 1 8949

作者:Simon Sprankel
译者:骨髓行走

3.比特币

比特币是一种基于密码学原理的P2P货币。它是由一个笔名为中本聪的人在2008年发明的。它显然算得上电子货币,因为自它在2008年被发明以来,日均成交笔数大概在3万到-7万左右,其市值近于12亿美元。现在其被大肆传播。现在也有相当数量的其他的加密货币,虽然它们都没有发展壮大,但是都是建立在比特币的基础之上的。甚至存在以其他目的来使用比特币系统的可能,而非仅仅将其视作电子货币:Namecoin币以比特币为基础,使用其机制来建立一个去中心化的网域名称系统。

比特币基于公钥密码学之上。因此,每个比特币使用者有一个保密的私钥和适当的公钥,该公钥为所有其他用户所知。为了对比特币系统有一个概览和认识,在此有三个概念必须了解:交易、区块、区块链。一笔交易即一个描述比特币从发送方到接收方传输过程的数据集。发送方对交易署名,以便于所有人都能证实该消息是真实可信的。接收者的公钥被包含在这个交易的数据集当中,以便于所有人都能了解谁是新交易的比特币的主人。区块是一种包含着许多交易的数据集。除了交易之外,它还包括与之前交易相关的工作量证明。当其包含这个工作量证明时,为了产生一个新的区块,一个新的有效的工作量证明必须被找到。工作量证明的难度每14天调整一次,那么平均每十分钟产生一个新的区块。在下面的文章中,我们会讨论到为何新的区块需要被创造出来。区块链是所有已产生区块的链条,因此它包含着整个交易的历史。每个区块都包含着先前区块的哈希函数以便构造整个区块链。链上的第一个区块即所谓的源区块。比特币的源区块是在2009年1月3号创建的。

3.1如何得到比特币

首先,我们必须搞清楚在比特币的世界里一个币究竟是什么。一个币即一条代表交易记录的电子签名所形成的链。因此,用以解释币归谁所有的证明不是某种产权的证明,而是你在某时从某某那里得到比特币的证明。换言之,即使今日的传统货币经常以虚拟形式而存在,但比特币不存在于一个物理的或虚拟的代表物中,而是存在于其交易历史中。这便是电子货币的潜在逻辑。使用者并不拥有现金形式的全部货币,而只在电子账户中看到他们的货币。因为在比特币网络中所有的交易记录都被每个节点储存了,那么每个节点就能够验证目前某个比特币的归属者。但是新的比特币是如何进入到该系统中的?每次一个比特币的使用者解决了一个工作量证明问题且因此产生了一个新区块时,他就会被奖励特定数量的比特币。这是一种对于使用者发挥他们的算力和解决工作量证明难题的一种激励。尝试解决工作量证明难题的全过程并因此产生新区块,我们把它叫做挖矿。

虽然每十分钟产生一个新区块,但比特币的总量被严格限制在2100万个之内。为了满足这个限制,对于那些产生新区块的使用者的奖励每隔四年便急剧减少一次(准确说来是每210000个区块减少一次)图3.1说明了对创造新区块的用户的奖励将趋向于零。在2140年,当所有2100万个比特币被挖出时,其奖励将小于比特币的最小单位(即等于0.0000001个比特币),因此不会有更多币产生出来了。随着时间推移,有效比特币的数量变化也跟上述原理类似,详见图3.2.即使所有比特币都被挖光,仍有激励使用者解决工作量证明难题的办法。那个创造新区块的用户能得到从所有区块中而来的交易费用。交易费用是什么,以及它耗在哪里,在下文中将会论述到。

但是除了挖矿以外,必然还有其他可能的途径获得比特币。使用者们能够在某些特定的交易市场中将欧元或美元这种传统货币与比特币交换。规模最大且最为流行的比特币交易平台要数Mt.Gox了。

image001

表3.1:随时间推移的对新创造区块的奖励变化

2.交易过程

假设爱丽丝想给鲍勃50个比特币且之前从卡莉、丹和艾琳那里分别得到了30个、15个和10个比特币。她将产生一个交易记录,与公式3.1类似。输入的是那三笔交易,代表着爱丽丝有足够的比特币。准确的说,这应该是先前交易的哈希函数,也是其各自的指数,为相应的交易提供一个输出。在输入中,用以证实爱丽丝有权花费这些比特币的签名也被包含在内。输出中包含着来自鲍勃的公钥和将要交易到该公钥的比特币的数量。如果总交易的输入量与她想要发送的总数量不匹配,她可以创造一个额外的交易输出,将剩余的比特币送回她的公钥(比方说送回了3个)。如果所有交易总额的输入和输出仍不匹配,剩余的比特币将被视为一笔交易费用(比如说是2个比特币)该费用是对其他用户证明该交易的一种激励。公式3.1中的小圆点表明在一个交易记录中,存在一些其他的、不那么重要的部分。

image003

一个交易会在下述情况下被证实:一个使用者在他的区块中找到一个关于该交易的正确解决工作量证明难题的答案。他接下来会得到从所有包含在区块中交易而来的交易费用。平均而言每十分钟新的区块被创造出来,证实交易的时间也会持续十分钟或更长。一个人可以通过提供更高的交易费用来提高验证的速度。那么在下一个产生的区块中包含该交易的可能性会更大。
一个区块中的首笔交易是十分特殊的。它包含着对挖掘该区块的使用者的奖励。它是一个没有输入的交易。作为一个输出,它包含着现在的奖励额和挖矿者的公钥。

image005

表3.2:随时间推移比特币的总量变化

3.3防止双重支付

不诚实的使用者会使用相同的交易作为输入来获取多个新的交易。换句话说,他们能将他们最终得到的货币进行双重支付。实际上在早些时候这是可以实现的,但除第一笔交易外的所有交易都将不会被验证因此也不会被执行。当交易被添加到区块中,它会被区块创造者和接受该区块的所有使用者检验。因为当前区块链包含的所有成功的交易对所有用户广播,每个人都拥有整个交易记录。一个使用者接受或创造一个新区块会检查所有被包含交易的输入。如果某笔交易已经在其他交易中作为输入被使用过,该交易和整个区块会被拒绝。
另一个进行双重支付的可能性即篡改区块链以欺骗其他用户。不诚实的用户可以通过消除他已经使用比特币的交易记录来达到篡改的目的。然而,祛除或篡改一笔交易将导致一个新的区块哈希函数,因此该区块的工作量证明难题将再次被求解。因为所有区块都被安排在区块链上,不诚实的节点也将求解所有更新区块的工作量证明难题。因为使用者总是接受最长的链而拒绝其他的链,不诚实的用户将控制至少半数的全网算力以便建立一个比诚实节点更长的链。但是如果一个不诚实的用户控制了半数的算力,他将控制交易并进行双重支付。

3.4问题及可能对策

自2008年比特币启动以来,还没有一个完全新颖和为人熟知的电子货币被发明出来,这也表明比特币的系统是值得称道的。虽然这个部分我们将讨论比特币存在的问题。一些问题已被解决,其中的一些将在下一章进行介绍。

能源消耗问题
比特币的安全严重依赖于求解工作量证明的算力消耗。这并非很节能。无论现在求解的难度多大,新区块的验证将消耗大概十分钟并且循环下去。因此,每一个比特币用户的CPU或GPU或者特制的处理器将一直运行着并消耗相当多的能源。即使进行计算的设备能耗很低,从生态的角度看来,这显然不是一个很好的设计。

匿名性
人们也许会认为比特币是完全匿名的,因为它在每次交易中使用假名和新的地址。不幸的是,在某些情况下仍然可以显示一些关于身份的信息。主要问题是整个交易记录是公开的。假设攻击者运行交换服务器,制作陷阱或者只卖给别人产品或服务。如果一个使用者从这个交换服务器中购买比特币并用同一个交易从攻击者那里购买产品,攻击者可以从交换服务中将身份信息与订单相连。解决这个问题的通常办法是运用所谓的混合器服务。使用者可以将钱送到这些混合器中。混合器将用这些钱做一些交易并在之后将钱返还给发送者。随后,将使用者的身份信息和交易连接起来就是不可能的了。但是毫无疑问一个另外的问题就是存在不可信的混合器,它们不会把钱返还回去。
因此,baber er al.提出另外一个基于公平交换协议的解决方法。鉴于它还没有在一个我们知道的系统里使用过,这里就不再赘述了。

历史修正攻击/双重支付
在3.3节中我们已经讨论过双重支付。但已被承认的是,那种攻击在攻击者控制了全网半数以上的算力之时是可能的. Barber et al, 提出一种基于检验指示的解决方案。该观点是这样的:当旧的交易被系统警示时,使用者便不应该相信区块链。每个用户是通过广播来的到新的交易和区块的,他们对于区块链来说掌握着一手的信息。他们能够制作关于区块链的一些常规的检验点,如果这些储存在区块中的旧的部分被一些使用者更新了,他们哈应该对此高度怀疑。他们应该在接受区块之前需求相当多数量的其他用户来验证这个链。在现在的协议中也存在着类似的机制,但是检验点是被一些软件开发者做出来的,并且包含在下载的软件中。这肯定又是一个有关安全的问题,因此Barber et al,建议在非公开的,一手的交易记录的基础上使用这一机制。不幸的是,这个想法没有在任何为人熟知的系统中使用。

偷窃或丧失比特币
使用者通过私钥来签署交易并授权交易。因此,如果私钥被偷,使用者的比特币可以被转移到其他人那里。如果私钥丢失了,使用者不能授权任何交易,因此他的币没法使用。
为了解决偷窃问题,Barber et al,提出门限密码和超级钱包的概念。门限密码意味着私钥不储存在一个设备上,而是在多个设备上。这使得恶意软件攻击更加困难,但是也降低了系统可使用性。对于这个想法的补充以及解决使用性问题的办法是超级钱包。超级钱包将和上述提到的门限密码一起使用,并且只有一个装有少量比特币的次级钱包在使用者的计算机上,因以便于能够轻松花费比特币。如果使用者掉了手机或者如果手机被攻击,他只会丢失少量比特币,他装有所有比特币的超级钱包不会被威胁到。
由Barber et al,提出的关于解决比特币丢失的办法如备份一般直接,因此加密和信任路径等概念在此没有被提及。加密钱包,它储存了所有的私钥,在现在的比特币客户端里是被提倡的,但是使用者必须选择性的加入。门限密码这种想法现在也没有在熟知的系统中运用

可扩展性
可扩展性对于拥有有限硬件和网络资源的客户端(例如手机客户端)来说是个潜在的问题。下载和储存所有的区块链是困难的,其写入量约有8.7G之巨。在智能手机上,Barber et al,提出一个基于订阅的过滤服务作为解决方案。其观点是,那些不验证任何交易的客户端对所有交易和区块毫无兴趣,他们只对跟自己有关的那部分感兴趣。他们可以向过滤服务器订阅,过滤掉那些更新,并只给出使用者感兴趣的部分。比特币支持上述的过滤服务,并且该功能已在安卓比特币钱包中使用了。

3.5比特币及其系列的概览

比特币和其他币种数量很多,在某种程度上巩固了比特币。下表给出一个概览。

image007

比特币地址1CeaC6SdeDZ3S3yh4a5WatwAbMjSso8vZY

原文:Codeblog

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。

评论:1

您需要登录后才可以回复 登录|注册
    Author Image
    changjia 1111 天前

    资助0.05BTC
    交易ID f61bfa846b6ea746e1f62a1523c407d4523129ea4547285ee3daf8d251cdf9a0

    +1
    +1
    我要点评