DoraID:通用去中心化身份和Staking機制
目標
DoraID旨在提供一套能夠在區塊鏈上自治的去中心化身份認證體系,為鏈上大量的需要身份認證、抗女巫攻擊的去中心化應用提供基礎服務支持。
一方面,傳統鏈上的KYC認證均無法繞過一定程度的中心化節點對於账戶的鏈外身份信息進行查驗、記錄的步驟。因此這類服務往往對於用戶的操作復雜度、使用成本都較高。而且基於驗證的方式、審核的合規程度不同,這類中心化節點參與的認證服務也會存在通用性較差,中心化節點自身的安全風險等問題。
另一方面,在實際運作中有很多項目和機構使用Token Staking(鎖倉或持有量證明)來作為一個特定账戶地址在其去中心化應用中的身份判別條件。這一方法能夠有效篩選出“有身份”的账戶地址,但是大多數場景下用戶只是為了特定的一個合約服務來進行鎖/持倉操作,而身份認證服務本身沒有任何泛用性。同時對於一些體量較小,或者功能較為簡單的去中心化輕服務(比如僅僅參與一個投票)來說,讓用戶為了一次簡單的操作而提供一個“昂貴”的持有量證明,將會極大的拉高這類應用的用戶門檻,阻礙應用的發展。
基於目前鏈上身份認證服務的基礎,本着在去中心化網絡中“資產即身份”的理念,DoraID仍然以鎖倉Token數量,鎖倉時間作為身份認證的核心要素。在此基礎上,允許用戶以更靈活的方式調整自己的鎖倉情況,同時將账戶身份判斷的決策權轉交到上層的應用合約或者鏈外的服務中。因此用戶可以根據實際的需要來動態調整鎖倉情況,以便使用最優的鎖倉數量和時間來享受“認證後”的權利。也可以通過配置一個“充分”的鎖倉方案,來實現一次鎖倉,享受多個不同合約/服務中的身份認證權益。
核心功能
在DoraID的去身份驗證合約中實現了如下基本功能:
• 在合約內可以且僅可以設置一種ERC20 Token,作為該合約進行身份認證時所依賴的代幣。
• 合約內設置了若幹初始認證账戶地址,即初代認證账戶。
• 用戶可以將任意數量的對應Token以任意時間鎖倉在合約內。其中,在設定的鎖倉時間結束之前,用戶不能取出他所有鎖定在合約內的Token,但是可以任意的增加鎖倉的數量或者延長鎖倉的時間。
• 已認證用戶的在合約的內鎖倉會生成他們的持有量證明。
• 任何一個在當前時刻鎖倉數量和剩余鎖倉時間均超過“認證閾值”的未認證账戶,可以被一個已認證账戶通過消耗一定的持有量證明,調用合約接口來進行激活,成為一個已認證用戶。
• 合約對外暴露查詢账戶狀態的接口,供其他合約或者鏈外的個人或組織對特定地址的身份認證狀態進行評估。
合約中不包含管理員账戶,不可升級,沒有任何項目方收取手續費的設計,是一個純粹的身份驗證合約。
另外地,DoraID 同時會提供一套便於用戶進行交互/查看/查詢的前端界面,輔助用戶直觀的和鏈上的核心身份驗證合約交互。同時用戶也可以直接和鏈上合約交互以實現更靈活的對於鎖倉情況的控制。
身份證明
在合約部分,任意一個账戶地址都可以查詢到以下公开信息:
• 是否是已認證狀態
• 當前鎖倉Token數量
• 當前鎖倉的最早可釋放時間
• 激活該账戶的認證用戶地址(如果當前账戶已認證)
• 通過該账戶激活的账戶數目(如果當前账戶已認證)
• POS持有量證明
• 账戶所有者自己上傳的一段String備注信息
DoraID本身並不規定如何根據這些公开信息來判斷某一特定账戶是否在當前的上下文中具有“被認證”的權益,而是需要使用 DoraID 的合約/鏈外服務(下文統稱應用)根據這些公开信息,結合自身的場景和用戶的請求來判斷。但是一般的,我們認為這些應用應該基於以下有序邏輯來對账戶地址的身份進行判斷:
判斷账戶是否已認證
除非當前應用認為當前操作不需要用戶有認證狀態(比如當前用戶是正在參與一個非常公开的活動),否則應當始終忽略未認證的账戶地址,即使他們提供了一些鎖倉作為身份證明。
判斷鎖倉數量是否大於特定閾值
邏輯上我們認為鎖倉數量與账戶地址的“身份高低”應當存在正比例關系,即鎖倉數量越大,應當享受的權益也越大。應用可以根據用戶當前使用的功能,判斷當前的鎖倉數量是否可以享受認證後的權益,甚至可以量化的計算出用戶能享受的權益程度。
需要注意的是由於鎖倉的代幣價值可能會有所波動,應用層應當結合實際情況調整閾值的高低,並且可以保留調整閾值的方法。
判斷剩余鎖倉時間是否大於特定閾值
應用必須判斷當前账戶地址的鎖倉時間是否大於該地址當前可能申請到的權益的生效時間。否則,該账戶的所有者完全可以在鎖倉時間結束,而權益未結束的時候取出所有鎖定的Token,並用這些Token鎖倉、激活另一個新的地址,從而使得同一份Token在應用層面換取到兩份重疊的收益。
特別地,如果當前地址可能申請到的這份權益的有效時間也是動態的,那么應用可以不需要判斷鎖倉時間閾值,而是給這個地址一份同樣有效持續時間的權益。
例如:用戶嘗試參與一個持續一星期,需要身份認證的IDO。這等同於用戶嘗試申請一個最少持續一星期的不可代替的此次 IDO 的認購權。因此公募合約必須檢查用戶剩余的鎖倉時間至少有一星期以上。
【可選】判斷該账戶的上下遊認證連鎖路徑
雖然合約中完整記錄了地址的認證鏈路,但是由於鏈上遞歸操作可能造成Gas使用過高的風險,因此不建議在沒有輔助用以判斷認證關系的中間件層時,檢測地址的完整認證路徑。另一方面,“誰認證了該地址”與“該地址認證了誰”這兩個信息的實際含義一般對於該地址的權益判斷沒有強關系。基於以上原因,應用可以根據實際場景來設計是否需要使用這一數據。
【可選】公示账戶的備注信息
合約一般不會處理String類型的自定義信息,但是對於鏈外應用,或者通過 DoraID 來查看特定地址身份的开發者,可以公示、閱讀該账戶在合約中儲存的備注信息。
我們並沒有硬性規定這部分備注應該以什么格式提交,也不強制所有用戶上傳這一備注信息,更不保證任何備注信息的真實性。但是我們建議用戶上傳一個URL,並且在URL指向的資源中提供一些可公开的強身份性的信息,並且最好能循環公示/證明其账戶地址。(例如:在備注裏備注一個Github的鏈接地址,在這個鏈接中可以看到某一Repo中readme.md中也注明了這一鏈上账戶地址信息,那么顯然這個账戶地址和這個Github账號之間有很強的身份關聯)
另外,應用不應該參考账戶的POS持有量證明,盡管這一數據也是公开的。因為账戶的持有量證明會在身份認證合約中被用於激活其他账戶而消耗,而除此之外這又是一個持續自增的變化參數,我們不認為這一數據具有強的身份判別關系。
身份認證背後的共識
除了提供合約及配套的前端界面的服務外,DoraID 還希望能建立一套針對該服務下所產生的認證身份含義的共識——這也是基礎服務能夠給上層應用賦能的重要條件。
首先需要指出的是,DoraID 並不保證任何一個在合約內經過“認證”的账戶地址都是對應一個獨立的自然人或者真實的組織、團隊、公司。因為這是一個去中心化的解決方案,在沒有鏈外信息的幹預時,我們基於“資產即身份”的基礎價值觀念,僅在邏輯層面全力保證同一份資產(Token)不會在同一個時間段用以代表多個身份,從而極大的增加女巫攻擊上層應用的門檻。
在鎖倉-確權的理念之外,DoraID 中還設計了若幹初始認證账戶,及“新認證账戶必須已認證账戶激活”的機制。基於這一機制,在合約的數據層面將會形成一個網狀輻射的認證關系網絡,所有認證關系也都是可以遍歷的。雖然合約中並沒有額外收取任何手續費用,但是老認證用戶需要為這種激活操作支付區塊鏈網絡上基礎的礦工費用,即花費一定的成本,因此沒有理性的認證用戶會無條件的幫助所有符合鎖倉閾值的非認證用戶進行激活。我們認為基於這種設計,兩個账戶地址的持有者(當他們不是同一個人的時候)在鏈外至少有一定的溝通。繼而我們也可以認為在這個過程中,激活者對於被激活者的真實身份有一個弱的擔保關系。具體來講,即使被認證節點地址使用認證的身份在某些場合做出一定的惡意行為,認證者也不應當被認為需要對這一惡意行為承擔任何責任。但是對於一個頻繁地去無差別激活其他地址,甚至包括多個惡意账戶地址的激活者,其自身及其激活的其他账戶地址的可靠性評價會被認為是更低的。
由於遍歷認證關系這種行為在鏈上非常“笨拙”,因此這種關系一般情況下不會對使用身份認證服務的上層的合約所感知(它們只關心認證狀態、鎖倉數量、鎖倉時間)。但是在鏈外一些更“主觀”的場合,通過分析這個認證網絡以及網絡中各節點地址的特徵,我們可能會對同樣是認證過的地址有不同程度的可信度的評價。這種共識的評價會在一些有社區生態的應用中,給社區成員提供一些對他人身份認證情況的參考。
拓展功能及機制
有報酬的認證請求
在合約層面,希望得到認證的未認證用戶可以在鎖倉的同時指定一個報酬金額和一個委托账戶地址。一旦報酬金額被設置,那么成功認證該账戶地址的已認證账戶將會獲得這部分報酬(合約所支持的ERC20 Token)。同時,如果委托账戶地址被指定,那么在未對委托账戶進行修改前,僅有指定的已認證账戶可以激活該待認證账戶。
對於激活者和被激活者在鏈外已經一定程度上確認過身份並且溝通完畢的情況下,這種機制可以確保被激活者承諾的認證報酬可以在認證達成時獎勵給激活他的已認證账戶,保障雙方的利益。同時特定的委托账戶地址保證沒有其他已認證用戶通過更高的Gas費進行攻擊,搶先激活並獲得其收益。
鎖倉強制取回
在合約中,用戶的鎖倉數量和時間都是自定義的。一般情況下,在鎖倉時間到期前鎖倉數量只能增加不能取回,而鎖倉結束時間只允許設置一個更靠後的時間點來覆蓋。因此用戶如果由於失誤設置了不合理的數量或時間,可能導致用戶在非常長的時間裏都失去他的代幣的使用權。而在沒有設置超級管理員的去中心化合約中,這種失誤造成的損失是無法找回的。
盡管這種失誤的發生完全是又用戶自己造成的,並非服務本身有問題,但是我們還是可以在合約中設置一個強制取回的邏輯:用戶可以鎖倉一筆相當大數量的Token,來無視任何條件將他鎖倉的時間重置為一個相對較小值。
這種機制的存在會對整個身份認證系統的可靠性存在一定的影響,因為持有巨量Token的用戶有濫用這種功能創造多個虛假身份的風險。但是由於在這一過程中存在重置鎖倉時間後的最短時間限制,巨額的Token並不能在短時間能重復使用創建多個有身份账戶。而一味的增加操作中使用的Token數量也會帶來較大的無常損失風險。僅有當應用層面身份驗證後的收益極大時,利用鎖倉強制取回機制才有可能給攻擊者帶來利益,而在這種情況下,我們建議應用不要使用DoraID,而使用整體成本都更高的其他KYC服務。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
星球日報|Cboe向美SEC提交4支Solana現貨ETF上市申請;Tether近期已累計增發90億枚USDT(11月22日)
頭條 Cboe 向美 SEC 提交 4 支 Solana 現貨 ETF 上市申請 彭博高級 ETF...
香港Web3宣言兩周年,HashKey總經理Anna Liu談代幣化未來
整理:Tia,Techub News 作為亞洲頂尖的加密資產企業之一,HashKey Group...
美 SEC 主席 Gary Gensler 宣布將辭職,加密貨幣迎來四年坦途?
撰文:Alex Liu,Foresight News 11 月 22 日凌晨,亞洲時區夜深人靜之際...