我的BTC钱包怎么越来越看不明白了

962dc3d90b 水手 发布在 疑难解答
 57775  31
  • 正序
  • 最新
只看帖主 楼层直达
  • BurntCoins 副船长 2020-03-17 18:58:27 只看该作者 17楼
    还有,比特币地址是不用“申请”的,它就是一个密钥,也就是一个很大的数字而已,完全可以离线生成。
    私钥本质上就是一个很大的随机数,哪怕是抛硬币也可以生成。从私钥经过椭圆曲线相乘运算可以得到公钥,然后从公钥经过哈希运算,(开头还得加上版本号)再用Base58Check编码,就是地址了。
  • BurntCoins 副船长 2020-03-17 19:11:25 只看该作者 18楼
    “可14这个地址为何要分的这么零碎”——比特币的UTXO机制,自然而然的就是这样,同一个地址接收N次收款,就会攒下N个UTXO,不会自动合并到一起。
    “14这个地址为何要分的这么零碎转出去”——在你的交易里,确实是每花掉一个UTXO,都需要专门为它写一个输入,每一个输入都需要消耗字节数,就要付更多矿工费。

    没办法,比特币就是这样设计的。

    所以才有“整理碎币”这种操作,也就是趁着网络不堵、矿工费水平低的时候,用最低的手续费率(一般是1sat/B),把多个UTXO“整合”成一个;这样等到未来链上堵起来、矿工费水平高的时候,就可以少掏钱了。
  • ci6InC4K 水手 2020-03-17 19:24:25 只看该作者 19楼
    疫情在家没事干,想娱乐一下的可以私我
  • BurntCoins 副船长 2020-03-17 21:34:47 只看该作者 20楼
    如果光是出于保护隐私的目的,就要这样频繁地更换地址,很显然就会让钱包备份变得麻烦、充满风险——钱包里会攒上一大堆私钥,里面但凡有一个存着币的私钥丢了,那你的币也就对应地丢失了一部分,求谁都找不回来。

    最早的比特币软件(延续到今天就是Bitcoin Core)默认会生成100个私钥,然后就有了“每交易100次就需要重新备份钱包”这种说法。

    后来就有了HD钱包,全程是“分层确定性钱包”,这个概念是由BIP32这个文档定义的。
    “确定性”指的是从一个种子出发,通过一个固定的推导流程,即可推导计算出钱包中所有的私钥或地址,这样只需要备份好一个种子,就可以一劳永逸地备份一个钱包了。
    “分层”是说一个主私钥可以推导出子私钥,子私钥又可以推导出孙私钥……这样就形成了多个层级,可以方便管理、隔离风险。

    为了方便记忆或抄写“种子”,又有人设计了BIP39助记词。imToken也是兼容BIP39的。


    详细来讲,按照BIP32的设计,每一个父密钥可以推导2^32(约等于42.9亿)个子密钥,其中一半是普通推导,另一半是强化推导(hardened derivation)。
    普通推导的优点是可以生成扩展公钥(xpub/ypub/zpub开头),借助扩展公钥,可以做成“仅观察钱包”(watch-only wallet),它只能生成收款地址、可以监视钱包余额和交易记录;它不含私钥、无法进行转出操作。普通推导的缺点是害怕泄露单个子私钥,因为【单个子私钥】+【扩展公钥】可以推导出【扩展私钥】或是【所有子私钥】。
    强化推导的优缺点和普通推导相反,它规避了上述的泄露风险,但同时也无法方便地做成仅观察钱包。

    按照BIP44/49/84规范,前4个HD层级分别被定义为【用途(地址类型)】、【币种】、【账户】、【外部/内部(收款/找零)】,第5个层级被真正用来生成收款地址和找零地址。
    前三个层级都是走的强化推导,后两个层级走的是普通推导,这样第3个层级的“账户扩展公钥”仍然可以做成不含私钥的“仅观察钱包”,不同的“账户”之间则互相隔离,缩小上面提到的泄露风险影响范围。
    (然并X,貌似很少有人在认真用这个功能,而且即便是走了强化推导,如果最根本的助记词都泄露了,那也仍然是整个钱包都泄露了)


    继续回答楼主的疑问:

    “这个16开头地址并不是我申请的钱包地址”——(既然楼主已经说了,在imToken里查不到这个地址)这个应该就是你前面某次转出操作时用到的找零地址。imToken虽然也可以展示交易详情,但是貌似没有像其他钱包那样明确的把找零地址标出来,这一点有待改进。你可以点开这个地址,看看它收款的交易是什么时间,然后在imToken的转出交易历史里看看能不能找到它。

    “莫非是子地址”——每一个收款地址和找零地址都是“子地址”。只不过,按照BIP44/49/84规范,收款地址和找零地址就像是分别串在两个钥匙圈上的两串钥匙,它们分别是走不同的推导路径生成出来的。

    “可在ImToken中查询不到这个子地址”——我不怎么用imToken,刚刚打开找了一圈,貌似imToken在地址管理方面确实有点不完善,好像只能查到收款地址,不能查到找零地址,但这不表示imToken没有遵守有关的规范,只不过是他们懒得把这个地址显示出来罢了。
  • BurntCoins 副船长 2020-03-17 21:42:00 只看该作者 21楼
    Bitcoin Core的情况貌似比较蛋疼。
    从0.13版开始,Bitcoin Core也支持HD了,但只有新创建的wallet.dat才是HD的,已有的wallet.dat不会自动升级到HD。
    而且Bitcoin Core的这个HD还是最“简陋”、最别扭的HD,既不兼容BIP39助记词,也不兼容BIP44/49/84,简单说就是和其他的典型HD钱包不兼容。还有,早期的版本貌似连【收款】和【找零】都没分开,都属于同一个“钥匙串”;是后来才分成“两个钥匙串”的。
  • BurntCoins 副船长 2020-03-17 21:46:37 只看该作者 22楼
    Bitcoin Core不仅是不兼容BIP39,它是压根就不提供助记词。
    用户顶多只能看到一个xprv开头的主私钥(第0层级的扩展私钥),这个主私钥在某些情况下(比如启用钱包加密)还会换成新的,这样又要重新备份钱包了。

    未来Bitcoin Core钱包的结构会大改,要完全支持“输出描述符”(output descriptor),等到那个时候Bitcoin Core钱包的功能应该能得到比较大的改善吧。
  • BurntCoins 副船长 2020-03-17 21:58:19 只看该作者 23楼
    不成魔不快活 发表于2020-03-17 01:53:30 HD钱包是个什么东西?
    https://www.chainnode.com/tutorial/4756
    这篇文章貌似有些槽点……比如BIP是“比特币改进提案”(Bitcoin Improvement Proposal),是比特币社区讨论技术改进的一种流程,或者说是一种撰写技术文档的格式,并不是什么协议。
    楼层直达
  • 不成魔不快活 副船长 2020-03-17 23:05:30 只看该作者 24楼
    BurntCoins 发表于2020-03-17 21:58:19 这篇文章貌似有些槽点……比如BIP是“比特币改进提案”(Bitcoin Improvement Proposal),是比特币社区讨论技术改进的一种流程,或者说是一种撰写技术文档的格式,并不是什么协议。
    支持大佬写一篇
    楼层直达
  • guigui17f0 副船长 2020-03-17 23:32:10 只看该作者 25楼
    你点开imToken账户管理里的高级模式然后选择地址管理就能看见子地址了……
  • BurntCoins 副船长 2020-03-17 23:55:31 只看该作者 26楼
    guigui17f0 发表于2020-03-17 23:32:10 你点开imToken账户管理里的高级模式然后选择地址管理就能看见子地址了……
    貌似只有收款地址列出来了,没有显示找零地址……
    楼层直达
  • 962dc3d90b 水手 2020-03-18 12:38:45 只看该作者 27楼
    不成魔不快活 发表于2020-03-17 13:44:33 其他地址都是隐藏的,找零机制就是一次交易换一个找零地址,所以你不用管显示的地址是什么,主要关注整个钱包余额就行
    感谢大佬答疑解惑
    楼层直达
  • 962dc3d90b 水手 2020-03-18 12:39:09 只看该作者 28楼
    BurntCoins 发表于2020-03-17 18:53:44 找零完全是可以写成原来的转出地址的,但是,从中本聪发布白皮书开始,中本聪就提出,出于隐私保护的原因,地址最好用一次就换一个,不要像这样重复使用。
    这个也不难理解,如果我每次收款都换一个新地址,再加上每次转出时都找零到新地址上,那么,在外人看来就是扑朔迷离的,他不能确定交易输出里哪一个是属于我的找零地址、哪一个是属于另一个人的收款地址。(不过有一说一,比特币这层隐私保护确实蛮鸡肋的,很多时候还是能知道哪个是找零、哪个是收款,一旦把【地址】和【背后主人身份】的对应关系理出来了,那还是裸奔)
    感谢大佬答疑解惑
    楼层直达
  • 962dc3d90b 水手 2020-03-18 12:39:28 只看该作者 29楼
    BurntCoins 发表于2020-03-17 18:53:44 找零完全是可以写成原来的转出地址的,但是,从中本聪发布白皮书开始,中本聪就提出,出于隐私保护的原因,地址最好用一次就换一个,不要像这样重复使用。
    这个也不难理解,如果我每次收款都换一个新地址,再加上每次转出时都找零到新地址上,那么,在外人看来就是扑朔迷离的,他不能确定交易输出里哪一个是属于我的找零地址、哪一个是属于另一个人的收款地址。(不过有一说一,比特币这层隐私保护确实蛮鸡肋的,很多时候还是能知道哪个是找零、哪个是收款,一旦把【地址】和【背后主人身份】的对应关系理出来了,那还是裸奔)
    感谢大佬答疑解惑
    楼层直达
  • 962dc3d90b 水手 2020-03-18 12:41:37 只看该作者 30楼
    BurntCoins 发表于2020-03-17 19:11:25 “可14这个地址为何要分的这么零碎”——比特币的UTXO机制,自然而然的就是这样,同一个地址接收N次收款,就会攒下N个UTXO,不会自动合并到一起。
    “14这个地址为何要分的这么零碎转出去”——在你的交易里,确实是每花掉一个UTXO,都需要专门为它写一个输入,每一个输入都需要消耗字节数,就要付更多矿工费。

    没办法,比特币就是这样设计的。

    所以才有“整理碎币”这种操作,也就是趁着网络不堵、矿工费水平低的时候,用最低的手续费率(一般是1sat/B),把多个UTXO“整合”成一个;这样等到未来链上堵起来、矿工费水平高的时候,就可以少掏钱了。
    感谢大佬明示!这一解答就清楚了!
    楼层直达
  • 962dc3d90b 水手 2020-03-18 12:46:31 只看该作者 31楼
    BurntCoins 发表于2020-03-17 21:34:47 如果光是出于保护隐私的目的,就要这样频繁地更换地址,很显然就会让钱包备份变得麻烦、充满风险——钱包里会攒上一大堆私钥,里面但凡有一个存着币的私钥丢了,那你的币也就对应地丢失了一部分,求谁都找不回来。

    最早的比特币软件(延续到今天就是Bitcoin Core)默认会生成100个私钥,然后就有了“每交易100次就需要重新备份钱包”这种说法。

    后来就有了HD钱包,全程是“分层确定性钱包”,这个概念是由BIP32这个文档定义的。
    “确定性”指的是从一个种子出发,通过一个固定的推导流程,即可推导计算出钱包中所有的私钥或地址,这样只需要备份好一个种子,就可以一劳永逸地备份一个钱包了。
    “分层”是说一个主私钥可以推导出子私钥,子私钥又可以推导出孙私钥……这样就形成了多个层级,可以方便管理、隔离风险。

    为了方便记忆或抄写“种子”,又有人设计了BIP39助记词。imToken也是兼容BIP39的。


    详细来讲,按照BIP32的设计,每一个父密钥可以推导2^32(约等于42.9亿)个子密钥,其中一半是普通推导,另一半是强化推导(hardened derivation)。
    普通推导的优点是可以生成扩展公钥(xpub/ypub/zpub开头),借助扩展公钥,可以做成“仅观察钱包”(watch-only wallet),它只能生成收款地址、可以监视钱包余额和交易记录;它不含私钥、无法进行转出操作。普通推导的缺点是害怕泄露单个子私钥,因为【单个子私钥】+【扩展公钥】可以推导出【扩展私钥】或是【所有子私钥】。
    强化推导的优缺点和普通推导相反,它规避了上述的泄露风险,但同时也无法方便地做成仅观察钱包。

    按照BIP44/49/84规范,前4个HD层级分别被定义为【用途(地址类型)】、【币种】、【账户】、【外部/内部(收款/找零)】,第5个层级被真正用来生成收款地址和找零地址。
    前三个层级都是走的强化推导,后两个层级走的是普通推导,这样第3个层级的“账户扩展公钥”仍然可以做成不含私钥的“仅观察钱包”,不同的“账户”之间则互相隔离,缩小上面提到的泄露风险影响范围。
    (然并X,貌似很少有人在认真用这个功能,而且即便是走了强化推导,如果最根本的助记词都泄露了,那也仍然是整个钱包都泄露了)


    继续回答楼主的疑问:

    “这个16开头地址并不是我申请的钱包地址”——(既然楼主已经说了,在imToken里查不到这个地址)这个应该就是你前面某次转出操作时用到的找零地址。imToken虽然也可以展示交易详情,但是貌似没有像其他钱包那样明确的把找零地址标出来,这一点有待改进。你可以点开这个地址,看看它收款的交易是什么时间,然后在imToken的转出交易历史里看看能不能找到它。

    “莫非是子地址”——每一个收款地址和找零地址都是“子地址”。只不过,按照BIP44/49/84规范,收款地址和找零地址就像是分别串在两个钥匙圈上的两串钥匙,它们分别是走不同的推导路径生成出来的。

    “可在ImToken中查询不到这个子地址”——我不怎么用imToken,刚刚打开找了一圈,貌似imToken在地址管理方面确实有点不完善,好像只能查到收款地址,不能查到找零地址,但这不表示imToken没有遵守有关的规范,只不过是他们懒得把这个地址显示出来罢了。
    真心感谢大佬如此详细的答复,感谢!
    楼层直达
  • 1
  • 2
  • 3
登录 账号发表你的看法,还没有账号?立即免费 注册
热帖榜 本周最热 本月最热
热门跟帖