比特币网络和支付

server/2024/11/14 12:53:19/

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.ppmy.cn/server/111714.html

相关文章

sizeof 关键字实现原理

sizeof 是 C 语言中的一个关键字,它用于计算某个类型或变量所占用的内存大小。sizeof 关键字在编译时由编译器处理,它的实现与具体的编译器和平台有关。 1.sizeof工作原理 在高级层面上,sizeof 的工作原理如下: 编译时计算&…

STM32-PWM驱动呼吸灯——HAL库

(根据B站up主keysking的STM32教程视频的笔记) 【STM32】动画讲解轻松学会STM32的PWM_哔哩哔哩_bilibili 什么是PWM? PWM,全称为脉冲宽度调制(Pulse Width Modulation),是一种调制技术&#xf…

HarmonyOS开发实战( Beta5版)应用性能工具CPU Profiler的使用规范

简介 本文档介绍应用性能分析工具CPU Profiler的使用方法,该工具为开发者提供性能采样分析手段,可在不插桩情况下获取调用栈上各层函数的执行时间,并展示在时间轴上。 开发者可通过该工具查看TS/JS代码及NAPI代码执行过程中的时序及耗时情况…

javascript(四)

六、常用工具类 1.Date类 方法 描述 Date() 返回当前的日期和时间 getDate() 返回一个月中的某一天(1-31) getDay() 返回一周中的某一天(0-6) getMonth() 返回一年中的某一个月(0-11) getFullYe…

亲手打造自己的Linux命令提示符

最近租了个服务器,但是自带的命令提示符太ugly了,决定自己捯饬捯饬。 shell命令提示符是存储在$PS1这个环境变量中,因此我们只要对$PS1进行修改,就可以修改命令提示符了。 需要先知道$PS1的常用参数: \u: 用户 \h: …

在项目中使用 redis存储 数据,提高 项目运行速度

在项目中发现从数据库中直接查找数据非常慢&#xff0c;所以想到了使用redis来加速 1. 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 在ym…

【学术会议征稿】第四届智能电网与能源互联网国际会议(SGEI 2024)

第四届智能电网与能源互联网国际会议&#xff08;SGEI 2024&#xff09; 2024 4th International Conference on Smart Grid and Energy Internet 为交流近年来国内外在智能电网和能源互联网领域的理论、技术和应用的最新进展&#xff0c;展示最新成果&#xff0c;由沈阳工业…

跟《经济学人》学英文:2024年08月31日这期 Funding social care: an international comparison

Funding social care: an international comparison Lessons for Britain from other countries 原文&#xff1a; To judge by the record of successive British governments, reforming social care is almost impossible. But other rich countries have managed to gra…