许可接收和花费比特币是钱包软件的唯一基础特性,但是一个钱包程序不一定非要兼具这两部分。可以两个钱包程序一同运作,一个程序来发布公钥用于接收比特币,而另一个程序对交易做签名来花费比特币。

    比特币钱包同时需要与点对点网络做交互,从而通过区块链获取信息以及广播新的交易。然而,用于发布公钥的程序及签名交易的程序其自身并不需要与点对点网络做交互。

    这让我们有三个必要但彼此分离的钱包组件:一个公钥发布程序,一个签名程序,一个网络程序。接下来的小节内,我们将讨论这些组件的常见组合。

    注:我们谈论发布公钥是作为一种通称。在大多数情况下,P2PKH 或者 P2PH 的哈稀值会被发布出去而非公钥,真正的公钥只有在对应地址管理的比特币被花费时才真的被发布。