主页 > imtoken安卓版下载地址 > 30 分钟介绍比特币和区块链

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

imtoken安卓版下载地址 2023-01-18 09:45:25

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

1. 什么是比特币

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

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

步法币比特币备注

1个

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

张三和李四各自安装了一个叫做钱包的软件,通过这个软件为对应的账户生成账号和密码。

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

2个

张三必须保证自己的银行账户里有足够的钱转账给李四,如果没有,他必须先在银行存入一笔钱。

张三需要保证自己比特币账户里的钱足够转账。 如果没有,他可以通过比特币交易平台购买比特币,将比特币存入钱包软件生成的账户。 本质上,他是把银行里的法币兑换成比特币。 .

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

3个

张三通过输入密码授权银行从自己的账户转一笔钱到李四的账户。

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

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

4个

银行记录了张三的操作,从张三的账户里扣了一笔钱,又把等量的钱加到李四的账户上。

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

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

保存比特币的u盘坏了_sitesohu.com 比特币存在哪里_比特币能存在u盘里吗

5个

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

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

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

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

第一步:虽然必须有账户和密码,但法币账户是在银行设立的,银行会保存用户的账户和密码数据; 而比特币账号和密码在使用前不为除用户本人外的任何第三方机构所知。

第二步:银行账户充值必须通过银行系统。 若开户银行系统出现故障(如光纤被施工队剪断),故障期间张三无法充值; 在充值比特币的时候,如果某个交易平台出现故障,张三可以随意更换其他充值平台,因为所有交易平台都认可Bitwallet生成的账户。

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

第四步和第五步:法币记账和交易确认需要银行介入; 比特币依赖于区块链网络,下面我们就来谈谈区块链。 如果公司或个人的设备出现故障,不会影响整个区块链网络的运行。

除了上述之外,法币和比特币的发行方式也不同:法币一般由国家发行,其流通和使用以合法形式得到保障; 而比特币的发行方式是:挖矿,理论上人人都可以参与挖矿。 获取比特币。 这类似于地球上的另一种货币黄金。 黄金在地球上是稀有且有限的,比特币也是有限的,而且开采量会逐年递减,大约再过一百年就会被开采出来。 请注意,挖矿这个词实际上只是一个比喻。 挖矿与区块链的运行密切相关,我们将在下一节讨论。

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

为了方便理解,上一篇文章省略了很多细节。 为了在实际接触比特币时不至于造成混淆,笔者认为有必要说明几点。

比特币钱包软件生成的账户在比特币术语中通常称为地址(Bitcoin address)。 比特币钱包可以生成许多地址。 这些地址用于接受来自其他人的转账。 这有点类似于电子邮件地址,但不同的是,它是一个仅用于接收一次转账的地址。 一个地址对应一个密码,在比特币术语中称为私钥。 用户对地址内资金的使用权完全由密钥保障,因此妥善保管密钥非常重要。 设置密码语句。

在实践中,很多公司发行的钱包程序往往需要用户注册,以便将用户钱包软件中的账户密钥数据加密存储在公司服务器上。 数据仍然可以通过存储在公司的备份来检索,但这不是比特币本身的内容。 这相当于用户拥有了一些金条(比特币),在某家公司开了一个保险箱来存放这些金条,但是把这些金条放在家里的保险箱(加密USB)里是一样的。 把金条放在一个公司里,说明你对这个公司的实力很有信心,不会被小偷袭击,也不会自我防备。

2.什么是区块链

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

简单来说,区块链就是一个由多人或多人共同维护的、所有人都可以访问的账本。 分类账用于记录每笔比特币转账。 所有用户都可以查看分类账以了解他们钱包和比特币的余额。 货币交易是否成功完成。

图一区块链

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

