Bitget App
Trade smarter
行情交易合约跟单策略理财Web3

波卡的代理账户(下)

Polkadot生态研究院Polkadot生态研究院2023/10/27 14:03
作者:Polkadot生态研究院


波卡知识图谱是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战,然而我们希望通过这样的努力让大家能够正确认知波卡,也让不了解波卡的人方便快速掌握波卡相关知识,今天是该栏目的第 109 期,本文是波卡官方的代理账户指南,本期主要介绍为如何查看代理账户、延时代理以及匿名代理的设置。



如何查看你的代理


要查看你的代理,请在 Polkadot-JS UI 中的"账户"(Accounts)菜单中操作,在被代理的账户旁边会有一个蓝色图标。将鼠标悬停在上面,你会看到代理概览。点击它,你将看到该账户的所有代理的列表。

此外,你还可以在 Polkadot-JS Apps(详情请参见: https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/chainstate)的"Chain State"选项卡(位于开发者 Developer 菜单下方)中查看代理。如果你是在 Kusama 账户上创建的代理,需要使用左上角的导航按钮相应地更改网络。在这个页面上,应选择代理模块,以返回公告和代理函数。代理函数将允许你查看为一个账户或所有账户创建的代理(可以使用切换开关启用此功能)。代理公告是时间锁定代理(time lock proxy)宣布它们将要执行的操作。



代理押金



创建代理需要使用本地货币(如 DOT 或 KSM)进行抵押。 这是因为在链上添加代理需要一些存储空间,该存储空间必须在网络中的每个节点上进行复制。由于成本高昂,这些功能可能会使网络遭受拒绝服务攻击的风险。为了防止这种攻击,代理在其生命周期内需要保留抵押金,以消耗存储空间。当代理被移除时,存储空间也会被释放,因此抵押金将会返还
n 个代理所需的抵押金额计算公式如下: 代理押金基数 + 代理押金系数 *n 【ProxyDepositBase】+【ProxyDepositFactor】*n
其中,代理押金基数【ProxyDepositBase】是为了让一个账户拥有代理列表(在存储中创建一个新项)而需要保留的金额。对于每个代理,还需要额外保留由代理押金系数【ProxyDepositFactor】定义的金额(向存储位置追加 33 字节)。【ProxyDepositBase】是 20.008DOT,【ProxyDepositFactor】是 0.033DOT。


延时代理



