深入探討 OpenRank 的 Eigentrust 算法:如何構建社交計算層?

BlockBeats
2024-06-24 12:43:42
收藏
Eigentrust 演算法類似於 PageRank,它在圖網絡中對節點進行排名。不同之處在於它側重於捕捉複雜的點對點關係,作為信任的分佈。

原標題:《OpenRank: Powering Apps with Contextual and Personalized Graph Feeds》

作者: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 的公式:

深入探討OpenRank的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)相關聯。

深入探討OpenRank的Eigentrust算法:如何構建社交計算層?

https://dune.com/ilemi/openrank

創建了排名圖後,我們根據他們上週的主要合約互動生成了這個推薦流:

深入探討OpenRank的Eigentrust算法:如何構建社交計算層?

https://dune.com/ilemi/openrank

你可以查看儀表板,看看從該圖創建的其他推薦流,例如 NFT 鑄造、DEX 代幣交易和 Farcaster 頻道活動。

代碼實現

現在你已經看到了目標,我們來談談我是如何創建這個排名圖的。

這個示例的所有代碼都可以在hex.tech notebook中找到,如果你傾向於在本地運行,也可以使用jupyter notebook

首先,我分別為我們的預信任和本地信任創建了兩個查詢

第一個查詢是我們的「預信任節點」。這個查詢根據收到的互動(點讚、轉發、回覆)輸出/base 頻道中的頂級用戶,我的公式是 (點讚 + 3 轉發 + 10 回覆)。我們將從這個查詢中取前 100 個 id 作為我們的信任節點。

深入探討OpenRank的Eigentrust算法:如何構建社交計算層?

https://dune.com/queries/3756241

第二個查詢是用於跟踪節點之間的鏈上互動,使用/base 頻道中用戶的鏈接地址。因為訂閱流將推薦鏈上操作,所以我想確保選擇一個基於鏈上互動量的互動圖。使用節點之間轉移的美元價值是一個很好的通用代理------我跟踪了在 Optimism、Base 和以太坊主網上的穩定幣和 ETH 轉移。

深入探討OpenRank的Eigentrust算法:如何構建社交計算層?

https://dune.com/queries/3756692

分析輸入圖,並測試輸出的 Eigentrust 圖

現在我們有了預信任節點和本地信任圖,來看一些總結統計數據。/base 頻道中有 65,755 名用戶將代幣轉移給了該頻道中的其他人,從我們的預信任節點可以遍歷 19% 的圖(即連接的節點)。這個百分比可能會根據圖的本地信任數據的 Sybil 程度高低而有所不同。代幣轉移可能是高信號,但也可能是刷單,因此圖的大部分是未連接的也不令人驚訝。

深入探討OpenRank的Eigentrust算法:如何構建社交計算層?

在確認輸入數據的大小和連接是合理的之後,我們可以運行並保存我們的 Eigentrust 圖。我將我的圖保存為 id「basetransfer50」------你可以看到下面只需 10 行代碼即可訓練圖。可以將 OpenRank SDK 視為加密圖模型的 scikit-learn。

深入探討OpenRank的Eigentrust算法:如何構建社交計算層?

還記得前面公式中的常數「c」嗎?讓我們對不同的 c 值(我稱之為 alpha)和不同的預信任種子大小進行網格搜索,看看哪個能給我們最對數正態的信任分數和最高的覆蓋率:

深入探討OpenRank的Eigentrust算法:如何構建社交計算層?

這裡有很多權衡,沒有一個最佳值可供選擇。如果你希望推薦有很強的多樣性,高正則化和覆蓋率是一個不錯的選擇,但對於高風險的治理投票,你可能實際上希望信任的集中度更高。這裡可以用你的直覺。

從這裡,我們可以將值插入到在 Dune 的儀表板開始時鏈接的訂閱查詢中,以獲得/base 頻道中受信用戶的合約互動流。這種主觀的推薦輸出幫助我們更好地將之前的通用指標與我們對推薦輸出質量的預期直覺聯繫起來。

深入探討OpenRank的Eigentrust算法:如何構建社交計算層?

搞定了!你可以立即使用這個 Dune API 為你的任何應用提供動力。

學習構建自己的 OpenRank Eigentrust 圖

你準備好自己動手了嗎?你可以 fork 我的筆記本並自己嘗試,所有需要的鏈接如下:

·OpenRank Docs

·Python SDK repo

·Python Notebook

·Dune feed dashboard

我將在下個月內開展一次 Bytexplorers 任務,我們將競賽創建適用於頂級加密應用的最佳訂閱流圖表。

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
banner
ChainCatcher 與創新者共建Web3世界