Uniswap,Sushiswap,Pancakswap…xxswap,2020年開始各大AMM百家爭鳴,幣圈玩家透過各式swap進行換幣,進一步玩質押挖礦、借貸、彩池等DeFi活動,而撇除流動性設計,其實一個換幣(Swap)合約是很容易的,簡單幾個function就可以完成了,本文將以5分鐘教你簡單部署swap合約。

在開始之前,必須要有的先備知識是「ERC20標準」。ERC20標準是經過社群通過且Openzepplin驗證通過公開發佈的代幣標準,除了標準的需具備Token name,Token symbol,Totalsupply和Decimal外,也有標準function:balancesOf,transfer,allowance,approve,transferFrom(後期加入mint,burn)。

其中:

transfer(address recipient,uint amount):msg.sender把amount數量ERC20代幣發給recipient

approve(address spender,uint amount):msg.sender授權spender可以動用自己amount數涼代幣

transferFrom(address sender,address recipient,uint amount):獲得approve的地址可以指定授權者(sender)把代幣發給recipient

allowance(address owner,address spender):可查看兩個地址間的授權代幣使用數量

接下來,就來開始寫合約吧:

1.首先我們會用到ERC20的interface

2.接著直接進入主合約,constructor 放入兩個幣種地址(address _token1,address _token2)並先宣告兩個ERC20。

constructor(address _token1,address _token2)public
ERC20 public token1;
ERC20 public token2;constructor(address _token1,address _token2)public{token1=ERC20(_token1);token2=ERC20(_token2);}

3.把一個交易對(兩個代幣)建立好後,就可以開始寫swap function了。首先我們引入ERC20的_safeTransferFrom,因為實際執行時我們不會直接用到這個function,所以用private function。

function _safeTransferFrom(ERC20 token,address sender,address recipient,uint amount)private{bool sent=token.transferFrom(sender,recipient,amount);require(sent,”Token transfer failed”);}

4.就快完成了,接下來就是最重要的swap function了,首先input包含 _amount1,_amount2,owner1,owner2,owner1轉_amount1數量的token1給owner2,owner2轉_amount2數量的token2給owner1。

接著寫三個require:

第一個是判定呼叫swap的人不是owner1就是owne2

第二個跟第三個是確保兩個owner要swap的兩種token數量都有超過他們approve給swap合約的數量。

接著執行兩個_safeTransferFrom,一個是owner1轉token1給owner2,另一個使owner2轉token2給owner1。

function swap
(uint _amount1,uint _amount2,address owner1,address owner2)
public
{
require(msg.sender==owner1 || msg.sender==owner2,”Not authorized”); require(token1.allowance(owner1,address(this))>=_amount1,”token1 allowance to low”); require(token2.allowance(owner2,address(this))>=_amount1,”token2 allowance to low”); /* transfer tokens */ _safeTransferFrom(token1,owner1,owner2,_amount1); _safeTransferFrom(token2,owner2,owner1,_amount2);
}

大功告成。

測試:

constructor() public ERC20Detailed(“TEST TOKEN”, “TEST”, 6){ _mint(msg.sender, 31000000 * 10 ** 18); }
//"TEST TOKEN"改成自己想要的token name,"TEST"是token symbol,6是Decimal,下面的31000000 * 10 ** 18是發行總量

