主页 > imtoken新版app官网下载 > 30 分钟介绍比特币和区块链

30 分钟介绍比特币和区块链

imtoken新版app官网下载 2023-02-08 05:17:19

常见的比特币和区块链入门文章大致分为两类,一类是面向非开发者的科普书籍;另一个是开发人员的技术指南。前者容易肤浅,让读者接触到很多术语和概念,但无法对比特币和区块链有直观的了解;而后者往往直接进入细节,使开发者无法理解整体的技术概况。 本文试图将这两种类型的文章合二为一,同时避免上述两个缺点。文章第一部分适合想了解比特币和区块链的非开发者,整篇文章适合想转行比特币和区块链相关开发的技术人员。

一.什么是比特币

了解一件陌生事物的最快方法是将其与熟悉的事物进行比较,找出差异,研究差异。以转账支付为例,说明传统货币转账和比特币转账的情况。这里所说的传统货币特指各国发行的法定货币,如美元、人民币等,也包括这些货币在银行体系中的虚拟形式,如人们在银行的存款。以下统称为法定货币。

下表是张三分别向李四转账法币和比特币的步骤:

步法币比特币票据

1

张三和李四分别开设银行账户并设置相应密码。

张三和李斯各自安装了一个叫钱包的软件,并用该软件生成账号和对应的账号密码。

钱包软件生成的账号和密码在使用前一般不为任何第三方所知,仅存在于用户自己的手机或U盘上。

2

张三必须确保他的银行账户里有足够的钱可以转账给李斯。如果不够,他必须先在银行存一笔钱。

张三必须保证他的比特币账户里的钱足够转账。如果没有,他会通过比特币交易平台购买比特币,并将比特币存入钱包软件生成的账户。将法定货币转换为比特币。

比特币交易平台将比特币转入张三账户的过程与这里讨论的将张三的比特币转入李四账户的过程类似。另外,比特币可以通过挖矿获得,这对于普通用户来说是不容易实现的,这个内容我们稍后再讨论。

3

张三授权银行通过输入密码将一笔钱从他的账户转到李斯的账户。

比特币交易记录查询

张三使用钱包软件中对应账户的密码授权转账到李斯的收款账户,并通知区块链网络。

区块链稍后会介绍,现在只知道区块链记录了授权的比特币交易。

4

银行记录张三的操作,从张三的账户中扣除一笔钱,再将等额的钱存入李四的账户。

区块链网络记录了张三的转账记录。

第三步,比特币授权和转账的动作是同时发生的,所以这一步只需要记录转账。区块链网络和银行执行相同的功能:记账。

5

银行通知张三和李四转账成功。

张三和李四都可以通过查询区块链网络确认转账成功。

区块链网络和银行完成相同的功能:确认交易

从上表可以看出,从用户的角度来看,比特币和法币完成转账交易的功能是一样的,甚至步骤也不同。非常相似,但每一步都不一样。

第1步:虽然账户和密码都需要,但法币账户是在银行设置的,银行会保存用户的账户和密码数据;而比特币账户和密码除了用户自己以外不使用。任何第三方机构都知道。

第 2 步:银行账户必须通过银行系统进行充值。如果开户银行系统出现故障(如果光纤被施工队剪断),故障期间张三不能充值;充值时,如果某个交易平台出现故障,张三可以随意切换到其他充值平台,因为比特钱包生成的账户是所有交易平台都认可的。

第三步:法币的密码验证授权必须经过银行等中央系统;而比特币的密码验证授权不依赖于任何中央系统,它只依赖于密码学提供的算法。与第 2 步一样,比特币不受影响加密验证的系统特定波动的影响。

第四步和第五步:法币记账和交易确认需要银行介入;而比特币依赖于区块链网络,我们后面会讲到 共同维护,即使某些公司或个人的设备出现故障,也不会影响整个区块链网络的运行。

比特币交易记录查询

除上述外,法币和比特币的发行方式也不同:法币一般由国家发行,其流通和使用以合法的形式得到保障;而比特币的发行方式是:挖矿,理论上任何人都可以参与挖矿赚取比特币。这与地球上的另一种货币黄金非常相似。黄金在地球上是稀有且有限的,比特币也是有限的,开采量逐年减少,直到大约一百年后才被开采出来。注意,挖矿这个词其实只是一个比喻,挖矿与区块链的运行息息相关,我们下一节再讨论。

总结:法币交易的每一步都需要一个中央机构来担保,要么是国家,要么是国家承认的银行;而比特币可以完成所有的交易。另外,区块链中保存的交易数据只是匿名账户数据(没有张三和李四的信息,只是一长串数字),通常被认为是匿名的。一句话总结:比特币是一种去中心化的匿名数字加密货币,使用区块链进行交易记账。

为了便于理解,上一篇文章中省略了很多细节。为了在实际接触比特币的时候不引起混淆,我觉得有必要说明几点。

比特币钱包软件生成的账户在比特币术语中通常称为地址(Bitcoin address)。一个比特币钱包可以生成许多地址。这些地址用于接受来自其他人的转账。这类似于电子邮件地址,只是地址仅用于接收转账。一个地址对应一个密码,在比特币术语中称为私钥。用户对地址内资金的使用权由密钥完全保障。因此,安全地存储密钥非常重要。一旦丢失,就不会再发生。密码设置。

