BTC交易流程
交易流程
比特币的交易流程涉及多个步骤和参与方,包括发送方、接收方、矿工和比特币网络中的节点。以下是比特币交易的详细流程:
- 创建交易:
- 生成比特币地址:比特币地址是一个由公钥生成的字符串,用于接收比特币。每个用户在创建比特币钱包时,都会生成一对公钥和私钥。公钥通过哈希算法生成比特币地址,私钥用于签名交易。
- 创建交易信息:交易信息包括以下几个部分:
- 输入(Inputs):包含发送方的比特币地址和之前交易的输出(即发送方要花费的比特币)。
- 输出(Outputs):包含接收方的比特币地址和发送的比特币数量。
- 交易额外信息:包括交易费等。
- 签名交易:发送方使用私钥对交易信息进行签名。签名的目的是证明交易的合法性和发送方对比特币的所有权。签名后的交易信息会被广播到比特币网络。
- 广播交易: 签名后的交易信息通过比特币网络广播到其他节点。每个节点都会验证交易的合法性,包括检查签名是否有效、输入是否未被双花(即同一笔比特币是否未被多次使用)等。
- 矿工打包交易: 矿工从比特币网络中收集未确认的交易,并将这些交易打包到一个新的区块中。矿工会优先选择交易费较高的交易进行打包。
- 工作量证明(PoW): 矿工需要通过工作量证明(PoW)算法来解决一个复杂的数学问题。具体来说,矿工需要找到一个随机数(Nonce),使得整个区块的哈希值满足目标难度。这个过程称为挖矿。
- 广播新区块: 一旦矿工找到符合条件的哈希值,他们会将新区块广播到比特币网络。其他节点会验证新区块的合法性,包括检查哈希值是否符合目标难度、交易的合法性等。
- 区块链更新: 验证通过后,新区块会被添加到区块链中,成为区块链的最新部分。此时,交易被确认并记录在区块链中。
- 交易确认: 交易被打包到区块中并添加到区块链后,交易会获得一次确认。随着新区块的不断添加,交易会获得更多的确认。一般来说,6次确认被认为是安全的,意味着交易已经被多个区块确认,难以被篡改。
- 接收方验证交易: 接收方可以通过比特币网络查询交易状态,确认交易是否被记录在区块链中以及获得的确认次数。一旦交易获得足够的确认,接收方可以认为交易是安全的,已成功接收比特币。
广播交易
以下是一个比特币交易广播的示例流程图:
A[用户创建并签名交易] --> B[发送交易到本地节点]
B --> C[本地节点验证交易]
C --> D[广播交易到邻近节点]
D --> E[邻近节点验证并广播交易]
E --> F[交易在网络中传播]
F --> G[交易进入内存池]
G --> H[矿工选择并打包交易]
H --> I[广播新区块]
I --> J[区块链更新]
广播过程涉及到P2P网络和Gossip协议:
- P2P网络:比特币网络是一个P2P网络,由许多节点组成。每个节点都连接到其他节点,并通过P2P协议与其他节点交换信息。节点之间可以相互通信,交换交易、区块等信息。
- Gossip协议:比特币网络使用一种称为Gossip协议的传播机制。每个节点会将接收到的新交易信息传递给它的所有邻近节点,邻近节点再继续传递,直到整个网络中的所有节点都接收到该交易信息。
交易验证过程包括:
- 检查输入的未花费交易输出(UTXO):确保交易输入引用的比特币尚未被花费。
- 签名验证:使用发送方的公钥验证交易的签名,确保发送方对交易输入的比特币拥有所有权。
- 双花检查:确保交易输入的比特币未被其他交易使用。
- 格式检查:确保交易的格式符合比特币协议的规范。
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
腾讯云开发者社区:孟斯特
BTC交易流程的更多相关文章
- 详细讲解:零知识证明 之 ZCash 完整的匿名交易流程
作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ 掘金:https://juejin.im/user/587f0dfe128fe100570ce2 ...
- QPBOC扩展应用交易流程
1 Q扩展部分数据 增加3个DGI,分别为:A001,8020,9020 9103中增加DF60(9F38中),DF61 增加DF62,DF63 1.1 A001扩展应用配置 DGI 长度 值(示例 ...
- Fabric 1.0交易流程
这篇文章详细介绍fabric的交易流程,以图片加文字的形式呈现. Fabric 1.0交易流程 fabric中的所有交易都是通过chaincode执行 1.应用程序客户端通过SDK调用证书服务(CA) ...
- PBOC电子现金的交易流程
做一个电子现金的交易: 第一步当然是选中当前的应用, 方法是调用select命令, 传入当前的应用AID号, 如果卡片的状态码返回9000,则表示选中成功. 下面举一个例子: 发送: 00 a4 04 ...
- HyperLedger Fabric 1.4 交易流程(6.3)
区块链最主要的特性之一是去中心化,没有了中心机构的集中处理,为了达成数据的一致性,就需要网络中全民参与管理,并以某种方法达成共识,所以区块链的交易流程也就是共识的过程. 在Fabric中, ...
- [转] 深度探索Hyperledger技术与应用之超级账本的典型交易流程
转自: https://blog.csdn.net/HiBlock/article/details/80212499 个人感觉对交易流程描述的比较清楚,转载以备查看. 1 典型交易流程 下图所示为Hy ...
- Hyperledger交易流程
Hyperledger Fabric Network中的角色 在Hyperledger中,由三种类型的角色: Client:应用客户端,用于将终端用户的交易请求发送到区块链网络: Peers:负责维护 ...
- 架构设计 | 基于电商交易流程,图解TCC事务分段提交
本文源码:GitHub·点这里 || GitEE·点这里 一.场景案例简介 1.场景描述 分布式事务在业务系统中是十分常见的,最经典的场景就是电商架构中的交易业务,如图: 客户端通过请求订单服务,执行 ...
- 区块链Fabric 交易流程
1. 提交交易预案 1)应用端首先构建交易的预案,预案的作用是调用通道中的链码来读取或者写入账本的数据.应用端使用 Fabric 的 SDK 打包交易预案,并使用用户的私钥对预案进行签名. 应用打包完 ...
- PBOC2.0中消费交易流程
消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务.此交易可以在销售点终端(POS)上脱机进行.使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不需要. 1.1 终 ...
随机推荐
- NASM中的Preprocessor
NASM中的Preprocessor都以%开头. 单行macro %define %define与C语言中的#define类似: %define a(x) 1+b(x) %define b(x) 2* ...
- Echarts设置饼状图保证你看的明明白白
简单的饼状图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- UE4 C++调用C# DLL(DllExport方法)
之前看见园子里一篇C++调用C#的文章,参考后拿UE试一下.刚开始尝试了C# dll > CLR C++ DLL > Native C++ DLL的做法, 原生环境下是可以的,但是到UE4 ...
- Advanced .Net Debugging 8:线程同步
一.介绍 这是我的<Advanced .Net Debugging>这个系列的第八篇文章.这篇文章的内容是原书的第二部分的[调试实战]的第六章[同步].我们经常写一些多线程的应用程序,写的 ...
- C语言:卖鸭子问题---递归法实现
1.一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只.这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子? 代码: #include<st ...
- C数据结构:KMP算法详解(呕心沥血)
KMP算法 作者心声 了解暴力求解(必需会) KMP算法详解 记住我这段话(你会爱上它的)← : ①前后缀及其用处 ②求出前后缀的next数组 求出next数组的代码 开始实现KMP算法 结尾 附上源 ...
- C语言:渔夫捕鱼算法问题
题目:渔夫捕鱼 A,B,C,D,E五个渔夫夜间合伙捕鱼,,第二天清A先醒来,他把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,B醒来后,也把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一 ...
- Lakehouse 还是 Warehouse?(1/2)
Onehouse 创始人/首席执行官 Vinoth Chandar 于 2022 年 3 月在奥斯汀数据委员会发表了这一重要演讲.奥斯汀数据委员会是"世界上最大的独立全栈数据会议" ...
- Linux下更新Python版本
参考:安装图形化配置解析工具_LiteOS_编译和开发工具_Linux下的编译_搭建Linux编译环境_华为云 (huaweicloud.com) 系统:Centos7 $ uname -a Linu ...
- c# 拖拽列表顺序 | 拖拽合并分组 | 移除分组功能
动图演示: 背景: 一开始做功能的时候没有增加排序的索引(sort-index),后来要求做拖拽排序功能:所以写了这个不需要初始排序就可以完成的拖拽功能:如果是table表格排序逻辑和这个相似,这里拿 ...