Handshake钱包设置

该指南大量复制 Wallets and Accounts and Keys, Oh My!  (由丹尼尔·麦克纳利(Daniel McNally)撰写),并专门针对“Handshake”进行了修改。

如果您是经验丰富的比特币持有者,则可以略过本部分或直接跳至“示例”部分。 或者,如果您已经有了钱包,并且希望通过Handshake购买和管理域名,请查阅名称拍卖指南

但是,如果您是新手,或者只是想复习一下,本节将帮助您了解钱包的实际工作方式。

基础

hsd 提供了一种强大的模块化方式来创建和管理Handshake钱包。在本指南中,我将带您逐步了解入门所需的概念和功能。

钱包

从最基本的意义上讲,Handshake钱包是使您能够接收和使用HNS,对名称进行出价以及更新名称资源记录的数据。 hsd 实现了构造钱包的最新规范,这些规范易于备份,易于恢复,并且对于初学者进行首次交易以及与拥有数百万用户的企业一样有效。

私钥

如果要使用HNS进行交易,则需要密钥。每个Handshake地址都与一个特定的密钥相关联,并且钱包由许多不同的密钥组成。 密钥包括私钥和公钥。私钥是花费时必需的,是极为敏感的信息,而公钥可用于接收HNS和监视特定地址。 如果您想了解更多有关其工作原理的信息,请阅读公钥密码学。

HD钱包

hsd 支持“分层确定性”(HD)钱包。HD钱包从单一种子开始就确定性地排列有序的密钥树。HD钱包可以生成几乎无限数量的后续密钥。 hsd 的HD钱包实现了 BIP32 规范 并按照 BIP44 中的规定确定性创建新帐户。

虽然 hsd 使用HD钱包,它也允许你导入个人私钥到一个钱包。 在某些情况下,这可能是一个方便的功能,但这意味着您需要单独备份任何导入的密钥,因为仅使用种子无法恢复它们。

HD钱包的种子是什么?它可以有几种形式,但是 hsd 实现了 BIP39 规范, 它使种子可以由固定的一组常用词组成的助记符来表示。这意味着您的种子可以很容易地说出来,写下来,甚至可以记住。 但小心点!您的种子可用于恢复和消费HD钱包中的所有内容(上述导入的密钥除外),因此请像对待带有现金的实际钱包一样对待它。

为了安全地生成种子,Handshake提供了此工具 ,可在完全隔离的机器上使用。

账户

hsd 中的钱包分为多个账户。首次创建钱包时,会自动创建一个“缺省”帐户。 帐户可用于跟踪和管理所有单个钱包内的独立密钥集。例如,企业可以使用帐户为储户生成不同的地址,或在内部隔离客户资金。

hsd 按照 BIP44 规范确定性地生成无限帐户。这为上述层次结构增加了其他维度,这意味着可以恢复所有密钥的同一种子也可以恢复所有地址。

每个帐户还带有其自己的“扩展公共密钥”,这是一段数据,可用于以确定性方式生成该帐户的所有公共密钥。 例如,这意味着企业可以为用户创建无限的存款地址,而无需触摸其关键私钥或种子。 请记住,公钥可用于接收HNS,但不能用于支出,因此公钥落入不正确的人不会立即导致盗窃。

观察钱包

如果想不接触私钥,hsd 也使您可以选择创建“仅可查看”钱包。 仅可观察钱包不包含任何私钥,这意味着它们不能用来花费收到的HNS。 但是,它们对于创建地址,接收HNS和检测传入的交易非常有效。 在适当的地方使用仅观察的钱包可减少钥匙和HNS被盗的风险,是一种良好的安全习惯。

帐户始终继承其父钱包的仅可观察行为。 换句话说,仅可观察钱包将仅具有观看帐户,而普通钱包将仅具有常规帐户。 因此,您不能将私钥导入仅观察的钱包或将公钥导入常规的钱包。 如果您尝试将仅观察钱包和私钥混合与hsd搭配使用,那是坏的习惯。

API认证

hsd 作为服务运行,允许您通过REST API与钱包进行交互。 它还允许您通过使用wallet-auth选项运行服务,来保护钱包免受未经身份验证请求的侵害。 您创建的每个钱包都有一个令牌值,该令牌值必须随每个请求一起传递。 令牌,就像帐户和密钥一样,也可以使用HD种子确定性地生成。这意味着您可以随意更改钱包上的令牌。