在实践中,很多公司发行的钱包程序往往需要用户进行注册,这样用户的钱包软件中的账户密钥数据才能被加密并存储在公司的服务器上。钱包程序中丢失的数据仍然可以通过公司存储的备份找回,但这并不是比特币本身的内容。这就相当于用户自己有一些金条(比特币),在公司开一个保险箱来存放这些金条,但是把这些金条放在家里的保险箱(加密U盘)里也是一样的。把金条放在公司里,代表你对公司的实力有很大的信心,不会被小偷袭击,也不会靠自己。

二.什么是区块链

在上面的第 3 步中,我们说过使用比特币的授权不需要像银行这样的中央系统,它是用户通过密码算法授权的。那为什么两个用户不直接交易,就像金条一样从钱包里拿出来送给对方呢?为什么每笔交易都像银行一样通知区块链网络?比特币虽然在很多方面与自然货币黄金相似,但有一个很大的区别:黄金不能复制;比特币只是存在于 U 盘或电脑手机上的数据,可以无限复制。这意味着张三把金条给李斯后,就不能再给别人同样的金条了;张三给李斯一个比特币后,可以再复制一份给别人。如何解决这个问题呢?这就是使用区块链的地方。

简单地说,区块链是一个由许多人或团体维护的分类帐,每个人都可以访问。账本用于记录每一笔比特币的转账,所有用户都可以通过查询账本了解。钱包余额以及比特币交易是否成功。

图一区块链

如上图所示,区块链账本分为区块,每个区块存储很多交易记录,这些区块根据生成的时间以一定的方式连接起来,形成链式结构,这就是起源区块链的名称。图中黄色部分是上例中在区块链中形成的记录。

让我们看看区块链是如何解决上述多重支付问题的。收款人通过查询区块链上是否有对应的转账记录来判断转账是否到账(对于李斯来说,就是查询是否有从b到c的转账记录);区块链会在记录前记录一笔转账交易。首先查看区块链记录中是否有相同金额的转账到其他账户(是否从张三的b账户转账)。付款人在区块链账本中找不到对应的转账。

在传统的银行交易系统中也有类似分类帐的设施。区块链有什么特别之处?它在于我们上面提到的多个人或群体的共同维护,即去中心化。联保意味着所有账户都可以记录在区块链账本中,这就带来了新的问题:如何保证每个记账人都诚实记账?比如,如何防止张三把同样的钱转给李斯,作为记账人,修改账簿把同样的钱转给自己?这里指的是比特币的另一种机制,也就是通常所说的挖矿。

假设参与记账(挖矿)的每个人都是雇佣兵,如何赚钱以及如何做(不考虑任何道德约束),区块链创建了一个算法系统,让每个人都可以参与 记账人更愿意为诚实而获得报酬簿记。例如,有两种工作:一种是抢劫银行,需要两天时间,另一种是挖金矿,只需一天时间。您从金矿中获得的报酬等于或高于抢劫银行的报酬。明智的人会选择以后。经过。区块链的算法允许每个记账人花费一定的价格来保存这本书,同时奖励记账人。这里的价格是计算时间,奖励由两部分组成:一是从每笔交易中提取的佣金,二是系统产生的新比特币奖励。第二个奖励是为什么比特币称之为记账挖矿。

区块链记账是以区块为基础的,将最新的交易记录写入一个区块。记账者所拥有的计算设备,如矿机(专门用于挖矿的计算机),必须先完成一个高难度的谜题,然后才能创建区块记账。谁先完成拼图,谁就获得记账的权利和奖励,大家也会把他生成的区块作为最新的交易记录附加到之前的账本上。当然,新区块必须满足一些基本规则,比如不与之前的账本冲突,不存在授权错误的记录。交易(这是由上面提到的用户地址和私钥授予保证的)。

这是什么谜题?有一个非常形象的类比:在掷骰子中,谁掷出满足条件的骰子组合就获胜。以两个骰子为例,两次掷骰子之和不大于6的概率为41.6%,非常容易,平均每两到三次满足一次。增加难度,要求三个骰子的总和不大于4,那么概率只有1.8%,也就是说,如果你平均掷骰子超过50次,您将有机会满足条件,并且需要一些时间来掷骰子。但考虑到很多电脑都是掷骰子,速度非常快,一般的矿机一秒能轻松滚上百亿次。我们通过增加骰子的数量和减少骰子数量的总和来不断增加难度,并且在全球范围内一直在增加。所有参与掷骰子的计算机一起玩,平均每十分钟掷一次匹配的组合。这会是一个什么样的组合:一亿个骰子掷出的总和不超过一亿个。想想扔一亿个骰子的概率,几乎每个都是1。

比特币交易记录查询

