交易流程

比特币的交易流程涉及多个步骤和参与方,包括发送方、接收方、矿工和比特币网络中的节点。以下是比特币交易的详细流程:

  1. 创建交易:

    • 生成比特币地址:比特币地址是一个由公钥生成的字符串,用于接收比特币。每个用户在创建比特币钱包时,都会生成一对公钥和私钥。公钥通过哈希算法生成比特币地址,私钥用于签名交易。
    • 创建交易信息:交易信息包括以下几个部分:
      • 输入(Inputs):包含发送方的比特币地址和之前交易的输出(即发送方要花费的比特币)。
      • 输出(Outputs):包含接收方的比特币地址和发送的比特币数量。
      • 交易额外信息:包括交易费等。
  2. 签名交易:发送方使用私钥对交易信息进行签名。签名的目的是证明交易的合法性和发送方对比特币的所有权。签名后的交易信息会被广播到比特币网络。
  3. 广播交易: 签名后的交易信息通过比特币网络广播到其他节点。每个节点都会验证交易的合法性,包括检查签名是否有效、输入是否未被双花(即同一笔比特币是否未被多次使用)等。
  4. 矿工打包交易: 矿工从比特币网络中收集未确认的交易,并将这些交易打包到一个新的区块中。矿工会优先选择交易费较高的交易进行打包。
  5. 工作量证明(PoW): 矿工需要通过工作量证明(PoW)算法来解决一个复杂的数学问题。具体来说,矿工需要找到一个随机数(Nonce),使得整个区块的哈希值满足目标难度。这个过程称为挖矿。
  6. 广播新区块: 一旦矿工找到符合条件的哈希值,他们会将新区块广播到比特币网络。其他节点会验证新区块的合法性,包括检查哈希值是否符合目标难度、交易的合法性等。
  7. 区块链更新: 验证通过后,新区块会被添加到区块链中,成为区块链的最新部分。此时,交易被确认并记录在区块链中。
  8. 交易确认: 交易被打包到区块中并添加到区块链后,交易会获得一次确认。随着新区块的不断添加,交易会获得更多的确认。一般来说,6次确认被认为是安全的,意味着交易已经被多个区块确认,难以被篡改。
  9. 接收方验证交易: 接收方可以通过比特币网络查询交易状态,确认交易是否被记录在区块链中以及获得的确认次数。一旦交易获得足够的确认,接收方可以认为交易是安全的,已成功接收比特币。

广播交易

以下是一个比特币交易广播的示例流程图:

graph TD
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交易流程的更多相关文章

  1. 详细讲解:零知识证明 之 ZCash 完整的匿名交易流程

    作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ 掘金:https://juejin.im/user/587f0dfe128fe100570ce2 ...

  2. QPBOC扩展应用交易流程

    1 Q扩展部分数据 增加3个DGI,分别为:A001,8020,9020 9103中增加DF60(9F38中),DF61 增加DF62,DF63 1.1  A001扩展应用配置 DGI 长度 值(示例 ...

  3. Fabric 1.0交易流程

    这篇文章详细介绍fabric的交易流程,以图片加文字的形式呈现. Fabric 1.0交易流程 fabric中的所有交易都是通过chaincode执行 1.应用程序客户端通过SDK调用证书服务(CA) ...

  4. PBOC电子现金的交易流程

    做一个电子现金的交易: 第一步当然是选中当前的应用, 方法是调用select命令, 传入当前的应用AID号, 如果卡片的状态码返回9000,则表示选中成功. 下面举一个例子: 发送: 00 a4 04 ...

  5. HyperLedger Fabric 1.4 交易流程(6.3)

    区块链最主要的特性之一是去中心化,没有了中心机构的集中处理,为了达成数据的一致性,就需要网络中全民参与管理,并以某种方法达成共识,所以区块链的交易流程也就是共识的过程.       在Fabric中, ...

  6. [转] 深度探索Hyperledger技术与应用之超级账本的典型交易流程

    转自: https://blog.csdn.net/HiBlock/article/details/80212499 个人感觉对交易流程描述的比较清楚,转载以备查看. 1 典型交易流程 下图所示为Hy ...

  7. Hyperledger交易流程

    Hyperledger Fabric Network中的角色 在Hyperledger中,由三种类型的角色: Client:应用客户端,用于将终端用户的交易请求发送到区块链网络: Peers:负责维护 ...

  8. 架构设计 | 基于电商交易流程,图解TCC事务分段提交

    本文源码:GitHub·点这里 || GitEE·点这里 一.场景案例简介 1.场景描述 分布式事务在业务系统中是十分常见的,最经典的场景就是电商架构中的交易业务,如图: 客户端通过请求订单服务,执行 ...

  9. 区块链Fabric 交易流程

    1. 提交交易预案 1)应用端首先构建交易的预案,预案的作用是调用通道中的链码来读取或者写入账本的数据.应用端使用 Fabric 的 SDK 打包交易预案,并使用用户的私钥对预案进行签名. 应用打包完 ...

  10. PBOC2.0中消费交易流程

    消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务.此交易可以在销售点终端(POS)上脱机进行.使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不需要. 1.1 终 ...

随机推荐

  1. 程序员天天 CURD,怎么才能成长,职业发展的思考(2)

    接着上一篇:程序员天天 CURD,怎么才能成长,职业发展思考 上一篇写到了用年限来谈程序员的发展,在 4 - 6 年这个时间段需要做的一些事情,接着写这个时间段的. 第 4.5 年时候,你可能会做一些 ...

  2. 阿克曼函数(Ackermann function)部分推导

    相关题目 已知\(Ackermann function\)为 \[Ack(m,n)=\begin{cases}n+1(m=0) \\ Ack(m-1,1)(m>0,n=0) \\ Ack(m-1 ...

  3. 网络拓扑—DNS服务搭建

    目录 DNS服务搭建 网络拓扑 配置网络 DNS PC 安装DNS服务 配置DNS服务 创建正向查找区域 创建反向查找区域 创建子域名 PC机DNS域名解析 DNS服务搭建 网络拓扑 为了节省我的U盘 ...

  4. 前端如何对cookie加密

    在前端对 Cookie 进行加密时,你可以使用加密算法对 Cookie 的值进行加密,然后再将加密后的值存储到 Cookie 中.常用的加密算法包括对称加密算法(如 AES)和非对称加密算法(如 RS ...

  5. 微信开发者工具拉取gitlab远程代码报Pull failed原因分析:

    可能出现的原因: 本地主机上没有安装node node下载地址: 1 https://nodejs.org/zh-cn/download/ 没有保存gitlab的用户名和密码

  6. Newtonsoft.Json 首字母小写

    // 首字母小写 JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings(); jsonSerialize ...

  7. c#获取开机时间

    public static DateTime OpenCom() { TimeSpan t = TimeSpan.FromMilliseconds(System.Environment.TickCou ...

  8. umount 报错umount: /new_room: target is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))

    挂载逻辑卷后,尝试更新逻辑卷的文件系统 [root@server lost+found]# umount /new_room/ umount: /new_room: target is busy. ( ...

  9. vue侦听器 - watch

    使用watch来侦听data中数据的变化,watch中的属性一定是data 中已经存在的数据. 当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,只有data中的数据才能够 ...

  10. ETL工具-nifi干货系列 第十一讲 处理器UpdateAttribute使用教程

    1.在这里我们重温下nifi里面一个重要的概念FlowFile,如下图所示: FlowFile:FlowFile代表NiFi中的单个数据.nifi数据流中流动的就是flowfile,每个nifi处理器 ...