雖然這篇blob分析鄉民發文沒有被收入到精華區:在blob分析這個話題中,我們另外找到其它相關的精選爆讚文章
在 blob分析產品中有5篇Facebook貼文,粉絲數超過8萬的網紅Microsoft Taiwan,也在其Facebook貼文中提到, 🎉本週免費課程精選(2021.1.20) 小編的早安國文小教室時間🧑🏫 你都唸作星期三還是禮拜三呢❓ #小編都說週三 例如:每週三早上,微軟都會推薦好多免費的精選課程給大家喔! ❶ 1/25【ASP.NET Migration Workshop】 📌課程簡介:想增加 Web/App 端針對組...
blob分析 在 樂讀 | Keep Calm & Read A Book Instagram 的精選貼文
2020-05-11 16:33:07
樂讀│你不必完美,但可以更有魅力│2O17.12.29 -- 我想,這本書一開始吸引我的部分是,桃粉色的書底,看了很舒服。但內容並不是溫暖勵志的那種,而是比較偏向心理研究與個案的分析。寫到這邊,我驚覺自己最近實在看了蠻多心理學的書(震驚)。 - 說到魅力,我認為每個人都有自己獨特的魅力,真的。但絕大...
blob分析 在 Microsoft Taiwan Facebook 的最佳貼文
🎉本週免費課程精選(2021.1.20)
小編的早安國文小教室時間🧑🏫
你都唸作星期三還是禮拜三呢❓ #小編都說週三
例如:每週三早上,微軟都會推薦好多免費的精選課程給大家喔!
❶ 1/25【ASP.NET Migration Workshop】
📌課程簡介:想增加 Web/App 端針對組織內/外的生產力提升嗎?想學習如何利用 Redis Cache/Blob Storage 與雲原生的 Azure Function 針對使用情境優化,以達到整體成本 30-50% 的節省嗎?快來報名由 Microsoft 與擁有諸多專案經驗的精誠軟體服務開發團隊共同舉辦的 ASP.NET Migration 實作坊!
📍活動地點:台北市信義區忠孝東路五段68號19樓
👉立即報名:https://aka.ms/MSTW_011301
❷ 1/26【Workplace Analytics + Linkedin/ Glint 數據分析工具助攻高效生產力】
📌課程簡介:微軟 Workplace Analytics (WpA) 工作場所分析是從數據洞察的面向幫助企業主推動數位轉型,以落實和加速數位轉型旅程的三力 - 透過行動力、敏捷力、洞察力成為更具韌性 (Resilience) 的企業
👉立即報名:https://aka.ms/MSTW_012002
❸ 1/29【Power Platform Virtual Training Day 基礎課程】
📌課程簡介:由微軟全球黑帶專家親自授課,教您以最省時有效率的方法,實現 #工作流程自動化 以及 #App快速開發。完成線上課程加碼再送價值 $99 美元PL-900 證照考試
👉立即報名:https://aka.ms/PP_Fundamentals_JAN29_FB
#每週課程精選 #ASPdotNET #Azure #WpA #PowerPlatform
blob分析 在 Taipei Ethereum Meetup Facebook 的最佳解答
📜 [專欄新文章] Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
在 🦄 Uniswap v2 到來之前徹底了解 v1 的設計與演算法!
Image source: https://uniswap.org/
Outline
一. 前言二. 恆定乘積做市商模型 Constant Product Market Maker Model 1. 計入手續費 2. 程式碼結構 3. 演算法核心與實作 4. 段落小結三. 流動性 Liquidity 1. 第一筆流動性注入、決定k值 2. 除了第一筆以外的情況四. 結語
一. 前言
暨上一篇開始接觸了 Vyper 後,我找了 Uniswap 的程式碼來更加熟悉 Vyper 的實作方法,順便研究了其演算法,然後就又寫了一篇 xD
類 Python 的合約語言 Vyper 開發入門:與 Solidity 差異、用 Truffle 部署、ERC20 賣幣合約實做
Uniswap 是以太坊上非常成功的自動做市商 Automated Market Maker (AMM)。本次我將用的 Uniswap 的程式碼搭配由 Runtime Verification 這家審計公司對 Uniswap 所做的形式化驗證結果來解釋恆定乘積做市商模型的 Vyper 實作 (2018 審計時 Uniswap 就已經是用 Vyper 而非 Solidity 了):
智能合約程式碼:https://github.com/Uniswap/uniswap-v1/blob/master/contracts/uniswap_exchange.vy
合約審計結果:https://github.com/runtimeverification/verified-smart-contracts/blob/master/uniswap/x-y-k.pdf
本文將以講解實作概念及數學推導為重點,程式碼的部分只是輔助。審計結果將恆定乘積做市商模型演算法的數學推導寫得非常清楚而有趣(?),建議有興趣者可以整份看過一遍,相信得到很多收穫!
至於更多 Uniswap 的介紹有興趣者可以參考 吳冠融 Roger Wu 所撰寫的簡介與使用流程:
解析 DeFi 項目《Uniswap》(一)Uniswap 是什麼?
解析 DeFi 項目《Uniswap》(二)Uniswap 如何使用?
在開始前的最後,先預告本文頗長,所以來播個被 Youtube 推薦的歌吧:
二. 恆定乘積做市商模型 Constant Product Market Maker Model
交易所如果要去中心化、也不使用掛單 order book,就需要靠演算法自動算出交易標的的數量與價格,而 Uniswap 使用名為恆定乘積的演算法,其來源可追溯自 Vitalik 的這篇文章:點我。
公式非常的簡單:x * y = k。令交易的兩虛擬貨幣為 X 和 Y,各自數量為 x 和 y,兩貨幣數量的乘積 x * y 恆等於 k,k 值是由第一筆注入的流動性所決定 (於 三. 流動性 Liquidity 解釋)。
因此,用 ∆x 數量的 X 幣來購買 Y 幣所能得到的數量 ∆y、或是為了購買 ∆y 需要付出的 ∆x 數量,依照此公式進行計算:(x+∆x)(y-∆y) = k,而交易的價格就是兩幣量 ∆x 和 ∆y 的比。
以下公式用 α = ∆x / x 和 β = ∆y / y 來表示 ∆x 和 ∆y 及 X Y 兩幣在交易發生後的新均衡數量:
圖一
1. 計入手續費
在 Uniswap 進行的每一筆交易都會被收取 ρ = 0.003 / 0.3% 的手續費回饋給流動性提供者 liquidity provider ,因此要將手續費納入公式的考量:
圖二
上圖的公式或許不太直覺,我建議不要從 x’ρ 及 y’ρ 開始理解,而是從 ∆x 和 ∆y 兩值開始:手續費 ρ = 0.3% 的意思是會從付款中扣掉 0.3 %,也就是從 ∆x 扣。在有手續費的情況下 ∆x 就變成了 (1-ρ)∆x ,若令 γ = 1-ρ 則為 γ∆x。因此,將圖一中的 ∆x 換成 γ∆x,就會得到以下式子:
source: https://www.codecogs.com/latex/eqneditor.php
將等號左方的 γ 移到右方後就得到了圖二中的 ∆x。同理,由於 ∆y 中的 α = ∆x / x ,用 γ∆x 代換 ∆x 就會得到圖二中的 ∆y (有 α 的地方乘上 γ )。而 x’ 還有 y’ 就可以由 ∆x 和 ∆y 推出來了!
然而,將圖二中得到的 x’ 和 y’ 相乘,會得到:
source: https://www.codecogs.com/latex/eqneditor.php
也就是說,當有手續費使得 γ != 1 /ρ != 0,x’ρ * y’ρ 的值其實會稍微和 xy = k 不同:在實作上 γ = 0.997 / ρ = 0.003,因此 1/γ-1 ≒ 0.003。β = ∆y / y 代表的是換得的 Y 幣佔總量的比例,即使最大值為 1,誤差也只有 1 * 0.003,故可知手續費 = 0.3% 對於 k 值的影響極小。
2. 程式碼結構
了解了基本的公式後,就可以開始研究程式碼是怎麼撰寫的。首先來看各個函式的功能:
addLiquidity() 及 removeLiquidity():轉入與轉出資金,留到 三. 流動性 Liquidity 中說明
getInputPrice() 及 getOutputPrice():最主要的函式,用以計算給 ∆x 所能換得的 ∆y 數量、以及為了得到 ∆y 所要支付 ∆x 的數量。此兩函式會被其他負責進行交易、匯幣的函式使用
三組 (eth->Token, Token->eth, Token->Token) 的 swap() 及 transfer():swap() 的收幣人就是付款人、transfer() 的收幣人不是付款人而是指定的對象。基本上這兩函式就是呼叫 getInputPrice() 或是 getOutputPrice() 後進行匯幣的動作,因此不再多做解釋
3. 演算法核心與實作
在研讀程式碼前,先回顧一下 ∆x 和 ∆y 的公式:
首先我們考慮用 ∆x 所能購買到的 ∆y 的 getInputPrice():
什麼…就這幾行程式碼?是的。
以上的程式碼和公式表達方式不同,因此先將 α = ∆x / x 和 β = ∆y / y 代換回來並將上下同乘 x:
source: https://www.codecogs.com/latex/eqneditor.php
由於 γ = 0.003,可以將上下同乘 1000 後得到:
source: https://www.codecogs.com/latex/eqneditor.php
接著就能來對照程式碼了:
(109行) numerator: input_amount 是欲支付的 X 幣數量 ∆x、output_reserve 是 Y 幣數量 y,再乘上 997 後就是等式右邊的上方 (= 997∆xy)
(110行) denominator: input_reserve 是 X 幣的數量,乘上 1000 再加上剛剛算過的 997∆x,就得到了等式右邊的下方 (= 1000x + 997∆x)
此處要注意的是 Vyper 的除法是無條件捨去,等同於 floor() 函式。這會不會造成嚴重的影響呢?如果熟悉 ERC20 的人應該記得,在發幣時輸入的四個參數中有一個參數代表小數點的位數,如同下方程式碼中的 2 代表最後兩位在小數點後。舉例來說,當 getInputPrice() 收到 1234567 為這個幣的 input_amount 時,代表使用者擁有的幣的數目實際上是 12345.67。因此,即使將結果捨去 0.67 後的數字,影響真的不大,況且如果不捨去而選擇無條件進位,那代表交易所反而要虧損一點點啦,太佛心了吧 xD 有興趣者可以看看審計報告的內容,有更詳細地去定義這些誤差所影響的範圍!
再來我們看若要購買 ∆y 需要付出多少 ∆x 的 getOutputPrice()。
一樣先將 α = ∆x / x 、β = ∆y / y 和 γ = 0.003 代換並上下同乘 1000y 得到:
source: https://www.codecogs.com/latex/eqneditor.php
我們已經看過 getInputPrice() 一次了,所以應該能發現第 122–124 行得出的結果和上式相同。要注意的是這邊的結果反而是無條件捨去後直接 +1,因為這是在計算使用者要付多少 ∆x 才能購買到 ∆y,為了不讓交易所虧只能選擇請使用者多付一點點。
4. 段落小結
以上就是撇除匯幣等函示,恆定乘積做市商的 Vyper 實作,沒錯就這樣而已!Uniswap 之所以可以做到低 gas 消耗就是因為這個演算法本身就非常簡單,所需的運算也就是兩三次乘除法而已!
不過我們還沒結束,接下來要談談如何投入資金/注入流動性,而這部分也包含了決定 k 值的精妙機制!
三. 流動性 Liquidity
流動性指的是交易市場中能夠交易的資金/標的物的量。使用自動做市商 (AMM) 而非掛單的最大好處就是市場一定會有流動性,而缺點就是如果交易量越大就會造成越大的滑點 Slippage,意思就是交易價格變動會越大、得到的價格越差 。
source: https://ethresear.ch/t/improving-front-running-resistance-of-x-y-k-market-makers/1281
我們可以用上面提到的 V 文章中的圖片來迅速帶過,畢竟有關注 Uniswap 的讀者大概都已經看過這圖很多次了。
當要兌換的幣的數量越大/占比越重,例如:20% Y 幣的流動性,就會造成要付出比兌換少量時極為不對稱的高額 X 幣。
接著我們要來探討注入流動性的原則,依照市場是否已經有流動性而區分為兩種情形:
1. 第一筆流動性注入、決定 k 值
以下程式碼是 addLiquidity() 函式中 46-48, 51, 及 64-74 行。當市場上還沒有任何流動性時,不會滿足第 51 行而是進入 64 行的 else。
在第 65 行我們可以看到 msg.value ≥ 10¹⁰,以及在 67 行 token_amount 就是其中一個輸入值 max_tokens。這邊代表的是第一個注入流動性的使用者可以自行決定要注入多少 Ether (≥ 10¹⁰) (= x) 以及相應的幣的數量 (= y),也就是上方提到的 k 值 (= x* y),在本例的 X 幣就是 Ether。(本處先不解釋剩餘的程式碼,留到 2. 除了第一筆以外的情況)
那麼問題來了:第一個注入流動性的人要怎麼決定提供各自多少的兩種幣呢?最好的辦法是依照當時兩幣的市價比,讓兩者的價值 (數量 * 價格) 相同,例如:當 1 Ether 的價格為 100 Dai,注入 1 Ether 以及 100 Dai 是最好的,因為兩種幣的總價值是一樣的,以下舉例說明原因。
當 1 Ether 市價為 100 Dai 時,假設第一人決定注入 1 Ether 和 50 Dai (k = 50),總價值為 150 Dai,我們考慮兩種兌換方法:
Ether -> Dai:用 0.1 Ether 來購買 Dai,依照上方公式 (1+0.1)(50-y) = 50 可得 y ≒ 4.55,也就是說得到的價格是 0.1 Ether = 4.55 Dai,遠低於市價 0.1 Ether = 10 Dai,相信沒有人這麼傻~
Dai -> Ether:用 2 Dai 來購買 Ether,依照上方公式 (1-x)(50+2) = 50 可得 x ≒ 0.038,也就是說得到的價格是 2 Dai = 0.038 Ether,高於市價 2 Dai = 0.02 Ether,那麼眼尖的人就會立刻衝來套利了xD
那麼即使如此,第一人有所損失嗎?當然有!假設路人 A 手上有 30 Dai (= 0.3 Ether),A 看到機會後就把 30 Dai 全換成 Ether:(1-x)(50+30) = 50 可得 x = 0.375,大於原本持有的 Dai 的價值 0.3 Ether。此時,第一人即使立刻抽出現存的全部資金 Ether = 0.625 及 Dai = 80,總價值也只剩下 142.5 Dai,比起原本的 150 Dai 還少。以上的計算還有手續費沒有納入考量,但也只有 30 Dai 的 0.3% = 0.09 Dai。
由上例可知,第一位提供流動性的人為了避免自己的損失,確實得依照當時兩幣的市價比去提供相應的數量。傑克,這真是太神奇了0…0
2. 除了第一筆以外的情況
如果市場已經有流動性,使用 addLiquidity() 來注入流動性就會進入第 51 行的 if。
source: https://github.com/Uniswap/uniswap-v1/blob/master/contracts/uniswap_exchange.vy
(53行) eth_reserve: 由於使用者已經透過函式 addLiquidity() 將錢匯入了合約,因此將合約所擁有的 Ether 數量 self.balance (= x + ∆x) 減去使用者匯入的錢 msg.value (= ∆x),得到使用者匯錢之前合約內所擁有的 Ether 數量 (= x)
(54行) token_reserve: self.token 是一個餵入幣地址的 ERC20 instance;透過呼叫 ERC20 的函式 balanceOf() 即可查出合約所擁有的 Y 幣的數量 (= y)
(55行) token_amount: 透過將合約所擁有的 Y 幣的數量 token_reserve (= y) 乘上使用者匯入的錢 msg.value (= ∆x) 對合約原本擁有的Ether 數量 eth_reserve (= x) 的比例,代表使用者應該相應地注入多少 Y 幣 (∆y = y * ∆x / x)。除法一樣是無條件捨去
(56行) liquidity_minted: 將原本交易所中的總流動性 total_liquidity 乘上增加的比率 msg.value / eth_reserve (= ∆x / x) ,代表增加的流動性,隨後會在第 58 行記錄下來
(60行) transferFrom() 函式將使用者應付的 Y 幣數量 token_amount (= ∆y) 匯入當前合約,就完成了流動性的注入。小提示:智能合約中的 assert() 會確保函式內的條件如果失敗就整筆交易 transaction 直接取消,因此只要傳入的參數已經被計算好,於 60 行再進行 transferFrom() 其實與放在前面並沒有太大的差別
以上就是注入流動性的大致實作內容。取出資金 removeLiquidity() 其實與 addLiquidity() 的做法大同小異,因此就不再贅述。
四. 結語
呼,真的累。恆定乘積做市商模型的概念雖然簡單,但解釋起來還是挺複雜的!其實本文並未著墨於審計報告中的主要議題:評估因為整數除法 (不使用浮點數) 而造成的誤差範圍,因為講起來非常複雜、也不是真的這麼需要知道。不過,恰巧就是這些程式碼的細節有可能讓程式產生預期之外的結果!因此,對於有興趣了解該如何去分析智能合約整數除法的讀者,可以研究一下;而 Uniswap 的程式碼因為是用 Vyper 實作,可讀性非常高、同時也不難,因此也非常值得打開來看看、甚至動手實作自己的版本!
最後,如果本文有任何錯誤,請不吝提出,我會盡快做修正;而如果我的文章有幫助到你,可以看看我的其他文章,歡迎一起交流 :)
田少谷 Shao - Medium
Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
blob分析 在 鄭龜煮碗麵 Facebook 的精選貼文
上禮拜,雖然大家(包括我)都比較關心學姊說 #統獨是假議題,但其實有件算是重要的事情發生。
那就是 3/26 號的時候,歐盟的立法機關之一歐洲議會 ( European Parliament ) ,通過新的著作權規範。
( European Parliament 歐洲議會自己的新聞稿:
https://www.europarl.europa.eu/news/en/press-room/20190321IPR32110/european-parliament-approves-new-copyright-rules-for-the-internet )
PNN 公視新聞網 新聞的報導:
https://news.pts.org.tw/article/427017
雖然還得經過歐盟理事會,但修法的方向不會有太大改變。這次的重點雖然是放在著作權,不過我認為更核心的轉變,其實是「#平台需要為上傳者上傳的內容負責」。
在民主開放國家市場成長起來的網路公司,如 Google、Facebook、Amazon 等等,一個一個成為巨頭之後,引發了許多你我都知道的負面效應。這些公司的規模已經太大,大到已經不是他們避不避得開槍口的問題,而是槍口避不開他們。從選舉結果到經濟停滯到家庭失和,都找得到理由可以怪這些平台,而且很難說是污衊。
雖然,我們還是不能說各種問題「都是平台的錯」,但未來平台顯然必須負起越來越重的內容管制責任,這樣的轉變關鍵,在於公眾也越來越同意,時候到了,是該對平台施以更高的要求了。這一趨勢,醞釀了很長一段時間。
( 歐洲議會有點像是歐盟的下議院
https://en.wikipedia.org/wiki/European_Parliament )
大家都知道,著作權的議題在網路上一直是備受關注的,像是 2011 年在美國吵得很兇,台灣也很多人討論的 SOPA 跟 PIPA 法案。
( 關於 SOPA 停止網路盜版法案
https://en.wikipedia.org/wiki/Stop_Online_Piracy_Act )
( 關於 PIPA 保護知識產權法
https://en.wikipedia.org/wiki/PROTECT_IP_Act )
在台灣,也有好幾次爭議。最近一次我比較有印象的應該是 2016 年立委打算增加「邊境管制」,也就是要封鎖(或停止解析)侵權網站的 IP,後來因為網路輿論反對,就沒有繼續立法了。
( 當時的各方意見很多,章忠信律師的分析我個人比較認同:
http://www.copyrightnote.org/ArticleContent.aspx?ID=54&aid=2836 )
最近可能很快就要通過的著作權修法,則是針對眾多像是「安博盒子」之類的機上盒,不管是販售還是協助安裝,都要課以刑責。
( 經濟日報的報導:https://money.udn.com/money/story/5613/3721506 )
這些事情其實背後當然也是有各種角力,例如外國的商會、政府、本地的內容業者、一般使用者、倡議組織、平台公司,甚至國家。
總之,現在整個風向轉了。早幾年,保障高度言論自由,鼓勵網路科技創新,是主流,但最近幾年,加強管制成為顯學。可能是因為負面效應已經動搖國本,可能是因為科技公司不斷擴張到新領域,搶走利潤,讓市場既有的其他玩家反彈;可能是因為中國管制模式輸出。儘管對於強度過高的政府監管我站在反對方,但美國的科技巨頭總算開始面對現實。
在侵犯隱私、助長仇恨、影響選舉等批評聲浪下,臉書執行長馬克佐克伯到過美國國會聽證,也被歐洲議會叫去(但叫不動)。上個月初,美國下屆總統參選人,民主黨的參議員華倫則正式提出「拆解數位科技巨頭公司」的倡議,也將是接下來持續加熱的議題。
( 我之前對華倫這個倡議的簡要討論:
https://www.facebook.com/noodleswithturtle/posts/565115280650509 )
而陸續透過個人網誌,表明要改變臉書的馬克,前天竟然投書給華盛頓郵報,表示:大家都說要管那就來好好管一管吧。
請見華盛頓郵報:
https://www.washingtonpost.com/opinions/mark-zuckerberg-the-internet-needs-new-rules-lets-start-in-these-four-areas/2019/03/29/9e6f0504-521a-11e9-a3f7-78b7525a8d5f_story.html
投書很短,寫得很清楚,建議自己看一下。簡單來說,他建議針對 #有害內容,#選舉公正性,#隱私,和 #數據可攜性 四個項目,建立一個公私協力管控的機制。
而其中我覺得最關鍵的項目,是「數據可攜性」(data portability) 。
可攜性的概念,大家應該很熟悉了,最簡單的例子就是我們現在換電信公司,例如從台灣大哥大換成中華電信,不用換手機號碼。在台灣,號碼可攜其實是在 2005 年開始實行的,從此之後大大降低了門號使用者轉移的成本,加強了電信公司之間的競爭。
馬克在他的投書中,關於數據可攜性的部分也寫到:
「(對平台)的管制,應保證數據可攜帶性原則。如果你與一項服務共享數據,你應該能夠將其移動到另一項服務。這為人們提供了選擇,使開發人員能夠進行創新和競爭。
這對於網路本身,和創建人們想要的服務,非常重要。這就是我們構建開發平台的原因。真正的數據可攜性應該更像是人們使用我們的平台登錄應用程序(App)的方式,而不是現有的下載信息存檔的方式。但這需要明確規定誰在服務之間移動時負責保護信息。
這也需要通用標準,這就是我們支持標準數據傳輸格式和開源的『數據傳輸計畫』(Data Transfer Project) 的原因。」
( 關於這個由微軟、Google、FB、Twitter 共同支持的 「數據傳輸計畫」:https://datatransferproject.dev/ )
在上個月 14 號, Facebook 有一次大規模的當機,那天我不禁覺得,這種大社交平台當機,就像是銀行提款機出問題一樣,使得儲存在裡面的 #社交資本無法被提領。不管是工作或生活上要聯絡的人、要發的訊息,都因此受到影響。
社交資本,就是由我們上傳的數據跟使用行為建構出的關係網絡,並不是虛幻難以掌握的,而是可以定義、更是可以定價的。畢竟許多網路公司就是透過網絡效應才能讓價值水漲船高,快速成長。他們就像是大家都信任的社交資本銀行。
然而,當遇到大規模當機、或是傳出資料外洩、被盜,這時候就會想:
1. 自己是不是把社交資本都存在同一個社交平台/銀行?
2. 為什麼只能在 FB 銀行領錢?當 FB 銀行的提款機故障, 為什麼不能在 LINE 銀行或 TENCENT 銀行的提款機領出來?為什麼 GOOG 銀行可以說關就關、把錢都沒收了?
3. 為什麼儲存在這些社交銀行裡的社交資本,那麼難轉移?轉帳跟匯款那麼難?
4. 以及為什麼這些可被視為社交資本銀行的平台病不像是真的銀行,當我們的社交資本如今屢屢被大規模盜竊、被濫用時,他們鮮少需要賠償跟負責?
其實我以前就跟網路上的朋友討論過,要解決社群媒體帶來的壞處(例如假新聞等等),而不減損其好處的作法,其中之一就是降低這些平台的 #套牢效應。
一個辦法就是成立 #公共的社群平台,基本功能完全複製大型平台,讓用戶可以輕易從商業社群平台,透過數據可攜性,打包資料跟 #社交資本 ,轉換到公共的平台上。
過程必須要很簡單,數據轉移必須要很安全,就像是在這個還不存在的公共社群平台點一下「FB 登入」,然後兩秒後,完成了。
重要的是,透過數據可攜性轉移出來的不能只是帳號,而是所有我們放在社群媒體上的數據,跟編織出來的關係。
其實也可以想像成是中央存款保險公司的概念。
https://www.cdic.gov.tw/main_deposit/faq.aspx?uid=59&pid=59%20
只要數據可攜性存在,加上一個堪用的公共化備品,我認為商業平台就會比較謹慎,不那麼貪婪,連帶產生的問題就會少很多。
這點子完全不是首創。之前早有類似的失敗案例,例如 Diaspora、或是工研院的通訊軟體 Juiker ,區塊鏈出現之後也有很多新的社交網站,讓大家可以「社交挖礦」。
我想問題在於,社交資本被套牢已經太嚴重,所以第一步其實是讓社交資本可以被匯出。就像電信公司為了套牢用戶,手機號碼本來不可攜,後來可攜從概念變成規範,競爭於是更激烈,消費者因此獲益。
之前在個人帳號上討論這個想法的時候,有朋友認為其不可行之處:就是政府是做不出可用的公共化備品的。
如果是政府發包做網站,要做出一個能成為商業科技公司備品的社交網站,這件事我也不相信。
但如果是採取「公共媒體」的角度,我認為就是一個選擇要不要做的問題。
有些人認為英國的 BBC、日本的 NHK 很棒,促進了整體媒體品質、提升了公民素質、建立社會公共討論的基礎,但也有些人認為公共媒體拿太多錢,做得太好,反而讓商業媒體無法發展。
像台灣早期發展公共電視,一開始走小蝦米路線,公共電視曾被視為雞肋,沒競爭力,不過一直走到現在,反而成為廢鐵鎮僅存的救贖。現任文化部長 鄭麗君 有意推動大公共媒體,把央廣、中央社等等都結合在一起,有人認為這是唯一能夠重振台灣文化的機會,有人覺得沒競爭力,浪費錢。但總之,就是一種選擇。
所以讓我們想像一下:如果如馬克投書所建議的,接下來新的法規要求社交平台需要讓用戶可以自由匯出所有資料,轉移社交資本,社交平台就會必須做出改變,例如要求工程師讓資料架構更簡單,就跟歐盟 GDPR 的規定出來之後一樣。
當然,成功的平台都會讓我們覺得不需要做這件事,畢竟我們的時間跟精力有限,投入在少數甚至單一平台上比較合理,就像我們也不會三不五時就把存在一個銀行的錢全部領出來,存到另一個銀行......除非這家銀行讓我們覺得問題很大,就像現在這樣。
當然,我認為 FB 等社交平台的自然壟斷在資料、數據、社交資本可自由匯出之後就會降低。所以重點或許不是一定要有公共化的社交平台存在,而是只要有了可以自由匯出的前提,會有很多很多套自然出現。
但從公共媒體的目標與實踐傳播權的角度來看,社交媒體既然已經如此關鍵,若公共媒體接下來還是只是停留在創造內容上,而不趁這個全球都在檢討商業社交媒體平台的時機,來開始探索「公共化社交媒體平台」的可能性,我覺得就太可惜了。
能夠合作的對象其實很多。舉例來說,網路之父 Tim Berners-Lee發起分散式網路專案Solid,將資料「還權於民」,就是同樣的概念。
報導:
https://www.ithome.com.tw/news/126188
而很關注科技巨頭壟斷議題的 PTT 創世神 杜奕瑾 (Ethan Tu) 也提出 PTT.ai 的計畫,我個人也很期待。
Github 上的計畫連結:
https://github.com/ailabstw/PIPs/blob/master/PIP-0001.md
當然,馬克倡議的公私協力機制,其實也有很多先例可循,也就是 Internet Governance Forum 網路治理論壇。
https://www.intgovforum.org/multilingual/
台灣也有 @台灣網路治理論壇 Taiwan IGF
https://www.facebook.com/groups/1757842584459069/
總結來說,我認為在台灣,社群媒體如 FB、IG、Google、Youtube 等的好壞影響力非常大,因此關於馬克提出的四個項目--有害內容、選舉公正性、隱私、數據可攜性--我們不該只是等著歐盟或美國跟這些公司把問題解決,而是該更主動提出改革的做法。
我個人認為,優先從「數據可攜性」這個偏「結構管制」而非「內容管制」的項目切入,比較不具爭議;而以「公共化社交媒體平台」為探索的方向,也比較有進步性跟未來性。
如果民主自由是我們信仰的故事,但具有影響力的媒體或社交媒體平台,卻開始讓這個故事再也講不下去,公民就不該再袖手旁觀了。
要不然,或許是該向年輕人學習,開始用無廣告、無農場文、可輕易匯出的 Google Doc 當作社交平台了。
延伸閱讀:
Daodu Tech 科技島讀 的好文:社交資本論
https://daodu.tech/03-05-2019-social-capitalism
截圖來自:
https://www.facebook.com/zuck/posts/10107013839885441