Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Golang语言情怀--第70期 区块链技术-挖矿流程

Golang语言情怀--第70期 区块链技术-挖矿流程

作者头像
李海彬
发布于 2022-05-19 05:41:39
发布于 2022-05-19 05:41:39
7150
举报
文章被收录于专栏:Golang语言社区Golang语言社区

步骤一:发起交易

用户进入钱包,执行一个交易操作,他将一个加密货币或者一个token发送给另一个用户。

步骤二:进入交易池

现在这个交易被钱包广播,等待区块链上的矿工们来拾取它。在被拾取前,它会一直在“未确认交易池”中等待。

所有等待被处理的交易都会在未确认交易池中,未确认交易池不是网络上的一个巨大的池,而是很多小的分散在矿工本地的缓存池。

步骤三:确认待打包的交易

区块链网络上的矿工(有时叫节点)从未确认交易池中选择交易打包成数据块。除了一些额外的元数据外,数据块基本上就是交易数据(此时仍然是未确认交易)。每个矿工打包它们拾取的交易数据块,多个矿工可以选择同样的交易数据打包。例如,两个矿工,矿工A和矿工B都决定打包交易X。

每个区块链对数据块都有最大限制。在比特币区块链上,这个最大值是1MB。

在打包交易前,矿工需要先根据区块链的历史数据检查这个交易是否有资格被打包。根据区块链历史数据记录,如果支付者的钱包里有足够的余额,这笔交易被认为是有效的,并且可以被打包上链。

假如一个比特币持有者想要加速他的交易进度,他可以选择支付更高的挖矿奖励。矿工通常会优先打包这些支付更高挖矿奖励的交易。

步骤四:计算签名出块

矿工的工作就是选择交易数据并打包成块。要把这些块添加到区块链上(这意味着让区块链上所有节点都接受这个块的数据),这个数据块首先需要签名(也叫“工作证明”)。这个签名是在解决了一个非常复杂的数学问题后得到的,这个签名是独一无二的。每个区块需要解决的数学问题难度是一样的。为了解决这个数学问题,需要耗费相当多的算力(所以,要消耗相当多的电力)。这个过程就被叫做挖矿。如果你想知道更多关于这个问题的内容,请继续阅读,如果你只想简单了解一下,请跳到步骤五。

挖矿即哈希(工作量证明)

矿工在打包块时需要解决的数学问题实际上就是找到一个以一定量的零开头的哈希函数的输出结果(就是签名)。这听起来很复杂对吗?但是它并不难理解。

开始之前,我们需要先了解一下什么是哈希函数。哈希函数很难解,但其结果非常容易验证。

哈希函数的输入值可以是任意字符串,随机输出一个32位的字母和数字的字符串。如果输入中有任何一点小小的变动,输出也将会随机改变。然而,同样的输入字符串只会得到同样的输出。

矿工要打包的交易数据就是一个字符串,将它进行哈希计算,就会得到一个32位的输出值。比特币区块链有一个规则,要求打包的数据块签名必须以一定数量的零开头。然而哈希计算的输出值是对它的每个输入值都是随机的,那么,输入的字符串哈希后没有得到这么多零开头的值怎么办呢?这就是为什么矿工需要不断的去改变块里面一个叫"nonce"的值,每改变一次nonce的值,就会改变块的数据,哈希运算后得到的签名也会不一样,也就是,每改变一次nonce的值,就会得到一个全新的签名。

矿工无限次重复改变nonce的值,直到得到一个符合要求的签名。

下图例子中,签名是以7个零开头的。但是具体需要多少个零,取决于区块链上的区块难度。区块难度的问题相对要难一些 。

这就是矿工们为什么需要为它们打包的数据块找到一个合格的签名,也是需要那么多算力来解决这个数学问题的原因。试想一下需要这么多次更改nonce值并计算需要多少时间和算力呀。此外,当更多的矿工加入到区块链,哈希运算的难度也将增加并且会导致更高的电费支出。现在我们继续第五步。

注意:此过程实际上不是定义为数学问题,而是定义确定性问题 - 计算机对数字执行预先确定的操作,以查看输出是否可取。

步骤五:广播区块

矿工找到了一个合格的签名,他就可以向其他所有矿工广播他的数据块和签名。

步骤六:验证区块

其他矿工现在要确认通过广播收到的数据块的签名合法性,他们要对这个数据块进行哈希运算检查它是否输出一个以这么多零开头的签名。如果检查通过,其他矿工就会认为这个数据块有效,并且同意将它添加到区块链上(他们达成了共识,即他们所有矿工都同意彼此,所以术语叫共识算法)。这也是“工作量证明”的来源。签名就是矿工工作的证明(已花费的算力),现在,数据块可以加到区块链上了,并且分发到网络上所有其他节点。只要这个数据块中的所有交易数据都跟区块链上的历史数据符合,其他节点将接收这个数据块并将其保存。

步骤七

