Bitget面試

1. 自定義合約如何識別交易

這個一致沒有get到面試官的點,對這一樣了解的還是太少了

2. 鏈上多簽

區(qū)塊鏈上的多重簽名(Multisignature,簡稱多簽)是一種安全機制,要求多個密鑰持有者共同簽署交易或操作,才能獲得執(zhí)行權限。這種機制通常用于提高資產(chǎn)管理的安全性,防止單點故障或密鑰被盜引發(fā)的風險。

在鏈上多簽的典型應用包括:

  • 資產(chǎn)管理:多人共同管理一個賬戶,所有人必須同意才可進行資金轉(zhuǎn)移。
  • 去中心化組織(DAO)治理:多個成員共同簽署和決策操作。
  • 合約管理:某個智能合約的關鍵操作需要多個授權人共同簽署才能執(zhí)行。

1. Solana 上的多簽

在 Solana 上,多簽賬戶通過 “Program Derived Addresses (PDA)” 或者 “多簽智能合約” 來實現(xiàn)。Solana 的多簽邏輯并沒有像其他鏈(例如以太坊)那樣直接由協(xié)議層提供,而是通過程序來實現(xiàn),常見的方式包括:

  • 自定義多簽合約:開發(fā)者可以創(chuàng)建一個智能合約來管理多簽賬戶和權限。
  • 系統(tǒng)級的多簽賬戶:利用 Solana 的 System Program 來實現(xiàn)原生的多簽操作。

Solana 的多簽賬戶

Solana 的多簽賬戶是通過系統(tǒng)合約(System Program)創(chuàng)建的賬戶,支持多個簽名人(簽名者)。這些簽名人必須滿足一定的簽名數(shù)量要求(稱為“M-of-N”規(guī)則)才能批準交易。

基本原理

  • 一個多簽賬戶包含 N 個授權簽名者,其中每次操作需要至少 M 個簽名來執(zhí)行交易。
  • 使用者可以在創(chuàng)建賬戶時指定這些簽名者及簽名閾值 M。

指令支持

  • CreateAccount:創(chuàng)建多簽賬戶。
  • Assign:將賬戶權限分配給多簽賬戶。
  • Approve:使用指定的簽名者批準某項交易。

2. 以太坊上的多簽

以太坊多簽最常見的實現(xiàn)是通過智能合約,例如 Gnosis Safe 等,這些合約提供了高度靈活的多簽方案。

Gnosis Safe 多簽

Gnosis Safe 是以太坊和其他 EVM 兼容鏈上使用最廣泛的多簽錢包,允許用戶在不信任其他參與者的情況下共同管理資產(chǎn)。

主要特性

  • M-of-N 簽名:你可以設置 N 個簽名者,并要求其中的 M 個簽名者共同簽署才能完成一筆交易。
  • 模塊化擴展:Gnosis Safe 支持通過不同模塊擴展功能,比如批量交易、時間鎖、每日交易限額等。

部署和使用

  1. 創(chuàng)建錢包:創(chuàng)建時需要指定簽名人和所需的簽名數(shù)量。
  2. 發(fā)起交易:任何一個簽名者都可以發(fā)起交易提案。
  3. 多簽審批:其他簽名者通過簽署來批準交易,達到閾值后交易會被執(zhí)行。

3. 多簽的應用場景

  • 資產(chǎn)安全:企業(yè)或大型機構使用多簽賬戶來確保只有多方共同批準才能動用資金,這可以防止某個人單獨操作。
  • 去中心化治理:DAO 等去中心化組織通過多簽錢包來管理共同資金,任何重大決策需要達成共識后才能執(zhí)行。
  • 智能合約管理:在部署關鍵智能合約或進行升級時,使用多簽來確保合約操作的安全性和透明性。

4. 多簽的挑戰(zhàn)與安全考慮

  1. 簽名者管理:多簽機制需要多個密鑰持有者共同管理賬戶,因此簽名者的選擇和替換需要考慮安全和信任問題。
  2. 復雜性:多簽賬戶的操作相較單一簽名賬戶復雜,需要協(xié)調(diào)多方簽名,有時可能會導致操作不便。
  3. 密鑰丟失:如果多個簽名者的密鑰丟失,可能導致資產(chǎn)無法取出,因此需要制定應急措施,如支持恢復或更換簽名者。
  4. Gas 費用問題:在以太坊等區(qū)塊鏈上,每個簽名者的操作都會產(chǎn)生 Gas 費用,因此多簽交易的成本可能更高。

