我安装了 Android 版比特币钱包,https://github.com/bitcoin-wallet/bitcoin-wallet
我回复了比特币钱包的备份,发现地址薄里面,有您的比特币地址和历史地址,两个不一样的地址。
第一个我知道,那第二个历史地址是什么?隶属地址是什么意思呢?也是属于我的么。
1
brainzhang 2020-02-17 14:29:54 +08:00
1. 比特币是没有一个"唯一"的账户的;它使用地址存币;
2. 钱包就是这些地址的集合,可以每个地址有一点币,也可以所有的币集中到 1 个地址上 3. 一般为了安全和隐私起见,每次你发送比特币,钱包都会使用新的找零地址,原来的地址就不会用了 4. 当你收发>=1 笔交易之后,就会出现历史地址,一般是之前你接收了比特币,然后又转账了一笔交易,钱包会自动帮你生成新地址找零; 5. 这些都是钱包自动完成的,一般不用操心,你自己保存好助记词就可以; |
2
acess 2020-02-18 13:12:11 +08:00
@brainzhang 这个 schildbach 钱包貌似没有助记词……
|
3
acess 2020-02-18 14:54:16 +08:00
我个人比较喜欢用的钱包是 Electrum,不过 Electrum 的手机版好像不能导入 BIP39 助记词,而且它不给 3 开头的隔离见证地址,要么是 bc1 开头的原生隔离见证地址,要么是 1 开头的传统地址。(实际上导入 yprv 开头的 BIP49 HD 主私钥就可以生成 3 开头的隔离见证地址,但是这么搞稍微有点麻烦,最好用 Ian Coleman 的 BIP39 工具离线操作)。
而且有一说一,Electrum 之前出过几次影响比较大的安全漏洞,尤其是钓鱼漏洞,有不少受害者,而且只要还有人用旧版,他们就仍然受威胁。 比特派钱包比较友好,用的是 BIP39 助记词,多币种。不过它不开源,而且一直都不支持 RBF 直接追加手续费“插队”,他们一直在卖矿池提供的“加速器”,实际上还是插队,而且比较贵。 |
4
acess 2020-02-18 15:01:05 +08:00
比特币的助记词一直都是一个很混乱的局面,除了 BIP39 还有 aezeed、Electrum 2.0 等很多种互不兼容的助记词格式。
Bitcoin Core 的“核心开发者”对 BIP39 方案看不惯,各种挑毛病,“一致反对实现”,哪怕那么多年过去《精通比特币》里说的还是 BIP39,而且用得最多的还是 BIP39。 而且,Bitcoin Core 自带的钱包功能,以及楼主用的这个 schildbach 钱包,都是压根不提供助记词的,顶多只有一个 xprv 主私钥。 |
5
acess 2020-02-18 15:02:48 +08:00
我刚刚扫了一眼 GitHub 上有关的 issue 讨论,开发者还说“BIP39 没有钱包创建日期”——哎,怎么说呢,无论是 Bitcoin Core 全节点钱包,还是 schildbach 这个 BIP37 协议的 SPV 轻钱包,它们的工作原理都是非常低效的:需要重新扫描动辄几十上百 GB 的区块链账本,才能找回交易历史。BIP37 只不过是把这个扫描工作推给了网络中的全节点而已。
Electrum 钱包的服务器就不是这样,Electrum 服务器建立了更完备的索引,空间换时间,所以它才可以秒开、快速同步。 但愿以后 BIP157/158 完全在 Bitcoin Core 上实现可以缓解这个问题。BIP157/158 生成的索引只占几 GB 的空间,可以说是取了一个折衷。 |
6
acess 2020-02-18 15:14:52 +08:00
中本聪的白皮书里就说了,比特币地址虽然匿名,但是交易记录公开可追溯,所以可以通过地址用一次就换掉来一定程度上扰乱追溯、保护隐私。(后来还有了 coinjoin 混币等手段)
为了方便管理(一堆私钥,漏了任何一个没备份,上面如果有币都会丢),所以才有了确定性钱包,也就是从一个种子推算出所有的私钥和地址。 这样只要把 [种子] 备份好了,就把整个钱包备份好了。 现在用的一般是 HD (分层确定性)钱包,由 BIP32 定义,它也是从一个 [种子] 推算出所有东西,但它还可以分层次管理,父级密钥可以派生出子密钥。 如果楼主不想用 HD 钱包,只使用单个私钥,那安全性方面没啥问题,但是隐私方面不太好,因为比特币的交易记录公开,这样就更方便追溯了。(要说“把公钥哈希一次来抗量子计算机”,这其实只是个传说,实际上靠不住) 如果你每次收款都换新地址,每次转出时也都换新的找零地址,那追溯起来就会稍微麻烦一些。 可见,这个隐私保护很鸡肋,很多时候可以从金额等特征来猜测、分辨哪个是找零地址,所以一般都说比特币的隐私性差。 还有,就是手动操作单个私钥时,容易犯一些后果严重的低级错误。 比如导入 Bitcoin Core 钱包后,进行转出操作,这个时候找零地址会是新生成的地址,而不是导入的那个地址。有人因为安全强迫症,执行转出操作后就格式化了硬盘,结果发现自己小心呵护的那个私钥上已经没币了,币都跑到 [新生成的] 找零地址上了,然而这个 [新生成] 的私钥已经被抹掉,所以就是永久丢币。 HD 钱包还存在固有的一个弱点:主公钥( xpub/ypub/zpub 开头)本身不能推导出私钥,但是主公钥+单个子私钥=主私钥=所有子私钥。 Bitcoin Core 为了规避这个问题,生成地址时用的都是强化派生( hardnened derivation ),这样就不会有这种“一漏漏一大片”的风险,但是代价就是没办法再使用 xpub 主公钥直接推导出收款地址,也就是说,要做“冷热分离”(联网钱包不含私钥,只能监视;离线钱包负责保存私钥、签名交易)就比较麻烦、困难,HD 钱包提供的“换地址方便”这个好处很大程度上消失了。 |
7
acess 2020-02-18 15:17:00 +08:00
我上面说这些不是说 HD 钱包有安全问题——恰恰相反,相比使用单个私钥,我还是推荐使用 HD 钱包。
我的意思是,如果用了 HD 钱包,那就不要闲着没事干把私钥倒来倒去。 |