主页 > imtoken钱包安卓版 > 比特币开发指南1-7.docx

比特币开发指南1-7.docx

imtoken钱包安卓版 2024-01-26 05:14:58

比特币协议详情及相关规范

本开发人员指南的目标是在围绕比特币开发应用程序时为您提供足够的信息。为了更好的使用本指南,需要安装最新的比特币内核客户端,可以在github或者官网预编译版下载源码。

安装后,您将拥有以下三个可执行程序:bitcoind、bitcoin-qt 和bitcoin-cli。如果你开始时没有参数,work()。要在网络上创建交易,您需要支付比特币。比特币的最小单位是“satoshis”,0.00000001 BTC = 1satoshis。

但是,对于开发,work() 测试网络中的比特币没有实际价值。测试网放宽了一些限制,(比如标准交易的检测),可以测试一些主网禁止的功能,

比特币的最小单位

,您需要在启动时将参数 -=1 添加到您的 bitcoin.conf 文件中。在 Piotr Piasecki 的水龙头里,你可以获得一些免费的测试比特币。测试网是社区免费提供的公共资源,请勿滥用。

您可以使用回归测试模式进一步加快开发速度,该模式会在您的计算机上创建一个本地测试网络。回归测试模式可以让你快速创建区块,获取测试比特币,通过RPC命令即时生成区块链上的交易。

bitcoin-qt 提供了一个完整的 Bitcoinpeer 和钱包前端。在帮助菜单中,您可以找到一个用于输入 RPC 命令的终端

bitcoind 是一个更有用的程序:它提供了一个完整的对等点(节点),您可以使用 RPCs 命令与之通信,官方端口默认为 8332(测试网络默认为端口 18332)。

比特币的最小单位

bitcoin-cli 允许您通过命令行向 bitcoind 发送 RPC 命令。比如bitcoin-cli帮助

三个程序都会从​​比特币程序目录下的 bitcoin.conf 中读取参数设置:

Windows:%APPDATA%\比特币\

OSX:$HOME/Library/Application Support/Bitcoin/

比特币的最小单位

有关比特币开发的问题最好发送到比特币论坛和 IRC 频道。文档错误和建议,请将它们作为建议提交或发送到比特币文档邮件列表。

在以下准则中,某些字符串缩写为:“[...]”,表示删除了多余的数据,以“\”结尾的行表示下面还有更多。如果您将鼠标移动到某个段落,带有链接的文本将变为蓝色。如果您在链接的文本上移动,工具提示上会出现一个介绍。

区块链

区块链提供了比特币的公共分类账,其中包含所有按时间顺序确定的交易。该系统用于防止双重支出和修改以前的交易记录,通过全球 P2P 网络验证的工作量证明 POW 确保全球一致性。

比特币的最小单位

区块链概述

上图显示了区块链的简化版本。包含一个或多个交易的块被收集到块的交易数据部分。对每笔交易的一份副本进行哈希处理比特币的最小单位,将哈希值与哈希值配对,然后进行哈希、配对、再哈希,直到只剩下一个哈希值,剩下的哈希值就是交易的默克尔根(根节点)默克尔树(Merkle tree)。

Merkle 根节点存储在区块头中。每个块还存储前一个块头的散列以将所有块链接在一起。这样可以确保所有当前和后续的区块都不会被修改。对于区块,交易记录不会被修改。

交易记录也链接在一起。比特币钱包软件只记录比特币的发送和接收,但比特币确实在交易之间移动。每笔标准交易花费的 satoshis 是上一笔交易转来的币,所以一笔交易的输入就是上一笔交易的输出。

比特币的最小单位

单个比特币交易可以将比特币发送到不同的输出,就像您一次将比特币发送到不同的地址一样,但一个输出只能在区块链中使用一次。禁止所有后续引用 双花 - 尝试将比特币花费两次。

输出与比特币地址不同。您可以在多个交易中使用相同的地址,但输出只能使用一次。输出绑定交易id(TXIDs),txid为签名交易的hash值

由于每笔交易的输出只能使用一次,因此区块链中的所有输出都可以分类为未使用的交易输出(UTXO)或已花费的输出。为了使付款有效,必须使用未使用的交易输出 (UTXO) 使用输出 UTXO 作为输入。

交易产生后比特币不能留在UTXO,否则余额将永久丢失比特币的最小单位,所以输入和输出的差额就是交易费用,这是给将交易打包成区块奖励的矿工的。比如上图中,每笔交易收到的比发送的少1000聪,这10000聪就是交易手续费

工作证明