比特币网络和支付

2024-09-04 07:52
文章标签 网络 支付 比特

本文主要是介绍比特币网络和支付,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 比特币网络

        比特币网络是一个去中心化的点对点网络,节点之间可以直接进行交易。网络上有不同类型的节点。

1.1 比特币网络的节点

        比特币网络的节点有两种主要类型:全节点也称为完整节点和简单支付验证(Simple Payment Verification,SPV)节点。

        全节点可以执行比特币钱包、矿工、完整区块链存储和网络路由等全功能的比特币核心客户端的实现。但是,并不是所有节点都必须执行全部功能。

简单支付验证节点或轻量级客户端仅执行比特币钱包和网络路由功能。

        比特币协议的最新版本是 70015,并由比特比核心客户端 0.13.2 版本引入。

        有些节点更喜欢成为包含完整区块链的完整区块链节点,因为它们更安全并在区块传播中起着至关重要的作用,而另外一些节点则仅执行网络路由功能,而不执行挖矿或存储私钥(钱包)功能。还有一种类型是个体矿工节点,可以执行挖掘、存储完整的区块链并充当比特币网络由节点。

1.2 比特币网络常用的协议消息

        比特币网络通过不同的魔数值(Magic Values) 来识别,如下表所示:

网络魔数值十六进制
main0xD9B4BEF9F9 BE B4 D9
testnet30x0709110B0B 11 09 07

交换 getaddr 和 addr 消息以查找客户端不知道的对等方。同时,任何一个节点都可以发送 ping 消息以查看连接是否仍处于活动状态。 getaddr 和 addr 消息是在比特币协议中定义的类型。下图显示了此过程:

        节点还将检查标头链是否具有比区块更多的标头,然后通过发出 getdata 协议消息请求区块,如下下图所示:

 1.3 Wireshark

        要可视化对等方之间的消息交换,可以使用 Wireshark。

        Wireshark 可以用作了解比特币协议的宝贵工具。下面将通过一个显示 version、verack、getaddr、ping、addr 和 inv 消息的基本示例来介绍它。

        在消息的详细信息中,可以看到一些有价值的信息,例如数据包类型、命令名称和协议消息的结果,如下图所示:

        上图显示的是一个协议,该图显示了两个对等方之间的数据流,通过该图可以了解到节点何时启动以及使用了哪种类型的消息。

        下图所示的示例中可以看到消息的交换,如 version、getaddr 和 getdata,以及一些描述消息名称的适当注释。

2. 比特币钱包

        比特币钱包软件用于存储私钥或公钥以及比特币地址,它可以执行不同的功能,例如接收和发送比特币。如今,软件通常提供两种功能:比特币客户端和比特币钱包。在磁盘上,比特币核心客户端比特币钱包被存储为 Berkeley DB 文件。

         比特币钱包软件通过随机选择 256 位数字来生成私钥。生成规则是预定义的。比特币钱包使用私钥对外交易并进行签名。比特币钱包不存储任何硬币,也没有为用户存储余额或硬币的概念。实际上,在比特比网络中,并不存在硬币。取而代之的是,只有交易信息存储在区块链上(更确切地说是UTXO,未使用的交易输出),然后将其用于计算比特币的数量。

        在比特币中,可以使用不同类型的钱包来存储私钥。作为软件程序,它们还可以向用户提供一些额外功能。以在比特币网络中管理和执行交易。

2.1  非确定性钱包

        这些钱包包含随机生成的私钥,因此也被戏称为一堆密钥钱包(Just a Bunch Of Key,JBOK)。比特币核心客户端在首次启动时会生成一些密钥,以及在需要时生成一些密钥。

        对于非确定性钱包来说,管理大量密钥非常困难,并且容易出错,这也可能导致盗窃和丢失硬币。

        此外,用户还需要创建密钥的常规备份并采取适当的方式保护它们,例如加密密钥以防止盗窃或丢失。

 2.2 确定性钱包

        在这类钱包中,密钥是通过哈希函数从种子值中派生出来的。该种子值是随机生成的,通常由人类可读的助记码(Mnemonic Code) 单词表示。助记码单词在 BIP 39 中进行了定义,其中包含用于生成确定性密钥的助记码的比特币改进建议。 

2.6 硬件钱包

        除纸钱包外,在物理上保证钱包安全的另一种方法是使用防篡改设备存储密钥。这种防篡改设备可以定制制造,随着支持近场通信(Near Filed Communication,NFC)的手机的出现,它也可以是 NFC 手机中的安全元件(Secure Element,SE)。

        Trezor 和 Ledger 钱包是最常用的比特币硬件钱包。下图展示的就是 Trezor 钱包的照片。

3. 比特币支付

        可以使用各种技术接受比特币作为支付手段。在许多司法管辖区中,比特币未取得合法货币的地位,但也有很多在线商人和电子商务网站将其视为一种付款方式。买家可以通过多种方式给接受比特币的业务付款。例如,在网上商店中,可以使用比特比商家的解决方案;而在传统的实体商店中,可以使用销售点终端和其他专用硬件。客户可以简单地扫描其中包含卖方付款统一资源标识符(Uniform Resource Identifier,URI) 的二维码,然后使用移动设备付款。比特币 URI 允许用户只需单击链接名扫描二维码即可付款。URI 是代表交易信息的字符串。它在 BIP 21 中定义。二维码可以显示在销售终端附近。几乎所有的比特币钱包都支持此功能。

4. 比特币的创新

        比特币经历了多次修改,并且仍在不断演变。通过解决系统中的各种弱点,它逐渐发展成为越来越可靠的系统。多年以来,比特币的性能一直是比特币专家和发烧友之间争论的焦点。因此,最近几年提出了各种建议来改善比特币性能,从而在协议级别提高交易速度,增强安全性、支付标准化和整体性能。

        这些改进建议通常以 BIP 或比特币协议新版本的形式提出,从而形成一个新的网络。提案的某些更改可以通过软分叉实现,很少有需要硬分叉的情况。

这篇关于比特币网络和支付的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1135434

相关文章

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解