以上就是簡單的swap合約,如果是要做合約跟owner swap的話只要稍微修改一下就可以了,大家可以自己試試看。(https://github.com/timmychien/solidity/blob/master/swap.sol)


Almost everyone know what NFT is now, and they have tried to mint all kinds of NFT to sell them to others in this bull market year of crypto asset.After one mint some NFTs,they would find a NFT marketplace and list their NFT on it for sale.Then,the decentralized marketplace get some fees from the sellers for offering some quick,efficient ways to sell their NFT.As the NFT market gets hotter, the marketplace get more reward.It seems to be a big business with a lot of profit,believe it or not, it’s just a piece of cake.

Now there are many Marketplaces make…


ㄧ、前言

準備研究所期間總是非常徬徨、也非常苦悶的,過去的半年還好有PTT、Dcard、Medium的大神學長姐們的心得文鼓勵才能讓我撐過大學期間最辛苦的半年,因此我也希望能夠循前人的模式帶給往後的學弟妹一點方向,也當作是半年來吸收前人經驗的一點回饋。

二、背景

119資管大四,系排大約5X%,有參加社團當過幹部

專案:區塊鏈DeFi(去中心化金融)應用,資服競賽只有進決賽,沒得獎

實習:兩個實習(一個在大四上,一個考完研後開始)

三、成績

雖然有正取,但其實也不算考太好,就不詳細列出來了。

我總共考了五間,分別是:

台大資管:正取

政大資管(科技組):一階未過

交大資財丙組(資料科學組):正取

清大資應:備取

中山資管(資結組):正取

四、投考策略

因為今年大部分學校都集中在2/1–2/9過年前就考完了,有些學校有卡到(例如:交大資財丙和成大資管、清大資應和交大資管),勢必要有所取捨,該如何選擇投考組合也是很重要的。

而我的選擇就是成大和交大資財丙選交大,因為成大名額兩組只有各8個而每年錄取率約4–5%,而資財丙雖然是今年第一年成立,但是以過往甲B組(也是只考計概)報名人數約30上下,或許選擇資財丙錄取率高一些,加上我的專題與金融科技相關,或許面試會比較有利,因此我選擇了資財丙(雖然錄取人數僅3人),而結果也證明我的選擇沒有錯,大家或許可以參考看看。再來,交大資管和清大資應,兩個系所都很棒,不過清大相對比較算是偏所,以前一年來看錄取率大約7%,比交大資管略高2%,錄取總人數也較多,加上只考計概跟英文(雖然過往的計概都不太容易),且沒有第二階段,因此我果斷選擇清大資應,結果…今年清大資應報名人數比去年暴增了100多個,直接變成資管相關研究所錄取率第二低的…(而且計概竟然考全選擇,完全失算),不過未來要選擇報考系所時清大資應還是可以納入考慮的。

而傳統的資管所部分,除了大家都會報的台大以外,政大我選考了科技組,一方面是我比較喜歡考有正確答案的考科,一方面科技組歷年錄取率高資管組不少,一但過一階也較容易上(台政口試時間會衝到),沒想到再次失策,今年錄取率創新低3.3%…,成為了今年資管所最難考的一個組,而我也不意外的一階就被本系刷掉了…

最後是報中山的部分,因為家人還是希望不要只報台清交成政,中字輩只少要報一間,因此我在央山之間選擇了中山(比較早考完,可以早點放假),中山相對中央題目難度也沒那麼高,以計概來說近年都考全選擇,多練熟考古題就可以把握住;而我有一些同學則是選考中央,這兩年改成聯招,可以計概MIS資結全考再填志願,不過報名人數比中山多上不少,若是要以中字輩保底的同學可以好好斟酌一下。

五、時間規劃

我大概是在升大三下的寒假報名的,報的是大x,報名的科目是六科含演算法(當初負責人說要考台大建議加報演算法,但其實題庫班洪逸就會把會考到的演算法全部複習一遍了),三下先看網路資料庫MIS的雲端課程,大概6月時一次把演算法上完,暑假開始上資結面授跟計概數位課程。

3月-6月

平常時上課,沒課的時候會看一點雲端,前期有固定每週看的時數,到學期中後段就有點沒那麽認真在看了,所以原本預計暑假開始前看完的計畫失敗…除了上課跟看雲端以外,因為三下開始需要投入更多時間在專案,所以我剩下的時間一部分投入在做專案,另一部分則是在自學一些技術或是看一些有的沒的技術文章,也花了不少時間耍廢(不良示範?)。

暑假期間

開始正式進入讀書關鍵衝刺期,專案也要全力衝刺,結果我又不小心拿到的一個實習,暑假有很大一部分時間被拿去上培訓課程,蠟燭三頭燒的我每天都忙得不可開交,也幾乎沒有時間耍廢,而我主要把時間切成三大部分:補習、培訓、做專案,培訓的時間大概是三個禮拜整天,這三個禮拜我只能利用晚上去上數位課程或是做專案,而其他五週,我除了假日要上資結面授外,其他平日的時間

做專案跟上數位/雲端課程交替進行,因為計概洪逸老師板書實在太多了,往往上一天抄完板書手就痠到無法隔天繼續上了,而我也把握暑假期間趕快把雲端還沒上完的在開學前一次補完;專案部分,我們這組情況特殊,基本上可以說是只有我跟另一位組員做了90%,最後能夠在9月中左右完成實在不敢相信,雖然常常都做到累得要死,但不可否認的是,做專案真的可以學到很多,而且未來面試時對自己的專案如果能夠暸若指掌那更是加分,所以考試生千萬不要當free rider還是要為自己的專案盡點心力。

開學到11月中

剛開學的兩三週還在把專案最後一小部分完成,完成後要開始寫報告書、系統文件等等,還要準備一些比賽、專案發表要用的海報、文件,還是蠻花時間的,直到11月初的資服競賽結束後才算是短暫告一段落,不過還是得要準備一個月後系上發表會,但幸好有比賽的一些文件,省了不少時間。

補習部分,9月底把計概跟送的程式語言8堂課上完,開始進行各科從頭複習,每週安排進度,如果沒有全部完成就會記錄到下一週要完成,盡量不要一直拖,如果能夠超前自己排的進度更好。而資結面授也趕在國慶連假那週上完了,我也開始從頭複習資結,我的時間分配是:30%計概40%資結

20%網路資料庫10%MIS,MIS分配的時間其實不算多,因為我主要還是報考資結組,其中兩間只有計概,所以我主力放在計概跟資結,還有一些時間讀偶爾會考但佔分較低的網路跟資料庫,MIS我只有從頭讀丁祺老師的講義一些重要的構面跟理論,沒有寫作業但會看一些時事當補充(近年台大MIS其實時事考蠻多的)。

另外,因為家人一直要我也推甄看看,所以我硬著頭皮推了本系,也豪不意外的沒進面試(誰知道考試又直接在第一階段把我刷掉了,被自己系刷掉兩次也是蠻丟臉的XD)。

12月到學期末

這段期間除了系上專案發表外,主要時間都在讀書,不斷複習,大概在11月初確定推甄沒過後也補報了題庫班,只報計概跟資結。專案結束後又是不斷的複習、寫題庫,另外也有加入MIS讀書會辦的計概考古題讀書會跟大家一起練計概考古題。簡單來說,這段時間就是不斷複習、寫題目。

(補充1:我大概從10月開始遠端實習,原本是簽到1月底,但後來確定推甄上不了後有跟公司提希望提早結束實習,讓我大概有20天自己可以完整利用的時間,現在回想起來,這20天實在至關重要,如果沒有這20天全力衝刺,或許我就要+365了…)

(補充2:12月後,我開始意識增加了一些讀MIS的時間,有看了孔令傑老師的平台策略、每天看數位時代、練習丁祺老師模考題,後來的讀書會也有討論台大資管所MIS期末考題,以及讀台大資管所MIS講義)

1月中到考試

學校大概1月第二週開始放假,我們要考研的同學幾乎都沒有回家繼續待在學校讀書,而且在最後兩個禮拜我們也組成了一個衝刺的讀書會,每天一早到達賢圖書館讀書讀到關門再回宿舍繼續讀,每天利用時間討論MIS、輪流出題互考,最後甚至每天8點一到就準時圖書館報到,直到考試前一天都維持這樣的作息,現在回想起來,實在是一段很辛苦但很難忘的日子。

六、各校攻略

台大資管

英文:英文今年比往年簡單許多,我大概早了快一小時交卷,多虧考前每天練一篇台政考古題維持手感,因為台大資管英文是有計分的(英文*1,計概*2,MIS*2)所以英文千萬不要放掉。

計概:今年改成選擇70%手寫30%,手寫考Binary Tree,資結組一定要好好把握手寫部分。

MIS:今年其實考蠻活的,幾乎沒有理論題,更多的是時事應用。Scrum剛好上學期剛上了IBM跟系上合開的數位創新沙龍有演練過,如果有系上的學弟妹不妨可以選修,是可以學到很多東西的好課。

交大資財丙

計概:因為第一年,到考前一刻我都還很忐忑到底會考什麼,有稍微背一下一些ML/DL的名詞,想說如果考更深的資料科學的題目就放掉了,結果…竟然意外親民,有考了15分區塊鏈相關,專題做區塊鏈的我寫得都會笑了,而且沒考資料科學!唯一比較難的可能是用C++實作衍生性金融商品定價模型,我看都沒看過還是硬著頭皮寫了一些東西,想說反正應該沒人會吧(?

寫完提早交卷整個心情很放鬆,應該算是五間中考完最放鬆的一間了。

清大資應

計概:歷年都考全非選,結果今年好像因為人太多改成全選,我看到題目整個傻眼,因為本來就抱著輕鬆應考的心態,寫完後也沒太認真檢查就交了(結果考完出來發粗心錯超多,如果沒粗心可能就正取了…)

英文:翻到最後一大題差點笑出來,40%閱測考10題,給一篇木馬屠城的由來順便帶出木馬程式,我心想:出題老師也太用心了吧哈哈。整體來說不難,考完就早早交卷回台北準備隔天的政大了。

政大資管(科技組)

計概:一看到題目就知道完了,完全沒準備資料科學相關的題目,結果考了快30分,考完就覺得涼了,但也大概猜到是系上哪個老師出的,如果未來想考科技組的可以去蕭舜文老師個人的網站裡面有一堂網路安全的資料科學課程內容,連兩年從課堂內容出題。

英文:今年也考得不難,政大跟其他學校不一樣,有英文作文,今年的題目剛好也蠻容易發揮的。

資結:歷年基本上都考考古題(是非40%+程式(演算法)60%),今年倒是只出了四題題組,印象中洪逸都有上到。整體來說資結今年也不難,以為有機會接近滿分,結果還差了一些…

中山資管(資結組)

政大考完休息一天才考中山,前一天因為大部分都考完了蠻放鬆的,只稍微重新寫了一遍近三年計概就去考了

計概:一樣都是選擇,比前一年又更簡單了,早早寫完就交卷出去休息了

資結:以為會跟去年一樣全選擇,考前沒特別準備什麼,結果考了全部非選,只有憑過去自己有的印象寫,剩下的就臨機應變

七、面試

陸續放榜後政大沒進面試心涼了一半,還好後面台大交大都進了,我們讀書會有進面試的人選擇不參加口模,自己組成自救會,利用兩天分別做政大跟台大模擬面試,大家輪流當考官跟面試考生,加上一些推甄同學提供的消息,讓我們事先做好準備,自己模擬的時候更加擬真,實際口試當天才能不怯場。

台大

跟往年一樣分資訊科技、資管、統計數學、生涯四關,但今年時間更短,只有3分半,所以整體來說就是非常緊湊,講沒多久就換關了,一下就面試完了。而各關被問到的題目大概是:

資訊科技關:問的是李瑞庭老師,我被問到Big Data跟Open Data分別是什麼並舉例?這題推甄有問,有稍微練習過,但有點緊張,回答還是有點卡,沒答完就換關了。我同學有被問的是舉兩個最新的資訊科技並說明應用。

統計數學關:有一張紙上面有題目,盧信銘老師會請你先自己讀一下,好了可以跟他說。我的是檢測個位數是否隨機分配,我回答用chi-square,因爲題目想太久,還沒算完就換關了。我同學有被問到的題目是p-value還有李家岩老師有問他作業研究(管理科學)相關修課經驗,如果有修過的可以回想一下當初這門課學了什麼。

生涯關:陳建錦老師依據備審資料問相關的問題,自己的備審要熟悉,有寫專案的也要很熟

資管關:我的最後一關,魏志平老師會先請你自我介紹,然後先抽一題,我抽到的第一題是:數位化跟資訊化的差異?剛好前幾天準備時看數位時代有一篇正好就在講數位轉型,我就大方的把大意整理給老師了,老師說很好。講完還有時間我就抽了第二題,是問競合關係,之前有讀到,就照印象講,老師有追問問題,我回答後老師也回應我說的很好,整體來說這關是最輕鬆的,因為魏志平老師人真的很好一直給予鼓勵,我其他同學也這麼認為。有同學抽到供應鏈斷鏈的問題。

交大資財丙

台大放榜前一天口試,本來想說如果台大偷跑我如果上了就不特地跑去新竹了,結果沒有如願。星期天一大早趕到交大,資財各組都是當天,所以管院都是人。資財各組都是一對多個教授口試,丙組是8分鐘,要帶四份自我介紹跟成績單當場給教授看。其實口試前幾天我也很緊張,因為筆試沒問資料科學相關的內容,很怕口試被問資料科學專業。還好從頭到尾都是在問我的專案跟工作經驗,最後問了一點修課內容時間就到了,面完終於鬆了一口氣,其實也不知道結果會如何,因為都沒問專業問題,看來只能看老師喜好了。

最後有去面試的台大交大依序放榜,竟然都有正取,實在太意外了,交大面試錄取率甚至不到兩成,能夠正取實在很感謝教授,我後來也再回去感謝交大土地公的保佑。

後記

這衝刺的半年,要感謝家人、老師、戰友們,尤其是找我加入計概考古題讀書會、考前衝刺讀書會、面試自救會裡面的夥伴,最後大家也都順利的考上了好學校,也感謝無數的學長姐心得文陪我度過半年考研的乏味生活,而這半年的考研之旅也驗證了一件事,讀書真的需要夥伴,才能互相督促,才會進步。這半年實在過得非常辛苦,我曾經告訴過自己,千萬不要重考,一次就要考上,也感謝半年來的自己,沒有中途放棄,才能成功迎向最後的終點。

感謝看完這冗長心得的每個你/妳,如果有需要110年清大資應/交大資財丙考古題的可以寄信給我:chien871101@gmail.com,我看到後就會分享給你/妳,或是有任何考研相關問題也都歡迎來信,希望可以幫助到你/妳!


2021的一開始迎來了一波幣價大漲(雖然昨天才經歷一波大回調…),而其中最令人驚艷的就是全球知名交易所幣安所發行的幣安幣,從農曆年前的80USDT在一週內瞬間翻了三倍以上,最高點甚至超過了340USDT,其他主流幣比特幣、以太幣也都迎來了歷史新高。另外,自從uniswap發布後,帶動了DeFi市場的興起,各種swap,sushiswap、pancakeswap也紛紛崛起,全球權威數據平台DeFi Pulse顯示,DeFi市場總市值應是從去年9月的110億美金翻了三倍以上最高點甚至曾經突破400億美金。那幣安智能鏈究竟是什麼呢?他與目前主流的以太坊又有什麼差別呢?而這麼多”swap”他們到底在做什麼,又為何能迅速帶動起市場呢?就讓我們一一來探索。

幣安智能鏈 (Binance Smart Chain ,BSC)

幣安本身已經有屬於自己的鏈叫做幣安鏈,而近期又發布了最新的幣安智能鏈(Binance Smart Chain),是一條可以運行智能合約的鏈,而這條鏈本身與以太坊極為相似且兼容以太坊虛擬機(EVM),主要使用的語言也是Solidity,對於過去熟悉以太坊的開發者來說非常容易上手,而幣安智能鏈目前主打的就是其交易驗證速度相對雍塞的以太坊快上許多,且手續費也便宜許多,因此吸引目前各大幣種與DeFi爭相加入。

幣安智能鏈採用的共識演算法為持有量授權證明(PoSA),而以太坊主網則仍是工作量證明(PoW)(雖然以太坊2.0已宣佈改採持有量證明(PoS),但目前仍為成為主流鏈),相比之下幣安智能鏈出塊時間約3秒,比以太坊快上許多,因而越來越廣為採用,未來也預計將成為一大主流鏈。

幣安智能鏈目前支援的代幣標準是BEP20,可對應至以太坊的ERC20標準,以太坊開發者在開發上可以無痛轉移,也有利於目前已在以太坊部署之加密貨幣加入BSC版本。

幣安智能鏈被設想為與現有幣安鏈相互獨立但互補的系統。雙鏈體系結構的使用是希望用戶可以將資產從一個區塊鏈無縫轉移到另一個,因而可在幣安鏈上享受快速交易,而強大的去中心化應用程序則在 BSC 上構建。通過這種相互操作性,用戶可以使用到滿足大量用例的廣闊生態系統。

目前的主流加密貨幣在幣安鏈上以“佩吉硬幣”的形式存在。這些是與本機鏈上的資產掛鉤的令牌。例如您可能決定鎖定 10 個 BTC 在幣安鏈上接收 10 個 BTCB 。您隨時可以將 10 個 BTCB 換成 10 個 BTC,表示 BTCB 的價格應與本地 BTC 的價格密切相關。通過這樣操作,您可以有效地將這些資產移植到幣安鏈上。

由於幣安智能鏈提供的靈活性,我們可以在不斷發展的 DeFi空間中使用許多不同鏈中的資產。諸如 PancakeSwap 等應用程序允許用戶以不信任的方式交換資產(類似於 Uniswap ),從事增產農業並投票提案。類似的項目包括 BurgerSwapBakerySwap

BSC(幣安智能鏈)vs波場(Tron)

以太坊(Ethereum)為目前大家所熟知的區塊鏈網路之一,但由於越來越多人加入導致以太方過度擁擠,也使得交易手續費不斷攀升,是近期頗為人詬病的地方,因此幣安智能鏈誕生了。那麼波場區塊鏈(Tron)又是什麼呢?

波場(Tron)是2017年由中國企業家孫宇晨(Justin Sun)所發布,整體的架構也與以太坊極為相似,甚至孫宇晨也不諱言的說波場就是複製以太坊的產物。波場過去也不斷強調其出塊速度完勝以太坊且交易手續費低廉,但其在鏈圈仍評價兩極,究竟是為什麼呢?

波場的共識機制極為特別雖然主體是持有量證明(PoS),但另設27位超級代表進行該區塊鏈網路的治理,每隔6小時重新評選,與目前的主流鏈相比不夠去中心化,且在安全上也有疑慮,因此在其發布的2年後就逐漸失去光芒,不過在去年下半年,創辦人孫宇晨又發布了三項DeFi新產品,是否能將波場再次帶向高峰仍值得觀察。

根據幣安研究院指出,波場的USDT集中度非常高,高達97.95%都在前50明的富豪手中,另外波場版本的USDT甚至是,其所發行的TRX總市值的2.6倍,這都是值得研究的;另外,波場目前主要支援兩種代幣標準:TRC-10(如:BTT),以及與以太坊 ERC-20 相同架構的 TRC-20。若不算進 USDT,只有八個項目能擠進前 1,000 市值。八個項目有 66% 的市值都在 BitTorrent(BTT)之上,有只集中於少數明星項目的問題。

根據數據網站 DApp.Review 的報告,在六月份 TRON 前 10 位熱門的 DApp 中,超過半數是賭場。類似詐騙的應用也很受歡迎。三大博弈類 DApp 是:888Tron、FIGHTRON 和 RocketGame,它們的每日交易量都超過 50 萬美元。

而波場所聲稱的每秒2000筆的交易速度也頗為人質疑,過去網絡安全測試服務 HackerOne 曾透露 :只需要一台電腦就有可能讓整個波場區塊鏈停擺。這個發現現實有單台機器發出的一連串的請求可以擠爆區塊鏈的CPU和內存,並執行一個DDoS攻擊。

綜觀以上,過去曾經試圖超越以太坊的波場區塊鏈仍存在許多問題,也正在試圖重返榮耀,而新加入的幣安智能鏈是否能一舉超越以太坊呢?在未來幾年內非常值得期待。

參考資料:

小記:

這是我的第一篇Medium,由於最近加入了區塊鏈新創被老闆問到有沒有在寫Medium的習慣,才發現我竟然從來沒發過文章,未來我也會努力多發文,也希望大家不吝指教,謝謝!

Timmy chien

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store