全面分析MEV:常見MEV攻擊、相關生態和PBS

作者:Delta Blockchain Fund;翻譯:金財經xiaozou

1、前言

區塊鏈技術雖具有革命性,但也因一些細微差別,對各領域系統和生態帶來挑戰。在區塊鏈中,礦工和驗證者作為安全支持者來確認交易並保障鏈的安全。這意味著他們也是獨立的各方,能夠為了自己的利益重新排序給定區塊中的交易。

最大可提取價值(也稱為礦工可提取價值),簡稱MEV,是指區塊生產者透過在其生產的區塊內安排、添加或刪除交易可以獲得的最大利潤。其回報主要來自於單方面排除、包含或重新排序區塊內的交易。儘管名為最大可提取價值,但它不僅適用於PoW鏈,也適用於PoS鏈上的驗證者。本文旨在對MEV進行全面分析,探討其起源、其對各區塊鏈網路的影響,以及區塊鏈生態系統中不同參與者利用或降低MEV的策略。

2、歷史與理論

(1)歷史

首個有記錄的MEV案例出現在2014年的以太坊區塊鏈上,由一位程式設計師發現的。他對這項技術非常感興趣並充滿希望,直到他意識到該系統中的一個致命缺陷——驗證者和礦工的自治性質使他們能夠從毫無戒心的用戶那裡提取價值。

2019年,Chainlink Labs的一隊研究人員發表了一篇名為「Flash Boys 2.0」的文章,該文強調MEV不是一種理論實踐,而是一種被廣泛採用的協議直接利用的功能。

(2)理論

區塊鏈最初被設計為由分散的機器網路保護,這些機器被稱為區塊生產者。這些區塊生產者包括驗證者和礦工,他們在不可篡改的分散式帳本系統上承擔確認交易的角色。它們將待處理的交易聚合到一個區塊中,隨後由網路驗證,然後包含在全局系統中。

雖然有措施可以證明所有交易都是有效的,並且沒有被重複記錄,但沒有辦法確保交易是按照發佈在鏈上的順序排列的。這就是為什麼當區塊生產者從記憶體池(區塊鏈的待處理交易隊列)中選擇交易時,他們能夠在提交之前優先考慮費用最高的交易。

3、MEV的技術基礎設施

在目前的MEV生態系統中,有第三方機器人和各方操縱交易費用,以確保他們的交易在區塊提交時被優先考慮。對於普通用戶來說,這可能是不利的,因為他們可能沒有必要的資金、資源或技術專長來利用MEV。

在區塊生產者端,也有第三方的參與,包括搜尋者、建造者和中繼者。搜尋者實質是在「搜尋」待處理交易的記憶池,以尋找潛在的MEV利潤機會。他們將這些交易打包捆綁,發送給「建造」完整區塊並將其發送給中繼者的建造者。中繼者(即提議區塊的可信任聚合者)驗證交易,並將最有利可圖的一個交易傳遞給驗證者提交。

4.常見MEV攻擊

如前所述,MEV攻擊是礦工、驗證者或交易者使用的策略,用於利用他們重新排序、包含或排除區塊內交易的能力,以最大化其利潤。以下是一些常見的MEV攻擊類型:

(1)Front-Running搶先交易

這是指參與者觀察到記憶體池中有待處理的有利可圖的交易後,迅速創建一個類似交易,但gas費更高。這就鼓勵礦工首先包含他們的交易,使他們能夠從原交易觸發的價格變動中受益。

例如:Alice想買一個玩具,但是Bob為了讓商家能夠優先處理他的交易而支付了一小筆費用賄賂商家,最後Bob成功買下了這個玩具。

(2)Back-Running尾隨交易

尾隨交易類似於搶先交易,但攻擊者不是將自己的交易置於目標交易之前,而是置於目標交易之後。這通常用於攻擊者打算從原始交易觸發的價格變動中獲利的場景。

例如:Alice計劃在拍賣會上對一幅畫出價。 Bob等Alice出價後,迅速以Alice出的高價把他手裡一模一樣的畫賣給周圍的人。

(3)Sandwich Attacks三明治攻擊

在這種類型的攻擊中,攻擊者將交易置於目標交易前後。這便可以讓攻擊者以低買高賣的方式操縱代幣價格,本質上是將目標交易「夾在」中間。

