★★★每日一股☆☆☆ 2021/09/22 晴
【老王到了上周放假前一天都還在耳提面命全國會員跟觀眾,我是一個把風險意識擺在最前頭的人;因此在中秋連假之前,我給大家的唯一操作策略就是保持空手放心過節!事實上老王已經長達二周時間要求會員不准再買新股票了,這段期間台股跟櫃買也是一路下跌居多。今天台股長黑大跌超過350點,幾乎八成以上的股票全部都在跌,更不用說有一堆直接跳空重挫超過半根跌停的,您是連跑都不用跑!這就是長假帶來的危機啊,今天有多少人敢驕傲地說,他在放假之前就要求會員保持空手過節?一定很少嘛,因為上週五行情看起來很好啊,一堆人又跑去買股票了,對不對?就看起來而已啊,但實際的趨勢請問有改變嗎?完全沒有!櫃買市場在上周四跌破月均線之後就確認翻空,上周五一根長紅反彈又如何?我在上周五直播就清楚說了,上週整整跌了四天,也不過就反彈一天,這樣有什麼好開心?我說空方趨勢完全沒改變,櫃買市場反彈根本沒站回月均線,上頭也還有一堆均線壓力壓著!今天櫃買指數果然一度大跌2%又破底了!
大盤指數也是啊,我說沒有突破前高壓力就沒翻多,跌破一堆短期均線只剩一條最後月均線可以防守。這條月均線終究守不到中秋過後,跳空跌破確認台股進入空方趨勢!今天是有跳空缺口的喔,又有一堆均線壓力壓著;未來台股就要把缺口給封閉,還要站上所有均線才有可能止跌翻多。否則就會持續下探去測試五月份的前波低點,也就是我先前講過的第二隻腳。守得住前波低點就是黃金右腳嘛,守不住就是N字型下跌再跌一波!台股之所以在連假回來跳空重挫,還是在於美股大跌,這就是為什麼每次老王在長假之前,最常呼籲的就是空手過節!就像今天的農曆春節也是這樣要求會員,去年的農曆春節也是!這已經是標準的SOP了,尤其是美股在假期前就已經轉弱的情況,本來就應該要保持空手度過長假了。因為沒有一個人可以精準預測好幾天後的美股漲跌,懂嗎?但美股若在連假前出現轉弱或者翻空,您就要曉得放假期間的下跌風險非常高啊!我現在講的可不是馬後炮喔,我在上周二直播就清楚預告美股道瓊已經跌破季均線與前低正式翻空,周一這根長黑一度跌了快千點,暴跌破底能不能順利躲開?肯定可以啊!】
***每日一股免費開放轉貼分享***
老王給你問 #91 這集教你搶反彈,選強勢股還是弱勢股?修正乖離會到哪條線?回測支撐怎樣叫有守住?最後中秋佳節愉快!https://youtu.be/P8iVQ1CTbFw
2021/09/17【老王不只三分鐘】台股最後一盤急殺百點!化工族群跌破大量低點怎麼辦?EVA漲價為何只剩亞聚續強?不鏽鋼要有量才有人炒!高速傳輸USB4.0反彈有戲?https://youtu.be/w3tQYccpeMQ
【精華重播】鋼鐵人只剩中鋼一個人在飛?鎳價創高但不鏽鋼卻個股表現!https://youtu.be/-rmR4CBH5t0
-----------------------------------------------------------
※王倚隆(老王)為浦惠證券投顧分析師,本影片僅為心得分享且不收費,本資料僅提供參考,投資時應審慎評估!不對非特定人推薦買賣任何指數或股票買賣點位,投資請務必獨立思考操作,任何損失概與本頻道、本公司、本人無責。※
「我五行缺你心得」的推薦目錄:
- 關於我五行缺你心得 在 王董的大盤籌碼 Facebook 的最讚貼文
- 關於我五行缺你心得 在 蕾可 Reiko's Delights Facebook 的最佳貼文
- 關於我五行缺你心得 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於我五行缺你心得 在 [推薦] BL 靈異我五行缺你-西子緒完結- 看板YuanChuang 的評價
- 關於我五行缺你心得 在 #推薦#小說#我五行缺你 - BL板 | Dcard 的評價
- 關於我五行缺你心得 在 我五行缺你的推薦與評價,PTT、DCARD - 疑難雜症萬事通 的評價
- 關於我五行缺你心得 在 我五行缺你的推薦與評價,PTT、DCARD - 疑難雜症萬事通 的評價
- 關於我五行缺你心得 在 葭霏文創出版社- #進度公告#安知我意#黑天《安知 ... - Facebook 的評價
- 關於我五行缺你心得 在 [推薦] BL 靈異我五行缺你-西子緒完結- YuanChuang - PTT Web 的評價
- 關於我五行缺你心得 在 五行缺水PTT、五行缺金、五行ptt在PTT/mobile01評價與討論 的評價
- 關於我五行缺你心得 在 五行缺水PTT、五行缺金、五行ptt在PTT/mobile01評價與討論 的評價
- 關於我五行缺你心得 在 [請益] 請推薦風水或是鬼怪系列小說- yuanchuang - PTT學習區 的評價
- 關於我五行缺你心得 在 [書單] 這些年看過的BL書單十一- 看板YuanChuang - Mo PTT 的評價
- 關於我五行缺你心得 在 [書單] 一些隨手記錄的耽美心得- 看板YuanChuang - PTT網頁版 的評價
我五行缺你心得 在 蕾可 Reiko's Delights Facebook 的最佳貼文
期待已久的「#赫茲風格」第三團來囉! 🌝
https://groupbuyforms.tw/1rtqh 這裡購買
團購時間:10/02 13:00- 10/09 23:59
-
🔥滿千元免運費! 新朋友日本Steam Cream 蒸汽乳霜,也一起參加這次秋季團購喔!#從頭到尾解救乾荒警報 #47折超值軟管組合 #比買一送一划算
是這次友誼加入的🇯🇵#日本SteamCream (喜歡去日本的朋友們,應該很少人不知道,哈哈哈!)從東京車站到Loft百貨都看得到它的身影!(這次團購完要合作要再碰運氣了,組合超甜!這次沒有買到不要問我下回開團日唷!)#該來的時候它會來
-
《要了解更多 #蒸汽乳霜 介紹,歡迎加入蕾可社團!》
赫茲風格- 誠品優選品牌,時尚雜誌爭相報導!
#我和朋友說這真是卸妝界偉大發明
#赫茲布在手只要沾水就可清潔溜溜
產品心得介紹:
#卸妝赫茲布(好用到➡️粉絲好友們訊息要我開團
即使不化妝或全家大小擦防曬,就要作好溫和卸妝喔!(許多後天肌膚問題,大多源至清潔這一塊有沒有做好。)
☀️只要沾水擦拭,小朋友也不抗拒,不傷肌膚,不刺激,不流淚,不緊繃。
☀️獨特織法,成分溫和,無酒精、無香精、無螢光劑,照過紫外線殺菌才出廠,全程高規格照顧肌膚!
☀️不佔空間,幾乎零重量、不怕溢出、不怕乾掉,陪您上山下海,外出旅行,都那麼輕巧方便!(#愛露營愛運動朋友的最愛。#媽媽們顧小孩時還要卸妝的好東西❤️)
☀️適合所有膚質、孕婦小孩可用!無油不致粉刺,無香不致敏。
#紅之夢蘋果泡洗顏
上回直播中的團購黑馬!!洗掉你(老公)的暗沈👍 #上回老公洗臉洗完整個脫胎換骨
☀️用青森夢幻逸品的紅之夢蘋果,高度抗氧化多酚,減少肌膚氧化,亮白肌膚,佐燕麥精萃成分,鎮靜敏感肌膚,改善乾燥缺水問題,洗臉不怕乾澀!
☀️只要壓一下,就抓好一次洗臉泡泡的份量,不用辛苦費時搓泡泡,節省用量!
☀️泡泡細緻不過度拉扯肌膚,能深入毛孔,溫和帶走殘妝與髒污!這麼獨特的泡泡洗顏,只有這裡有!
#五行面膜
循照五行元素,金木水火土,因應我們肌膚28天代謝循環,做面面俱到的精華保養。
🔥生理期前:建議使用 「金」油水平衡,鎮定肌膚
「火」緊緻彈性,改善倦容
💧生理期中:「水」強效補水,加強肌膚抵禦。
🌳生理期後:建議使用「木」亮白肌膚好時機。
「土」修復潤澤,恢復光澤。
☀️市面唯一用高抗氧保濕的(沖繩月桃水)取代水,製作而成的面膜!
☀️高效成分敷後有感,皮膚會有緊緻蹦蹦感(不是乾的那種蹦喔!)超適合秋天容易外油內乾、或是乾燥蠟黃的皮膚迅速補水,各有所長,媲美精華液效果!五行面膜組合,給你五種肌膚大補貼!
👩🏻「蕾可的直播後記」
❣️赫茲風格很少給開團,因為它們產品相當獨特,也擁有很強的市場競爭力(這個不需要我說,有在發摟MIT保養品牌的朋友,就知道它們很有名!)
因緣際會在一個「精油芳療講座」接觸到赫茲布與五行面膜,(其實當天的主角是他牌精油!)
只是解說過程中,拿到主講人發的赫茲布卸妝,芳療實作完,搭配了主講人發的五行面膜⋯
我這個接觸過超多保養品牌的手、還有臉部肌膚。
馬上就回報我一個「這!!這是!!哇喔喔這產品也太強了。」的臉部發光!
(雖然字面很浮誇,但當時內心就是那麼想的。)
當天芳療講座的我與同行朋友包括我親妹,大家被征服的買了一組⋯(芳療精油,我很抱歉⋯)
也慕名請朋友牽線,認識其背後的偉大女人Hiromi (內心好多問題想問她!為什麼妳會想到開發這樣產品? 生產的理念?一種老饕遇到神廚的概念🙇🏻♀️)
也從合作的往來過程中,衍生出互相欣賞的情感,多了一個論工作到生活都合得來的朋友。
記得第一次去她的辦公室,原本要聊對於保養的想法,同樣喜歡品酒的我們,居然喝著喝著聊了超多生活的糗事,哈哈哈!
#無法隨便開團合作畢竟這裡都是很重要的粉絲好友
#還有不給隨便開團重視妳一手打造品牌如孩子的妳
❣️這是我們的第三團,好品質是值得時間考驗。
中秋連假的工商服務,願好友們都買的開心😆
我五行缺你心得 在 Taipei Ethereum Meetup Facebook 的最佳貼文
📜 [專欄新文章] Uniswap v2 實作 : 從創建交易對到Ether 換 Dai 投入 Compound
✍️ 田少谷 Shao
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Uniswap v2 實作 : 從創建交易對到Ether 換 Dai 投入 Compound
V̶y̶p̶e̶r̶ Solidity coding time!
Image source: https://uniswap.org/
Outline
一. 前言二. 程式碼結構 1. Wrapped Ether(WETH)? 2. Impermanent Loss三. 創建交易對 - 準備 Interfaces四. 注入資金 - 注意事項五. 兌換虛擬貨幣六. 取得報價作為預言機七. 自行兌換 WETH八. 結語
一. 前言
暨上一篇解釋了 Uniswap 的演算法後,由於個人有使用 Uniswap v2 的需求,因此整理後寫成本篇,希望能幫助到其他也需要用 Uniswap 的讀者!(不熟 Uniswap 的人也可以參考區塊勢 許明恩 Astro Hsu 寫的介紹文:點我)
Uniswap 解析:恆定乘積做市商模型 Constant Product Market Maker Model 的 Vyper 實作
本文希望透過實際操作 Uniswap 我個人會用到、我認為大家比較常會用到的功能,來讓不熟悉的讀者快速了解其程式架構(v2 相較 v1 繁複)、熟悉實作方法,無法顧及全部還請見諒。
以下實作的測試環境為 Rinkeby 測試網,由於只是要講解使用方法,因此選擇在 Remix 上操作。
而 Uniswap v2 跟 v1 的差異,個人沒有很認真研究,大致列舉以下幾點,本文只會就其中幾點在後方進行較詳細的解釋:
使用 Wrapped Ether, WETH (於 二. 程式碼結構 解釋),讓 ERC20 交易對不再需要透過 Ether ,降低 gas 的消耗,但還是可以用 Ether 支付
加入時間權重的預言機,降低被操縱價格的風險,於 六. 取得報價作為預言機 中舉例說明,有興趣者可以看看 白皮書 有詳細介紹
閃電貸
使用 Solidity 而非 Vyper,因為 Solidity 功能上較齊全,於 五. 兌換虛擬貨幣 中舉例說明原因
在開始之前,本文超長,播個背景音樂吧:
二. 程式碼結構
本段落簡單描述 Uniswap 程式碼各部分的功能。若讀者要自己實作,可以參考此處得知該去哪一份程式碼找相應的功能:
Factory / UniswapV2Factory.sol : 創建交易對、查詢交易對的地址與總數;查詢、指定交易對手續費的收款地址
Pair(ERC-20) / UniswapV2ERC20.sol : Uniswap 流動性代幣 ERC20 的部分
Pair / UniswapV2Pair.sol : Uniswap 流動性代幣的其他部分;查詢交易對資訊
Router / UniswapV2Router01.sol : 注入、取出流動性/資金;兌換虛擬貨幣。此合約看似最複雜,其實只是因為收付款的單位可以是 Ether 或是 ERC20,所以有很多重複的函式
ExampleOracleSimple.sol, ExampleSlidingWindowOracle.sol : 預言機的範例程式碼
Library / UniswapV2OracleLibrary.sol : 供預言機調用的函式
Library / UniswapV2Library.sol : 供內部調用的函式
除了描述程式碼結構,為了以下的實作我們還需要知道 Wrapped Ether 是什麼,順便了解其使用原因:
1. Wrapped Ether (WETH) ?
從字面上來解釋,Wrapped Ether 是被包起來的 Ether。那為什麼好好的 Ether 不用還要創造出另一版本,嫌這小小世界的術語不夠多嗎 (ETH, WETH, Dai, aDai, cDai, sDai…)?xD
wETH | ERC20 tradable version of ETH
主因有兩個:廣泛地說,Ether 是以太坊上的原生虛擬貨幣,但它與廣為使用的 ERC20 標準並不相容( ERC20 有 approve(), transfer() 等等功能);而針對 Uniswap 的場景來說,v1 的交易對都一定有 Ether,而使用 Ether 可能會造成 Impermanent Loss,於下方解釋。
因此,就以上兩點的解決方法個別是:
部署一 ERC20 <-> Ether 的兌換合約:使用者將 Ether 付給 Wrapped Ether (ERC20) 的智能合約,合約就會給使用者同等數目的 WETH;拿回 Ether 則有點不太一樣,方法是告訴 WETH 的合約使用者要 withdraw(),WETH 的合約就會把使用者 WETH 擁有的額度設回 0 (或減少) 並返還 Ether,於 五. 兌換虛擬貨幣 中舉例說明
v2 交易對的建立不再只能是 (Ether, ERC20),可以是 (ERC20, ERC20)
2. Impermanent Loss
Impermanent loss 在 DeFi 指的是像 Uniswap 這類用演算法的去中心化交易所,如果交易對是兩幣價不相干的虛擬貨幣,例如:穩定幣 (Dai, USDC, etc) 和 Ether,流動性提供者 liquidity provider 會因為幣價的相對波動而比起直接持有兩幣還損失了一筆。
容我舉個例解釋清楚點,可以搭配我上一篇所寫的 Uniswap 的演算法 來理解:假設一開始 1 Ether 幣價為 100 Dai,只有一流動性提供者 LP 投入了 1 Ether 及 100 Dai (1 * 100 = 100 = k,k值要維持不變),總價值為 200 Dai。當 Ether 的幣價來到 200 Dai,眼尖者會發現資金池中的 Ether 價格低、有利可圖,因此會進行套利,例如:拿 33 Dai 約可以換到 0.25 Ether (0.75 * 133 ≒ 100),比起市場上要用 50 Dai 才能換到 0.25 Ether,套利者賺到了。此時,流動性提供者若將自己的資金提出,0.75 Ether 和 133 Dai 此時的總價值是 283 Dai,看似比當初的 200 Dai 還多,但其實將兩幣放著不動 1 Ether + 100 Dai 在此時就已經是 300 Dai 的價值了。於是,impermanent loss 就變成了 permanent loss :(
三. 創建交易對
- 準備 Interfaces
在開始之前,由於使用到的合約不少,所以我將全部所需整理在此:點我。其中,UniswapImplementation.sol 是本文實作的檔案。
若讀者在自己調用 Interface 時遇到版本問題,就依照 compiler 提供的指示稍作修改即可。我所整理的合約都修正過版本的差異、以下的實作也測試了可行,因此可以安心使用。
進入正題
通常大家使用的 Uniswap 資金池都是已經存在的,而如果想要上架自己的虛擬貨幣就要自己創建一組新的交易對,有兩種方式:在 Uniswap 官網上執行或是透過呼叫 Uniswap 的合約來建立,本文使用合約的方式。
首先,我們需要決定資金池為哪兩種虛擬貨幣,那就很普通地選 ETH 和 Dai 吧。雖然選了 ETH,但如同上方所述實際上必須使用 WETH,於是記下其在 Rinkeby 上的位置 。Dai 就使用 Compound 部署在 Rinkeby 上的版本,位置在 0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa。
接著,打開 IUniswapVFactory.sol,依照官方文件的指示將此合約部署在 Rinkeby 上的 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f。以下會有許多由 Uniswap 文件得知的合約地址及其他資訊等等,就不再一一附上來源或畫面截圖!
如上圖黑框所示,輸入了地址後按下藍色按鍵就完成部署了。接著,如下圖將 Dai 的地址 及 WETH 的地址輸入 createPair():
由於這個交易對我已經部署過了,因此讀者若想嘗試就麻煩去找別的 Rinkeby 上的測試幣了、或自己發一個! 完成後可以用 getPair() 輸入兩幣地址來確認交易對被建立成功:
如果想要進一步核對,可以先呼叫下圖紅框中的 allPairsLength(),得知當前總共有幾組交易對,再將 (交易對數 - 1) 輸入 allPairs(),就能得到和上圖一樣的地址。需要減 1 是因為陣列的 index 從 0 開始。
allPairsLength 的值會因為其他人的使用而增加,故日後可能會和本圖產出的 9 不同
四. 注入資金
看到標題的讀者可能會想:為何要把注入資金/流動性和上方的創建交易對分開呢?因為注入流動性這個功能被放在了 UniswapV2Router01.sol 中,所以就分開解釋。
雖然上一節只需要複製貼上按按鍵,但接下來要探討的注入資金 addLiquidity() 及虛擬貨幣的交換 swap()比起創建交易對 createPair() 是較有可能被融入到其他 DeFi 服務的功能(應該不太會有人會一直需要創建新的交易對),因此打開 UniswapImplementation.sol、要開始 Solidity coding!
如果不熟悉為何別的 DeFi 會需要在自己的服務中使用 Uniswap,可以搜尋 DeFi Money Lego/ DeFi 樂高,顧名思義就是在一個 DeFi 服務上使用另一個 DeFi 服務。實際的例子有:Aave 的新功能是可以拿往 Uniswap 注入流動性後得到的流動性代幣再投入 Aave 來賺取利息,以及下一節兌換虛擬貨幣的功能可以在 Pelith 的輕鬆貸 EasyDai、一站式 DeFi 組合工具 Furucombo 等場景中看到他們如何將 Uniswap 銜接上其他的 DeFi 服務。
回歸正題
在開始之前,先簡單提及一下有哪些變數、instance 需要初始化:
我們要呼叫 Uniswap 合約的 instance 來進行互動: IUniswapV2Router01
不只需要 Dai 的 instance,也需要 Dai 和 WETH 的地址;DaiAmount 和 ETHAmount 是為了稍後注入流動性所設置的,本文假設第一筆流動性我們使用 200 Dai + 1 Ether
immutable 是版本 0.6.5 加入的,用途是讓變數只能被讀取 read-only,但不同於 constant 的是能夠在 constructor() 中賦值。之所以各 instance 的地址不一起加上 immutable ,是因為若加上了,這些地址就不能在 constructor() 中被使用
p.s. 由於 gist 沒有 Solidity 的 syntax highlighting,所以隨便用了 .js 請忽略
看完了初始設定後,由於我們目前鎖定的資金池是 Dai 及 ETH,因此使用如下的 addLiquidityETH() 此函式,可以直接匯入 ETH 及 Dai。
本處我使用長度為 3 的陣列 addLiquidityResult 來記錄注入資金後的返回值:注入 Ether 的數量、Dai 的數量及返回的 Uniswap 流動性代幣的數量。實際上應該要依照不同使用者記錄的他們執行 addLiquidity() 後各自的返還值
第五行中的 approve() 是為了讓 UniswapV2Router01 的合約能夠從我們部署的合約 UniswapImplementation 取得 200 Dai 的使用權
於第六行 addLiquidityETH() 後方的大括號 {value: ETHAmount},這是 Solidity 0.6.0 後版本如果要在呼叫 function 的同時送入 Ether 的標準寫法,以前的寫法 .value() 目前也還能用但 compiler 會給提示
addLiquidityETH() 的第三、四個參數為最少要成功注入的數量。使用者能夠成功注入的數量取決於資金池中兩虛擬貨幣當下的數量,而本處直接給 0 比較方便
這邊非常重要的是上述程式碼還欠缺了一個無法被寫在合約內的步驟:使用者要同意這個被部署的合約 UniswapImplementation 可以從自己的帳戶中轉出 200 Dai。因此,將 ERC20 (Dai) 部署在 Rinkeby 上的位置,也就是0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa,接著輸入被部署合約的地址以及 200 Dai = 200000000000000000000、按下 approve() 後準備作業完成,如下圖。
終於可以呼叫 addLiquidity() 了! 如下圖,在紅框中以 1 Ether 呼叫黑框中的 addLiquidity() 後,就能成功將資金注入到 liquidity pool 了! 由於本文寫在測試後,因此沒有留下第一次 addLiquidity() 的結果 :(
此處被部署的合約位置跟上方截圖不同,因為其中測試了一些東西所以重新部署qq
接著,可以拿出 IUniswapV2Pair.sol,將其部署在 三. 創建交易對 中成功部署的位置 0x03E6c12eF405AC3F642B9184eDed8E1322de1a9e,使用黑框中的 getReserves() 就可以看到資金池中確實有匯入的資金! (本處依然沒有第一次使用後的截圖,因此截圖只是為了讓讀者看到 getReserves() 的結果)
此圖黑框中的值代表:在資金池中,Dai的數量、Ether的數量及上一次匯入資金的時間戳記
- 注意事項
使用 addLiquidity() 時需要小心的地方是:除了第一筆注入的資金可以自行決定兩虛擬貨幣的數量,第二筆開始就會依照其演算法算出兩幣可以投入的各自數量,因此使用者放入的兩幣中可能會有部分的其中一幣被 Uniswap 返回。
上方的程式碼只是為了第一筆流動性所寫,如果不是第一筆的情況就需要用成功注入流動性後的返回值(例如筆者的作法是用一陣列 addLiquidityResult 來存結果)來把沒有成功注入的資金返回給使用者。
五. 兌換虛擬貨幣
本節使用的兌換功能依舊是來自 IUniswapV2Router01.sol。
由於兌換虛擬貨幣實際上只有五行不到的程式碼,那麼就來把兌換 Ether 而得到的 Dai… 投到 Compound 來賺取放款利息吧! (雖然只是在測試網) 如果覺得這個場景似曾相識,沒錯,這就是上面提到的 輕鬆貸 EasyDai 的不專業版本!
首先將 Ether 和 Dai 互換的邏輯完成:
Ether 換 Dai : 使用 swapExactETHForTokens(),給某數量的 Ether 能換多少 Dai 是多少
Dai 換 Ether : 使用 swapExactTokensForETH(),作法只差在要把 Dai 轉到當前合約,再同意 UniswapV2Router01 可以從當前合約把 Dai 轉走
兩個做法的第二個參數都是可以自行指定兌換的路徑,此處就直接給 WETH 和 Dai 的地址即可(順序有差)。需要注意的是這個路徑要是動態陣列 dynamic array,而這就是 Vyper 所不支援的功能! 動態陣列跟靜態陣列宣告方式的差別我有註解在程式碼中
此處就先來試試 Dai 換 Ether 吧!和上方一樣,在使用時也要先 approve() 當前合約,當前合約才能轉走使用者的 Dai。
由上方的截圖可以很清楚的看到 Dai 換 Ether 這個動作牽涉到的資金轉移路徑:
Dai: 我的帳戶→當前合約→交易對所在合約
WETH: 交易對所在合約→UniswapV2Router01
Ether: WETH 合約→UniswapV2Router01→我的帳戶
以上的路徑有些人稍微思考後可能會納悶:為什麼上方沒有一筆 WETH 從 UniswapV2Router01 再轉到 WETH 合約的動作呢? 這就是在 Wrapped Ether (WETH) ? 中提到的案例。原因是:把 WETH 還回 WETH 的合約時實際上使用的函示是 withdraw() 而非 transfer(),而在 WETH 合約中發生的只是把使用者 WETH 擁有的額度歸零或減少而已。
接下來就是把 Dai 轉到 Compound 的部分。由於 Compound 不是本文重點,此處只求功能正常,因此比起真正的實作方法當然是簡化許多。
一如往常初始化 Compound 合約的 instance
ETH 換 Dai 後放入 Compound : 將用 ETH 換得的 Dai 的數量,也就是 swapExactETHForTokens() 返回的第二個值,approve() Compound 的合約後就可以用 mint() 匯入了! 要注意的是,ETH 換成 Dai 後的收款地址(第四個參數)是當前合約,才能從此合約轉 Dai 到 Compound
還款給使用者: 用 redeem() 取出 Dai,一如往常同意 UniswapV2Router01 使用 Dai 的權力
之所以說這個程式碼不能真的拿來用是因為:cDai 轉給使用者、讓使用者自己持有是比較安全的作法;即使選擇把 cDai 留在當前合約,以上程式碼檢查 cDai 數量是用當前合約 address(this) 去檢查,實際上應該要去記錄每個使用者所擁有的 cDai 數量
最後附上截圖,可以看一下資金的轉移路徑:
ETH -> WETH -> Dai -> cDai (Compound)
cDai -> Dai -> WETH -> ETH
六. 取得報價作為預言機
若使用 Uniswap v1的報價作為預言機,攻擊者可以利用其演算法造成的滑點來操控價格。為此,Uniswap v2 提供了兩個加入時間權重的合約範例:
ExampleOracleSimple.sol : 簡單版
ExampleSlidingWindowOracle.sol : 複雜版;Sliding Window 在此場景是指透過改變擷取資料(歷史價格)的片段,用該特定期間的價格來做成時間權重,讓使用上更靈活!
本處以簡單版為例。打開 ExampleOracleSimple.sol,由於一些匯入檔案的問題我將 UniswapV2OracleLibrary 也放在這份檔案中。
做法非常簡單:將 UniswapV2Factory、Dai 及 WETH 所在的地址作為部署合約 ExampleOracleSimple 時的輸入值就完成了。部署成功後會有個 24 小時的鎖 Time lock,因為這個預言機是有時間權重的,所以並不是一部署完就能立刻使用。若要體驗更新價格此功能可以使用我部署的兩個,其位置我寫在註解中。
將 WETH 或是 Dai 的地址和要查詢的數量輸入 consult() 就能查到兩虛擬貨幣的價格:
1 ETH 價格約為 97 Dai
1 Dai 價格約為 0.01 ETH
然而,在測試網上我們沒辦法拿著預言機查到的價格套入演算法來核對,因為測試網上的 Uniswap 沒有啟用收費機制,而 k 值要在收費機制啟動時才能被計算,欲知詳情者就麻煩去看官方文件了!
七. 自行兌換 WETH
上方雖然有提到 WETH 在 Uniswap 中的使用原因及場合,但或許有人想試著自己動手將 Ether 換成 WETH、把 WETH 換回 Ether。方法非常簡單,將 WETH.sol 部署到 0xc778417E063141139Fce010982780140Aa0cD5Ab 就能使用,如下圖:
按下綠框中的 At Address 後,使用下方黑框中的 deposit 搭配在中間的黑框輸入所要兌換 Ether 的量,就能成功換到 WETH。同理,圖中未顯示的 withdraw 功能就是讓人輸入 WETH 來換回等量的 Ether。
稍微提一下,如果是第一次兌換,將 WETH 所在的地址輸入 Metamask 就能在錢包中看到自己擁有的 WETH 的數量,如下兩圖:
Voila!
八. 結語
呼,雖然上述操作及程式碼的撰寫其實還蠻簡單的,但畢竟 Uniswap 的功能不少、我個人也希望能將小細節解釋清楚些,因此長度遠超過預期...有看到結尾處的讀者,辛苦了xD 希望大家現在對於 Uniswap v2 的內容跟實作方法都很清楚了!
最後,如果本文有任何錯誤,請不吝提出,我會盡快做修正;而如果我的文章有幫助到你,可以看看我的其他文章,歡迎一起交流 :)
田少谷 Shao - Medium
Uniswap v2 實作 : 從創建交易對到Ether 換 Dai 投入 Compound was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
我五行缺你心得 在 #推薦#小說#我五行缺你 - BL板 | Dcard 的推薦與評價
除非大文荒,想想我入圈竟也有九年了,《我五行缺你》by西子緒(眼盲風水界大佬攻X穿騙子社會主義接班人受),是重生風水靈媒一類的,角色對話詼諧 ... ... <看更多>
我五行缺你心得 在 葭霏文創出版社- #進度公告#安知我意#黑天《安知 ... - Facebook 的推薦與評價
深夜看到人家泰版破雲的書盒外封給我氣的再來問一次:你們到底什麼時候出破雲?? 1 yr Report ... 氣死人誒我五行缺你是要等到民國幾年才能印啊 . 11 mos Report. ... <看更多>
我五行缺你心得 在 [推薦] BL 靈異我五行缺你-西子緒完結- 看板YuanChuang 的推薦與評價
文名:我五行缺你
作者:西子緒
網址:https://www.jjwxc.net/onebook.php?novelid=3146241
完成狀態:已完結
更新速度:
是否為VIP:是
分類Tag:
文案/簡介:
震驚!無辜公務員重生騙子身體,竟是被男人做出這種事……
風水界裡都說林逐水無所不知,無所不曉,現在看來,他唯一算錯的了,就是他和周嘉魚
的姻緣。
周嘉魚性溫,皮薄肉嫩,骨脆髓香。他萬萬沒想到,自己重生後最擔心的事,居然是不要
惹某人不高興以至於被解決掉。
周嘉魚:在重生之前我一直覺得自己會是個堅定的社會主義接班人,直到我變成了騙子,
還遇到個算命賊准的大佬。
林逐水:和我在一起不開心嗎?
周嘉魚:開心,我開心死了,大佬要是可以別每天思考關於我的菜單我就更開心了。
林逐水:不可以。
周嘉魚:……
風水文,眼盲風水界大佬攻X穿騙子社會主義接班人受,巨甜,甜過初戀。
心得:
挺好看的。
文章是由一個個的小故事組成,每個小故事的恐怖氣氛渲染得還不錯,但其實也沒有太可
怕,因為幾乎都是冤有頭債有主,沒做虧心事,看靈異小說也不用怕XDD
小受剛開始有點害怕攻,畢竟小受穿越成了一個騙子,差點被攻弄死,還好攻隱約察覺到
「周嘉魚」換了一個靈魂,不然剛復活的小受又要再掛一次了哈哈。小受個性溫和可愛,
有點沒心沒肺,三觀歷經了重建後益發背離社會主義接班人的路線,最後更和風水界大佬
林逐水談起了戀愛,這部份甜到齁。文裡小受的穿越是有原因的,後文會解釋,但這裡的
劇情就有點小虐了,我不劇透啦,只能說小虐完真的巨甜,可惜這文慢熱,小攻小受在一
起已經是在文一半以後的地方了,不過瑕不掩瑜,即使感情線比較慢,劇情依然不會讓人
覺得無聊,每個小故事都滿精彩的。
小攻個性比較冷,冷中帶著溫柔,對自己幾個徒弟和在意的人都很好,對周嘉魚就更好了
~周嘉魚最初也是以林逐水徒弟的身份在風水界亮相,不過林逐水並沒有正式收周嘉魚為
徒,因為林逐水一開始就大概知道周嘉魚是他命定的伴侶,只是命定的伴侶不代表一見鍾
情,林逐水和周嘉魚的感情是一次次事件後水到渠成的,告白那一段真心有趣又感動,後
文小虐那邊簡直讓人心疼,還好虐得不長,很快就甜回來了 o(^_^)o
文中幾個重要的配角也寫得很棒,好人真的很好,壞人真的很壞,因為執念走了偏路的角
色尤其鮮明,他們不算純粹的壞人,但為了達成自己的目標真可謂不擇手段,可憐又可恨
(嘆)。最後要說的是作者的文筆,雖然不是斐然成章,讀來卻還算流暢自然,偶爾一些
筆誤(我就當筆誤了)也可以忽略過去,畢竟劇情才是王道,讓人有慾望看下去的文就是
好文啦wwwwww 在此推薦給大家 ^_^
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.200.223
※ 編輯: sarah64566 (36.228.200.223), 10/05/2017 10:13:51
※ 編輯: sarah64566 (36.228.200.223), 10/05/2017 11:14:24
的相關文,但單獨看也沒什麼問題 (>﹏<)
※ 編輯: sarah64566 (36.228.200.223), 10/05/2017 11:44:20
《我五行缺你》單看也是很好看的~
※ 編輯: sarah64566 (36.228.200.223), 10/05/2017 14:10:18
鬼是無差別攻擊,這種的我可能會怕XD
※ 編輯: sarah64566 (36.228.200.223), 10/05/2017 19:01:40
※ 編輯: sarah64566 (36.228.200.223), 10/06/2017 04:49:52
※ 編輯: sarah64566 (36.228.200.223), 10/06/2017 15:07:05
※ 編輯: sarah64566 (36.228.200.223), 10/07/2017 09:12:53
※ 編輯: sarah64566 (36.228.200.223), 10/07/2017 10:42:33
復健計畫嗎?所以應該沒有很久吧?
文章就這麼没了,是有點可惜,如果作者可以把告白前後的戲份稍微調整一下就完美了,
但瑕不掩瑜,我還是很喜歡這篇文~
※ 編輯: sarah64566 (36.225.214.175), 10/08/2017 09:18:31
~^o^~ ~^o^~ ~^o^~
※ 編輯: sarah64566 (111.241.73.104), 10/11/2017 09:35:30
... <看更多>
相關內容