總結來說,鏈上多簽通過將權限分散到多個簽名者手中,極大提高了資金和關鍵操作的安全性。無論是 Solana 的多簽賬戶,還是以太坊的 Gnosis Safe 等智能合約,都提供了不同的靈活性和安全性來滿足多方管理資產(chǎn)和操作的需求。

3. sol 鏈的 nonce 邏輯

在 Solana 區(qū)塊鏈上,nonce 是一種用于確保交易唯一性和順序性的重要機制。與以太坊等其他區(qū)塊鏈不同,Solana 的賬戶模型和交易管理方式有所不同,因此 nonce 的處理邏輯也有自己的特點。

Solana 的 nonce 主要用于確保交易在較長時間內(nèi)不被重復執(zhí)行,避免雙重花費。具體來說,Solana 采用了一種稱為 "持久 nonce" (durable nonce) 的機制,以應對網(wǎng)絡擁堵或交易延遲時的重放攻擊問題。

Solana Nonce 邏輯

1. 持久 Nonce 賬戶 (Durable Nonce Account)

Solana 的 nonce 是通過一個專門的 nonce 賬戶 來實現(xiàn)的。這是一個特殊的賬戶,存儲了一個不會隨著時間變化的 nonce 值,并且在交易中使用該賬戶可以使交易保持有效,即使它不是在區(qū)塊鏈的下一次 slot 中立即執(zhí)行。

2. Nonce 生成與管理

  • nonce 賬戶會生成一個由網(wǎng)絡時間戳或 slot 號派生的 nonce 值,這個值在賬戶被創(chuàng)建或更新時產(chǎn)生。
  • 用戶可以通過交易來更新 nonce 賬戶,使其生成一個新的 nonce。
  • 當你構建交易時,交易中會引用 nonce 賬戶的當前 nonce 值,這個值會確保交易在提交之前的有效性,直到 nonce 被消耗或更新。

3. 使用 Nonce 的交易構建

當使用 nonce 時,交易需要引用這個特殊的 nonce 賬戶,而不是使用正常的交易順序(即 slot-based)。這使得交易可以在指定的 nonce 被使用或更新之前保持有效,而不會因為延遲而無效。

示例流程:

  1. 創(chuàng)建一個 Nonce 賬戶:用戶首先需要創(chuàng)建一個 nonce 賬戶,并為其提供少量的 SOL 作為存儲費用。
  2. 獲取當前 Nonce:通過對 nonce 賬戶發(fā)起 Nonce 指令獲取當前的 nonce。
  3. 構建交易:在交易中引用 nonce 賬戶及其值,使交易不依賴于當前的 slot。
  4. 提交交易:提交時,交易使用 nonce 賬戶中的值,確保即使網(wǎng)絡有延遲,交易仍然可以有效。

4. Nonce 消耗和更新

當一筆交易使用了 nonce,該 nonce 就會被消耗,此時必須通過發(fā)起一個 Nonce 更新交易來獲取新的 nonce 值。如果 nonce 沒有被消耗,也可以通過手動更新來生成一個新的 nonce,以確保下一筆交易的唯一性。

Solana Nonce 相關指令

Solana 使用以下指令與 nonce 賬戶交互:

  1. NonceInitialize:用于創(chuàng)建并初始化一個 nonce 賬戶。這個指令設置了賬戶的所有者并分配了所需的存儲。
  2. AdvanceNonceAccount:消耗當前 nonce 并生成一個新的 nonce。當一筆交易使用了 nonce 后,必須調(diào)用這個指令更新賬戶以獲取新的 nonce。
  3. WithdrawNonceAccount:從 nonce 賬戶中提取資金,并將賬戶清理。
  4. AuthorizeNonceAccount:更改 nonce 賬戶的授權者,以允許其他賬戶管理 nonce 賬戶。

小結:

Solana 的 nonce 機制通過 nonce 賬戶來實現(xiàn)交易的可控性和唯一性。相比以太坊的交易 nonce,Solana 的 nonce 允許在較長時間內(nèi)保持交易有效,特別適合網(wǎng)絡擁堵或交易延遲的場景,同時也為開發(fā)者提供了更多的靈活性用于管理交易順序和重放問題。

4. 不換地址升級合約

  1. 代理合約(Proxy Contract)
  2. Eternal Storage 模式
  3. 多合約架構(Module-based Approach)

5. 大文本塊如何加密

使用 AES對稱加密,非對稱加密的效率低

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容