例如:Alice打算買一個玩具。 Bob先買了這個玩具,就提升了玩具價格。 Alice以這個高價購買,然後Bob再以這個高價出售他的玩具,把Alice的購買夾在了中間。

(4)Arbitrage套利

這些攻擊利用了不同的去中心化交易所(DEX)之間的價格差異。攻擊者可以在一個DEX上以較低的價格購買代幣,然後在另一個DEX上以較高的價格出售。

例如:Bob發現另一個城鎮的蘋果比較便宜。他在那裡購買蘋果,然後以更高的價格在自己的城鎮出售。

(5)Time-Bandit Attacks時間強盜攻擊

在工作量證明網路中,礦工進行所謂的鏈重組,以操縱先前確認的區塊。這樣做的目的是從已被包含入區塊的交易中提取MEV。這不僅是一種更複雜的MEV攻擊形式,而且可能更具破壞性,因為這種攻擊需要改變現有的區塊鏈結構。

例如:礦工Bob看到Alice發現了一處金礦。他用自己的力量讓時間倒流,在Alice之前抵達金礦,把金子佔為己有。

5、MEV案例研究

(1)市場情緒及數據

2023年的MEV領域是一個充滿活力的多元化領域,融合了機會、挑戰和創新。過去一年裡,MEV領域的活動非常活躍,機器人在以太坊上創造至少3.07億美元。其中最頻繁常見的是套利機會,佔總收入的47.5%以上,同時,三明治攻擊和平倉機會也發揮了重要作用。

在此背景下,2023年6月8日這一週的數據提供了持續趨勢的快照。套利活動提取了848萬美元,三明治攻擊提取了55.9萬美元,清算攻擊不那麼普遍,只提取了1.4萬美元。這些數字部分錶明了MEV生態系統複雜性和動態性。

2022年涉及三明治機器人的MEV總量達到驚人的2,870億美元,Uniswap V3是套利和三明治機器人的聚集地。有趣的是,幣安智能鏈(BSC)上的MEV機會被發現比以太坊更具成本效益,這表明BSC上的環境更友善。

根據市場情況的不同,MEV機會的頻率和性質會有所不同。雖然套利機會是最常見的,但清算機會更依賴劇烈的市場波動。不同MEV類型產生的收入也呈現月度變化,因具體的市場事件,某些月份的收入會顯著提升。

也出現了MEV的寡占模式,在以太坊大合併後,前2個區塊建設者地址捕獲了一半以上的MEV,儘管建設者在區塊的最後一筆交易中將大多數MEV傳遞給了提議者。 MEV機器人的競爭環境和不同類型機器人之間的利潤分配進一步說明了市場的複雜性。

透過分析具體數據,在不同區塊鏈平台之間進行對比分析以及了解更廣泛的趨勢,我們可以獲得對這個不斷發展的領域更全面的看法。這些見解有助於更深入了解MEV生態系統,反映其多面性和對未來去中心化金融的影響。不斷探索流動性數據,開發新的做市策略,以及努力解決MEV市場的公平性和監管問題,對於駕馭這個動態環境至關重要。

(2)MEV漏洞攻擊

2023年4月3日,在以太坊區塊高度16,964,664時,一群MEV機器人受漏洞攻擊損失了2,530萬美元。對該漏洞攻擊的分析顯示,一個叛亂驗證者切換了MEV機器人的交易,並扣押了各種加密代幣。

這個漏洞攻擊是一個複雜的操作,涉及一個惡意以太坊驗證者和一組MEV機器人。這個惡意驗證者被稱為「Sandwich the Ripper」(開膛手三明治),他準備了多個代幣資產,誘使一群目標MEV機器人試圖在低流動性V2 Uniswap池上搶先交易他的交易。這個過程持續了18天。

在典型的三明治攻擊中,MEV機器人讀取傳入的交易並搶先執行訂單,從而推高原買家的資產價格。然後,買家透過購買與最初預期相同的資產,進一步推高了價格。然後,MEV機器人在原買家的交易完成後立即出售該資產,從買家身上賺取套利利潤。

