钱包

作者: 风生水起_2018 | 来源:发表于2018-06-28 21:02 被阅读0次

什么是钱包?钱包就是存放钱的一个东西。但是比 特币的钱包却不是这样,它的币不是放在钱包里面,而是放在网络上面。它的钱包包含的是 私钥。所以,这不是钱包,这是一个钥匙串。为什么说这不是一个钱包?你能复制一个钱包吗?不。但是你可以复制私钥。钥匙串是一个更好的比喻。如果我有一个钥匙串,我就有了 一串钥匙,我可以去一家商店把所有的钥匙复制并创建第二个钥匙串。两个私钥对同一个锁 (公钥)都可以使用,并且它们之间可以互换。如果你了解钥匙串是做什么的,你就会理解 比特币钱包是怎么工作的。你可以复制私钥,如果你给了其他人私钥的副本,他们也可以开 这扇门,而不需要任何人的许可。 所以,比特币“钱包”不是一个真正的钱包,它是一个钥匙串。这是一个可怕的错误。 你本以为钱包是用来装东西的,它装的东西会是不相关的和没用的。然而这些东西在比特币中都不存在。

非确定性钱包就是钱包中生成的多个私钥是相互独立,两个私钥之间是没有关联的。中本聪在设计比特币核心客户端是使用了非确定性钱包,通过预先生成的100个随机公私钥对,每个公私钥对只使用一次,用完100个公私钥对后再随机生成100个,所以这种钱包的密钥很难管理、备份以及导出。这种钱包也被称为“Just a Bunch Of Keys(一堆密钥)”,简称JBOK钱包。
第二种类型是确定性钱包(deterministic wallet),其中所有的密钥都是从一个主密钥派生出来,这个主密钥即为种子(seed)。该类型钱包中所有密钥都相互关联,如果有原始种子,则可以再次生成全部密钥。确定性钱包中使用了许多不同的密钥推导方法。最常用的推导方法是使用树状结构,称为分级确定性钱包或HD钱包。确定性钱包由种子衍生创造。为了便于使用,种子被编码为英文单词,也称为助记词。
​Public address:1424C2F4bC9JidNjjTUZCbUxv6Sa1Mt62x
Private key (WIF):5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn

原先学习bitcoinJ里的wallet-template demo时申请了一点钱,总想把那个地址里的钱用起来,在这个开源软件里一直不知道如何利用,仔细研究代码发现WalletApplication里会先检查是否存在钱包文件,第一次运行时会创建钱包文件,先初始化助记词文件不然会出现空指针异常,Wallet会随机创建一个公钥和私钥,就可以用来接收钱了。

MnemonicCode.INSTANCE = new MnemonicCode(getAssets().open(BIP39_WORDLIST_FILENAME), null);
Wallet wallet = new Wallet(TestNet3Params.get());
Log.d(TAG,"公钥:"+wallet.currentReceiveAddress().toString());
ECKey key = wallet.currentReceiveKey();
Log.d(TAG," 私钥:"+ key.getPrivKey()+" "+key.getEncryptedPrivateKey());

loadWalletFromProtobuf()在第二次打开应用时就可以直接使用第一次创建的钱包文件。
http://bitcoinfaucet.uo1.net/send.php里对address申请钱,就会发现手机端收到了钱,时间20:31前面的绿色标志逐渐变成实心,确认中,入账时间还是蛮快的,不知道mainnet里阻塞到什么程度!
状态栏也收到了入账提醒,1mBTC=0.001BTC

image.png
这儿发现一个奇怪的现象,mpvw开头的地址并不是二维码里的地址,又继续给二维码里的address发钱,又诞生了一个新地址,即每收到一笔钱就产生一个新地址

相关文章

网友评论

      本文标题:钱包

      本文链接:https://www.haomeiwen.com/subject/yjvnyftx.html