我们可以通过给代理设置延迟时间来为代理增加一层安全性 。延迟时间以区块为单位进行量化,波卡的区块时间大约为 6 秒。延迟值为 10 表示十个区块,即大约延迟一分钟。代理将使用【proxy.announce】外源(Extrinsic)来公告其预期的操作,并在执行之前等待延迟时间定义的区块数量。代理将在公告中包含预期函数调用的哈希值。在此时间窗口内,控制代理的账户可以取消预期的操作。
这可以由代理自身使用【proxy.removeAnnouncement】外源(Extrinsic)或由被代理的账户使用【proxy.rejectAnnouncement】外源(Extrinsic)进行操作。现在我们可以使用代理,因为任何恶意行为都可以在延迟期内被察觉并撤销。延时结束后,代理可以使用【proxy.proxyAnnounced】外源(Extrinsic)来执行已公告的调用。
注: 请参阅此视频教程(详情请参见: https://www.youtube.com/watch?v=3L7Vu2SX0PE)以了解如何设置和使用延时代理。视频将通过下面的示例进行演示。
使用延时代理公告 n 个调用还需要进行抵押,计算公式如下: 公告押金基数 + 公告押金系数 *n 【announcementDepositBase】+【announcementDepositFactor】*n
其中,【announcementDepositBase】是为了一个账户公告代理调用而需要保留的金额。对于每个代理调用,还需要额外保留由【announcementDepositFactor】定义的金额。【announcementDepositBase】是 20.008DOT,【announcementDepositFactor】是 0.066DOT。
例如 Eleanor 将 Bob 设置为延时代理。这样,如果 Bob 提交一个改变奖励目标的外源(Extrinsic),Eleanor 可以拒绝该外源(Extrinsic)。这意味着 Eleanor 监控着 Bob,并且在延时期内可以发现已公告的外源(Extrinsic)。Eleanor 可以在链上检查由她账户的代理进行的所有代理调用的公告。在 Polkadot-JS UI 中,转到 Developer>Storage>Proxy>Announcements 以检查由代理账户发出的调用的哈希值和启用执行的区块高度。

注: 如果尝试在延时窗口内使用【proxy.proxyAnnounced】来执行调用,你会收到错误消息"Proxy unannounced",因为公告将在延迟后进行。还请注意,常规的【proxy.proxy】调用不能与延时代理一起使用,你需要先公告调用,然后在单独的事务中执行公告的调用。


代理调用



代理调用,被用于代理来调用代理账户 。在纯代理的情况下,这些调用非常重要,因为任何与纯代理签署交易的尝试都会失败。了解更多详细信息,请参阅有关匿名代理的专门章节(详情请参见: https://wiki.polkadot.network/docs/learn-proxies#anonymous-proxy-pure-proxy)。
嵌套代理调用 顾名思义,嵌套代理调用是在代理调用内部进行的代理调用。如果有被代理账户本身也是代理的情况下,就需要这样的调用。在下面的示例图中,Alice 拥有一个存款(Stash)账户,该账户有一个质押代理账户 P-C。P-C 是一个纯代理,最初由 Charly 创建,并且现在是 P-C 的任意代理,并代表其签署所有转账。

例如 ,要绑定更多的资金,Charly 需要向 P-C 提交一个【prox.proxy】外源(Extrinsic),然后 P-C 会提交一个【proxy.proxy】外源(Extrinsic)到 Alice,其中包括一个【staking.bondExtra】外源(Extrinsic),指定需要绑定的额外通证数量。如果 Charly 想要离开,新的账户可以在 Charly 离开之前接替他的位置作为任意代理,无需更改质押代理账户。此外,只有 Alice 才能将 P-C 从质押代理列表中移除,并且 P-C 只能执行与质押相关的任务。例如,P-C 无法从 Alice 的账户中转出资金。
可以使用 Polkadot-JS UI 中的外源(Extrinsic)选项卡进行代理调用。嵌套代理调用可以通过单独调用每个【proxy.proxy】外源(Extrinsic)来完成,或者在某些情况下,只需调用最后一个【proxy.proxy】外源(Extrinsic)即可。在上面的示例图中,从 P-C 向 Alice 提交代理调用将自动请求 Charly 的签名。因此,一个代理调用将触发第二个代理调用,因为 Charly 是 P-C 的唯一任意代理,而 P-C 无法进行签名。而如果我们想要使用 Bob 的账户,我们将需要提交所有三个代理调用


匿名代理(纯代理)



注意: Polkadot-JS UI 中的账户选项卡无法处理复杂的代理设置(例如,一个代理 ->多重签名 ->另一个多重签名的纯代理)。这些复杂的设置必须直接在外源(Extrinsics)选项卡(详情请参见: https://polkadot.js.org/apps/#/extrinsics)中完成。
我们建议你首次测试功能时使用 Westend(详情请参见: https://wiki.polkadot.network/docs/learn-DOT#getting-tokens-on-the-westend-testnet)测试网络。通过在测试网络上进行复杂的代理设置,你可以轻松地在主网络上复制该过程。
注意:资金损失风险 在使用波卡上的匿名代理进行任何操作之前,请仔细阅读以下文本,并在 Westend 测试网络上进行实验。
匿名代理与其他代理类型非常不同。到目前为止,我们描述的代理是由主账户分配为代理的现有账户。这些代理代表主账户行事,减少了主账户私钥的暴露。请记住,我们越频繁地使用账户的私钥来签署交易,就越将该密钥暴露于互联网上,增加了该账户的可见性。因此,代理的目的是将潜在攻击者的注意力从主账户转移开来,因为大部分时间都会使用代理的私钥代表主账户执行操作

匿名代理是由主账户创建的新账户(而不是分配的)。其次,主账户代表匿名代理充当任何代理。匿名代理是无私钥、非确定性的账户,因为它们没有私钥,但有一个随机生成的地址。从某种意义上说,没有人拥有匿名代理,因为没有人拥有控制它们的私钥
注:将匿名代理更名为纯代理 匿名代理并不是匿名的,因为它们有一个由主账户生成的地址,该主账户作为任何代理代理它们。即使任意代理发生变化,仍然可以通过使用区块浏览器向后追踪找到生成匿名代理的人。因此,有必要更改匿名代理的名称。人们提议将其称为无私钥账户,因为它们没有私钥,是被代理的账户。然而,多重签名账户也是无私钥的(但是具有确定性)。此外,即使匿名代理是被代理的账户,它们仍然可以通过代理调用来充当代理并控制其他账户(参见下面的多重签名示例)。因此,选择的名称是纯代理。如果你想了解更多有关更名纯代理的原因,请参阅此 PR(详情请参见: https://github.com/paritytech/substrate/pull/12283)中的讨论或波卡论坛(https://forum.polkadot.network/t/parachain-technical-summit-next-steps/51/14)上的讨论。
从现在起,我们将使用"纯代理"而不是"匿名代理"。
创建和移除纯代理 注: 要创建纯代理,请参阅此帮助文章(详情请参见: https://support.polkadot.network/support/solutions/articles/65000182196),或观看此技术说明视频(详情请参见: https://www.youtube.com/watch?v=T443RcCYP24)。
注:移除纯代理 删除纯代理的步骤与删除其他代理的步骤不同。请访问此帮助文章(详情请参见: https://support.polkadot.network/support/solutions/articles/65000182196)上的“删除匿名代理”部分,或观看此技术说明视频(详情请参见: https://www.youtube.com/watch?v=T443RcCYP24)。
注:有关纯代理的说明视频 通过我们的技术说明视频(详情请参见: https://www.youtube.com/watch?v=YkYApbhU3i0)了解更多关于纯代理的内容。
纯代理的使用 纯代理的使用严格依赖于纯代理与任意代理之间的关系。请注意,任意代理不一定是最初创建纯代理的人。因此,纯代理并不真正归属于某个人,但它们可以被控制 。一旦纯代理与其任意代理之间的关系被破坏,纯代理将无法访问(即使在 Polkadot-JS UI 上可见)。此外,纯代理是非确定性的,这意味着如果我们丢失一个纯代理,我们从同一主账户创建的下一个纯代理将具有不同的地址
纯代理无法签署任何内容,因为它们没有私钥。然而,尽管它们没有私钥,也无法直接签署任何交易,但它们可以在【proxy.proxy】调用(proxy calls)中充当代理(或更准确地说,代理通道)。例如,可以在多重签名中使用纯代理。使用代理调用,可以使用任意代理调用纯代理,然后纯代理将进行多重签名调用。稍后将详细介绍。
警告: 一旦解除与任意代理的关系,纯代理将无法访问。此外,纯代理无法签署任何内容。
为什么要使用纯代理? 尽管纯代理存在复杂性和相关风险,但它们具有以下重要优势。
1. 增强安全性 纯代理无法被盗取,因为它们没有私钥。唯一具有对纯代理完全访问权限的账户是任意代理。如果任意代理是多重签名账户,则可以进一步增加安全性
2. 简化和保证组织层面的账户管理 注: 账户管理的教程视频 可以查看此视频教程(详情请参见: https://www.youtube.com/watch?v=YkYApbhU3i0),了解这种情景下的操作过程。该教程需要对 Polkadot-JS UI 的 Extrinsic Tab 有一定熟悉。
使用纯代理的最大好处可能是在公司层面上管理复杂的账户关系 。我们以公司 X 的 Charlie、Dan 和 Eleanor 拥有的 3 个账户为例。Charlie 持有属于公司 X 的资金,但他想要离开公司并将经济责任转移给 Eleanor。Dan 是 Charlie 的委托代理。
如果没有纯代理,Charlie 必须执行以下步骤(请参见下方图表左侧): (1)将 Dan 从委托代理中移除,需要 1 个签名。 (2)停止提名并解绑所有资金,需要 2 个签名。 (3)将资金转移到 Eleanor,需要 1 个签名。
然后 Eleanor 将 Dan 添加为委托代理(1 个签名)。整个过程需要 5 个签名。这里我们只是举了一个简单的例子,实际上,使用多重签名账户和多个代理时,该过程会更加耗时和繁琐

使用纯代理(如上图右侧所示),Charlie 只需将 Eleanor 添加为纯代理的任意代理,并删除自己(或者 Eleanor 可以删除他)。该过程只需要 2 个签名(1 个签名用于添加新的任意代理,1 个签名用于删除旧的任意代理)。资金仍然保留在纯代理中,无需停止提名或解绑资金。 而且,与纯代理的任意代理关系保持不变
因此,如果我们使用纯代理,在代理数量增加时,我们始终只需要签署两次(在多重签名账户中不一定适用)。 而如果我们不使用纯代理,代理越多,就需要越多的签名来将它们从旧的存储库中分离出来并连接到新的存储库中 (参见下图)。

3. 多重签名账户管理 纯代理可用于高效管理多重签名(multisigs)账户。 事实上,多重签名是确定性的,这意味着一旦创建了多重签名,签名人就无法更改。如果其中一个签名人想要离开多签账户,就必须创建一个新的多签账户。这很不方便,尤其在企业级管理中,可能需要经常更换多签账户中的签名人。纯代理允许在签名人更改时保持相同的多重身份。
情景一: 在多重签名中有一个匿名代理 注: 教程视频 你可以参阅此视频教程(详情请参见: https://www.youtube.com/watch?v=iGRoGstB_pQ),了解这种情景下的操作过程。 该教程需要对 Polkadot-JS UI 的 Extrinsic Tab 有一定熟悉。
可以将纯代理放置在多重签名中,然后交易将由任意代理代表纯代理(被代理账户)进行签名 。让我们以下图为例。Alice、Bob 和 Anon 是多签名 ABC 的一部分,它是一个阈值为 2 的多重签名账户。P-C 是由 Charlie 创建的纯代理,现在作为任意代理行动,因此代表 P-C 签署任何转账。纯代理无法直接签名,因为它没有私钥
因此,例如,要将资金从多签名账户发送到 Dan,Charly 需要向 P-C 提交【proxy.proxy】外源(Extrinsic),然后 P-C 将提交【multisig.asMulti】外源(Extrinsic)到 ABC,其中包含有关【balances.transferKeepAlive】外源(Extrinsic)的调用数据,用于将一些资金从 ABC 转移到 Dan。 然后,Alice 可以通过提交一个包含有关【balances.transferKeepAlive】外源(Extrinsic)的调用数据的【multisig.asMulti】外源(Extrinsic)来批准转账,将一些资金从 ABC 转移到 Dan。

如果 Charly 想要离开多签账户,可以向 P-C 添加一个新的任意代理,并将 Charly 删除(由他自己或新的任意代理执行)。请注意,多签名账户也包含 Bob,在这个特定的示例中没有做任何操作
注:调用代理 要在多重签名中使用纯代理,你需要使用 Extrinsic Tab 并生成一个【proxy.proxy】外源(Extrinsic)。如果你尝试使用纯代理签署多重签名交易,你将收到警告。请记住,如果没有私钥,你无法直接签署某些内容。
情景二:由匿名代理组成的多重签名 注:教程视频 你可以查看此视频教程(详情请参见: https://www.youtube.com/watch?v=F82C3zDNJyk),了解这种情景下的操作过程。该教程需要对 Polkadot-JS UI 的 Extrinsic Tab 有一定熟悉。
在上面的图示中,显示了一个仅由纯代理(P-A、P-B 和 P-C)组成的多重签名。在这种情况下,Alice、Bob 或 Charly 可以随时离开多重签名,而不需要创建新的多重签名。例如,如果 Bob 离开多重签名,程序将要求将其他人添加为 P-B 的任意代理,然后 Bob 可以自行删除(或新的任意代理可以将 Bob 删除)。

在上面的图示中,Alice 向 P-A 提交【proxy.proxy】外源(Extrinsic),然后 P-A 提交包含有关从 ABC 到 Dan 转移一些通证的【balances.transferKeepAlive】外源(Extrinsic)的【multisig.asMulti】外源(Extrinsic)。然后,Charly 执行相同的操作以确认交易。请注意,Charly 将需要支付一些计算费用,用于执行交易所需的计算量







欢迎大家加入我们 Polkadot 生态研究院的电报:

https://t.me/polkadot_eri

欢迎大家访问波卡生态研究院的 Mirror 地址:
https://mirror.xyz/0x9A259b3a2316281Cc948cE2Cf1Ac610a79844f05




精选文章


平行线程  |  经济模型  | Slash  |  通货膨胀  |  NPoS | Web3 基金会
Staking
 |  Gavin Wood |  跨链  |  平行链  |  国库   Parity
DOT  |  Web3.0  |  网络效应  | Grant 指南
Statemint  |  区块链 SBP 计划  |  新计划
XCVM  |  BEEFY  |  XCM
Wasm


 


0

免责声明:文章中的所有内容仅代表作者的观点,与本平台无关。用户不应以本文作为投资决策的参考。

PoolX:质押赚新币
CEC、QTLX、GDV等热门新币火热进行中!
立即质押!

你也可能喜欢

鲍威尔兑现华尔街最想要的降息!但市场依旧疑虑重重

周三几乎所有主要资产都出现下跌,虽然跌幅并不大,但自2021年6月以来,美联储政策决议后市场从未出现过如此一致的回调。

Jin102024/09/20 20:09

美联储本次是“鹰派降息”?未来关键或在于鲍威尔会有多鸽!

花旗预计美联储将在11月再降息50个基点,并在12月降息25个基点。

Jin102024/09/20 20:09

美联储降息后,特朗普怒喷:这是在操控政治!

美联储的降息举措已经在两党之间产生巨大反响,哈里斯“点赞”,特朗普认为美联储居心叵测。

Jin102024/09/20 20:09

FBI:伊朗黑客一直在干预美国大选!

伊朗黑客据称窃取了特朗普的竞选材料,并发送给之前的拜登竞选团队。伊朗反驳:毫无根据!

Jin102024/09/20 20:09