然而,在這種情況下,惡意驗證者用一個有漏洞的交易引誘MEV機器人,迫使機器人在低流動性池中套利誘餌資產,而攻擊者並不需要進行實際的購買交易。在MEV機器人購買了誘餌資產後,攻擊者立即修改同一區塊內的交易順序,出售所有代幣(攻擊前已準備好)。然後,攻擊者以更高的價格出售自己的代幣,以耗盡低流動性池中的所有WETH,在這個過程中,MEV機器人獲得的代幣將變得一文不值。

惡意驗證者在24個交易中使用相同策略耗盡了5個MEV機器人。被盜的代幣隨後被分配到三個不同的錢包中,分別為2000萬美元、230萬美元和290萬美元。

作為對該漏洞攻擊的回應,Flashbot社群已經為所有中繼(relay)發布補丁,以防止此類攻擊再次上演。雖然有些人認為這次攻擊是“惡意的”,但加密社群裡的其他人則認為,對MEV機器人的攻擊是遊戲的一部分,並沒有違反遊戲規則。

(3)DeFi之夏

雖然MEV經常與挑戰和負面影響聯繫在一起,但它在某些情況下也發揮了有益作用。例如,在2021年的DeFi之夏,以太坊更快的交易和更低的gas費與MEV的使用不無關聯。

像Flashbots的MEV-geth這樣的MEV提取軟體的採用已大大上升,超過78%的以太坊礦工現在使用MEV提取軟體來打包序列交易包並捕獲MEV利潤。這是透過礦工賄賂和拒絕捆綁等功能實現的,而無需支付gas費。如上圖所示,MEV捆綁的擴散似乎與以太坊較低的平均gas費相關,因為MEV軟體緩解了優先gas拍賣(PGA)等問題,在這些問題情況下,機器人透過交易費大戰推高了費用。

在三明治攻擊情況下,礦工或驗證者在一個區塊中包含某些交易,放棄其他交易。透過這種方式對交易進行優先排序,他們可以促進更快的執行並降低用戶的總成本。這種選擇性包含讓網路可以處理更多的交易量,有助於在高需求期間提高系統的效率和效力。

總而言之,以MEV為中心的軟體已經在以太坊中佔據主導地位,這些軟體透過交易排序技術來協調對礦工和交易員的激勵,這也可能無意中緩解了網路擁塞,降低了網路成本。

6、MEV週邊產品

(1)Flashbots

Flashbots等公司透過研究和開發協議來減輕MEV帶來的負面外部性,以幫助生態系統實現再平衡。他們建立了一個生態系統,在這個生態系統中,機器人直接向礦工提交交易包,而不是向公共以太坊池提交交易包,然後礦工收到報價(其他人是看不到的),並將這些交易包包含在他們開採的區塊中。

由Flashbots創建的MEV-Boost等協議為驗證者提供了一種透過建造者(想要購買區塊空間)市場存取中繼區塊的方法。透過使用MEV Boost,驗證者可以選擇包含這些特殊區塊,這些區塊由於交易被重排可能具有更高的獲利性。這讓驗證者有機會從建造者已經識別並打包到中繼區塊中的MEV機會中獲得更多收益。他們還可以添加來自Flashbots、Bloxroute、Blocknative、Eden或Manifold的中繼器(僅舉幾例)。

(2)Fastlane

Fastlane是另一家欲重新平衡MEV所帶來的安全疑慮的基礎設施公司。 Fastlane是一項協議,旨在獎勵保護Polygon區塊鏈健康的參與驗證者。

Fastlane提供了一個獨特的解決方案,讓驗證者從區塊鏈生態系統中的各方參與者產生收入,包括套利者、清算者和NFT交易者。透過競爭性拍賣程序,演算法搜尋者在指定的「sprints」期間競標訪問Fastlane。得標者獲得成功交易的可能性將增加,而無需直接連接到驗證者節點,更重要的是,無需知曉驗證者ID、節點位址或IP位址。

這種方法大大增強了驗證者節點的安全性和隱私性,透過減少機器人用冗餘交易淹沒節點的經濟動機,讓節點更加健康。 Fastlane的設計不會促進諸如搶先交易和「三明治」攻擊等惡意行為。相反,它優先考慮的是Polygon鏈的整體健康狀況。此外,透過消除交易傳播動態中的隨機性,Fastlane可以潛在地降低哨兵節點的資料成本,進一步提高網路的效率和可靠性。

(3)Cow Protocol

