1. 主页
  2. 文档
  3. Monero-Doc 门罗币教程...
  4. 第四章 地址
  5. 2 子地址

2 子地址

子地址是接收门罗币时使用的默认地址。

了解你的收款来源

通过为每一笔预期付款提供一个独特的子地址,用户可知收款来源。 此用例与整合型地址重叠。 子地址通常是首选的原因如下。

防止付款人将你的支付连接在一起

为了防止付款人将你的支付链接在一起,只需为每次支付生成一个新的子地址。 这样一来,像 Shapeshift 这样的服务商就不会知道你又接收到门罗币啦! 注意,如果你在某项服务中存在账户,那么这个防止功能将无效。 因为,不管门罗币如何,你的支出已经和那项服务的数据库链接起来了。

将资金集中到帐户中

注意!

如果你是初入门罗币的小白,你可以放心地跳过这一部分。 账户是不必要的,并且目前并不被GUI支持。

账户是一个方便的钱包级功能,可以将子地址分组到一个标签和收支之下****。

你可能想把你的资金存储到诸如“现金”、“工作”、“交易”、“采矿”、“捐赠”等账户中。

由于账户只是子地址的组群,它们本身没有地址。确切来说,帐户是来自根私钥(root private key)和子地址。

截至到2018年9月,只有CLI 钱包支持账户, GUI 钱包中已经取消了此功能。

账户类似于传统银行账户中的子账户。 但是有一个非常重要的区别。 在门罗币中,基金实际上并不存在于账户或公共地址上。 公共地址在概念上是一个网关或路由机制。 资金停留在未花费的交易产出上。 因此,单个事务原则上可以汇总和支出多个地址(甚至扩展为从多个帐户)的产出。 为了简单起见,CLI 或 GUI 钱包可能不直接支持创建此类交易。

简而言之,把账户想象成你的资金的一个组合。

为什么不是多个钱包呢?

与创建多个钱包相比,优势在于只需要管理一个种子。 所有子地址都可以从钱包种子中派生。 此外,用户可以在单个用户界面中方便地管理子地址。

钱包级功能

子地址和账户是用于构造和解释交易的钱包级特性。 它们不会影响共识。

数据结构

子地址有一个专用的“网络字节” :

Index 索引 Size in bytes 字节大小 Description 描述
0 1 定义了网络和地址类型; 42 - mainnet; 36 - stagenet; 63 - testnet

否则,数据结构将会与标准地址相同。

生成

每个子地址概念上都有:

  • 帐户索引(index)(也称为“主要”索引)
  • 帐户内的子地址索引(也称为“次要”索引)

这些索引是基于0的。 默认情况下钱包使用帐户索引 0。 这些索引不直接包含在子地址的数据结构中。 相反,它们被用作生成子地址键的输入。

私有视图密钥(private view key)

子地址私有视图密钥 m 派生如下: ** m = Hs("SubAddr" || a || account_index || subaddress_index_within_account)**

  • Hs 是一个Keccak-256哈希函数(散列函数),被解释为整数和模 l (最大edwards25519标量)
  • || 是一个字节数组(byte array)连接操作符
  • SubAddr 是一个以0结尾的固定字符串(总共8个字节)
  • a 是标准地址的私有视图密钥(private biew key)(32字节的小尾数无符号整数)
  • account_index 是账户的索引(32位小尾数无符号整数)
  • subaddress_index_within_account是账户中子地址的索引(32位小尾数无符号整数)

从主视图键派生“子视图键”允许创建一个仅支持查看钱包,来监控【包括子地址在内的】整个钱包。

公共支出密钥(public spend key)

子地址公共支出密钥 d 派生如下: D = B + m*G 地点:

  • B 是标准地址公共支出密钥
  • M 是子地址私有视图密钥
  • G 是“基点” ; 这只是 edwards25519的一个常量

公共视图密钥(public view key)

子地址公共视图密钥 c 派生如下: C = a*D

  • A 是标准地址的私人视图密钥
  • D 是子地址的公共开支密钥

特殊情况 (0, 0)

帐户 # 0上的子地址 # 0是标准地址。 因为标准地址具有不同的生成规则,所以这只是通过 if 语句实现的。

构建地址字符串

此过程与构建标准地址相同。

警告

  • 建议不要在单个交易中将子地址的所有余额清空并转到标准地址。 这会把子地址连接到块环链上。 然而,这只是针对特定发送者的隐私问题,而且这种情况永远不会比不首先使用子地址更糟糕。 如果您需要加入资金,同时又想保持最大限度的隐私,请使用 (individual transactions)个人交易(每次使用一个子地址)。
  • 从种子重新创建时,便利标签不能保留。

参考

我们要如何帮助您?