歡迎光臨
比特幣資訊網

波卡的代理账戶(下)

如何查看你的代理

要查看你的代理,請在Polkadot-JS UI中的"账戶"(Accounts)菜單中操作,在被代理的账戶旁邊會有一個藍色圖標。將鼠標懸停在上面,你會看到代理概覽。點擊它,你將看到該账戶的所有代理的列表。

此外,你還可以在Polkadot-JS Apps(詳情請參見:

https://polkadot.js.org/apps/?rpc=wss://rpc.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刪除)。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。


標題:波卡的代理账戶(下)

地址:https://www.globalstockvip.com/article/36918.html