還有一些具有特定用例的應用程式或軟體利用MEV實現不同目的,例如Cow協定。 Cow協議盡可能撮合點對點交易,消除了對中間商的需求,為用戶節省了資金。這被稱為需求巧合(CoW)。他們搜尋所有的交易所和聚合器,以確保用戶獲得最優惠的價格,從而省去了用戶在不同平台上比價的麻煩。他們還可以保護用戶免受搶先交易攻擊和三明治攻擊,這些攻擊可能會對交易者造成重大損失。 Cow協議透過點對點撮合交易以及利用批量拍賣來實現這一點,讓交易順序變得無關緊要。

如果在下單後,價格向有利於用戶的方向傾斜,Cow協議將在執行時向用戶提供價格。它每30秒收集一次訂單進行打包。這是在鏈下完成的,有幾個好處,例如不向失敗交易收費,以出售代幣(非ETH)收取的費用。 Cow協議的solver(外部求解器)競相在所有去中心化交易所和聚合器中為你的交易尋找最佳的流動性來源。他們在鏈上提交交易包,並對公共內存池隱藏,保護交易免受礦工和機器人的操縱(搶先交易及其他形式的MEV)。

(4)Kolibrio

最後來看Kolibrio,它試圖透過成為第一批提供廣播可提取價值(BEV)中繼的協議來徹底改變MEV領域。這項技術確保了交易廣播者(如節點提供者、DeFi錢包、橋接器和其他dApp)可以擁有他們創建的訂單流,並能夠將其貨幣化。在交易進入內存池之前自動搜尋MEV機會時,這是可能的。當交易中存在MEV機會時,BEV會將該資訊傳遞給搜尋者,搜尋者隨即將根據該資訊對交易喊價。

透過將交易維持在廣播狀態並引入MEV拍賣機制,它讓MEV提取民主化,減少了透過交易順序或搶先交易等漏洞攻擊的機會。系統的驗證和等待機制充當了針對惡意MEV策略的緩衝區,而交易聚合確保了難以操縱的高效交易處理。此外,透過自動將MEV利潤分配給廣播者,該系統不僅確保了公平分配,還激勵了實體優先考慮用戶利益,從而形成一個更安全、更以用戶為中心的區塊鏈生態系統。

7.以太坊以外的MEV

(1)Solana

MEV可以透過各種策略實現,包括搶先交易、尾隨交易和三明治攻擊。然而,當我們從以太坊背景過渡到Solana時,由於兩個區塊鏈之間的基本架構差異,MEV狀況也發生了重大變化。

在Solana的PoS系統中,質押大量代幣的驗證者負責交易的最終確定。 Solana獨特的驗證者群集功能進一步強化了這個系統。驗證者被為多個集群,輪流擔任leader驗證者的角色。 Leader的角色僅限於決定投票交易的順序,而不是其最終確定性,從而針對潛在惡意參與者增加了額外的安全層。

Solana和以太坊的另一個關鍵區別在於記憶體池。雖然以太坊的記憶體池是許多MEV策略的關鍵組成部分,但Solana沒有記憶體池。這意味著獨立的網路參與者(通常被稱為「搜尋者」),除非他們充當驗證者,否則是無法針對單一交易提取MEV的。此外,Solana最近在固定費用的基礎上引入了優先處理費,這樣搜尋者就可以更快地將他們的交易包含入區塊。

儘管有這些結構上的差異,Solana並不是完全不受MEV的影響。在Solana上,MEV活動的一種普遍形式是去中心化交易所(DEX)套利。在這種情況下,交易者利用了不同DEX之間的價格差。例如,交易者可能會識別出Solana上的兩個去中心化交易所Raydium和Orca之間的SOL/USDC匯率差,隨即執行有利可圖的套利交易。

有趣的是,三明治攻擊是以太坊上常見的MEV策略,但在Solana上不見蹤影。這可能是由於Solana沒有記憶體池,並且只有leader驗證者才能在交易最終確定之前存取交易。

在NFT領域,MEV以NFT機器人的形式表現出來。這些機器人用鑄造請求淹沒了流行的NFT發布,旨在確保即時轉售盡可能多的代幣。這不僅擾亂了NFT市場,也導致了網路擁塞。為了解決這個問題,Solana提出了一些解決方案,例如調整交易gas費以增加垃圾請求的成本,以及對無效交易徵「稅」。

