主页 > imtokenapp专业版下载 > 《区块链研究实验室》比特币高清钱包助记词(BIP39)
《区块链研究实验室》比特币高清钱包助记词(BIP39)
可以看到,生成京东钱包密钥很简单。 但是,如果我们想通过电话或手写轻松传输这样的密钥怎么办?
像 Trezor 这样的冷钱包可以从一个容易记住的句子中生成 HD 密钥。 他们称这样的句子为“种子”或“助记词”。 它最终可以使用密码或 PIN 码进行保护。
用于生成“易于编写”句子的语言称为 Wordlist
助记符 mnemo = new Mnemonic(Wordlist.English, WordCount.Twelve);
ExtKey hdRoot = mnemo.DeriveExtKey("我的密码");
安慰。 写行(记忆);
分钟放格兰特忽视焦虑案例地球仪赢得著名的正确转弯链接
现在,如果你有助记词和密码,你就可以恢复hdRoot密钥了。
mnemo = new Mnemonic("minute put grant neglect anxiety case globe win famous correct turn link", Wordlist.English);
hdRoot = mnemo.DeriveExtKey("我的密码");
目前支持wordlist的语言有英文、日文、西班牙文、中文(简体和繁体)。
暗色钱包
虽然暗钱包不再使用比特币钱包助记词20个单词可信吗,但理解这里介绍的概念仍然很有价值。 Dark Wallet 是解决我们两个最初问题的实用解决方案:
它有一个杀手级的功能
您必须在不泄露任何隐私的情况下与其他人共享一个地址(称为 StealthAddress)。
让我们提醒自己,如果您与每个人共享一个 BitcoinAddress,每个人都可以通过查询区块链来检查您的余额……使用 StealthAddress 则不然。
因为它部分解决了比特币伪匿名性导致的隐私泄露的重要问题。 更好的名称是:一个地址,因为硬币的接收者只需要与付款人共享一个地址。 使用这个地址,付款人能够生成许多新地址,发送到这些地址的硬币将被接收人花费。 只有付款人和收款人知道这些地址是相关的,而不是调查公共区块链的第三方。
在暗钱包术语中,以下是不同的角色:
其余的是操作细节。 下面,这个 StealthAddress 由一个或多个 Spend PubKeys(用于多信号)和一个 Scan PubKey 组成。
var scanKey = new Key();
var spendKey = new Key();
BitcoinStealthAddress stealthAddress = new BitcoinStealthAddress (
扫描键:扫描键。 公钥,
pubKeys: new[] { spendKey. 公钥 },
签名计数:1,
位域:空,
网络:网络。 主要的);
付款人将获取您的 StealthAddress,生成一个名为 Ephem Key 的临时密钥,并生成一个 Stealth Pub Key,从中生成用于支付的比特币地址。 请注意,这个比特币地址是一个特殊的 base58 地址,它不能被像比特币核心这样的标准比特币实现所识别。
然后他们将 Ephem PubKey 打包到嵌入在交易的 OP_RETURN 中的 Stealth Metadata 对象中(就像我们在第一个挑战中所做的那样),他们还将输出添加到生成的比特币地址中。
var ephemKey = new Key();
事务 transaction = new Transaction();
stealthAddress.SendTo(交易, Money.Coins(1.0m), ephemKey);
安慰。 写行(交易);
EphemKey 的创建是一个实现细节,您可以忽略它,因为 NBitcoin 会自动生成一个:
事务 transaction = new Transaction();
stealthAddress.SendTo(交易, Money.Coins(1.0m));
安慰。 写行(交易);
{ “哈希”:“7772b0ad19acd1bd2b0330238a898fe021486315bd1e15f4154cd3931a4940f9”,
“版本”:1,
“vin_sz”:0,
“vout_sz”:2,
“锁定时间”:0比特币钱包助记词20个单词可信吗,
“尺寸”:93,
“在”: [],
“出去”: [
{ “价值”:“0.00000000”,
“scriptPubKey”:“OP_RETURN 060000000002b9266f15e8c6598e7f25d3262969a774df32b9b0b50fea44fc8d914c68176f3e”},
{ “价值”:“1.00000000”,
“scriptPubKey”:“OP_DUP OP_HASH16051f68af989f5bf24259c519829f46c7f2935b756 OP_EQUALVERIFY OP_CHECKSIG”
}
]
}
然后付款人在网络上发送交易之前添加并签署输入。 知道 StealthAddress 和 Scan Key 的扫描器可以恢复 Stealth PubKey 和预期的 BitcoinAddress 付款。
然后扫描器检查交易的输出之一是否对应于该地址。 如果是,扫描程序会通知收件人有关交易的信息。
接收方可以使用他们的 Spend Key 来获取地址的私钥。
稍后将在 TransactionBuilder(其他类型的所有权)部分解释将 Scanner 解释为扫描交易以及作为接收者如何发现私钥的代码。
应该注意的是,一个 StealthAddress 可以有多个支出公钥,在这种情况下,该地址代表多个签名。
Dark Wallet 的一个限制是使用 OP_RETURN,因此我们不能像在比特币转账部分那样容易地在交易中嵌入任意数据。 (目前的比特币规则每笔交易只允许一个 80 字节的 OP_RETURN)