作者:Andrew Hong
編譯:Ladyfinger,BlockBeats
編按:
在本文中,作者深入探討了OpenRank 的Eigentrust 演算法,這是目前被Metamask Snaps、Degen tips 和Supercast 使用的一種新技術。 OpenRank 作為一個計算層,能夠運行多種聲譽圖演算法,首先介紹的是eigentrust 演算法。作者分享了為何需要社群建構的圖、演算法的關鍵概念、如何運作,以及如何創建自己的圖。此外,作者還預告了即將舉行的Bytexplorers 任務,鼓勵讀者訂閱以獲取最新動態。
現今的加密貨幣前端大多包含簡單的排行榜,按交易量、流動性、鑄造、積分、投票等排序的頂級代幣。如果我們想要進入能夠超越當今Web2 巨頭的消費級加密貨幣體驗,我們的應用程式中需要的不僅僅是排行榜。
OpenRank 是幫助我們實現這一目標的基石之一,已經被Metamask Snaps、Degen Tips 和Supercast 使用。 OpenRank 是一個計算層,可以運行許多聲譽圖演算法,其中第一個是eigentrust 演算法。
在這篇文章中,我將向你們介紹OpenRank 的eigentrust 演算法,並討論以下內容:
社群建構圖的重要性,以及為什麼你需要它們
該演算法的關鍵概念及其工作原理
如何創建自己的圖,參考我在Python 筆記本中製作的一個圖
讓我們開始吧!
為什麼要與社群一起建立推薦圖,而不是只依靠自己的機器學習團隊?
在加密貨幣中建立演算法和推薦流時,你很快就會面臨一些資料問題:
· 交易包含許多層次的操作
· 地址之間的關係可以透過多次交易變得無限複雜
· 地址本身包含部分身份,每個身份在不同的上下文中都是相關的
以上三點都在以指數級的速度不斷發展,讓我們稱這些不斷增長的元素為「context」。
你的小型ML 團隊無法跟上這些永無止境的創意
你也不希望你的後端或資料工程團隊來處理這些問題,畢竟他們有產品要建置。應用程式擁有用戶和用戶資料結構的時代已經結束,你不再只是擁有一個簡單的連結、用戶ID、按讚/回覆/分享和貼文ID,而是可以有兌換、分割、掉落、交換、質押、委託、投票、鑄造等等。幾乎每天都有新的「操作」出現,還有新的鏈、新類型的錢包、新類型的身份等等。
我相信在接下來的一年裡,加密貨幣產業將發展出一個以OpenRank 協議和產品為基礎的圖數據科學社區
我已經在Dune 的wizard 社群中待了多年,見證了社群力量的強大,超過了小型團隊的能力。我也看到幾乎每個小型加密團隊從「是的,我們可以用一個節點和RDS 資料庫獨立完成這件事」到「我們需要利用像The Graph 和Dune 這樣的社群建立的資料工具」。對我來說,創建針對特定類型的推薦流程和社群調整的查詢和圖表組合是一個類似的問題。我們需要開始收集和測試能夠在每個應用程式上提供推薦串流的圖表,從Farcaster 客戶端到區塊瀏覽器。
一個推薦流的概念是擬態的,將被淘汰。使用者則成為內容的策展者
在加密貨幣領域,用戶不僅希望將他們的社交圖帶到不同的應用程式中,還希望將隱藏在這些圖中的上下文也一起帶走。如果我在Farcaster 上積極關注/degen 社區,我希望在Zora、Roam.xyz 或OnceUpon 上被推薦該社區的活動,而且我希望能夠將該推薦切換到我參與的另一個社區的上下文,例如artblocks 收藏者。未來將是用戶發現和選擇自己的feed 的時代,而不是局限於單一平台上的某個群組或頻道功能。
OpenRank 的Eigentrust 演算法是如何運作的?
Eigentrust 演算法類似於PageRank,它在圖網路中對節點進行排名。不同之處在於它著重於捕捉複雜的點對點關係,作為信任的分佈。它最初是為文件共享網路中分配信任分數而構建的。在加密貨幣領域,你可以想像用它來代理高品質的治理委託人或識別值得信賴的智能合約。
以下是Eigentrust 的公式:
上面有兩個關鍵輸入:預信任節點和本地信任圖。 「P」是你的預信任,「S」是你的在地信任。
· 本地信任(localtrust):這是你對兩個節點之間互動的測量,當節點「i」傳遞某種價值到節點「j」時。這可能是代幣轉移、證明、投票回覆/按讚等。
· 預信任(pretrust):這是你選擇的網路中應該更值得信任的節點的「種子」選擇。
· “c”:這個常數(在0 到1 之間)是整體本地信任圖和預信任種子之間的信任值的權重。互動圖通常具有冪律分佈,因此較高的預信任權重有助於規範最終排名值的分佈。
如果這些數學公式不太好理解,可以將其類比為像Twitter 這樣的社交圖,如追蹤者、按讚、回覆等影響力通常集中在少數人身上,導致冪律動態。透過設定一組具有影響力的個人並選擇常數「c」值為0.5 或更高,實際上,這些受信任的個人所互動的人將繼承該影響力的一半價值。這就是在網路中更均勻平衡和分佈信任分數的方法。
這與選擇任何上下文和創建任何推薦流有什麼關係?
假設你想在一個推薦流中對10000 個資助提案進行排序。基於一組投票互動(本地信任)和你自己選擇的一組受信任的投票者(預先信任),你可以對所有投票者和提案者進行價值排名。你可以透過選擇你在多個DAO 中委託投票的前10 名投票者來選擇你的預信任投票者。 Eigentrust 將基於這兩個輸入運行,並給你一個更大的投票者名單,根據從預信任節點繼承的信任在圖中排名。
這樣,你現在可以使用這個排名的價值清單來權衡即時治理提案,以獲得更個人化的推薦流程!
這可能仍然過於抽象,所以我將在下一節中透過具體的程式碼範例進行講解。請記住,OpenRank 處理這些Eigentrust 圖的計算和存儲,並推薦你可以使用輸出的推薦流。你所需要做的只是決定預信任和本地信任輸入。
如何使用OpenRank 建構Eigentrust 圖?
最終目標
在這個範例中,我想根據Farcaster/base的用戶錢包提供推薦合約的訂閱串流(Farcaster 是類似Twitter 的應用程式)。輸出只是一個包含id 和值的列表,在我的圖中,每個id 都與一個Farcaster 使用者id(fid)相關聯。
數據來源
在創建了排名圖後,我們根據他們上週的主要合約互動生成了這個推薦流:
數據來源
你可以查看儀表板,看看從該圖表創建的其他推薦流,例如NFT 鑄造、DEX 代幣交易和Farcaster 頻道活動。
程式碼實現
現在你已經看到了目標,讓我們來談談我是如何創建這個排名圖的。
這個範例的所有程式碼都可以在hex.tech notebook中找到,如果你傾向於在本地運行,也可以使用jupyter notebook。
首先,我分別為我們的預信任和本地信任創建了兩個查詢:
第一個查詢是我們的「預信任節點」。這個查詢根據收到的互動(按讚、轉發、回覆)輸出/base 頻道中的頂級用戶,我的公式是(按讚+ 3 轉發+ 10 回覆)。我們將從這個查詢中取前100 個id 作為我們的信任節點。
數據來源
第二個查詢是用於追蹤節點之間的鏈上互動,使用/base 頻道中使用者的連結位址。因為訂閱流將推薦鏈上操作,所以我想確保選擇一個基於鏈上互動量的互動圖。使用節點之間轉移的美元價值是一個很好的通用代理程式——我追蹤了在Optimism、Base 和以太坊主網上的穩定幣和ETH 轉移。
資料來源分析輸入圖,並測試輸出的Eigentrust 圖
現在我們有了預信任節點和本地信任圖,來看一些總結統計。 /base 頻道中有65,755 名用戶將代幣轉移給了該頻道中的其他人,從我們的預信任節點可以遍歷19% 的圖(即連接的節點)。這個百分比可能會根據圖的本地信任資料的Sybil 程度高低而有所不同。代幣轉移可能是高訊號,但也可能是刷單,因此圖的大部分是未連接的也不令人驚訝。
在確認輸入資料的大小和連接是合理的之後,我們可以運行並保存我們的Eigentrust 圖。我將我的圖儲存為id“base_transfer_50”——你可以看到下面只需10 行程式碼即可訓練圖。可以將OpenRank SDK 視為加密圖模型的scikit-learn。
還記得前面公式中的常數「c」嗎?讓我們對不同的c 值(我稱之為alpha)和不同的預信任種子大小進行網格搜索,看看哪個能給我們最對數正態的信任分數和最高的覆蓋率:
這裡有很多權衡,沒有一個最佳值可供選擇。如果你希望推薦有很強的多樣性,高正規化和覆蓋率是一個不錯的選擇,但對於高風險的治理投票,你可能實際上希望信任的集中度更高。這裡可以用你的直覺。
從這裡,我們可以將值插入到在Dune 的儀表板開始時連結的訂閱查詢中,以獲得/base 頻道中受信用戶的合約互動流。這種主觀的推薦輸出幫助我們更好地將先前的通用指標與我們對推薦輸出品質的預期直覺聯繫起來。
搞定了!你可以立即使用這個Dune API 為你的任何應用提供動力。
學習建立自己的OpenRank Eigentrust 圖
你準備好自己動手了嗎?你可以fork 我的筆記本並自己嘗試,所有需要的連結如下:
·OpenRank Docs
·Python SDK repo
·Python Notebook
·Dune feed dashboard
我將在下個月內開展一次Bytexplorers 任務,我們將競賽創建適用於頂級加密應用程式的最佳訂閱流圖表。