恢复

通过使用上述提到的HD标准,hsd允许人们轻松地将其整个钱包还原或转移到不同的钱包实现中。 通过仅提供助记符,就可以将其钱包完全恢复到新的实例 hsd 或任何其他可以正确实现BIP33,BIP39和BIP44并支持Handshake的软件。

图形接口

第三方带可视化界面钱包:Bob Wallet

案例

针对本地 hsd 服务的命令行示例。

首先,安装 hsdhs-client

hs-client:与钱包交互

hs-client 带有四个可执行文件。对于钱包,需要使用 hsw-clihsw-rpc

  • hsw-cli - 钱包REST API
  • hsw-rpc - 钱包RPC接口
  • hsd-rpc - hsd节点RPC接口
  • hsd-cli - hsd节点REST API

有关hsd的更多信息,请参见此处

有关钱包的更多信息,请参见此处

您可以在下面找到有关钱包工具 hsw-clihsw-rpc的简短介绍。 使用它们来创建钱包,发送币,生成地址,对名称进行投标,更新名称的资源记录,转移名称等...

设置网络选项

设置 hsd 节点的网络时,有四个选择。该 hs-client CLI工具还需要这个选项被设置为他们知道与连接到您的端口 hsd 的节点。

  • regtest 用于本地开发工作。
  • simnet 用于测试您自己的网络。
  • testnet 最接近主网的仿真环境。由其他开发人员运行的节点网络支持。
  • mainnet 主网环境。

您可以使用 --network= 选项或通过设置环境变量 HSD_NETWORK 来为hsd节点设置网络。选择 “regtest” 以测试以下命令。

hsw-cli

调用不带任何参数的CLI $ hsw-cli 将输出支持的命令列表。也可以通过运行 $ hsw-cli admin 查看管理员命令。

创建一个新的钱包,用助记词作为种子,并用密码加密。

$ hsw-cli mkwallet <wallet-id> --mnemonic=<mnemonic-phrase> --passphrase=<passphrase>

响应JSON:

{
"network": "regtest",
"wid": 3,
"id": "ha",
"watchOnly": false,
"accountDepth": 1,
"token": "aef7603ff78c32e267fad434246ce6447d420b81e4798d99cf06c80b57c40765",
"tokenDepth": 0,
"master": {
"encrypted": false
},
}

看到 token 没?有了它,我们可以做一些事情,例如查询我们的钱包余额

$ hsw-cli balance --id=<wallet-id> --token=aef7603ff78c32e267fad434246ce6447d420b81e4798d99cf06c80b57c40765

创建一个新账户

$ hsw-cli --id=<wallet-id> account create <name-of-new-account>

生成一个新的账户收款地址

$ hsw-cli --id=<wallet-id> --account=<name-of-account> address

查看钱包的HNS余额

$ hsw-cli --id=<wallet-id> balance

列出walletdb中的所有钱包。

$ hsw-cli wallets

列出给定钱包中的所有帐户

$ hsw-cli --id=<wallet-id> account list

将HNS发送到某个地址 请小心输入值和费率!使用cURL或Javascript时,值和比率以satoshis表示。 使用CLI时,值和比率以WHOLE HNS表示。 仔细观察如何在示例中输入值,所有示例在执行时发送的金额相同。

$ hsw-cli send --id=<wallet-id> --value=<number of WHOLE HNS> --address=<destination address> --passphrase=<passphrase>

导入密钥或钱包后启动区块链重新扫描 walletdb。如果有需要,钱包将回滚到指定的块高度。

$ hsw-cli rescan --height=<block-height>

hsw-rpc

获取有关您钱包与之交互的所有名称的信息(开放,出价,公示等)。

$ hsw-rpc getnames

获取钱包信息。

$ hsw-rpc --id=<wallet-id> getwalletinfo

获取域名的资源数据

$ hsw-rpc getnameresource <name>

响应(JSON)

{
"walletid": "primary",
"walletversion": 6,
"balance": 390005.02398,
"unconfirmed_balance": 390005.02398,
"txcount": 450,
"keypoololdest": 0,
"keypoolsize": 0,
"unlocked_until": 0,
"paytxfee": 0
}

注意:这是一个非常简化的指南。有关更多功能,例如创建索赔,签署交易等,请查阅完整的文档

钱包API的完整文档