每个矿工都竞争抢先记账,谁先解谜,谁就获得了记账权并获得报酬,即使矿工要造假账,也必须如此。同时,由于区块的链式结构保证了如果任何人想要修改其中一个区块的交易记录,就必须重新创建这个区块以及在这个区块之后已经创建的所有区块,并且每个区块都会花费很多钱。是时候解开谜题了。上面提到的比特币加密授权机制,可以保证用户最多可以修改从自己账户转出的交易记录。为了一笔交易的钱,他需要自己锻造多个区块。由于之前已经存在正确的区块比特币交易记录查询,因此伪造的区块很可能无法识别,从而失去挖矿收入。即使有一些记账人愿意以牺牲他人和自己为代价来做生意,他们可以利用他们先进的计算设备相对快速地生成块来修改账本,它无法与整个区块链网络竞争,因为正确的区块链在它不断增长的过程中,区块链网络总是以最长的区块链作为正确的账本。只要 51% 的记账人(假设每个记账人拥有相同的计算设备)觉得挖矿比抢银行更可靠,区块链网络就可以正常运行。以张三给李四转账后试图修改账本给自己转账为例:

图二伪造区块链

图中有很多 CDE 块。由两个簿记员共同计算,C'D'只能由张三一家计算。他的计算速度要赶上全网的出块速度几乎是不可能的,而且他产生的块会因为缺少Acknowledgements而产生,给全网带来任何收益。在实践中,李斯确认转账不会在区块 C 生成后立即确认,而是要等到接下来的 C、D、E 五个区块形成后才会确认(交易金额越大,转账的区块越多)等待)。这将进一步增加张三的出块难度。

三.涉及的数据算法

我们更进一步,在上一篇文章中至少留下这三个问题:

1.Users 交易授权是如何进行的比特币交易记录查询,为什么不需要中央机构进行密码验证?

2.为什么要修改一个block,必须修改这个block后面的所有block,怎么做?

3.掷骰子的谜题是如何运作的?

在解决这些问题之前,让我们回顾一些基本的算法。比特币/区块链主要涉及两种算法:1.哈希算法2.非对称加密。对这两类算法不熟悉的读者可以阅读作者之前的文章《构成信息安全技术体系的三种基本算法》。这里我们简单列举一下:

哈希或数据摘要:

byte[] hash(byte[] data);//为了和比特币开发文档保持一致用hash代替digest.

非对称加密:

四.交易授权

首先,比特币钱包软件为用户生成支付地址和秘钥,通过调用 generateKeyPair() 生成,支付地址 address=hash(KeyPair.publicKey) ,添加哈希的目的是为了不收钱的时候暴露用户的publicKey,减少从publicKey派生privateKey的可能性,虽然没有通过publicKey派生privateKey的情况。支付地址对应的秘钥为 KeyPair.privateKey。因为比特币中使用的keyPair可以从privateKey中导出publicKey,所以钱包中存储的数据只有privateKey。以张三转给李四的交易为例,区块链中产生的交易数据简化如下图:

交易授权

比特币交易记录查询

如图所示的每笔交易的授权都是通过签名进行的,每笔交易的输入信息都来源于上一笔交易的输出(矿工的收益奖励除外,它是固定在区块链的第一位置,作为一种特殊的交易,本文不讨论)。图中数据的签名部分本身就包含了一个publicKey,它实际上就构成了一个证书。参见“构成信息安全技术体系的三种基本算法”中关于数字证书的部分。比如张三拿到李斯的收款地址后,可以通过钱包软件授权转账,即生成签名,如下图:

签名

签名生成后,钱包软件会将本次交易的输入、输出和签名打包广播到区块链网络。区块链网络的矿工节点开始验证交易是否合法。验证过程如下:

验签

可见,比特币使用传统的数字签名手段来完成交易的授权。在实践中,比特币的签名和验证过程是使用它定义的脚本完成的。使用脚本允许更多的控制和更复杂的授权,例如多方授权合约交易。另外,为了更强的安全性,很多地方在进行hash时,会进行多次hash。为简单起见,本文忽略了哈希的数量。

五.区块链链

熟悉哈希计算的读者应该可以猜到区块是通过哈希值连接起来的,如下图:

图片描述

我们将在下面讨论难度和随机值。从图中可以看出,区块A的任何修改都会导致其区块头发生变化,从而导致区块B的区块头中的哈希值发生变化,而这种变化会传递给A之后的所有区块需要指出的是,交易记录的哈希值是一个叫做“默克尔树”的根节点。交易记录的任何变化都会导致“默克尔树”的根节点发生变化。详情请参考相关文档。

六.掷骰子

区块链中掷骰子的术语称为工作量证明(POW),它证明了矿工在指定时间生成块的平均成本。掷骰子的过程其实就是不断的寻找一个随机值,使得这个随机值和区块头中的其他信息结合计算出来的哈希值小于指定的难度值(难度值越小,难度更大)。

图片描述

难度值是随区块链网络的总算力动态调整的值。每次生成 2016 个新块时,都会进行统计。如果每个区块的平均时间小于 10 分钟,难度会增加一点(难度值降低);否则,难度降低(难度值增加)。

七.更多

作为入门文章,本文忽略了很多非核心的技术环节,以期让读者在最短的时间内了解比特币。对技术架构有初步的了解。有进一步学习需求的读者可以访问比特币官网bitcoin.org上的开发指南和参考文档。