此外,一家名為Jito Labs的公司提供了一套專門的產品,可能會對Solana的MEV格局產生重大影響。詳情如下:

· 更好的驗證效能和更高效益-Jito-Solana客戶端:

透過提供開源驗證者客戶端,Jito Labs幫助Solana上的驗證者更好地利用他們的硬體並獲得更高收入。這可以促使驗證更具競爭性,從而減少交易排序中的潛在MEV提取。 Jito區塊引擎幫助驗證者建立最有利可圖、最高效的區塊。透過優化區塊構建,它可以減少交易的重新排序機會(一種常見的MEV策略),使網路對某些MEV攻擊更具彈性。

· 外包垃圾請求緩解和簽名驗證——Jito Relayer:

此工具允許驗證者外包垃圾請求緩解和簽名驗證,這可以減少擁塞,實現更有效率的區塊創建。這可能降低惡意行為者透過垃圾請求攻擊利用MEV的可能性。

· 序列執行與增強的交易能力-Jito Bundles:

透過支援交易的序列執行,Jito Labs為交易排序添加了額外的控制層。這可以緩解一些MEV策略,例如搶先交易和三明治攻擊。 Jito記憶體池:交易者可以利用Jito記憶體池獲得更高的交易交付保證。這確保了更可靠的交易執行,減少了透過交易重新排序或排除交易提取MEV的可能性。 ShredStream:這個功能讓交易者可以直接從leader接收碎片從而節省大量時間。透過提高交易效率,它可以減少MEV攻擊的機會窗口,例如套利漏洞攻擊。

Jito Labs的產品提供了多維方法來強化Solana區塊鏈。透過專注於優化驗證者效能、確保高效的區塊建置、緩解垃圾請求以及增強交易能力,Jito Labs為更安全、更有彈性的網路做出了貢獻。

這些創新可以讓Solana鏈不易受常見MEV策略的攻擊,創造更公平透明的交易環境。雖然它可能不會完全消除MEV,但Jito Labs的產品與Solana的整合代表了減輕與MEV相關負面影響的積極舉措。

在快速發展的區塊鏈領域,Jito Labs的這些技術進步為解決MEV挑戰提供了有價值的見解,不僅在Solana內部,在其他區塊鏈網路中也是如此。

綜上所述,雖然由於架構上的差異,Solana上MEV的性質和表現形式與以太坊有很大不同,但MEV仍然是一個普遍存在的問題。 Solana社群不斷在探索實施解決方案,以降低MEV對其網路的影響,確保其區塊鏈營運的完整性和效率。

(2)L2及跨鏈

L2上的MEV是從以太坊L1上的原始MEV擴展而來。然而,在EVM鏈的情況下,參與者操縱交易的順序、包含或審查的可能性在L1和L2之間沒有顯著差異。這兩層有著相同的MEV概念,MEV主要來自於礦工(或權益證明系統中的驗證者)在他們生產的區塊內重新排序、包含或審查交易的能力。

這種能力可用於利用套利機會、搶先交易或從用戶提取租金。然而,隨著以太坊2.0的引入以及人們越來越多地使用L2解決方案來實現可擴展性,這一切正在微妙地改變MEV格局。

Avalanche(AVAX)等特定鏈上出現了MEV領域裡的一個特殊區別,即這些鏈不共享記憶體池資料(除非與驗證者共享)。這種獨特的方式可以改變MEV動態,因為可以存取交易資料的實體變少了,這可能會影響交易操作和價值提取的範圍。

然而,L2環境也為MEV問題的創新解決方案提供了機會。例如,提議者-建造者分離(PBS)的概念可以應用於L2解決方案,其中提議區塊和建設區塊的角色是分開的,這可能會一定程度減輕MEV相關問題。

此外,跨鏈MEV的探索,包括不同區塊鏈網路的MEV提取,也是L2 MEV領域的重要組成部分。這是L1中不存在的一個新維度,它為MEV提取和緩解開闢了一個全新的研究領域和潛在策略。

總之,雖然L2 MEV與L1 MEV有著共同的基本概念,但L2解決方案的獨特架構和操作特性為MEV問題引入了新維度。該領域正在進行的研究和開發對於確保以太坊和其他區塊鏈網路在擴展時的可靠性、公平性和去中心化特性至關重要。

8.提議者-建設者分離(PBS)