我们来看看区块链是如何解决上述多次支付问题的。 收款人通过查询区块链中是否有相应的转账记录来检查是否收到转账(对于李四来说,就是检查是否有从b到c的转账记录); 区块链会在记录一次转账交易之前首先检查区块链记录中是否有向其他账户转过相同金额的钱(张三的b账户是否转过钱),如果已经转过,则认为本次转账是非法的并且不会记录转移。 付款人在区块链账本中找不到对应的转账。

sitesohu.com 比特币存在哪里_保存比特币的u盘坏了_比特币能存在u盘里吗

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

假设参与记账(挖矿)的每个人都是唯利是图的,如何赚钱(不考虑任何道德约束),区块链创造一个算法系统,让每个参与记账的人宁愿通过Honest记账来获得报酬。 比如有两个工作:一个是抢银行,需要两天时间,一个是挖金矿,只需要一天时间。 开采金矿的报酬等于或大于抢劫银行。 经过。 区块链的算法让每个记账的人都需要付出一定的代价来记账,同时对记账人进行奖励。 这里的成本是计算时间,奖励包括两部分:一是每笔交易抽取的佣金,二是系统新产生的比特币奖励。 第二个奖励是比特币为什么叫记账挖矿。

区块链记账是以区块为单位,最新的交易记录写入一个区块。 簿记员拥有的计算设备,如矿机(专门用于挖矿的计算机),必须先完成一个难题,然后才能创建一个区块进行记账。 谁先完成拼图,谁就获得记账权和奖励,大家将他产生的区块作为最新的交易记录添加到之前的账本中。 当然,新区块必须满足一些基本规则,比如不与之前的账本冲突,没有错误授权的记录。 交易(这是由上面提到的用户地址和私钥授权来保证的)。

这是什么谜题? 有一个很形象的比喻:掷骰子,谁先掷出符合条件的骰子组合,谁就获胜。 以两个骰子为例,掷出两个骰子总和不大于6的概率为41.6%。 增加难度,要求三个骰子的总和不大于4,那么概率只有1.8%,也就是说只有一次掷骰子超过50次满足条件的机会平均数次,掷骰子需要一些时间。 但是考虑到很多电脑都在掷骰子,速度很快,一般的矿机一秒钟可以轻松掷出几百亿次。 我们继续增加难度,通过增加骰子数量和减少骰子数量的总和,一直增加到全世界所有参与掷骰子的计算机一起玩,只有一个组合符合要求是平均每十分钟扔一次。 这会是什么样的组合:1亿个骰子掷出的总和不超过1亿和几十,想想几乎1亿个骰子每一个都是1的概率。

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

图二伪造区块链

图中CDE的块是很多记账员共同计算的,而C'D'只能由张三一家计算。 他的计算速度几乎不可能赶上全网的出块速度。 而且,他产生的区块不能产生任何收益,因为它们不被全网认可。 在实践中,李斯对转账的确认并不是在区块C产生后立即确认,而是在接下来的C、D、E等5个区块形成后(交易金额越大比特币能存在u盘里吗,更多的块通常在等待),这将进一步增加张三锻造块的难度。

3.涉及的数据算法

再深入一点,上一篇文章至少还剩下这三个问题:

1、用户的交易授权是如何进行的? 为什么不需要中央机构来执行密码验证?

2、为什么修改一个区块,必须修改这个区块后面的所有区块,怎么办?

3. 掷骰子的谜题是如何实现的?

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

哈希或数据摘要:

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

非对称加密:

class KeyPair  //密钥对
{
    byte [] privateKey  //私钥
    byte [] publicKey;  //公钥

比特币能存在u盘里吗_保存比特币的u盘坏了_sitesohu.com 比特币存在哪里

}; KeyPair generateKeyPair();//用于产生一个密钥对 byte[] asyEncrypt(byte[] plainData,byte[] publicKey); //用私钥对数据加密 byte[] asyDecrypt(byte[] cipherData,byte[] privateKey); //用公钥对私钥加密的数据解密

4. 交易授权

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

交易授权

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

签名

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

验签

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

5.区块链

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

图片描述

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

6.掷骰子

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

图片描述

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

七。 更多的

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