Cardano具有多委托功能

Cardano has a multi-delegation feature | Cardano Explorer (cexplorer.io)

Lace 钱包允许用户从一个账户将 ADA 委托给多个池。 通过创建多个帐户可以实现相同的功能,这是目前广泛使用的方法。 在本文中,我们将解释多重授权在技术上如何可行。

钱包只是密钥的生成器和保管者
当用户创建非托管钱包时,会生成新的随机种子(密码),并提示他们仔细、安全地保存它。 钱包从种子中获取接收和发送资金以及质押所需的所有其他密钥。 一切都在后台发生,因此用户只能处理交易和区块链地址。 很高兴了解卡尔达诺钱包如何从种子中获取密钥。

在下图中,您可以看到从种子开始的密钥派生结构。 红色密钥代表私钥/签名密钥,绿色密钥代表公钥/验证密钥。

种子是从中导出主密钥的随机单词序列。 它用于生成其他加密密钥。 种子可用于恢复钱包。 如果您知道种子,并且遵循相同的过程(这是通过标准化确保的),则可以再次从中导出相同的密钥集。 主密钥是分层确定性(HD)钱包结构的顶层。

主密钥可用于派生多个帐户,每个帐户都有自己的一组地址和密钥。 帐户也是代表您在网络中的权益的密钥对,并允许您将其委托给池。

一个账户可以有多个地址和质押密钥,这些地址和质押密钥也是由具有不同角色的账户密钥派生出来的密钥对。

地址用于接收和发送资金。 公钥用于生成地址,而私钥用于签署交易,从而证明资金的所有权。

质押密钥由质押者和矿池运营商使用。 对于质押者来说,质押地址源自质押密钥。 私钥用于行使委托权。

矿池运营商还使用质押密钥来生成质押地址和矿池 ID。 矿池 ID 是公共质押密钥的哈希值。

用户质押地址被插入委托证书中,作为 ADA 币的来源,委托给由池 ID 标识的池。 委托证书将质押地址链接到矿池的质押密钥。

质押地址由质押者和运营商用来存储和提取质押奖励(通过私钥)。

让我们主要关注用户的钱包。

在单个账户中,钱包通常只创建一个质押密钥,并使用公共质押密钥的哈希值将其插入到所有支付地址的引用中。 换句话说,所有支付地址都包含对质押密钥的相同引用。

在下图中,您可以看到一个具有三个支付地址(Shelley 支付地址)的账户,其质押地址引用引用从单个质押密钥派生的相同哈希值。 请注意,权益地址包含奖励帐户。

这样,用户可以将其权益委托给具有单个证书的池,并且他们的所有支付地址都将遵循相同的委托选择。 这也简化了密钥和地址的管理,因为用户只需要跟踪其钱包的一个质押密钥和一个委托证书。 用户可以创建多个新的支付地址,这些地址上的所有 ADA 将自动用于质押(一旦拍摄下一个快照)。

权益是与权益密钥关联并委托给权益池的 ADA 数量。 权益的计算方法是对与同一权益密钥关联的支付地址上的所有 UTxO 进行求和。 钱包会自动将相同的质押密钥插入到新创建的支付地址中。

然而,这也意味着用户不能将其权益的不同部分从同一钱包委托给不同的池,因为他们需要为此目的创建多个权益密钥和证书。 我们将在本文的下一部分详细讨论这一点。

ADA 委托给多个池
Lace 钱包可以通过一个账户进行多个委托。 Lace 从同一账户密钥生成多个权益密钥,以及多个支付地址。 多个质押密钥(它们的哈希值)与不同的支付地址相关联。

一个支付地址只能与一个质押密钥关联。 多个支付地址可以与同一个质押密钥关联。

在下图中,您可以看到如何从一个账户密钥派生出 2 个质押密钥和 2 个支付密钥。 注意按键之间的链接。 每个支付地址都与一个唯一的质押密钥相关联。

如果在现有钱包中创建新的质押密钥和支付密钥(图中的索引 1),则支付地址上将不会有 ADA 币。 钱包必须创建一笔交易,将部分 ADA 币(UTxO)从已委托的地址(图中索引为 0 的旧支付地址)转移到新地址,并为新的质押密钥创建新的委托证书。

现在,用户可以选择他想要委托的两个池(两个池 ID)。 钱包将执行所有必要的步骤并创建所有必要的交易。

由于使用单一账户进行多委托,因此投票权不会受到干扰。

通过创建多个帐户也可以实现同样的目的。 每个账户都有一个单独的质押密钥,用于多个支付地址。

在下图中,您可以看到如何从一个主密钥派生出 2 个帐户密钥(本质上是两个独立的用户帐户)。 每个账户都有自己的支付地址质押密钥(可以有更多)。

必须为每个帐户创建委托证书并将其提交到网络。

陷阱
如果您打算委托给多个池,则需要注意一些陷阱。 让我们考虑一下您平衡您的权益的方式,将 1000 ADA 分为 5 个池,每个池将委托 200 ADA。

您一次可以在一个地址接收 ADA 币。 如果有人向您发送 200 ADA,您将把 400 ADA 委托给一个池,而仍然只向所有其他池分配 200 ADA。 如果您想重新平衡质押投资组合,则必须手动进行。 也许你的钱包会帮助你。

如果您向某人发送 100 ADA,钱包可以从单个地址获取 ADA,因此您只能将 100 ADA 委托给 5 个池之一。 理论上,钱包可以从 5 个地址获取 UTxO,从而将每个池的权益减少 20 ADA。 但交易规模会更大,费用也会更高。 每个钱包可能会提供有关地址选择的不同选项。

一些 DApp 依赖于只有一个质押密钥的用户(他们通过质押密钥验证钱包,并且可能需要质押密钥的签名),并且可能不支持多个质押密钥。 Dapp 可能看不到您的整个投资组合。

结论
对于那些想要支持多个矿池,但又不想为钱包创建多个种子(并在它们之间转移 ADA)的用户来说,多委托是有益的。 许多钱包支持创建多个帐户。 Lace 钱包允许在单个账户内派生多个质押密钥。 这是生态系统中相对较新的功能。

如果您从多个委托开始,请忠于您开始使用的钱包。 如果您想使用其他钱包,请确保它支持您开始使用的相同类型的多重委托。 例如,如果您使用 Lace 并委托给 5 个池,您可能无法在其他钱包中重新委托。 然而,我们相信大多数钱包将开始支持单个账户内的多个质押密钥。