7个简单步骤解释区块链挖掘和交易如何工作

转载自该链接.

有没有想过区块链上的挖矿过程是如何工作或者交易如何被确认并被添加到区块链中的?以下是在区块链上处理区块链交易的方式,分为七个步骤。

  • 第 1 步:用户从他们的钱包应用程序签署交易,尝试从他们那里向其他人发送某种加密货币或代币。
  • 第 2 步:交易由钱包app进行广播,然后等待由相应区块链上的矿工打包。只要它没有被打包,它就会徘徊在“未经确认的交易池”中。该池是网络上等待处理的未确认交易的集合。这些未确认的交易通常不会被收集在一个巨大的池中,而是更多地被收集在小的细分的本地池中。
  • 第 3 步:网络上的矿工(有时称为节点,但不完全相同!)
    从这些池中选择交易并将它们形成一个“块”。除了一些额外的元数据之外,一个区块基本上是一个交易的集合(此时此刻,仍然是未确认的交易)。每个矿工都构建自己的交易块。多个矿工可以选择要包含在他们的区块中的相同交易。

示例:两个矿工,矿工 A 和矿工 B。矿工 A 和矿工 B 都可以决定将交易 X 包含在他们的区块中。
每个区块链都有自己的最大块大小。在比特币区块链上,一个区块的最大区块大小是 1 MB 的数据。在将交易添加到他们的区块之前,矿工需要根据区块链历史检查交易是否有资格执行。如果根据现有的区块链历史,发送方的钱包余额有足够的资金,则该交易被认为是有效的,可以添加到区块中。如果比特币所有者想加快交易速度,他们可以选择提供更高的挖矿奖励。矿工通常会将此类交易优先于其他交易,因为它们提供了更好的挖矿奖励。

  • 第 4 步:通过选择交易并将它们添加到他们的区块中,矿工创建了一个交易区块。要将这个交易块添加到区块链(这意味着让区块链上的所有节点都在这个块中注册交易),该块首先需要一个签名(也称为“工作证明”,解出nonce值)。这个签名是通过解决一个非常复杂的数学问题来创建的,这个问题对于每个交易块都是独一无二的。每个区块都有不同的数学问题,因此每个矿工都将致力于解决他们形成的区块所特有的不同问题。每个块的问题都同样难以解决。为了解决这个数学问题,需要使用大量的计算能力(因此需要大量的电力)。这个过程称为挖矿。如果您想更多地了解数学问题的具体工作原理(实际上并没有那么复杂),请继续阅读下面的内容,否则,如果您想让它更简单一些,请跳到第 5 步。

挖矿(工作量证明共识算法)又名哈希

每个矿工在尝试向区块链添加块时面临的数学问题是为其块中的数据找到一个哈希输出(又名签名),该输出以一定数量的连续零开头。
散列函数只是简单地提出一个很难解决的数学问题,但答案很容易验证。
散列函数接受数字和字母的输入字符串(字面的随机字母,数字和/或符号的任何字符串),并把它变成一个新的32位串的现有随机字母和数字。这个 32 位字符串是散列输出。如果输入字符串中的任何数字或字母发生更改,哈希输出也会随机更改。但是,相同的输入字符串将始终给出相同的输出字符串。
现在将块内的数据视为哈希输入(一串数据)。当这个输入被散列时,它会给出一个散列输出(32 位字符串)。比特币区块链的一条规则是,一个区块只有在其签名、哈希输出以一定数量的零开头时才能添加到区块链中。但是,一个输入字符串生成的输出字符串对于每个不同的输入字符串总是随机的,那么如果块的数据字符串没有导致以这么多连续零开头的签名(哈希输出)怎么办?嗯,这就是为什么矿工反复更改他们区块内的一部分数据,称为nonce. 每次矿工更改随机数时,它都会稍微改变块数据的组成。当块数据的组成发生变化(它的输入)时,它的签名(它的输出)也会发生变化。因此,每次更改块的随机数时,块都会获得一个新的随机签名。
矿工无限期地重复这个更改随机数的过程,直到他们随机命中满足签名要求(零)的输出字符串。
这就是矿工需要为他们的区块找到合格签名的方式,这也是解决这个数学问题需要如此多的计算能力的原因。猜测这么多不同的随机数需要大量的时间和计算能力。此外,当更多的散列能力(矿工)加入区块链时,它的数学问题的难度会增加,并导致解决一个区块的平均电费更高(更多关于这个在这里)。
现在让我们继续第 5 步。

