雖然這篇不等式移項變號鄉民發文沒有被收入到精華區:在不等式移項變號這個話題中,我們另外找到其它相關的精選爆讚文章
在 不等式移項變號產品中有10篇Facebook貼文,粉絲數超過3,460的網紅Taipei Ethereum Meetup,也在其Facebook貼文中提到, 📜 [專欄新文章] Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作 ✍️ 田少谷 Shao 📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使...
不等式移項變號 在 高均數學/升學帳 Instagram 的最佳解答
2021-08-19 01:57:45
易錯提醒 x²+3x+3 拋物線向上(a>0) 判別式D=3²-4×1×30) 判別式D=3²-4×1×1>0 故可能正、可能負. . 👨🏫不等式左右同乘正數時,不等式不變號; 而若同乘負數時,則不等式要變號。 . . 提醒大家在不等式左右同乘一數時 一定要注意正負的問題 如果同乘的數不一定正或...
不等式移項變號 在 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.
👏 歡迎轉載分享鼓掌
不等式移項變號 在 肯腦濕的人生相談室 Facebook 的最佳解答
[非常長政治文]
宣導投票的重要性後,總是要談談自己的想法囉!
先說結論:我支持蔡英文女士續任中華民國第十五屆總統
理由當然很簡單:這位總統有做到利於台灣短中長期發展的規劃及行動。
就簡單先以大經濟來說,台灣股市大盤指數過去五年走勢表現與美國相符,因此在美中貿易戰開打之際,仍能維持比中國亮眼的指數。從美國Yahoo!財經網站調出的數據顯示,過去五年各指數成長百分比為:美股S&P500 +57.62%;德股DAX +37.32%;台股TWII +30.79%;中股上證 -7.47% [1]。啊!你說蔡英文2016年中才上任,所以這表不準確?確定要再問下去嗎?那就看過去兩年各指數成長百分比為:美股S&P500 +17.49%;德股DAX -0.53%;台股TWII +10.79%;中股上證 -10.37% [1] 還要說靠中國才能發大財嗎?
當然經濟議題不只能看股市,畢竟股市中大量的資金還是掌握在法人手中,普通市井小民可能看得到吃不到,除了實際薪資所得以外,我們還可以拿GDP成長率來看。當中國一路從2010年的10.636%降到2018年的6.567%的時候 [2],台灣則是能從2016年的負成長一路攀升到2019年的中的2.191% [3]。雞蛋不能放在同一個籃子內,投資學101應該都說得很明白了。
必須說明我不否定馬英九總統前期的經濟數據表現,在全球經歷2008年底美國次貸風暴引起的全球多年蕭條中,台灣能夠在風雨中攀著當時相對獨立的中國經濟谷底反彈,也實屬幸運。但是後期過度依賴中國的政經環境已經著實對台灣局勢產生一定的風險,而在2016年政黨輪替時候蔡英文總統的團隊逐漸將台灣導向較正常的經貿關係中,而這也在2018年開始的中美貿易戰證明台灣沒有因此被影響太廣泛,甚至還暫收了一批國際轉單。
另外的議題就是在國家主權的支持。反對派批評民進黨逢中必反,但蔡英文總統身為國家元首,能在如此嚴峻的條件中繼續捍衛及維護中華民國台灣的尊嚴,在適當的情況下與中國希冀維持正常國與國關係,本就應該給予更多支持。中華人民共和國為世界絕大多數公認唯一的中國,但是部分在中華民國自由地區的人們還在做『一中各表』、『我們還能拿回大陸』的春秋大夢,聲稱與淪陷重災區彼岸同屬一個中國一家親。我能明白當年內戰敗陣下來的國民黨帶著眾多難民移居台灣,並期許『一年準備、二年反攻、三年掃蕩、五年成功』的那種情懷,後來蔣氏父子在台灣功過已有許多文獻及研究我就不多做說明。但曾與蘇俄接觸過的蔣經國在1982年時候明確指出『中共是不守信用的』[4],如今的國民黨人卻口口聲聲說要與中國和平相處,卻又在中國面前不敢吭ㄧ聲中華民國,然後每逢選舉拼命宣傳『對手當選中華民國就亡了』。這個邏輯也當然合理,就是『別人拿槍不投降就會被殺』的概念,只要不跟中國和平相處,解放軍就會直接開入台灣,所以不要跟他們對幹。接受一國兩制,真的沒事嗎?[5]
我最直接與中國接觸的經驗告訴我,沒這回事。現在的港澳模式其實只是做給台灣、世界看的,唯一差別在於目前中國並沒有直接的政治能力干涉他們所謂『台灣地區領導人』的任免權。一旦台灣人民藉由選舉選出一位親中的總統,港澳台模式的存在也就只會日漸薄弱,終至消失成為自治區體系。到時候別說國家,國號國徽國花國歌最好的情況也終降為特區體系。
讓親中的總統帶領台灣的確不代表馬上就會被中國統一,但是如果連國會和地方議會都被掌握在同個立場陣營手中,就算台灣是個民主法治國家,也難保不會再次發生半分忠、一分瑩的情況,讓台灣合理合法的被境外勢力干涉。這邏輯其實就像是A跟C沒直接關係,但是中間有個等式A=B和C=B是成立,那A=C也視為成立的遞移關係 (Transitive Relation) 。這種說法雖危言聳聽、卻也不無可能。看看一百五十年前的夏威夷王國,就是在類似的關係下最終被合法併入美國領土。[6]
所以,現階段我認同蔡英文總統副手賴清德在擔任行政院長時期宣示過的『台灣是個主權獨立的國家,名字叫中華民國』。但是這句話的盲點在於,中華民國現在還是包含著『中國China』這個元素在國際上,如前述所言,中華人民共和國早自六十年前開始就已經取代中華民國成為世界主流認可的中國。這在國際上產生的混淆就是:「到底是台灣還是中國?」所以如果十天後台灣人民認可蔡英文繼續擔任總統,她所會遇到的下個燒手蕃薯之一就是,要以何種自決繼續在國際上發聲,而這不只需要民聲,更需要在行政和立法程序上完備。[7]
講完落落長的主權,我在能源議題上也是對蔡英文的褒大於貶。台灣自現代化以來,能源自給率長期是低於5%,運輸上仰賴海運將石化原料進口至台灣後再加工分配至各使用端。能源議題上過去我一直贊成所謂『以核養綠』的主要原因在於看不到當時政府對於核能的替代方案有什麼較實際的解法,甚至目睹當年英華威要退出台灣市場,起因自躺在立法院超過五年的再生能源發展條例。過去這三年離岸風力發電在台灣吵得沸沸揚揚,但是還是推下去了。離岸風電和太陽能都有其嚴重缺點,但是在當下廢核和空汙議題當紅又地狹人稠的台灣,可能是不得不推行的政策。我看到了政策的改變與推行,核能可不再是必須選項,而這也算是部分解決當年蔡英文剛當選時候我內心的疑問,能源自給和綠能必須逐年增加比例。(參:https://www.facebook.com/alexanderl…/posts/10153376347207543)
核電立場我同意繼承馬英九早期在日本東北大震後的『核一二三不延役』[8]政策,而核四已經實質進入封存階段也不宜貿然啟用的情況下,我還是抱持早期我的立場(參:https://www.facebook.com/alexanderliu…/posts/224155334376091) 核電的缺口不能回歸舊有的石化火力發電系統,這部分也希望藉由盧秀燕的『強力執行』,施加壓力讓執政當局加強推行替代能源的力道。而我就不專業也不經濟的立場,建議除了台電自建、民營躉購,更可推行分散式能源系統以及獎勵強制綠建築等不只開源也節流的方式,達到提升能源自給。像是Google和facebook等公司在建立資料中心的同時,都有一定的綠建築標準和全綠電要求。這部分也是政府可以效法,甚至制定綠能採購管理辦法加強公部門的綠化。[9]
能源在台灣不只是民生議題,更是國安政策。提升台灣能源自給率及能源安全,才能更加強台灣的主權維護。
當然還有許多政策諸如同婚、年改、勞工等議題上我也是對蔡英文多有褒揚,但現在也就不贅述太多細節了。這邊我提出三大項目說明為什麼蔡英文會得到我的認同,而其實還有人格因素就在於這次她的主要對手,我看不到他的誠信在哪,更不可能放心把國家交給他治理。四年前的選戰和今天對比,我看到蔡英文盡最大努力的協調達成她所提出的政見、在維護國家主權不遺餘力。相比較,對手沈寂政壇後突然復出,然後得到多數高雄市民的期望後,再一一反問質疑他沒完成政見的聲音,半年後理所當然地投入總統選舉。如果該候選人一直與中國為友甚至自認是正統中華繼承,請看看《說文解字》中說:『信,誠也,從人,從言。』以及《論語.為政第二》,原文寫道:子曰:『人而無信,不知其可也。大車無輗,小車無軏,其何以行之哉?』
距離我上次發表政治立場的文章已經過好多年,期間自我期許能夠減少立場衝突、增加理性討論而不斷地避免與其他人談論政治敏感議題,卻不自覺的踏入以前厭惡的『政治冷感人』。而在這次大啖芒果乾之餘,我決定挺身而出,這番言論絕對會影響我日後進出中國時的社群審查,但是為了台灣、為了這塊生我養育的土地,是時候該出聲了。
#2020台灣要贏
[1. Yahoo! Finance, https://finance.yahoo.com/quote/%5EGSPC/chart?p=%5EGSPC]
[2. The World Bank Data, https://data.worldbank.org/country/china]
[3. CEIC Data, https://www.ceicdata.com/en/indicator/taiwan/real-gdp-growth]
[4. 汪浩觀點:蔣經國為什麼反對「一國兩制」, https://www.storm.mg/article/298278]
[5. 向中共投降,最慘絕對是軍公教!, https://www.storm.mg/lifestyle/886237]
[6. Overthrow of the Hawaiian Kingdom, https://en.wikipedia.org/…/Overthrow_of_the_Hawaiian_Kingdom]
[7. 台灣為什麼得不到承認?──關於「國家」,你應該知道這些事, https://goo.gl/kA3IRL]
[8. 馬總統公布能源政策, https://e-info.org.tw/node/71380]
[9. 不要核電、又不要燃煤的台灣,電力從「屋頂」來夠嗎?, https://www.thenewslens.com/article/81974]
Photo Credit: 蔡英文 Tsai Ing-wen
https://www.facebook.com/photo/?fbid=10156339279141065
===更一===
開地球送火星
歡迎整篇轉發分享,讓不只同溫層的看到!
===更二===
加強能源第一二段的論述及誠信第一段加詞
謝謝各位的愛戴與指教
不等式移項變號 在 臨床心理師的腦中小劇場 Facebook 的最佳貼文
【腦中小劇場 第51場 這些人,是真的看不懂國字嗎?】
我很懷念九十分鐘前,她剛坐下來的樣子。
她穿著有機棉質的藍染洋裝,筆記本是以再生紙釘裝而成,肩包看起來也是自己縫的,因為我在永樂市場看過同款布面,日本進口,橘綠相間,線條彎出漂亮的弧度。恐怖的是,在我行完這場注目禮之後,她已經在餐盤上做好垃圾分類,環保鋼杯插上玻璃吸管,跟我們這種隨口說說做環保的人相比,她整個身體都在做環保。
她正在進行日文翻譯,而且是比較老派風格的那種,完全不靠電腦,一邊翻字典,一邊看著原稿一字一句謄入筆記本。年近三十,頂著深褐色的奧黛莉赫本頭,素顏,粉色護唇膏是臉上唯一的加工品。在那一刻,我才發現原來一個人的氣質是有形狀的,它從赫本頭的天靈蓋緩緩發散,就像柏油路上的蒸氣,份量足以完爆咖啡店文青幾百條街,即便她只是坐在速食店長桌一隅,而我則是坐在她對面的幸運大叔。
完美的早晨,因此誰也沒料到九十分鐘後,她會在倒垃圾的前一秒爆炸。
「這些人,都看不懂國字嗎!」
形式是問句,結尾卻是驚嘆號,而現場就跟我上傳的這張照片一樣災難,就客觀結果來看,這些人可能真的看不懂國字。無論是「塑膠杯」、「塑膠蓋」或是「塑膠餐具」的投入孔,全都堆滿了紙杯,很明顯,苦心設計這些塑膠分類貼紙的人完全被塑膠了。
於是赫本頭的天靈蓋開始噴發怨氣,她義憤填膺地抽出那三疊紙杯,丟進右下方寫著「紙容器回收」的垃圾桶裡,接著做了一個出乎意料的舉動,當然我也很希望是走過來跟我要電話,但很遺憾她完全沒鳥我,而是一屁股坐在垃圾桶旁的座位,當起環保小尖兵。
她的天靈蓋切換成感應儀,眼色凌厲地掃視每個有可能誤觸紅線的人,結果這作法居然有幾分震懾效果,在那期間大家又突然看得懂國字了。可惜十五分鐘之後,她前腳一走,現場又是一片狼籍,實況就是我上傳的這張照片。赫本頭離開時,並沒有因為短暫的榮景而感到喜悅,相反地她的表情非常失望,完美的早晨,結局卻那麼令人唏噓。
因為事實是,那些人都看得懂國字,因此赫本頭氣的是,大家明知故犯!
倘若能倒轉那十五分鐘,或許我可以展現紳士風度,坐在她面前,重新推敲整件事的因果始末。坦白說,要和赫本頭一起站著罵當然很過癮,說不定還能順勢推書吸粉,但身為心如止水的正直大叔,我寧可和她一起坐著想,畢竟一個人不認識字,可以當成個案處理,但當一群人同時不認識字時,或許就是一種社會現象了。對社會現象發火,就跟對氣象發火一樣徒勞,倒不如試著理解它的運作歷程,再來決定要花多少力氣在它身上。
首先,在判斷這些人是否明知故犯之前,我們必須先了解一件事,那就是「速食店曾改過遊戲規則」。在更早之前,那三個圓形杯孔確實是拿來丟紙杯的,其餘的紙製品或塑膠製品則是丟入下方的「一般垃圾」與「資源回收」圾圾桶,而這做法已行之有年。因此,與其說這些人明知故犯或看不懂國字,倒不如說「積習難改」,因為整件事的前半段,比較像是某種無意識的反射動作。畢竟我們已經很習慣那三個孔就是拿來丟紙杯,一旦習慣成形,大腦便不會再花時間與資源去判讀那些國字的意涵。在那當下,它們只是一堆曲線與方塊的組合,沒有任何意義,就像你老闆大半夜傳來的那些靠北簡訊一樣。
積習難改,與神經構造息息相關。
所謂習慣,指的就是「在不過度佔用大腦資源的情況下,能迅速應付外界刺激的固定反應」。在我們的大腦中,有一組系統負責習慣的養成,那就是基底核(Basal ganglia)與紋狀體(Striatum)。
基底核長得有點像蝸牛,它的構造包含了尾狀核、殼核與杏仁核,前兩者相加就是紋狀體。一般來說,人面對「外界刺激」,通常會出現「行為反應」,紋狀體是這條連結的基礎,而整組蝸牛系統的作用,就是幫助我們進行「連結學習」。
一旦刺激與反應形成了聯繫,人不斷重複某種行為,就會逐漸強化感覺運動皮質與紋狀體之間的「習慣迴路」(Ann M. Graybiel & Kyle S. Smith,2014)。行為越熟練,迴路越穩定,需要動用的腦內資源也就相對減少,因此大腦當接收到某些熟悉的外界刺激之後,便會下意識地作出自動化反應,習慣因而養成。
然而人的注意力極其有限且珍貴,一旦建立了便捷的神經迴路,大腦會自動地不再注意或意識到這些穩定的迴路,而將注意力轉移到其他事物上(郭乃文,2014),因此許多下意識的反應便由此而來,譬如分辨男女廁、開車打方向燈或隨手丟紙杯。但試想有一天,當男女廁標誌的顏色互換,情況就會變得很刺激,置身右駕的國家,想打燈的駕駛便會不停開雨刷。文字明明都看得懂,身體卻不聽使喚,因為我們被意識的慣性給蒙蔽了。
因此在那個完美的早晨,當大家看到垃圾桶上的杯孔時,這畫面經由視神經送進大腦,紋狀體的習慣迴路瞬間開啟,大腦決定不花時間辨識杯孔,於是接下來的三秒我們成了一具活屍。我們會自動跳過垃圾桶的告示與文字,將注意力和大腦資源留給待會要傳的簡訊,或是做到一半的專案簡報,接著隨手一抬,不假思索地將紙杯丟進塑膠杯的杯孔。
但是,這只是事件的前半段。
有人會在丟完紙杯後瀟灑離場,完全沒意識到自己出包。但也有些人的大腦硬是擠出了一些資源,在空隙間認出那幾個國字,然後發現自己丟錯孔了。不幸的是,他們依然選擇將錯就錯,將紙杯留在原地,為什麼?
因為「從眾行為」(Conformity)+「責任分散」(Diffusion of Responsibility)
從眾一詞,指的是「人們會採納與團體成員相同行為和意見的傾向,以符合『社會期待』」。白話一點是「反正大家都這樣搞,不差我一個」。只要眾人一起做同一件事,無論對錯,都會產生壓倒性的份量,當天平往同一側傾斜,立場就能站得穩,這就是群眾的力量。
更重要的是,這件事的後果並不嚴重,如果今天丟錯就要罰一萬二,我保證這個垃圾桶會成為鎮店之寶。但由於沒有明確的懲處機制,即便出錯也還有人能善後,於是在從眾行為的框架下,出現了「責任分散」的效果。望著那堆疊疊樂紙杯,他們並不會覺得自己犯下什麼滔天大罪,這件事在他們心中的意義,與篤行環保的赫本頭截然不同,因此他們會認為「丟錯也沒差,大家都一樣,反正還有工讀生會過來收拾。」
因此在那一刻,人們缺的不是環保意識,而是一個「把紙杯拿起來」的理由。
可惜的是,我沒能好好利用那十五分鐘。於是赫本頭推開玻璃門之後,依舊會把明知故犯當作是缺乏環保與道德意識的惡行,我相信這當中一定有人揣懷惡意,但也有可能是下列這組紋狀體與社會心理交互作用後的等式:
「明知故犯」=「積習難改」+「從眾效應」+「責任分散」
那該怎麼辦呢?
就行為改變技術的原理而言,無論是「增加暗示」、「提供酬賞」或「祭出罰則」,都是可行的做法,但最重要的關鍵,是「切斷刺激與反應之間的連結」,在此小劇場提供幾個方法:
● 切斷連結:
依照本例,外界刺激是「圓形杯孔」,行為反應則是「丟杯子」。因此,若將「塑膠餐具」和「塑膠杯蓋」兩處的投入孔設計成非圓形,譬如將「塑膠餐具」投入孔改為三角形,「塑膠杯蓋」投入孔改為直條形,或許就能打破「圓形投入孔→投入紙杯」的連結。因為一旦當紙杯與投入孔的形狀相互牴觸,警鐘一響,人就會立刻被拉回現實,試著閱讀貼紙上的文字。當然,礙於商家成本考量(不願重新設計垃圾桶),這做法不一定行得通,而且即便這樣做,「塑膠杯」那一孔可能還是會堆得跟101一樣高,因此需要第二招。
● 增加暗示:
直接在「塑膠杯」投入孔放進幾個塑膠杯做為提示,順便把幾個比出愛心手勢的歐巴笑臉一併貼上去,除了能讓活屍瞬間清醒,也能藉以帶動從眾行為。
● 提供酬賞:
在商家原有的App中建置獎勵程式,無論是「將塑膠杯投入杯孔」,或「將紙杯丟進紙容器回收桶」,都可以拍照上傳,獲得折價券一張。台灣人很喜歡折價券,就算是只有97折大家也不會在意,但我比較希望他們能送搖搖粉。此法建議一天只能登錄一組帳號,否則馬上就會有阿北阿桑卡在垃圾桶前搶著為大家服務。
● 祭出罰則:
設計一款紙杯感應探測器,一旦杯孔放進紙杯,整間餐廳就會出現「你這魯蛇給我醒來!」之類的嘶吼聲,原理是利用消費者的創傷經驗來遏止歪風,亂世用重典。但這款我今天才想到的感應器製作成本不明,而且無法排除有些孩子就是喜歡聽大人抓狂的聲音,加上店家可能會因而深陷Google評分一顆星的地獄,或許請赫本頭直接對監視器開噴還比較划算。
● 直接把垃圾桶放在櫃台旁:
這是一種「大家都在看」的強力監督法,即便異味會嚴重影響業績,但為了尊嚴,店家也要咬牙撩落去,以壯士斷腕的決心,和亂丟紙杯的消費者直球對決,撐到最後保證不會有人丟,因為根本不會有人進來買。店經理記住,如果有任何人提出這個方法,他一定是對手派來的臥底。
● 讓時間解決一切:
這也是我想告訴赫本頭的。每一項政策變動都會有陣痛期,所謂明知故犯,或許是惡意,也可能是被慣性牽制後的人之常情,但若把那些不經意全盤歸納為惡意,只會讓我們更往心裡去。畢竟無論如何,短時間內我們都無力回天,與其上網公審,我還是比較傾向去理解人,因此最折衷的做法,就是一邊靠北,一邊順手把那些紙杯丟進垃圾桶,然後讓時間來矯正大家的習慣。不必感到悲哀,因為有時後退一步,無關屈服,而是為了把世界看得更清楚。
親愛的讀者,無論是紋狀體作祟,或是社會心理作用,都只能拿來牽拖一次喔,下一次,請記得把紙杯丟進紙容器回收桶吧。
參考文獻:
Ann M. Graybiel & Kyle S. Smith (2014). How the Brain Makes and Breaks Habits.從腦養成好習慣(林雅玲譯)。中文版《科學人》,八月刊,52-57.台北:遠流出版社
郭乃文(2014)。積習可改-以神經心理學為基礎。中文版《科學人》,八月刊,58-62.台北:遠流出版社
#紋狀體
#從眾行為