大家都愛看陳京霈和王勝維打架。
⠀
他們拿水果籃和飯匙互砸。
⠀
隔壁班男生拿出藏在書包的數位相機開始一張張拍了,飯匙飛進排水溝,在午休的校園裡漂浮。吃飽的人洗他們的餐具,逃過廚餘桶的食物碎屑到了洗手槽仍舊被粗暴的水流沖進漩渦裡。漩渦是眼睛。漩渦看著我分開陳京霈和王勝維,看著我滑倒,看著王盛維瞪著我:「一個醜一個娘。」把飯匙踢飛轉身往廁所走。
⠀
「我們隔天還用那個飯匙。好噁。」此刻的我說。
⠀
「我都不記得了。」此刻的陳京霈說。
⠀
王勝維某天在他盛飯的時候大叫:「陳京霈鼻子像草莓!陳京霈草莓!」午睡一醒,全班都叫他草莓了,只有我繼續喊陳京霈的名字。
⠀
陳京霈下午要到隔壁班上課。他成績退了幾名,變成班上後面那一半了。布丁會和隔壁班前面一半的人一起來和我們上數學課,這時,在黑板許多算式背後,陳京霈會把我寫給布丁的信交給隔壁班同學。隔天上午,我們班又是我們班,陳京霈會把布丁的回信塞給我,說:下次不幫你了,老師以為是我在談戀愛。
⠀
「不然下次我買票。」我耍賴。
⠀
「幹,那我要大杯冬瓜茶。」陳京霈國中的時候好呆。
⠀
一張票六十塊,看兩部電影。偷偷坐在裡面不出來就可以看四部。陳京霈偷偷騎家裡的機車,載我先到電影院隔壁買冬瓜茶。冬瓜茶不能調甜度,只好叫大姊多加冰塊。飲料杯上的水珠最後會滴滿座位地板。十四歲,我和陳京霈的假日下午總是一起融化。
⠀
⠀
#
⠀
大學,上台北後搬進宿舍半年,接了系上營隊總召。Di 每次排戲都遲到,還約大家星期五一起唱歌。Di 妳台詞背了嗎我說。總召大人幹嘛啦放鬆一下嘛 Di 說。大家說 Di 的男朋友會開車到學校來接 Di 下課,閨蜜們圍著,看著 Di 關上門,嘻嘻笑笑大叫快繫安全帶。
⠀
那其實是我第一次去唱歌。到了包廂,我坐到螢幕前面研究怎麼點歌,其他人卻全都走出去。「總召大人不拿吃的嗎?」Di 問我。我愣在沙發上,說噢不不不不用了,我不餓。我不喜歡在包廂吃東西。Di 走掉了。我很專心很專心盯著螢幕。我不懂的事,我就假裝不喜歡。
⠀
我唱著一首又一首歌。我唱得實在太好了,昊恩家家的〈不自由〉,魏如萱的〈問號〉,林宥嘉的〈眼色〉。我還難得唱了我討厭的〈開到荼靡〉,只因為發現開了女聲特效之後自己的聲音跟王菲一模一樣。
⠀
我唱得好認真。其他人都在聊天。我唱得更用力。
⠀
我不擅長的事,我就假裝不懂。
⠀
Di 從頭到尾都在聊天。她先跟張聊張的三個姊姊,再跟劉聊劉的女朋友。我唱到「誰來燒熱我眼睛裡的黑色」時她和陳大笑,發現我在看她們,Di 又戲謔地比了噓:對不起,吵到你唱歌了。
⠀
大一剛開學陳京霈,就把機車運來台北了。他會從另一所學校山上騎車到市區載我。不知道是我們在台北會變小,還是電影院在台北會變大,每次一入座,我覺得陳京霈好像比以前更遠。
⠀
王勝維成績好,踢足球,朋友多。王勝維說:京霈你這廢物鼻孔好大。國中地下室停車場的跳高墊七八塊疊在一起,我和陳京霈爬到最上面讀布丁的信。布丁桌上永遠擺著一本月曆,上面記著每一個人的生日。我在文具店買了一條項鍊繫著玻璃瓶,還求京霈載我到海邊,到了海邊才曉得有些海邊沒有沙。
⠀
KTV 裡,大家不知道從哪裡變出禮物,對 Di 說生日快樂。我竟然根本沒準備禮物。我怎麼會以為是來唱歌就好了呢?我看著精美的盒子被打開,是女孩們合送的洗髮精組合;張寫了卡片;陳送了一支酒。我記得有某個瞬間大家望向我,彷彿我會從肺臟裡拿出蛋糕。
⠀
我說呵呵我沒有帶欸。不好意思。
⠀
大家笑,然後說不用啦,幹嘛準備什麼禮物。
⠀
他們再也沒有約我一起唱歌。
⠀
陳京霈幫我把布丁約到頂樓。她看見我,低著頭走到我身邊。她從口袋裡拿出今天我給她的信:
⠀
「布丁被人喜歡,也許因為少少的,吃完就沒有了。但我並不是因為這樣才喜歡妳的。妳並不是因為稀少而珍貴。妳是因為珍貴,所以稀少。」
⠀
她牽起我的手,「我也喜歡你。」
⠀
⠀
#
⠀
你上大學之後有新綽號嗎?我問陳京霈。
⠀
不告訴你。京霈忽然按剎車。
⠀
我在營隊社團裡 PO 了文:「明天我不能到,一切聽 J 指揮。此外,每次都有人排戲前一個小時才說自己會遲到,或者沒說就遲到,我想這樣是對不起大家的喔。」
⠀
兩個小時後,Di 也在自己帳號發文。
⠀
「就是要針對我,我自認為沒有對不起大家,不爽為什麼不直說呢,就算老娘是您心裡的一粒沙也甘願。」
⠀
我傳訊息向 Di 解釋:不是在說妳。真的。然後 Di 把文章刪掉,說:對不起誤會你了。
⠀
我說,無論如何,也對不起。
⠀
Di 說,沒關係。
⠀
我知道我失去 Di 了。
⠀
我又要去台北車站找陳京霈。訊息裡他說,這次不用跟別人借安全帽,他終於買了一頂。「今天有要看什麼嗎?」我戴上新安全帽,新安全帽的味道聞起來好危險。「就載你逛逛。」陳京霈說。
⠀
台北車站像迷宮,台北車站外卻也不像出口。京霈載我轉彎,載我超車,載我看城裡的招牌。這間店他和誰去過,這一間我和誰來,以前我們聊天隔著兩頂安全帽,現在我們聊天隔著半個台北。
⠀
「還要騎一段。」等紅燈時他忽然說。
⠀
「咦,我們要去哪裡?」我鬆開後座扶手。
⠀
「你等一下就知道了。」
⠀
那間咖啡廳很大,他們還包下了整層樓。騎了好遠,我早就分不清楚方向。
⠀
「這是哪裡?」
⠀
「你沒來過這種地方對吧?」陳京霈說。
⠀
咖啡廳裡,人人都穿西裝走來走去。
⠀
「嗨手卷!」人潮裡忽然有人大喊。
⠀
「嗨學長!」陳京霈竟然向那人揮手。
⠀
他回頭,看著我,「對了,還沒跟你說,我現在的綽號叫手卷。」
⠀
一名西裝耳麥男帶我們到一張坐著更多西裝耳麥男的桌子,其中一人為我拉開椅子。
⠀
「那這位先生,是手卷的朋友?有沒有綽號?天啊你長得好像那個黑人喔,那個藝人。」西裝耳麥男說。
⠀
謝謝,不過我覺得我身高沒那麼高。
⠀
「手卷怎麼不介紹一下?」西裝禿頭八字眉男說。
⠀
他開口:「他是我國中同學,綽號叫⋯⋯」
⠀
我現在沒有綽號。我打斷陳京霈的話。
⠀
「那以前呢?以前有綽號嗎?」西裝山羊鬍油頭男說。
⠀
我別過頭,盯著陳京霈。陳京霈以前好呆。
⠀
他回望我。「地瓜。他以前叫地瓜。」
⠀
我掉進漩渦裡。
⠀
「地瓜,你有在打工嗎?」
⠀
沒有。
⠀
「你家有錢嗎?」
⠀
還好。
⠀
「你平常有在繳房租嗎?」
⠀
怎麼了嗎?
⠀
「沒有啦,想問你說,想不想賺點錢讓家裡少一些負擔啊,地瓜?」
⠀
西裝耳麥男拿出一張白紙,在上面畫了一個三角形。「我今天要和地瓜介紹的呢,就是一個我們在場所有人;包括手卷都親自參與過,而且都非常希望可以讓更多人知道的一個祕密,那就是電信金字塔。地瓜你看過金字塔嗎?」
⠀
我衝出咖啡廳,到最近的站牌,搭上最先出現的一班公車。飯匙高高地飛起來,墜落,躺在被數萬數億次踩過的走廊。我撿起湯勺,菜夾,水果籃,我也撿起陳京霈,我們一次次把校園的午後恢復原狀。打開水龍頭,洗著卡著飯粒和沙粒的餐具,公用的菜瓜布上卡著陌生的午餐,洗手槽前,人人都穿制服走來走去。
⠀
簡訊傳來,是他。「詒徽,我很抱歉,沒想到你會生氣,如果因為一點錢的關係讓我們之間有誤會,我會很後悔。」
⠀
我看著螢幕上他的名字。陳,京,霈。看了很久,變得不像他的名字。公車開了好久好久,我覺得自己好像哪裡都到不了,遲遲沒回簡訊。
⠀
⠀
#
⠀
我把佈景從後台搬出來。觀眾很多,我盯著演員化完妝、確定音控就位,然後開麥克風:「正式開始的時間是七點半,請各位來賓再稍等一下。」演出結束之後我撤走排練室裡的箱子,裡面是不同版本的劇本、後來才知道印貴了的 DM,以及不斷滲漏使整個箱子都是味道的漂白水。我第一次來拖地時自己摻水稀釋的漂白水。一整個下午我流汗,地板濕了又乾。觀眾鼓掌,我鞠躬致意,畢業後再也沒有遇見過系上同學。
⠀
找到工作後我在林森北路找到房子。八坪一個月一萬一,洗衣機共用,洗手台裝在客廳,冰箱在玄關。
⠀
陳京霈說要來看看我住的地方,我問約在哪,他叫我給他地址。我出門和他碰面,決定先吃晚餐,兩個人到我搬家時經過的麵攤。一碗榨菜肉絲麵八十塊。
⠀
「你知道布丁也辦臉書帳號了嗎?」陳京霈問。
⠀
「知道啊,不過我沒加她。」我吃麵。
⠀
那你會去她的婚禮嗎?他問。
⠀
應該不會吧,她又沒寄喜帖給我。我說。
⠀
從租屋處離開已經是晚上九點。我送陳京霈走一段。他說機車已經又送回高雄,台北的房子一退租就要先回家住了。之後呢?
⠀
「可能會考個研究所之類的。我想讀哲學。」
⠀
上班之後第一次長假,老家附近的捷運站孤獨地在工業區大路上靜坐,人潮以它為圓心遞減。說是人潮,其實也不過就是附近的餐廳、超商和一些賣水果的小販罷了。搭車回高雄,左營站的手扶梯上幾個中年人佔據了梯道左邊。一對少女應該是故意的,任誰也聽得見那樣交談:是怎樣?擋住左邊不能走啊。南部人怎麼這麼怪。
⠀
我想起在台北發生的十九歲。
⠀
來不及了,揮手攔計程車。一上車,司機丟一句:去哪裡?
⠀
在車上打電話給他。他又問我要不要去看電影,說以前那間電影院重新整修了,後來冬瓜茶大姊不在,也不曉得現在一張票多少錢了。
⠀
⠀
⠀
⠀
⠀
⠀
到北車找陳京霈
iifays.com/post/findingchenattaipeimainstation
⠀
宿舍 199X dorm.第二期《不等式》
蕭詒徽專欄「16161D」
2019 Nov. 11
⠀
訂購窗口
facebook.com/commerce/products/2341451175950854
同時也有25部Youtube影片,追蹤數超過3萬的網紅李祥數學,堪稱一絕,也在其Youtube影片中提到,線上課程賣場:https://changhsumath.1shop.tw/ewkhca 成為這個頻道的會員並獲得獎勵:https://www.youtube.com/channel/UCU2axN3MDyvq01LOK1umZGQ/join 追蹤我的ig:https://www.instagra...
「算幾不等式四項」的推薦目錄:
- 關於算幾不等式四項 在 蕭詒徽 Facebook 的最佳貼文
- 關於算幾不等式四項 在 Better Leaf 好葉 Facebook 的最佳解答
- 關於算幾不等式四項 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於算幾不等式四項 在 李祥數學,堪稱一絕 Youtube 的最佳貼文
- 關於算幾不等式四項 在 李祥數學,堪稱一絕 Youtube 的最佳貼文
- 關於算幾不等式四項 在 李祥數學,堪稱一絕 Youtube 的精選貼文
- 關於算幾不等式四項 在 [中學] 算幾不等式的四項延伸版a^4+b^4.... - 看板Math 的評價
- 關於算幾不等式四項 在 算幾不等式第4個證明- YouTube 的評價
- 關於算幾不等式四項 在 算幾不等式四大題型 - YouTube 的評價
- 關於算幾不等式四項 在 #算幾不等式 - 探索| Facebook 的評價
算幾不等式四項 在 Better Leaf 好葉 Facebook 的最佳解答
今天我要和大家分享的書叫《#高績效心智》,以其中4⃣個重點讓你的工作績效馬上翻5⃣倍。
.
.
本書作者莫頓.韓森(Morten T. Hansen)曾任教於哈佛商學院,也曾在波士頓顧問集團任職,為全球企業提供諮詢服務。他三度入選「全球50大管理思想家」🤩,被譽為「管理學界最有影響力的聲音」,是研究企業績效與個人表現的世界級權威💪
.
.
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
.
第1⃣,#高度專注貴精不貴多
.
在1911年,那時候南極點還沒被人征服。有兩只團隊登上了南極大陸,開始了一場極地競賽,競相成為踏上南極點的第一批人。
.
.
一支隊伍由🇬🇧英國皇家海軍司令 史考特所帶領,經費4萬英鎊💰,人手有65人。并使用5種交通工具登峰包括:狗,摩托雪橇,西伯利亞矮種馬,雪地滑板和人力拖拉。要是任何一種出了狀況,就用其他方式做後援。
.
.
另一支隊伍則是由🇳🇴挪威人亞孟森帶領,經費2萬英鎊💰,人手有19人,并使用一種交通工具去上山,也就是狗,用狗來拉雪橇。萬一這些雪橇犬耐不住或不肯前進,他的團隊就完了。
.
.
兩隊都須跨越400哩的冰障,攀爬一萬呎的高山,才能登上南極高原。上了南極高原後還要再前進400哩,才能到達南極點。屆時,他們還得忍耐華氏零下 60度的酷寒🤧🤧🤧、吹得讓人分不清東西南北的暴風雪,以及時速百哩呼嘯而過的狂風❄❄❄。
.
.
亞孟森和隊友爬上山巔,跨越深不見底的冰縫,在暴風雪中求生,甚至殺狗果腹。54天後,亞孟森和隊友終於站上南極點,在那裡插上挪威國旗🇳🇴,然後再跋涉1,600哩平安回到了基地。
.
.
史考特的隊伍則用了88天才抵達南極點。他們累到虛脫,餓得半死😩😩😩,卻發現挪威國旗已在風中飄揚。隆冬逼近,得趕緊踏上回程,但他們發現資源已經消耗殆盡,距離補給站還有11哩的路程。無奈下在風雪中忍受飢餓,用最後剩餘的一點氣力前行。
.
.
但希望終究幻滅。一場暴風雪來襲,他們的屍骨,連同帳篷,都被埋在大雪底下☠☠☠。
.
.
資源豐富的史考特,經費是亞孟森的兩倍,人手是亞孟森的三倍,并用上了5種交通工具。為什麼會輸得那麼的徹底,并飲恨而終呢🤔🤔🤔?
.
.
這是因為亞孟森只專注在一種交通工具,并把它做得最好。他特地請了一個最會挑狗的丹麥人,為他篩選在極地能力最好的雪橇犬,格陵蘭犬。甚至還請來了雪橇犬訓練大師哈瑟爾為他訓狗,并加入他的隊伍。
.
.
反觀史考特卻忙著準備5種交通方式,光是協調各種交通方式,就讓史考特大傷腦筋。由於摩托雪橇速度最慢,所以先出發。7天之後,矮種馬才上路。狗拉雪橇速度最快,因此最後出發。每一組的出發時間和行進速度都得互相配合,
.
.
史考特更在他的日記上寫道: “這支隊伍實在是太混亂了。”最後,整個隊伍都被拖慢了,多種交通方式就是導致他失敗并死亡最主要的原因。
.
.
這個南極競賽的故事,挑戰我們對工作的迷思。不管做什麼,我們都以為更努力準沒錯、多勞才是能者。
.
.
就像史考特費盡心思準備5種交通工具一樣,我們深信做得愈多,成就愈大。但你肯定早已發現,當你嘗試做愈多,實際上完成的可能愈少,做得愈多,並不保證結果愈好;想以多制勝,通常並非明智之舉。
.
.
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
.
第2⃣,#追求價值而非目標
.
史丹佛經濟學者潘卡維爾對各項工作績效進行了研究,發現當每週工時到了60小時以上,工作績效就開始下降,績效曲線因而變得平坦。超時工作到某個程度,績效反而下滑,
.
.
這就像榨橙汁🍊一樣,一開始可擠出很多汁,但如果一直擠,就算用力到手指關節發白,也只能再擠出一、兩滴。
.
.
工作也是一樣。如果你一週已工作50個小時,就別再做了。反之,你該問自己:“除了更賣命的工作,如何更聰明的工作呢?”
.
.
我們以為做的事情愈多,成就愈大。醫院以醫師看診人數的多寡來評估績效,而不是診斷的正確率。律師為客戶處理案件,不管服務品質為何,是按小時計費。銷售人員不管販售產品是否能讓顧客受惠,都能領到一定報酬。
.
.
有人攬了很多工作,用誇耀的語氣說自己有多忙,以為忙碌等於產值。然而,工作量如開多少會、加入多少工作小組、接多少顧客來電、拜訪多少顧客、出差或飛行哩程總數等等,都不必然會增加你的工作價值。
.
.
所以我們更應該專注于工作價值,而非目標。而價值等式取決於三個要素:
.
.
👉第一,你的工作能為他人或你的組織帶來多大的助益。比如你聽打逐字稿一分鐘能打多少字不是唯一重點,重要的還有這份逐字稿是否有助於他人。如果這份逐字稿一點也不重要,效益是零,價值也等於零。沒人要看,打再快也沒用。
.
.
👉第二,工作品質,包括正確性、洞見的新意及產出的穩定性。例如聽打逐字稿最好完全沒有錯誤
.
.
👉第三,工作效率,衡量的就是打逐字稿速度,每分鐘打個多少字。在價值等式當中,速度也很重要。如果你在聽打時,為了百分之百正確,速度變得很慢,每分鐘只能打10個字,工作價值就會受影響。
.
.
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
.
第3⃣,#觸動他人情緒來打動人心
.
很多人都以為,我們必須先提出理性訴求,別人才會支持我們的計畫和目標;運用邏輯和數據,詳細解釋為何要進行這樣的案子,別人就會贊同與支持我們的想法。
.
.
因此,我們的電郵信件或簡報總是太冗長,以為這樣就可以說服人甚至一封電郵不夠,還要多寄幾封,如果對方還是不贊同,就把理由再重述一遍。
.
.
然而,如果別人不聽你說,或不接收你的訊息,溝通再多遍,也只是白費工夫。而高績效人士就不會先把理性訴求搬上檯面,他們會用聰明方法進行說服。
.
.
2009年,名廚傑米.奧利佛 肩負一項艱難的任務:他必須去全美國飲食習慣最不健康的小鎮,杭廷頓說服當地居民改吃健康膳食。
.
.
奧利佛或許可以跟父母講道理,說服他們改變小孩子的飲食習慣。他也可以列舉可怕的事實: “那個小鎮有32%的人有病態肥胖的問題,每5個小孩裡,就有3個體重過重。”
.
.
然而,跟他們講道理似乎沒用。奧利佛知道他必須喚起大家的情緒才能進行有效地說服。於是他召集了父母和小孩子們到停車場,手裡拿著麥克風,指揮一部大卡車🚛開進來。
.
.
並把一堆動物脂肪倒在一個巨大的垃圾桶裡。讓眾人看到一座巨大、白色、令人作嘔的脂肪山😰😰😰,裡面還有一團團動來動去的脂肪。他跳進脂肪山,抓了一團,叫道:
.
“來,大家來摸摸看❗這就是全鎮小孩們一年吃下的脂肪❗”
.
“不要!”小朋友們都尖叫、嫌惡的後退🤮🤮🤮。父母則嚇得目瞪口呆。這樣具體的展示,強力衝擊了那些父母的心,憤怒和噁心喚起那些父母對現狀的負面情緒,接著奧利佛再用熱情感召他們參與這場飲食革命,並順利取得了父母們大力的支持💪!
.
.
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
.
第4⃣,#用使命感來感召行動
.
使命不只是公司或執行長努力的方向,而是每個人的目標。如果有強烈的使命感,就會有更好的表現。你可以用使命感來激勵他人,讓他們支持你的計畫和目標。
.
.
2015年,安捷倫科技公司,負責開發醫藥量測儀器的主管泰森,在講述部門策略時就用了這招。
.
.
一開始他引述很多數字和事實來描述他的策略,儘管他提到的數字和邏輯思維令人印象深刻,但有些觀眾卻懶洋洋的靠在椅背上,一副興致缺缺的樣子。
.
.
於是,他在總結的時候就播放了一段影片,影片中有個精神奕奕、熱愛運動的年輕女子。她名叫伍德,才22歲,已是肺癌第四期的病人。
.
.
伍德在影片中敘述生命科學儀器的進步和DNA定序,讓她得以利用分子標靶治療,并擊敗了肺癌。她說,她現在還好好活著,健康快樂。更是熱淚盈眶,向每位幫助過她的人致謝。
.
.
泰森播放這段影片時,觀眾都被這個年輕女子的故事所吸引住了,各個正襟危坐,不再偷偷摸摸的看手機。影片結束后,泰森說道:
“要不是我們開發的儀器,伍德就無法擊敗病魔。”
.
.
那時候全場鴉雀無聲,但幾乎看得到每個人頭上冒出的對話泡泡:這就是我們在這裡工作的原因。泰森精心策劃的結尾,使工作和強烈的使命感結合,讓員工們更加努力,幫助他達成目標🎯。
.
.
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
.
好了,這就是今天好葉和大家分享的《高績效心智》書中的其中4個重點,我們來回顧一下。
.
📍第一,高度專注,貴精不貴多,找出最重要的事,然後全力投入。
📍第二,重新設計工作,追求價值,而非目標。
📍第三,善於發揮影響力,要打動人心,先觸動他的情緒。
📍第四,利用使命感,能說服也能克服阻力。
.
.
不管什麼職位,都需要高績效,但99%的人都沒能真正做到聰明工作。而本書結合了7種高績效心智,並提出了各種實例案子,具體地教你應對各樣的職場困境。讓你成為工作中的佼佼者,絕對是一本高效工作的實戰指南。
.
.
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
.
最後,好葉剛剛在Himalaya的Podcast平台上架了哦,希望大家可以去那邊Follow一下,在那邊可以用聽的方式吸收好葉的內容,讓你在何時何刻,通勤,運動或是開車的時候,都可以用聽的方式學習新知識哦!
👉https://bit.ly/betterleaf-himalaya
.
.
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
.
索取好葉常用的5大投資公具
https://dedicated-teacher-1634.ck.page/4d00dd88d4
算幾不等式四項 在 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.
👏 歡迎轉載分享鼓掌
算幾不等式四項 在 李祥數學,堪稱一絕 Youtube 的最佳貼文
線上課程賣場:https://changhsumath.1shop.tw/ewkhca
成為這個頻道的會員並獲得獎勵:https://www.youtube.com/channel/UCU2axN3MDyvq01LOK1umZGQ/join
追蹤我的ig:https://www.instagram.com/garylee0617/
加入我的粉絲專頁:https://www.facebook.com/pg/garylee0617/
有問題來這裡發問:https://www.facebook.com/groups/577900652853942/
喜歡這支影片,記得按個"喜歡",並且分享
訂閱就可以看到最新的影片
你最棒,記得按鈴鐺^^
高中數學重要觀念解析:https://www.youtube.com/playlist?list=PLOAKxvSm6LGkzAh5k3h-CI0-clwS7xsWm
數學思考題型:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmx__4F2KucNWpEvr1rawkw
關於數學的兩三事:https://www.youtube.com/playlist?list=PLOAKxvSm6LGlD5ABfGtLkOhNIRfWxIRc5
真的祥知道:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmQC77bAQPdl_Bw5VK8KQc-
YouTube合作影片:https://www.youtube.com/playlist?list=PLOAKxvSm6LGlQk7b-jDmCaUjJ57UMSXsf
高中數學講座:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmgafYQliX1Ewh2Ajun9NNn
學測考前猜題:https://www.youtube.com/playlist?list=PLOAKxvSm6LGko-fghK4k3eZJ23pmWqN_k
指考數甲數乙總複習https://www.youtube.com/playlist?list=PLOAKxvSm6LGlrdoVFRflK46Cm25CGvLBr
統測考前猜題:https://www.youtube.com/playlist?list=PLOAKxvSm6LGkP_Nvl8iToZUWNfOHT42Pg
抖音精選:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmoWuzdrsxoeKQBR_GgZyIk
國中會考總複習:https://www.youtube.com/playlist?list=PLOAKxvSm6LGlbMqjF4W6ElHM_lrFZijkg
算幾不等式四項 在 李祥數學,堪稱一絕 Youtube 的最佳貼文
線上課程賣場:https://changhsumath.1shop.tw/ewkhca
成為這個頻道的會員並獲得獎勵:https://www.youtube.com/channel/UCU2axN3MDyvq01LOK1umZGQ/join
追蹤我的ig:https://www.instagram.com/garylee0617/
加入我的粉絲專頁:https://www.facebook.com/pg/garylee0617/
有問題來這裡發問:https://www.facebook.com/groups/577900652853942/
喜歡這支影片,記得按個"喜歡",並且分享
訂閱就可以看到最新的影片
你最棒,記得按鈴鐺^^
高中數學重要觀念解析:https://www.youtube.com/playlist?list=PLOAKxvSm6LGkzAh5k3h-CI0-clwS7xsWm
數學思考題型:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmx__4F2KucNWpEvr1rawkw
關於數學的兩三事:https://www.youtube.com/playlist?list=PLOAKxvSm6LGlD5ABfGtLkOhNIRfWxIRc5
真的祥知道:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmQC77bAQPdl_Bw5VK8KQc-
YouTube合作影片:https://www.youtube.com/playlist?list=PLOAKxvSm6LGlQk7b-jDmCaUjJ57UMSXsf
高中數學講座:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmgafYQliX1Ewh2Ajun9NNn
學測考前猜題:https://www.youtube.com/playlist?list=PLOAKxvSm6LGko-fghK4k3eZJ23pmWqN_k
指考數甲數乙總複習https://www.youtube.com/playlist?list=PLOAKxvSm6LGlrdoVFRflK46Cm25CGvLBr
統測考前猜題:https://www.youtube.com/playlist?list=PLOAKxvSm6LGkP_Nvl8iToZUWNfOHT42Pg
抖音精選:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmoWuzdrsxoeKQBR_GgZyIk
國中會考總複習:https://www.youtube.com/playlist?list=PLOAKxvSm6LGlbMqjF4W6ElHM_lrFZijkg
算幾不等式四項 在 李祥數學,堪稱一絕 Youtube 的精選貼文
線上課程賣場:https://changhsumath.1shop.tw/ewkhca
成為這個頻道的會員並獲得獎勵:https://www.youtube.com/channel/UCU2axN3MDyvq01LOK1umZGQ/join
追蹤我的ig:https://www.instagram.com/garylee0617/
加入我的粉絲專頁:https://www.facebook.com/pg/garylee0617/
有問題來這裡發問:https://www.facebook.com/groups/577900652853942/
喜歡這支影片,記得按個"喜歡",並且分享
訂閱就可以看到最新的影片
你最棒,記得按鈴鐺^^
高中數學重要觀念解析:https://www.youtube.com/playlist?list=PLOAKxvSm6LGkzAh5k3h-CI0-clwS7xsWm
數學思考題型:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmx__4F2KucNWpEvr1rawkw
關於數學的兩三事:https://www.youtube.com/playlist?list=PLOAKxvSm6LGlD5ABfGtLkOhNIRfWxIRc5
真的祥知道:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmQC77bAQPdl_Bw5VK8KQc-
YouTube合作影片:https://www.youtube.com/playlist?list=PLOAKxvSm6LGlQk7b-jDmCaUjJ57UMSXsf
高中數學講座:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmgafYQliX1Ewh2Ajun9NNn
學測考前猜題:https://www.youtube.com/playlist?list=PLOAKxvSm6LGko-fghK4k3eZJ23pmWqN_k
指考數甲數乙總複習https://www.youtube.com/playlist?list=PLOAKxvSm6LGlrdoVFRflK46Cm25CGvLBr
統測考前猜題:https://www.youtube.com/playlist?list=PLOAKxvSm6LGkP_Nvl8iToZUWNfOHT42Pg
抖音精選:https://www.youtube.com/playlist?list=PLOAKxvSm6LGmoWuzdrsxoeKQBR_GgZyIk
國中會考總複習:https://www.youtube.com/playlist?list=PLOAKxvSm6LGlbMqjF4W6ElHM_lrFZijkg
算幾不等式四項 在 算幾不等式第4個證明- YouTube 的推薦與評價
我們繼續來講 算幾不等式 的第四個證明。 ... <看更多>
算幾不等式四項 在 算幾不等式四大題型 - YouTube 的推薦與評價
求極值的方法除了[二次函數]與[科西不等式],[ 算幾不等式 ]是最重要的!!也是高一上第1次段考必考題目~花5分鐘好好了解吧!!!!!》影片內容由「©陳名數學」 ... ... <看更多>
算幾不等式四項 在 [中學] 算幾不等式的四項延伸版a^4+b^4.... - 看板Math 的推薦與評價
原題目為
若 a^2+b^2+c^2 = d^2 且a,b,c,d,λ 皆為正數
求 a^4 + b^4 + c^4 + d^4 >= λabcd 求λ的最大值為多少?
用基本算幾只能知道 λ = 4
加入 a^2 + b^2 + c^2 = d^2 答案給的λ= 4 sqrt(3) 4x根號3
想了老半天了… 不知道怎麼下手,想用空間向量來想… 但是也不知道怎麼轉4次方
超苦惱呀呀呀呀
還求大神幫幫忙~~~~~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.46.140.162 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Math/M.1668343646.A.704.html
... <看更多>