注意:这个过程实际上并没有被定义为一个数学问题,而是一个确定性的东西——计算机正在对一个数字执行预先确定的操作,以查看输出是否合乎需要。

  • 步骤 5:首先为其区块找到合格签名的矿工,将该区块及其签名广播给所有其他矿工。
  • 第 6 步:其他矿工现在通过获取广播块的数据串来验证签名的合法性,并对其进行散列以查看其散列输出是否确实导致其包含这么多零的签名(难以解决,易于验证)。如果有效,其他矿工将确认其有效性并同意该块可以添加到区块链中(他们达成共识,即它们都彼此一致,因此称为共识算法)。这也是“工作量证明”定义的来源。
    签名是所执行工作的“证明”(所花费的计算能力)。该块现在可以添加到区块链中,并分发到网络上的所有其他节点。只要区块内的所有交易都可以根据区块链的历史记录执行,其他节点就会接受该区块并将其保存到他们的交易数据中。
    第 7 步:将一个块添加到链中后,添加到它上面的每个其他块对于那个块都算作“确认”。例如,如果我的交易包含在区块 502 中,并且区块链长度为 507 个区块,则意味着我的交易有 5 个确认(507-502)。之所以称为确认,是因为每次在其上添加另一个区块时,区块链都会再次就完整的交易历史达成共识,包括您的交易和您的区块。您可以说此时您的交易已被区块链确认 5 次。这也是 Etherscan 在向您显示交易详细信息时所指的内容。您的交易获得的确认越多(也就是区块嵌入链中的深度越深),攻击者就越难更改它(您可以在此处阅读有关其工作原理的更多信息))。在将新区块添加到区块链后,所有矿工都需要在第三步重新开始,形成一个新的交易区块。矿工无法继续(好吧,他们可以,但这与本文无关)挖矿也就是解决他们之前正在处理的区块的问题,原因有两个:
    一:它可能包含已被添加到区块链的最后一个区块确认的交易(请记住,多个矿工可以在他们正在解决的区块中选择/包含相同的交易)。再次发起的任何这些交易都可能使它们无效,因为余额可能不再足够。
    第二:每个区块都需要将添加到区块链的最后一个区块的哈希输出(签名)添加到它们的元数据中。这就是使它成为区块链的原因。如果矿工继续挖掘他们已经在工作的区块,其他矿工会注意到哈希输出与区块链上最新添加的区块不对应,因此会拒绝该区块。

7个简单步骤解释区块链挖掘和交易如何工作相关推荐

  1. 区块链数学建模_试图通过高中数学课程来解释区块链

    区块链数学建模 by Kevin Kononenko 凯文·科诺年科(Kevin Kononenko) 试图通过高中数学课程来解释区块链 (Blockchain explained by trying ...

  2. 区块链信用:交易的热力学第二定律

    本文写于2016年7月,首发于巴比特. 社会学家马林诺夫斯基考察完西太平洋上的特罗布里恩德群岛后,对古典经济学上的一个假设很生气.经济学家过去一直把人类视作"理性经济人",假设他们 ...

  3. 区块链隐私:交易还是计算?

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 区块链隐私:交易还是计算? 隐私"是什么意思?在区块链生态系统中,"隐私"这个词被 ...

  4. 用 Go 构建一个区块链 -- Part 4: 交易(1)

    翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了.如果想直接运行代码,也可以 clone GitHub ...

  5. mixin network_【译文】Mixin——以最高的安全性满足所有区块链资产的交易需求

    一个免费的闪电般快速的数字资产端对端交易网络. 01.概况 Mixin 由一个理论上永久的内核.许多动态域和不同的多用途域扩展组成,以构成扩展的星形拓扑结构. Mixin Network 已经支持 B ...

  6. 区块链的基本概念和工作原理

    区块链的基本概念和工作原理 1.基本概念 区块链是分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实现不同节点之间建立信任.获取权益的数学算法. 区 ...

  7. 区块链架构与交易流程(fabric1.0)

    区块链架构与交易流程 区块链系统架构 节点 网络拓扑 交易流程 1. 提交交易提案 2. 模拟执行提案并签名 3. 返回模拟执行结果 4. 提交交易 5. 交易排序并结块 6. 广播区块 7. 保存区 ...

  8. 【译】用Java创建你的第一个区块链-part2:可交易

    转自:http://www.spring4all.com/article/814 区块链是分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实现不同节 ...

  9. 区块链日记——【译】用Java创建你的第一个区块链-part2:可交易

    本文转自http://www.spring4all.com/article/814 [译]用Java创建你的第一个区块链-part2:可交易 区块链是分布式数据存储.点对点传输.共识机制.加密算法等计 ...

  10. 基于区块链的价值交易和管理系统

                                                                                                  基于区块链的 ...

最新文章

  1. [bzoj1582][Usaco2009 Hol]Holiday Painting 节日画画_线段树
  2. HTML学习01之初识HTML
  3. 工作104:vuex很强大
  4. css设置字体颜色、文本对齐方式、首行缩进、文本装饰、列表样式、鼠标样式、禁止文本域拖拽、轮廓线、块级元素对齐方式、文字溢出设置
  5. 推荐系统实践:从多领域优化到AutoML框架
  6. opc读取ab的plc数据_使用OPC的模式去连接PLC进行AB SLC-5_04数据的采集
  7. 乐思启慧教学系列—Bootstrap布局规则
  8. python dag调度系统开发_深度解析 | 基于DAG的分布式任务调度平台:Maat
  9. PHP中单引号双引号使用原则
  10. mysql mutex_MySQL 有关锁的简单介绍
  11. 信道编码-RS-CRC-交织(一)
  12. Matlab画圆且坐标轴图片等比例显示
  13. html钢琴谱播放器,蛐蛐五线谱播放器
  14. 抢红包案例分析附代码实现(一)
  15. uva10246最短路 + 枚举 + 数组记忆
  16. 【敏捷6.1】团队绩效理念与实践
  17. DTL(Django templeate language)
  18. 复杂电路简化经典例题_复杂电路的简化策略
  19. 计算机考研考电路学校,集成电路工程考研学校排名
  20. 驾驶员理论考试通过!

热门文章

  1. Gary Marcus再发万字长文,列14个QA回应机器学习批判言论
  2. Ubuntu 安装 QEMU
  3. SSM毕设项目音乐鉴赏网站前端开发sl86x(java+VUE+Mybatis+Maven+Mysql)
  4. 2016年,你要学习这些移动开发技术
  5. 深度探索二维码及其应用
  6. 五、SPR 单一职责
  7. vcf文件格式详细解释
  8. 面试题:浏览器事件冒泡、事件捕获
  9. xp无法查看工作组计算机 服务没有启动,XP系统弹出“无法查看工作组计算机”提示怎么办?...
  10. nginx 配置基于域名的虚拟主机