前言
Tangle 機制
Tangle 上的初始文件儲存
使用代理節點埋藏珍珠幣
Oyster 珍珠幣尋寶
Web 節點與代理節點協作
Web 節點至 Web 節點的交互
内容消費權利
Oyster 珍珠代幣功能
文件驗證與檢索
分散式聲譽系统
結論
隨著訪客為去中心化儲存賬本執行工作量證明,Oyster 協定促進網站悄然創造流量收入。
儘管網際網路呈指數級增長,Web 內容變現機制依然停滯不前。廣告干擾隱私,偏離目的內容,同時打破網站的設計連續性。鑑於大家普遍忽視線上廣告且對其有負面情緒,使用廣告攔截器已成為主流。廣告攔截器一旦偵測到廣告內容,就會攔截並限制查看,在這種情況下,內容發布商日益受挫。內容發布商因廣告攔截器而損耗大量資金,或因廣告攔截器報復機製而錯失大量瀏覽次數。因此,整個廣告格局逐漸淪為無效、低效且侵入性的困境,無前瞻性和全方位的解決方案可部署。
同時,當前沒有儲存服務能做到既方便又私密。如果您選擇便捷,那麼您選擇的標準雲端儲存公司會限制隱私和匿名。封閉的程式碼軟體意味著您絕不可能真正享受公司允諾的服務。如果您選擇隱私,那麼您很難找到簡單直接的 Web 界面可以透過"上傳"按鈕存取文件。
Oyster 協定才是真正一舉兩得的方案。協定引進截然不同的方案,促進內容發布者和內容消費者形成均衡之勢和協作關係。因此,任何使用 Web 瀏覽器的用戶可以以去中心化、匿名、安全和可靠的方式儲存和檢索文件。
下表列出組成 Oyster 生態系統的各方:
儲存用戶 - 用戶可支付 Oyster 珍珠幣來上傳文件
網站所有者 - 運營網站的組織或個人
Web 節點 - 正在訪問網站的 Web 瀏覽器
代理節點 - 有訪問 Tangle 和區塊鏈權限的網絡設備
IOTA Tangle - 稱之為“有向無環圖”的分散式賬本
以太坊區塊鏈 - 具備智能合約功能的分散式賬本
IOTA Tangle 意指有向無環圖,即無區塊分散式賬本。 IOTA Tangle 實時虛擬化見此處。每筆提交的交易必須為前兩筆交易執行工作量證明,實現確認機制。這兩筆交易則相應形成枝與幹的關係。請參閱此處,詳細了解如何向 Tangle 廣播交易。每筆交易均有有效負載能力,用於保留由儲存用戶上傳的數據。節點相互對接形成網狀網絡,交易由此網絡傳播,同時各節點保留交易的冗余副本。這種機制帶來極大的數據副本冗餘,進而大大降低數據丟失的風險,同時並不依賴集中託管供應商。
Tangle 節點旨在達到物理儲存極限飽和狀態時,自動刪除舊數據(稱之為“自動快照”,Tangle 暫無此功能)。這就是說,交易數據最終從節點刪除。因此尋找隱匿 Oyster 珍珠幣時,Web 節點執行工作量證明,將交易記錄數據重新儲存於 Tangle。該機制確保數據在整個 Tangle 節點拓撲中保留,絕不會被不可恢復地刪除。
IOTA Tangle 在其路線圖中包含許多創新,尤其是群體智能。群題智能對於 Oyster 協定至關重要,因為它去除維持賬本完整所需的各 Tangle 節點瓶頸。類似於將 RAID 1 驅動器陣列設置轉換為 RAID 10 設置。實施群體智能進一步增強 Oyster 協定的可擴展特性。
網絡頻寬是跨 Tangle 可靠地提交數據的最稀缺資源。 Tangle 節點本身受限於網絡接口頻寬。鑑於 Oyster 協定旨在更可靠地向 Tangle 提交數據,訪問 Tangle 的頻寬將得到所獲 Oyster 珍珠幣的份額獎勵。符合 Oyster 協定規範的 Tangle 節點稱為代理節點。代理節點作為 Tangle 連接 Web 節點和儲存用戶的橋樑。
約 1 KB 左右大小的數據塊儲存於 Tangle,供交易的有效負載使用。 SHA256 Hash 作為在 Tangle 儲存和檢索數據的參考基礎。 SHA256 Hash 被選中代表數據時,其轉換成三進制形式,代表交易的接收地址。為了從 Tangle 中檢索數據,Hash 再次轉換成三進制形式,以生成接收地址,該地址下的所有交易隨後將得以恢復。最早頒發時間戳的交易包含代表選定 Hash 的有效負載數據。
儲存用戶想通過 Oyster 協定上傳文件時,文件在本地瀏覽器中拆分為小塊並加密。隔離機制僅允許用戶訪問相應加密金鑰(稱之為 Oyster Handle),確保行惡者無法檢索數據。
Oyster Handle 前 8 個字符代表文件名。其通常從上傳至瀏覽器的文件名複製,但還可由儲存用戶定制,作為自身參考。原始 Hash 是 64 個字符長隨機輸入 SHA256 Hash,在儲存用戶的瀏覽器中生成,一致性盡可能高。
Handle 最後 8 個字符是將原始 Hash 區分於整個加密金鑰的加密鹽。鹽用於在原始 Hash 被發現後進一步保護數據,以免後續削弱 Hash 算法或彩虹表攻擊創世 Hash。因此,完整 80 個字符長的 Handle 是用於加密和解密數據拆分的完整加密金鑰。 Oyster 協定還支持向加密方案添加密碼。原始 Hash 初始化代表數據拆分的 SHA256 Hash 序列。數據先拆分為 1 KB 左右大小的數據塊,然後各數據塊分別用整個 Handle 作為金鑰進行加密。各數據塊隨後由 Hash 迭代代表(創世、N1、N2 等),最終以 Tangle 交易的形式提交,每筆交易由兩個代理節點提交
Web 節點與儲存用戶之間的分散式聲譽系統跟踪績效最佳的代理節點,因此系統代表儲存用戶自動選擇最適合的兩個代理節點。 Oyster 協定規定選擇兩個代理節點,進而數據映射中安裝珍珠幣數量最多的兩個代理節點相互競爭。績效更佳的代理節點在特定會話中收到較少珍珠幣,但獲得較多聲譽,因此未來將收穫更多珍珠幣收入。
創世 Hash 值由儲存用戶提交給兩個代理節點。一個代理節點旨在提交創世 Hash(Alpha 節點)向下的數據映射,而另一(Beta 節點)旨在提交 NX Hash(代表序列最後迭代)向上的數據映射。正確數量的 Oyster 珍珠幣發送給 Alpha 指定的代理節點。 Alpha 節點收到完整數量的珍珠幣及 Beta 節點的以太坊地址。 Alpha 節點收到上述數據以及表明身份的加密簽署語句,則會將一半珍珠幣發送給 Beta 節點。各節點的任何缺陷將通過分散式聲譽系統報告,隨即將大幅削弱整個 Oyster 網絡中 Web 節點和儲存用戶的聲譽。儲存用戶支付的珍珠幣數量是最終埋藏於數據映射中珍珠幣數量的一半。代理節點允許保存數據映射正確安裝後剩餘的珍珠幣。
默認情況下,選定的代理節點負責執行工作量證明,將各數據塊附於 Tangle。用於發送交易的 Tangle 地址是序列相應 Hash 迭代(創世、N1、N2 等)的三進制形式。然而,如果對等連接代理和新創世 Hash 有足夠需求,代理節點能代表 Web 節點的工作量證明任務。
如需了解跨 Tangle 執行全部工作量證明的加增如何降低交易確認時間和增加網絡的一般安全性,詳細信息請見此處。
Oyster 珍珠幣旨在埋藏於數據映射,而數據映射定義已上傳文件的結構和內容。將珍珠幣埋藏於數據映射並非由儲存用戶自己完成,而是由代理節點完成此項任務,原因如下:
惡意儲存用戶佯裝將珍珠幣埋藏於數據映射,實則未埋藏,這種惡意行為稱之為紅鯡魚攻擊。如果行惡者上傳的垃圾數據不含任何珍珠幣,則 Web 節點白費時間尋找寶藏(無寶藏)。最終,Web節點會意識到數據映射不在 Oyster 協定規範內,但那時 Web 節點花費的精力預計比惡意攻擊者投入的精力要大。因此這會導致攻擊成功並取得潛在收益。然而,由於 Web 節點依賴於代理節點接收創世 Hash(定義整個數據映射),這將大大減少紅鯡魚攻擊。這是因為如果代理節點開始分發代表無效數據映射(正確的位置沒有正確數量的珍珠幣)的創世 Hash,那麼 Web 節點易於報告代理節點,從而毀掉其聲譽和未來流量。儘管代理節點有與聲譽分數相關的一致身份,但儲存用戶和 Web 節點則要靈活得多。不僅難以為 Web 節點和儲存用戶建立一致的加密身份,而且 Oyster 協定定義了每 X 次尋寶數量重置身份所需的 Web 節點。儲存用戶沒有可辨別的身份例外,無法以會話為基礎與代理節點進行協商。
一旦儲存用戶提交珍珠幣用於支付,大約一半珍珠幣埋藏於數據映射,另一半由兩個代理節點收取作為報酬。安裝數據映射的兩個代理節點就像兩頭點著的蠟燭。
燭蠟代表數據映射,而兩頭燭火各自代表一個代理節點。代理節點有權保留數據映射全部安裝(或燭火完全熄滅)後剩餘的珍珠幣。默認經濟壓力表示代理節點十分緩慢或根本不安裝數據映射(燃燒一頭蠟燭)有益處。如果 Alpha 節點以每秒10 個單位的速度燃燒蠟燭,且 Beta 節點以每秒2個單位的速度燃燒蠟燭,那麼兩頭最終會在某處相遇,但 Beta 節點剩餘更多珍珠幣,這些珍珠幣有權被保留。這種經濟形勢邏輯延伸為,兩個節點均不燃燒蠟燭,都想將盡可能多的珍珠幣佔為己有。
分散式聲譽系統將這種經濟激勵機制倒轉過來。代理節點意指初始值為零(即最低數值)的已分配加密身份。 Web 節點和儲存用戶尋求與擁有最高聲譽分數的代理節點交易,儘管還會考慮延遲和其他選擇限制因素。節點的平均蠟燭燃燒速度線性增加,其聲譽分數也將大幅增加。這種機制會造成代理節點競相燃燒更多蠟燭,儘管短期內珍珠幣收入會減少。有意盡快燃燒蠟燭的代理節點短期內賺取的珍珠幣將變少,但長遠來看賺取的珍珠幣將顯著增加。因此,這種方式消除了代理節點經濟激勵機制的弊端。
代理節點將 Oyster 珍珠幣埋藏於數據映射,便會調用 Oyster 合約的特別埋藏函數。數據映射扇區代表自選定 Hash 起的 1,000,000 個 Hash (創世 - N999,999、N1,000,000 - N1,999,999 等)。因此扇區持有 X GB 用戶數據。各扇區必須至少埋藏入一個珍珠幣寶藏,有時扇區因兩個代理節點之間校準不佳而包含兩個寶藏。珍珠幣在扇區內的具體位置由兩個代理節點隨機選擇。因此,各扇區的珍珠幣數量決定文件應在 Tangle 中保留多久。 1 枚珍珠幣將確保 X GB 用戶數據在 Tangle中保存一年。因此,Oyster 合約在計劃儲存時限內鎖定珍珠幣。期間,Web 節點執行工作量證明以找到隱匿的珍珠幣。
珍珠幣必須處於埋藏狀態,Web 節點才能申領。珍珠幣還可在稱之為 Epoch 的單獨時區申領。 Oyster 協定將 Epoch 定義為 1 年時長。這就是說如果數據映射扇區包含 2 枚珍珠幣寶藏(4 年儲存時間),那麼就有 4 個可用 Epoch:第 1 年、第 2 年、第 3 年、第 4 年。 Oyster 合約允許各 Epoch 申領剛好 0.5 枚珍珠幣。 Web 節點代表調用函數的網站所有者申領珍珠幣。
Web 節點搜索數據映射扇區,尋找隱匿的 Oyster 珍珠幣。數據映射由稱之為創世 Hash 的單個 SHA256 Hash 定義。 Web 節點從代理節點和其他 Web 節點那裡獲取創世 Hash。創世 Hash 不是免費獲得的,Web 節點必須執行合約幣節點定義的特定工作量證明任務。從 Tangle 引用兩個未確認交易來定義工作量證明任務:一個為指定的“枝”,另一個為指定的“幹”。完成工作量證明後,Web 節點用剛提交的交易身份來響應合約幣節點。合約幣節點隨後檢查 Tangle,以驗證引用的交易與此前指定的枝和乾身份匹配,並驗證交易指向已執行工作量證明的數據。合約幣節點驗證已執行工作量證明,就會發送創世 Hash 進行交換。
為了尋寶,Web 節點選擇源自新賺取創世 Hash 的隨機數據映射扇區。 Web 節點隨後參考 Tangle,查看工作量證明是否由另一 Web 節點在當前 Epoch 期限內執行。如果執行了工作量證明,那麼Web 節點將放棄該扇區,另行挖掘其他扇區。這是因為即使 Web 節點會找到該扇區的寶藏,也極有可能在 Oyster 合約的 Epoch 期限內,另一 Web 節點已申領了珍珠幣。如果未在當前 Epoch 期限內執行工作量證明,那麼 Web 節點會依次滾動該扇區的各連續 Hash。例如:如果選中扇區 5,那麼 Web 節點從 Hash N5,000,000 依次滾動到 N5,999,999,其代表 X GB 上傳文件的數據。久而久之,可逐漸部署與該行為不符的全新 Web 節點策略,例如:欺詐性 Web 節點。如果在預計近期不會有可申領寶藏的扇區內執行工作量證明,則表明 Web 節點在欺詐。於是,其他非欺詐 Web 節點會限制對欺詐性 Web 節點的訪問權限,最終該扇區僅對欺詐性 Web 節點開放。因此,欺詐性Web 節點希望下一 Epoch 期限到來前,該扇區始終僅對自己開放。有關 Web 節點交互的博弈論機制可能要復雜和先進得多,有效尋寶策略在不斷研究和精進下日趨複雜,於是形成囚徒困境。
對於遇到的每個 Hash,Web 節點首先運用設備的 GPU(採用 WebGL2),在 Tangle 上為相應交易執行工作量證明。此後,Web 節點檢索相應交易 1 KB 左右大小的有效負載,併計算當前 SHA256 Hash 的 SHA512 Hash。 Web 節點隨後使用 SHA512 Hash作為解密金鑰,嘗試解鎖有效負載。如果成功解鎖,則就說明寶藏含有珍珠幣。如果未成功解鎖,則計算當前 SHA512 的SHA512 Hash,然後滾動至序列(稱之為“Hash 鏈”)中的下一鏈接。如果Web 節點達到 Oyster 協定規定的 Hash 鏈大小的上限,則會移動至數據映射中的下一 SHA256 Hash並周而復始地進行。
Oyster 協定規定每個扇區必須至少有一個寶藏。如果整個扇區內未找到寶藏,則會宣布該數據映射無效,並且分散式聲譽系統的參與者會受到警告。這會導致最初為無效數據映射引入創世 Hash 的代理節點聲譽降級。如果 Web 節點滾動完單個 SHA512 Hash 鏈需幾天時間,那麼滾動完整個扇區需數月時間。這能防止 Web 節點在突發尖峰時刻消耗大量數據,以便將 X GB 數據消耗合理分配給數月(每天小於 5 MB)。因此,Web 節點不會承擔頻寬密集型任務,以免承受有限/昂貴的數據連接計劃。執行 SHA256、SHA512 及解密函數均使用 CPU 指令。即 Web 節點通過 GPU 與其他 Web 節點和代理節點執行工作量證明協商,同時通過 CPU 在數據映射扇區內尋寶。
將私有種子金鑰納入藏有珍珠幣的以太坊地址,從而將珍珠幣埋藏入數據映射。因此,Web 節點發現寶藏時,其通過 HTML5 本地儲存 (localstorage) 指令,儲存和保護私有種子金鑰。儘管可發現寶藏,但 Web 節點面臨兩大困境:
鑑於以上兩種困境,Oyster 協定定義 Web 節點與代理節點協作,以解開寶藏。 Web 節點安全發送私有種子金鑰,和代理節點檢查扇區內是否確實有珍珠幣。確認有珍珠幣後,代理節點發送極少量以太幣至該地址,作為交易的 Gas。然後,代理節點提交交易至區塊鏈。交易調用 Oyster 合約申領函數,將珍珠幣申領至網站所有者的以太坊地址,其與發現寶藏的 Web 節點相符。但存在兩項當務之急:
為了解決 Web 節點的憂慮,分散式聲譽系統會快速降低該代理節點的聲譽。代理節點擁有一致的加密身份,以便建立聲譽並說服 Web 節點和儲存用戶使用其服務。 Web 節點將僅使用最具聲譽的代理節點,解開已發現的寶藏。如果代理節點在單個 Epoch 期限內,在單個數據映射中的單個扇區竊取珍珠幣,那麼弊大於利。代理節點有可能會損失價值數千美元的未來潛在收入,而得到的只不過是不到一美元的收益。因此 Web 節點有信心與聲譽佳的代理節點做交易。
為化解代理節點的憂慮,代理節點不接受第三方解開寶藏的請求,除非能驗證整個扇區的工作量證明近期在 Tangle 完成。這就是說行惡者必須在整個扇區執行工作量證明,才能說服代理節點解開其寶藏。為解釋攻擊向量徒勞無功:行惡者必須耗費價值 5 美元的電力去完成工作量證明難題,才能獲取 1 美分的收益。因此,如果代理節點證明可申領寶藏的扇區已完成工作量證明,那麼代理節點向寶藏地址發送以太幣以促進 Oyster 合約申領函數在經濟上是可行的。
Oyster 生態系統內發生一次主要交互是,Web 節點執行大量工作量證明,從其他 Web 節點和代理節點處購買信息。因此,Web 節點需要穩定訪問 Tangle,才能保持操作正確。儘管 Web 節點整天直接訪問 Tangle 在技術上是可行的,但當前庫實現和硬體/頻寬局限會限制 Web 節點成為 Tangle 網絡的輕客戶端。也就是說 Web 節點需要輕客戶端中間主機來發送 Tangle 請求和提交。 Tangle 輕客戶端主機獨立於代理節點存在,但其中絕大部分因無法通過 SSL 發送請求而令 Web節點無法使用。 Oyster 協定要求代理節點通過 SSL 發送所有 Tangle 請求。這是由於期望大多數運行 Oyster 協定的網站將通過 SSL 託管,因此 Web 節點運行邏輯必須通過 SSL 加載,並且傳出或傳入通信也必須通過 SSL。
代理節點還能實現 Web 節點在對等連接中直接與其他 Web 節點交互。需按照 WebRTC 標準,使用 PeerJS 庫。因此,運行 PeerJS 服務器軟體的代理節點實現 Web 節點相互直接通信。
Web 節點不斷需要創世 Hash,特別是新創世 Hash,因為一般而言首個 Epoch 期限內埋藏的 Oyster 珍珠幣尚未被申領。如果代理節點包含與儲存用戶的文件上傳會話,那麼代理節點會保留創世 Hash。 Oyster 網絡處於典型均衡狀態時,代理節點始終保留過量新創世 Hash,但 Web 節點始終處於對創世 Hash 的過量需要狀態。
代理節點不會免費供應新創世 Hash,而是確保必須執行大量用於交換的工作量證明。這種機制主要是為了防止行惡者輕鬆獲取創世 Hash 及檢索隱匿的寶藏。因此,工作量證明負擔加重會令行惡者從代理節點尋找創世 Hash 在經濟上根本不可能。工作量證明要求還消除對利他行為的依賴,這是 Oyster 協定極力避免的。
儲存用戶給代理節點帶來多少負擔,代理節點就會給 Web 節點帶來多少工作量證明任務負擔。因此,如果 Oyster 網絡區域理想平衡,那麼代理節點絕不會不斷執行工作量證明來滿足 Web 節點的需求。 Web 節點與代理節點之間的交換序列與 Web 節點之間的交換序列是一樣的。交換序列如下:
創世 Hash 逐漸從代理節點遷移至 Web 節點的集體意識。如果所有 Epoch 期限內的所有扇區均已申領,Web 節點會有意忘記創世 Hash。這表明數據即將過期,除非儲存用戶向寶藏添加更多珍珠幣以延長數據受保障的生命週期,否則無法再得到工作量證明展示的保障。 Web 節點運用HTML5 本地儲存 (localstorage) 指令來保留數據,其中包括已知創世 Hash。如果本地儲存指令承擔的空間趨於飽和,那麼 Web 節點會對網絡所有者刪除最不可能帶來盈利的創世 Hash,實現數據修剪。
將創世 Hash 從代理節點遷移至 Web 節點至關重要。與儲存用戶的上傳會話完成時,創世 Hash 僅立刻存在於該會話的兩個代理節點。 Web 節點尋找創世 Hash 的積極意義在於其確定創世 Hash 存在於 Oyster 網絡,因此代理節點專屬持有創世 Hash 時,便能消除現存的初始風險。如果創世 Hash 即將被 Oyster 網絡的集體意識忘卻,則不會再用工作量證明來維繫。因此在延長期限內,Tangle 不再負責在其節點拓撲中保留數據。
由於 Oyster 網絡經濟中存在供需制約動機,因此 Web 節點相互之間進行對等交互。對等連接通過PeerJS 庫實現,其依據 WebRTC 標準。為了實現 Web 節點之間的相互通信,其需要在整個Oyster 網絡相互識別身份。因此,各 Web 節點採納加密偽持久身份。除非 Web 節點在尋寶過程中需要擦除儲存內容並從零開始(如同剛加入 Oyster 網絡),否則身份是可靠一致的。這是為了形成網絡 Web 節點拓撲中的動態周轉週期。如果 Web 節點趨於無限期堅持與相同鄰居通信,那麼網絡會過於靜態且無法回應環境變化。只要多數 Web 節點遵循 Oyster 協定有關身份刷新的規定,將迫使少數 Web 節點無意與鄰居維持長久關係。
Web 節點首次引入 Oyster 網絡或近期重置身份時,由於沒有鄰居,因此必須建立鄰居列表。因此,Web 節點面臨無法擺脫(Catch 22)的困境。鄰居身份由其他 Web 節點共享,但由於最初無人知曉,因此無法主動請求。但即使通過 Web 節點參與的分散式聲譽系統共享代理節點身份,初始解決方案看似也要向代理節點提出請求。因此,Web 節點假定初始可信的代理節點作為默認參考。網站所有者能更改信任哪些代理節點的默認值,因此需始終確保網絡遵守去中心化原則。
代理節點用於代理相互已知身份的 Web 節點之間的初始連接。因此,代理節點保留的列表包含近期活躍的 Web 節點及其身份。新 Web 節點會從代理節點購買這些身份,換取執行交換序列所規定的工作量證明之權限。新 Web 節點不斷從代理節點購買身份,同時也從剛結成新關係的其他 Web節點購買身份。因此,根據收益遞減定律,新 Web 節點的鄰居列表大幅擴大,直至達到利益追求的飽和點。鑑於(通過工作量證明)尋找鄰居所花費的電能可用於購買創世 Hash 和尋求寶藏,從而限制 Web 節點購買太多鄰居。由於鄰居列表已擴大,Web 節點現可從分散式聲譽系統收到足夠的聲譽聲明。因此,Web 節點能與新代理節點通信,同時還能確保原有默認代理節點受到控制。因為 Web 節點身份定期重製,因此迫使 Web 節點不斷尋找新鄰居。
Web 節點能執行與其他 Web 節點和代理節點的交換序列。這種機制允許 Web 節點執行工作量證明,以換取創世 Hash、鄰居身份等有價值的信息。交換序列描述如下:
一般而言,來自代理節點的創世 Hash 負擔程度要大於來自其他 Web 節點的負擔程度。這是因為代理節點持有相對較新的創世 Hash,而 Web 節點持有相對較舊的創世 Hash。由於對未申領的寶藏期望較高,所有新創世 Hash 的現行價格預計會更高。這還意味著 Web 節點先會向代理節點請求創世 Hash,然後才會向其他 Web 節點提出請求。這種機制確保來自代理節點的創世 Hash 始終向 Web 節點的集體意識快速有效遷移,因為 Web 節點不太會受數據丟失影響。
Web 節點之間相互通信時,其會測量一貫通信類型的連接延遲。這就是說,對於有效負載交換大小一致的所有通信/交易,會測量從連接初始化到完成所需時間。因此,Web 節點能推算出鄰居之間大概的相對距離。該連接延遲信息得以保留,相比遠鄰,Web 節點逐漸趨於選擇近鄰。該行為令 Web 節點的鄰居列表逐漸優化,從而主要與鄰近的 Web 節點通信。儘管相比延遲,網絡更信賴代理節點的聲譽,但該優化法同樣適用於 Web 節點的代理節點列表。
延遲優化令 Oyster 網絡漸成去中心化的低延遲網狀網絡,其帶有高效跳躍路徑,便於開發第三方應用程序。例如:有技能的程序員組成的任何小組可編寫去中心化 JavaScript 電話服務,其擴展 Web 節點協定核心邏輯並使用自己的以太坊代幣。因此,該擴展可作為開源代碼發布並在 Oyster社區內共享。於是,網站所有者可添加擴展程序,追求電話服務子經濟可承擔的額外收入。這種機制促進網站因吸引創意內容髮布者而盈利,進而實現 Oyster 協定目標。電話呼叫機制簡易的運行於 Web 節點提供的 API 呼叫,從而將音頻數據包經由 Oyster 網絡拓撲高效發送至目標接收者。因此,Oyster 協定作為擴展平台,成為去中心化代碼開發和部署的基石,提供經優化的網狀網絡節點拓撲,並通過簡單 API 實現自動化節點跳躍邏輯交互。
網際網路的基本社群合約是交換信息。網站所有者投資以製作/獲取/交付原創內容和/或服務,同時還承擔託管費用。天下沒有免費的午餐,必須有經濟橋樑來證明網站所有者的投資是合法的。
儘管需要該經濟橋樑,但網際網路整體上已訴諸於廣告交換這一普通解決方案。廣告總令人分心、離題、侵犯隱私和打斷各處網站的設計連續性。因此,廣告在更大的網際網路社區遭致集體鄙視。作為正當回應,廣告攔截器已成為有害於網際網路經濟的主流力量。因此,令創意內容髮布者處於困境,因為其依然需要證明製作和託管內容的費用是合法的。在相關政策的擺佈下,創意內容髮布者只好決定和幻想中心化的廣告交換。
Oyster 協定脫胎於老舊的廣告範例,允許創意內容髮布者完全自主掌控內容盈利。訪客可支付入場費,但無需為令人不快、離題和分心的廣告買單。隨著資金回流至已深受其害的創意內容髮布者,內容數量和質量會停止下降並再次升高。這會促使訪客繼續訪問並通過 Oyster 協定消耗計算資源。
網站所有者啟用 Oyster 協定十分簡單。其僅需向網站 HTML 添加一行代碼,全面啟用 Oyster 協定並自動收到珍珠幣付款,例如:
<script id="o.ws" data-payout=“ETH_ADDRESS”
src=“https://oyster.ws/webnode.js"></script>
如果訪客不同意用自己的計算資源去交換,禁用 Oyster 協定也很簡單。在這種情況下,攔截標記會安裝於已禁用 Web 節點的 HTML5 本地儲存 (localstorage) 區域。那麼,訪客的設備不會再執行任何工作量證明或尋寶任務,但會在網站所有者的網站上啟用 JavaScript 標記以標定棄用。因此,網站所有者可選擇輕鬆攔截,避免向不同意為其尋寶的任何人發送內容。
鑑於 Web 節點使用 HTML5 本地儲存 (localstorage) 指令以保留數據,儘管被不同網站所有者調用,但依然保留相同的身份和工作隊列。尋寶會話初始化後,Web 節點將實施調用的網站所有者的以太坊地址與申領者永久關聯。
例如:有人正使用自己的筆記本電腦瀏覽四個喜愛的網站,其中兩個網站啟用了 Oyster 協定。訪問啟用 Oyster 協定的網站 A,訪客的筆記本電腦將成為 Web 節點,將任何活躍的尋寶歸於網站A 的所有者。因此,發現的任何珍珠幣會以網站 A 的以太坊地址在 Oyster 合約中申領。此後,有人訪問啟用了 Oyster 協定的網站 B。筆記本電腦將作為 Web 節點並保留相同的加密身份、創世 Hash 的收集、其他 Web 節點和代理節點的身份、及任何待定的目標數據映射。如果在網站 B 的司法管轄區內發起任何新尋寶,那麼找到的任何珍珠幣將歸於網站 B 的所有者。
鑑於 Oyster 網絡是完全去中心化系統,其要求有去信任機制管理其參考值代幣:Oyster 珍珠幣。 Oyster 珍珠幣是以太坊區塊鏈上符合 ERC20 標準的代幣,其包含啟用 Oyster 協定功能的特定屬性。
埋藏函數為珍珠代幣的特定函數。埋藏以太坊地址可防止珍珠幣遭提取,但依然允許存入珍珠幣。依然可向埋藏地址存入珍珠幣,允許儲存用戶延伸數據的生命週期,避免蓄意的數據過期。最初將文件上傳至 Tangle 時,代理節點調用 Oyster 合約的埋藏函數。代理節點埋藏於數據映射的珍珠幣由 Oyster 合約保留,因此不可花費。
Web 節點尋寶時,其會遇到已調用埋藏函數的以太坊地址的私有種子金鑰,避免珍珠幣被一次性全部提取。因此,只要有人檢索私有種子金鑰,無論是否有 Web 節點,將無法通過可調用所有符合 ERC20 標準的代幣之普通轉移函數來提取任何珍珠幣。 Web 節點必須請求代理節點代表網站所有者的以太坊地址調用申領函數。僅處於埋藏狀態的以太坊地址可調用申領函數。 Oyster 合約計算特定扇區的 Epoch 期限,並向申領者分配與 Epoch 期限相當的珍珠幣。如果扇區內相當於兩個或以上 Epoch 期限的珍珠幣未被申領,那麼應獎勵申領者所有這些珍珠幣。 Oyster 合約無需將合約指標納入其中,因為每個隱匿的以太坊地址已具體代表一個扇區。
申領者(網站所有者)調用已發現寶藏的 Web 節點後,代理節點用其以太坊地址調用申領函數。申領函數還定義了費用地址變量。代理節點調用申領函數時,其提交自己的以太坊地址作為費用變量。因此,Oyster 合約自動分配代理節點為解開寶藏所應賺取的費用。因此,代理節點收到的費用經一致同意且可審計。申領函數執行後,任何可申領的珍珠幣將直接發送至網站所有者的以太坊地址,而雙方確定的百分比將為代理節點保留,作為代理費。
因此,Oyster 珍珠幣是交換的關鍵媒介,將網站所有者、Web 節點、代理節點和儲存用戶的經濟動因聯繫在一起。
如需通過 Oyster 協定上傳文件,儲存用戶的客戶端選擇兩個代理節點向 Tangle 提交數據。數據從文件首尾兩端開始處理,每端由一個代理節點執行,類似於燃燒兩端的蠟燭。到特定階段,兩個代理節點將在數據映射中點附近相遇。然而,在不太可能的情況下,一個代理節點出現缺陷而不執行工作量證明(並自行保留 Oyster 珍珠幣),而另一無缺陷的代理節點完成整個數據映射。儲存用戶的客戶端會注意到缺陷,並通過分散式聲譽系統加密報告有缺陷的節點。
文件完全提交至 Tangle 後,客戶開始下載整個數據映射以驗證其完整性。客戶端使用代理節點而非(執行上傳)的頭兩個節點來訪問 Tangle 和下載數據映射。該驗證階段在技術上可略過,但建議採納,因為在極不可能情況下,兩個代理節點會與儲存用戶共謀或雙雙有缺陷,那麼儲存用戶客戶端能通過分散式聲譽系統加密報告攻擊。誠信的代理節點隨後選擇執行不誠信的代理節點未盡任務,儘管不從 Oyster 用戶處尋求任何珍珠幣支付。誠信的代理節點尋求執行該數據糾正操作,因為能極大促進加密聲譽,從而收入增加前景愈發光明。
驗證流程不僅防範不誠信的代理節點,而且還保證數據映射不會因程序錯誤或執行漏洞而有缺陷。用於上傳驗證和公正數據檢索的下載序列定義如下:
儲存用戶可通過任何客戶端訪問相關文件,即使並非代理節點的 Tangle 節點也可訪問。僅有兩項事宜需要檢索該數據:Oyster Handle 及 IOTA Tangle 的通用訪問權限。
儲存用戶要求代理節點埋藏珍珠幣,而 Web 節點要求代理節點申領珍珠幣。在兩個實例中,寶貴的珍珠幣被發送至代理節點進行處理。因此,儲存用戶和 Web 節點採用監控系統,確保代理節點受到控制。該系統稱之為分散式聲譽系統,運作方式與易趣 (eBay) 類似。代理節點類似於 eBay 賣家,而 Web 節點/儲存用戶類似於 eBay 買家。 Web 節點/儲存用戶僅與能找到的聲譽最高的代理節點進行交易。代理節點遴選算法還考慮網絡延遲、流量限制、協定禁止等其他因素(例如:儲存用戶將同一代理節點同時用於上傳和驗證流程)。儘管有上述單獨標準,僅有相對較少的最高聲譽代理節點收到絕大多數流量,方能獲得絕大部分珍珠幣收入。因此,代理節點一定要誠信,才會有收益。
所有聲譽分數最初均為零。不存在負的聲譽分數,否則惡意代理節點會生成初始分數為零的全新加密身份,從而消除負面聲譽。變換聲譽以實施詐騙這一有缺陷的策略相當於 eBay 欺詐賣家不斷生成新賬戶。大家都會忽視毫無聲譽的新帳戶。而聲譽較高的誠信賣家將得到絕大多數生意。
誠信的代理節點授予 Web 節點和儲存用戶訪問 Tangle 的權限,從零分開始逐漸積累聲譽。真實訪問 Tangle 是可驗證且可容錯的,引用更多有聲譽的代理節點以確認真實 Tangle 正在被訪問。有誠信的代理節點收集足量初始聲譽,便開始接收 Web 節點/儲存用戶執行有價值基礎的交易(埋藏和申領珍珠幣)的請求。鑑於 Beta 節點處理更少珍珠幣價值,代理節點最初作為 Beta 節點被分配。如果正確執行有價值基礎的交易,那麼代理節點的聲譽將開始大幅提升。進而有更多 Web節點/儲存用戶請求進行有價值基礎的交易。不誠信的代理節點很少能大幅提升聲譽。
各代理節點的身份是生成 PGP 金鑰的基礎,因此必須保密。如果 PGP 金鑰遭洩露,系統會快速降低節點聲譽(和未來收入前景),因為行惡者快速利用其來獲取短期收益。代理節點保護 PGP 金鑰的能力優於且保證保護寶藏數據映射坐標和寶藏私有種子金鑰的能力。
代理節點和 Web 節點/儲存用戶同意執行有價值基礎的交易前,需協商兩項條款:Tangle 的最低限度及區塊鏈的最低限度。賬本的最低限度確定合約成功執行後及合約期限到達前應有交易的最小範圍。儲存用戶的客戶端定義數據映射各 SHA256 Hash的所有枝幹交易,作為 Tangle 應包含的最小範圍。作為回應,代理節點設定區塊鏈的最小範圍,其包含將珍珠幣轉移至受控地址。如果提出的合同符合 Oyster 協定和雙方的環境背景,那麼雙方會用各自的 PGP 簽名數字化簽署合約。
代理節點始終成對安裝數據映射,同時相互競爭以埋藏最多珍珠幣。相反,儲存用戶的客戶端向各節點分配指定枝/幹。一旦數據映射安裝完成,起觀察作用的 Web 節點可估計各代理節點的性能,將合約定義的指定枝/幹與 Tangle 實際引用的枝/幹作比較。因此,分散式聲譽系統的參與者就最佳績效人員達成一致同意。執行大多數工作量證明的代理節點,其聲譽分數會提升;而執行少量工作量證明的代理節點,其聲譽不會變化或降低(視績效程度而定)。因此,代理節點出於(有關收入形成)的長遠利益而盡快執行工作量證明。經濟壓力確保儲存用戶快速高效上傳文件。
代理節點能抵消 Web 節點因希望購買創世 Hash 或 Web 節點身份而帶來的工作量證明負擔。鑑於具有較好聲譽的代理節點有更多交換序列與更多 Web 節點交互,一般安裝數據映射速度更快,因此可抵消更多指定枝/幹工作量證明。如果合約到期後,已簽署合約有數量為零或近似零的指定枝/幹與 Tangle 匹配,那麼該狀況將被視為有缺陷並且代理節點的聲譽將大幅降低。
Web 節點需要解開發現的寶藏時,其在合約中定義區塊鏈的最低限度。最低限度規定來自寶藏地址的珍珠幣應在 Oyster 合約的網站所有者的以太坊地址申領。該合約未定義 Tangle 的最低限度。如果代理節點同意條款,則會使用 PGP 金鑰數字化簽署協定。僅在 Web 節點收到合約的簽署副本時,才會向代理節點發送寶藏的私有種子金鑰。如果合約到期前未達到區塊鏈最低限度,那麼 Web 節點會引用簽署的合約,通知分散式聲譽系統其他參與方任務失敗。因此,Web 節點構成的網狀網絡逐漸達成共識:代理節點並未執行應盡任務,因此降低其聲譽和未來收入前景。
Oyster 協定旨在解決創造收入、匿名且可訪問儲存及去中心化應用程序開發和部署。如同以太坊區塊鍊為代幣創建提供簡單明了的框架,Oyster 協定為訪問去中心化網狀網絡提供簡單明了的框架。
Web 節點意指日常使用的計算機、智能手機、汽車、冰箱,可以是任何安裝現代 Web 瀏覽器的設備。其相互直接通信,僅需代理節點偶爾提供連接代理。其會久而久之自動選擇延遲較低的鄰居,從總體上優化節點拓撲。可使用熱門語言 JavaScript 便捷編寫擴展程序,因此開發人員可獲得訪問全球網狀網絡的權限。這種機制為便捷編寫去中心化應用程序和訪問性能優越且延遲低的網狀網絡培育了沃土。
Oyster 協定激發數百萬網站的隱匿收入潛能,化解個人和企業的儲存難題,並打造開發人員亟需的網狀網絡平台。
oyster