当一个数据块被添加到区块链上后,这条区块链上的所有块都认为它是正确的。例如,我的交易包含在第502号块中,并且这条区块链现在最长是第507号块,它的意思就是说我的交易数据被确认过5次(507-502)。它被认为是正确的,因为每次有其他块上链的时候,区块链都会就所有交易记录达成共识,包括你的交易和你的块。你可以说,到这个时候,你交易已经被确认了5次。这也是Etherscan在显示交易详细信息时所指的。你的交易被确认的次数越多(即嵌入区块链越深),攻击者就越难更改它。

每当新的交易加入到区块链,所有矿工都需要从第三步重新开始,打包一个新的交易数据块。


参考资料:

Go语言中文文档

http://www.golang.ltd/

Go语言官方文档

https://golang.google.cn/

Golang语言情怀

ID:wwwGolangLtd

 www.Golang.Ltd

游戏服务器架构丨分布式技术丨大数据丨Go语言学习

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言情怀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Golang语言情怀--第79期 区块链技术-基于长安链建立NFT流程
过去一段时间NFT备受吹捧,今天就给大家简单的说下基于长安链如何建立NFT的流程,我们就按照最简单的流程给大家说明下;正式讲解之前我们先给大家普及下NFT的先关基础知识。 NFT,Non-FungibleToken的缩写,即“非同质化通证”。与之对应的是我们日常较为熟悉的 FT(Fungible-Token)。Fungible-Token:可替代通证/同质化通证。Token是标准化的,Token之间互为替代,可拆分,且Token之间具有相同特性及价值。比特币、以太坊、USDT就属于Fungible-Toke
李海彬
2022/06/08
1.3K0
Golang语言情怀--第79期 区块链技术-基于长安链建立NFT流程
Golang语言情怀--第73期 区块链技术-游戏与智能合约
经过前几篇文章的预热,目前后期主要以区块链技术为主,结合目前区块链技术应用到游戏及其他应用中,学习技术或者其他技能,目的只有一个就是赚钱,所以理论会的再多不如实践;目前经过近期学习,可能我们先从智能合约开始,结合游戏进行实践操作。 下面先了解下区块链的用途: 加密货币:作为财富转移的强大媒介,用户可以向全球各地的人发送或收取资金,所需时间远低于普通银行转账(手续费往往也是微乎其微),且加密货币无法被伪造,保证了交易的真实和可靠。 有条件支付:如果彼此不认识的两个人想就一场体育比赛打赌。那么两人就可以发起智能
李海彬
2022/05/23
3690
Golang语言情怀--第73期 区块链技术-游戏与智能合约
区块链中怎么惩罚虚假信息的矿工,工作量证明POW,共识算法
1. 共识机制惩罚:矿工通过提交多个区块的作弊行为,扣除该矿工的所有抵押币种,存储算力清零且不可恢复。
zhangjiqun
2024/12/13
1640
区块链中怎么惩罚虚假信息的矿工,工作量证明POW,共识算法
区块链中的共识机制以及共识算法
共识,从字面上来看,是在某方面达成一致。打个比方,一个部门最近来了几位新同事,部门主管为了欢迎新同事的加入,以能让新同事融入到新环境,提议下班后聚个餐,对于聚餐了,大伙对此举双手赞成,毕竟能蹭个免费餐的事并不是每月都有的,这时便可以说,大家对下班后聚餐迎新达成了一致认同。
zhangjiqun
2024/12/13
1.1K0
区块链中的共识机制以及共识算法
Golang语言情怀--第82期 区块链技术-区块链钱包基础知识:如何更安全的使用钱包?
第一:钱包地址 我们知道区块链的账户的密钥分为公钥和私钥,我们在钱包里面看到的地址,一般来说就是我们公钥的地址的一部分,但公钥太长了,我们看到地址都是公钥的最后的20个字节,这就是我们的钱包的地址,公钥和私钥是一对一的配对的,我们有了私钥之后,我们是可以推导出公钥,但有了公钥,我们是无法推导出私钥的,不过我们有了公钥,我们可以解读出一些私钥加密的一些内容,这就是我们的公钥和私钥的一个关系,以及我们的钱包地址是怎么来的。 第二:区块链中的转账的机制。 比如说,张三跟李四要转5个以太坊,他的表述方式就是给李四
李海彬
2022/06/13
8750
Golang语言情怀--第82期 区块链技术-区块链钱包基础知识:如何更安全的使用钱包?
Golang语言情怀--第76期 区块链技术-长安链底层技术平台介绍
1. 长安链底层技术平台介绍 1.1. 简介 “长安链·ChainMaker”具备自主可控、灵活装配、软硬一体、开源开放的突出特点,由北京微芯研究院、清华大学、北京航空航天大学、腾讯、百度和京东等知名高校、企业共同研发。取名“长安链”,喻意“长治久安、再创辉煌、链接世界”。 长安链作为区块链开源底层软件平台,包涵区块链核心框架、丰富的组件库和工具集,致力于为用户高效、精准地解决差异化区块链实现需求,构建高性能、高可信、高安全的新型数字基础设施,同时也是国内首个自主可控区块链软硬件技术体系。 长安链的应用
李海彬
2022/06/07
8010
Golang语言情怀--第76期 区块链技术-长安链底层技术平台介绍
区块链原理说明及其应用场景
区块链技术难点:TPS、延迟时间、容量和带宽、安全等方面。 区块链技术的集成应用在新技术革新和产业变革中起到的重要作用,广泛用于加密货币,食品链安全,知识产权,资产管理等领域,加快推动区块链技术和产业创新发展;
全栈工程师修炼指南
2022/09/28
7980
区块链的核心技术
区块链的技术基石主要有: SHA256 Hash 公钥加密技术 工作量证明机制 (1)SHA256 Hash 区块链使用的核心哈希算法是 SHA256,计算后的值不能被解密回原始内容,它是单向的,
dys
2018/06/04
1.3K0
区块链技术与应用02 北大肖臻
,target越小,挖矿难度越大,挖矿难度跟目标阈值成反比。调整挖矿难度,就是调整整个目标空间在整个输出空间所占的比例。哈希函数 SHA-256 ,整个输出空间大小为 。
Daffy
2020/11/11
1.4K0
1-区块链基础概述
在加密货币应用中,区块链结构的作用就是用作账本,每一个区块都是一页账册,它们相互之间通过哈希值进行连接形成一条完整有序的链表,每个区块的头部哈希是它们的唯一标识。
Ywrby
2022/10/27
1.7K0
1-区块链基础概述
Golang语言情怀--第72期 区块链技术-没有区块链技术 元宇宙将无法扩展
元宇宙将成为我们的新文化和主流,这不是如果的问题,而是何时的问题。 我们将生活在两个平行的世界中:虚拟与现实,沉浸在这两个独立但又通过区块链技术连接的世界中。 “元宇宙”一词是尼尔·斯蒂芬森在他199
李海彬
2022/05/23
1.4K0
Golang语言情怀--第72期 区块链技术-没有区块链技术 元宇宙将无法扩展
016 | 漫谈区块链共识机制
并标明原文链接:http://keeganlee.me/post/blockchain/20180425微信订阅号:keeganlee_me写于2018-04-25
Keegan小钢
2018/08/10
1.1K0
共识机制:区块链技术的根基
技术定义是:共识机制是一个群体决策的流程,群体中的个体会执行和支持对群体其他个人最好的决定。这是一个个体需要支持大多数人决定的解决方式,不管他们意愿如何。
cloudchainchina
2018/09/19
4.1K0
共识机制:区块链技术的根基
简单介绍区块链技术
重要提示:如果你拥有价值超过1000美元的加密货币,那么你肯定应该使用硬件钱包,而不是在交易所保留硬币。 我推荐使用Trezor,你可以直接从他们的网站花费€89购买。
Jinjin
2018/03/12
3.8K0
简单介绍区块链技术
区块链技术和系统;ZKRollup ;区块链交易打包和审查
区块链技术作为一种去中心化、不可篡改且高度安全的分布式账本技术,近年来在金融科技、供应链管理、物联网、版权保护、投票系统等多个领域展现出了巨大的应用潜力。以下是拥有区块链研究经验可能涵盖的一些关键方面:
zhangjiqun
2024/08/01
5070
BTC交易流程
比特币的交易流程涉及多个步骤和参与方,包括发送方、接收方、矿工和比特币网络中的节点。以下是比特币交易的详细流程:
孟斯特
2024/06/28
2570
BTC交易流程
Golang语言情怀--第77期 区块链技术-长安链长安链基础知识介绍
1.1. 基础术语说明 名称 说明 区块(Block) 区块是区块链中存储交易和交易相关的数据的单元,通常由区块头和区块体组成。 区块链(Blockchain) 使用密码技术链接将共识确认过的区块按顺序追加而形成的分布式账本。 智能合约(SmartContract) 以数字形式定义的能够自动执行条款的合约。 读写集 (Read-write set) 区块链上的一条交易执行过程中,被读取和被修改或写入的状态数据的集合。 交易(Transaction) 也称为事务,区块链上的一次原子性账本数据状态变更及其过程和
李海彬
2022/06/07
8210
[区块链] 区块链小白菜系列入门知识详解(〇)
概念:Hash是一种将数据映射为固定大小值的算法。它通过一系列计算和转换,生成唯一的hash值。
荷秋
2024/01/19
1K0
[区块链] 区块链小白菜系列入门知识详解(〇)
区块链前世今生
作者:陶海军,腾讯通讯充值与彩票业务部高级工程师。 引言: 谈起区块链前世今生,我们不得不先说一下比特币。因为比特币和区块链如鱼水之间一样有着太多的关系。 比特币的起源 2008年,一位化名为中
腾讯大讲堂
2017/10/27
2.7K0
区块链前世今生
区块链共识机制
区块链是一种分布式数据库技术,已经在金融、物流、医疗等领域得到广泛应用,其中共识机制是确保区块链安全性和可靠性的关键机制之一,共识机制可以确保所有节点对于区块链上的数据和交易的一致性,从而防止双重支付和其他恶意行为,本文将详细介绍区块链共识机制的原理、分类和应用并探讨当前共识机制面临的挑战和未来的发展方向。
Al1ex
2023/05/26
7810
区块链共识机制
推荐阅读
相关推荐
Golang语言情怀--第79期 区块链技术-基于长安链建立NFT流程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档