(1)什麼是提議者-建設者分離?

提議者-建造者分離(PBS)是針對區塊鏈網路中審查和MEV攻擊的挑戰提出的解決方案。 PBS概念植根於將網路的區塊構建和區塊提議的角色分開的想法。這種職責分離旨在創造一個更去中心化更安全的網絡,同時也解決了MEV問題。

(2)PBS出現之前

在區塊鏈網路中,稱為驗證者的專門參與者對於交易處理和區塊創建等操作至關重要。在像以太坊這樣的早期區塊鏈協議中,驗證者被分配了兩個關鍵任務——區塊建設和區塊提案。相同的驗證者將收集待處理交易,確定區塊內容,排序交易,並建立完整的新區塊。然後,這些相同的實體將把他們創建完成的區塊作為提案向網路的其他方廣播,以進行驗證及包含入鏈。

這種責任的合併是有問題的,因為它賦予驗證者對區塊中包含哪些交易以及以什麼順序包含交易過度的控制權。驗證者可以利用這種影響力來實施為自己創造額外利潤的策略。例如,他們可以對交易進行排序,從而從那些希望優先處理交易的用戶那裡獲取最高費用。驗證者還可以利用其地位進行市場操縱,包含或排除特定交易,以影響代幣價格,使局面對自己有利。這些做法符合最大可提取價值的概念,其中驗證者透過優化交易排序和審查將自己的利潤最大化。

資源充足的大型驗證者自然最適合微調區塊、實施這些MEV策略。這便導致了中心化風險,小型驗證者在從交易中提取最大價值的競爭中苦苦掙扎。總的來說,將區塊建設和區塊提議的職責整合到一個驗證者實體中,會在公平性、安全性和去中心化方面產生漏洞。

(3)PBS出現之後:緩解MEV,提升區塊鏈安全

為了解決這些問題,特引入了諸如提議者-建設者分離(PBS)之類的創新之舉。 PBS正式將兩個驗證職責(區塊建置和區塊提案)分為由不同節點類型處理的獨立角色。

在PBS下,區塊建構是由專門的建造者節點處理的。它們的唯一功能就是以優化的方式建構區塊內容,使整個網路的價值最大化,不偏袒任何一個實體。交易排序、包含和順序是使用旨在限制操縱機會的演算法確定的。然後,這些完成的區塊包將傳遞到專門的提議者節點。

提議者節點的角色很簡單——從建造者那裡獲得完整區塊,並將它們提議給驗證者網路的其餘節點,以獲得批准並包含在區塊鏈中。重要的是,提議者不參與PBS下的區塊創建。這可以防止他們對區塊應用優先交易排序或進行其他服務自身利益的更改,因為他們只有在區塊構建完成後才能看到區塊內容。

透過將這兩種職責正式分解為單獨的專門角色,PBS限制了單一節點對端到端交易流程的影響。這反過來又增強了以太坊等網路的去中心化特性、安全性和公平性。 PBS代表了區塊鏈網路架構和治理方式的重要演進。

9.結論及未來發展方向

受DeFi的興起和區塊鏈技術發展的影響,MEV的未來將是一個複雜局面。雖然MEV可以為區塊鏈生態系統中的某些參與者帶來可觀利潤,但它同時也帶來了挑戰,包括對交易發起者的潛在負面影響以及驗證者中心化風險。

以太坊社群正在積極探索緩解這些挑戰的策略,同時保留MEV的有益之處。這些策略包括MEV burning(MEV銷毀)、MEV smoothing(平滑MEV峰值)和MEV sharing(MEV共享),每種策略都有其獨特的優勢和利弊權衡,它們的成功實施需要仔細考慮和大量資源。

以太坊大合併和PBS概念的引入進一步增加了MEV領域的複雜性。 MEV-Boost的廣泛採用帶來了區塊獎勵的增加,但也帶來了驗證者中心化的潛在風險。

總而言之,MEV的管理是以太坊和其他區塊鏈網路未來的關鍵問題。隨著這些技術的不斷發展,MEV的管理策略也將持續發展。未來的研究應繼續探索這些策略,以及新型MEV的出現及其對各區塊鏈網路的影響。隨著各網路不斷擴展,MEV領域的持續探索和開發對於確保網路的可靠性、公平性和去中心化特性至關重要。

Total
0
Shares
Related Posts