[爆卦]倒三角形符號念法是什麼?優點缺點精華區懶人包

雖然這篇倒三角形符號念法鄉民發文沒有被收入到精華區:在倒三角形符號念法這個話題中,我們另外找到其它相關的精選爆讚文章

在 倒三角形符號念法產品中有6篇Facebook貼文,粉絲數超過5萬的網紅大V生活,也在其Facebook貼文中提到, 2021.09.26 Kidsread新品直播筆記 🔸下單連結:https://gbf.tw/qofy3 拿不定主意要買什麼?救救媽咪破荷包line社群陪你即時討論:https://reurl.cc/Q6jkEb 🔸若第一次購買不知從何下手… →可以從蒙芽包開始!(第一次入坑的基本書單) →若有預...

  • 倒三角形符號念法 在 大V生活 Facebook 的最佳貼文

    2021-09-26 22:08:35
    有 411 人按讚

    2021.09.26 Kidsread新品直播筆記
    🔸下單連結:https://gbf.tw/qofy3
    拿不定主意要買什麼?救救媽咪破荷包line社群陪你即時討論:https://reurl.cc/Q6jkEb

    🔸若第一次購買不知從何下手…
    →可以從蒙芽包開始!(第一次入坑的基本書單)
    →若有預算考量,可以從KB1+JPR開始
    →新品有特別優惠可考慮本團購入
    →非新品的團購價都一樣,就不急著馬上購入
    →團購頻率大概半年開團一次
    →買半年內用的到的書即可,不要買太久的書目

    🔸關於救救媽咪破喉嚨( ♪見5:40)
    →希望每個人都可以感染另外一個人,試試看正向教養或是試試看另一種跟孩子對談的方式
    →希望大家在一起的時間可以多一些正能量,鼓勵你可以試試看更好的方向或是換一種做法
    →若在早教方面受挫又沒人可以討論時,歡迎加入破喉嚨
    →在英文早教而言,沒有真的太早這件事,就像教養這件事情,我認為零歲就可以開始,當然大一點的孩子領悟力更好,但大一點的孩子有自己的喜好自己的脾氣,大一點的孩子上學了時間也更少
    →上幼兒園前是關鍵時光(讓孩子習慣這件事)
    →我們的信念是不是足夠?當第一次買了很多,但身邊的人並沒有那麼支持你,很容易給自己太大的壓力(譬如被唱衰被部落客洗腦買了沒用的教材),就很容易放棄
    →成功的路並不難,難的是堅持的路(♪見1:45:10)
    →不想辜負你們,如果看到你們用的不好我真的會很難過
    →用的好的秘訣就是要討論/聊一聊,你絕對不會是第一個卡關的人

    🔸關於點點名(♪見2:04:40)
    →目標就是「一個月陪孩子認真做一件事情」
    →任何活動對孩子來說都是學習
    →不同月齡的孩子有不同的帶法,有很多可以跟孩子學習的做法
    →藉由點點名的驅動力(因為很想升級),養成一個認真陪伴孩子過生活的好習慣
    →可能其實平常就在做,差別就在有沒有記錄下來,有沒有做延伸而已

    🔸五本新品介紹- JY 基礎概念點讀繪本
    →JY的強項就在他的歌曲都很好聽
    →★延伸資料: 自製點讀小卡
    📚1. Color Zoo(♪見16:40)
    →關於顏色與形狀的故事
    →可以跟talk & play一起帶
    →圓形、正方形、三角形…還有其他特殊的圖案
    →沒有句子,只有單子,適合小小孩(還有音效)
    →★延伸教材: 已將出現的形狀畫出來,可以跟孩子一起拚,可以拼出書本中的圖案,低月齡的孩子可幫孩子剪,大的孩子可以自己剪順便練習剪工

    📚2. A parade of elephants(♪見38:55)
    →硬頁書,也有倒圓角
    →可以帶一些數數&相反詞的概念
    →數字/形狀/形容詞/副詞/白天/夜晚等簡單的英文單字
    →★延伸教材: 設計了小象跟盒子,可順便帶孩子認識方位&數數的概念(小小孩適合)

    📚3. Splish,Splash,Ducky!( ♪見1:10:00)
    →繪本老鼠波波Maisy的作者,故事主角是鴨鴨
    →有很多押韻,是比較輕快的曲目
    →小小孩會很喜歡「呱呱呱」

    📚4. Lemons are not red(♪見30:10)
    →台灣麥克也有中文版
    →這本書是用否定句讓孩子去想
    →很適合帶孩子認識很多顏色&水果&蔬菜
    →這本書的筆觸比較明顯,還有很多不一樣的顏色
    →直播有分享如何帶亮亮讀這本書(♪見33:20)
    →可以搭配科普小百科(第3輯 : 植物與昆蟲)一起跑

    📚5. Nighty Night,Little Green Monster(♪見49:50)
    →這個是BABY版的,適合當睡前故事聽
    →等孩子大一點,JYBook的書也可以讓孩子練習訪說/跟念,或是
    →★衍伸教材-有把五官手繪出來(爸爸版&寶寶版),可以玩認識五官的遊戲
    →★衍伸教材-有提供只有線稿的,可以自由上色&拼圖

    🔸關於JPR與JYSW(♪見1:52:40)
    📚JY Phonics Readers(JPR)自然發音點讀教材
    →DVD是看孩子會不會看電視,會的話可以考慮購入,影片裡有帶入動作加深孩子印象(♪見1:08:15)
    →JPR是自然發音,是必買的唷!(除非英文為母語)
    →可逐字點讀(孩子點久了會更認得這個字)
    →蒙芽會開自然發音與JYSW的課(周末)
    →JPR的家長手冊在官網,必看!
    →若有預算,先買JPR;若無,兩套可一起跑
    →★延伸教材: 破喉嚨自製真實字卡

    📚Sight Word Readers 常見字讀本
    →有真實圖片&單字小卡
    →可當基礎小書來帶
    →原本有附大卡,破喉嚨媽媽有自製小卡
    →★衍伸教材: 詞性貼紙(自製貼在單字小卡上)

    🔸關於破喉嚨自製字卡-JPR & lingumi(♪見12:10)
    →這次會繼續幫大家開團印
    →只接受上次團購(9/2快閃)與這次團購(9/27新品團)的才可以跟團唷!
    →字卡非常多種,如果沒有玩lingumi就不用買字卡
    →JPR真實字卡非常推薦!破喉嚨嘔心瀝血之作!

    🔸洗耳朵用什麼音檔呢? (♪見23:30)
    →早上聽朗誦版本(baby精神最好時)
     朗誦版本的發音最正確(唱歌的腔調較不正確)
    →睡午覺前/後聽歌曲版本(baby想睡時)
    →亮亮喜歡在看書時聽唸謠版本(baby有時會一起跟讀)
    →透過優質音檔可讓孩子發音更好,家長也不用怕自己發音不正確的問題

    🔸商店街VS拼音機器人(♪見1:14:40)
    →拼音機器人適合開始練習拼音的孩子(♪見1:24:00)
    →商店街有「有觸覺的ㄅㄆㄇ字卡」,也可錄孩子發音
    →如何讓孩子增加字彙?要多跟孩子說優美/豐富的字眼
    →商店街必買! 很值得! (沒有基底的孩子適合)
    →小小孩看中文其實還看不懂書上的字,都是看畫風揣測故事,所以跟孩子閱讀時也不一定要照文字逐句朗讀
    →先認識注音符號,再練習拼音/玩聲音遊戲(♪見1:23:10)
    →很喜歡跟亮亮好好玩聲音遊戲
    →可以用實體的東西一起玩聲音遊戲
    →聲音遊戲重點:發音要慢慢的,口型要很精準(商店街DVD內有發音口型示範影片) (♪見1:43:55)

    🔸關於英文圖畫字典-四語 vs DK
    📚四語圖解字典 (♪見45:40) (♪見56:30)
    →英文/中文/日文/韓文
    →有孩子喜歡的主題,有可愛音效,是可愛的風格
    →有題目可以玩找找遊戲
    →適合給年紀小的孩子開始用(可以放心給孩子自己使用)
    →硬頁、有上膠膜
    →很基礎的認識單字書

    📚 DK my first word book 點讀圖典(♪見48:15)
    →單元主題帶,優點是有真實圖片,較細膩
    →也有問答遊戲
    →比四語還大本,薄頁
    →平常較不會帶出門,通常放在家裡搭配特定主題用
    →適合年紀大一點的孩子(可能比較需要陪讀)
    →市面上比較罕見(真實圖片+點讀功能) (♪見57:00)
    →沒有動物叫聲音效

    🔸有必要買那麼多書嗎? (♪見20:35)
    →預算有限,書櫃的深度也有限
    →書如果只把他當成一本書,那很快就帶完了(很可惜)
    →書其實有很多可以延伸的,每本書有很多可以玩,可跟家裡其他的類似的書一起帶,或配合家裡的玩具一起
    →一本書有好多帶法,試試看把書裡面的元素拿一點點出來跟孩子玩一玩,讓書不是只是一本故事書

    🔸建議一定要買「點讀貼紙」(♪見1:05:00)
    →範例: 亮亮很喜歡的好餓的毛毛蟲
    →直接用點讀筆錄音的音質也不錯
    →書想要錄得多細緻自己可以決定
    →可以很輕鬆地錄下跟孩子的共讀聲音(親子共讀的回憶)
    →孩子其實非常渴望得到他深愛的家長的認同,我們不一定要用禮物來獎勵孩子,「大人的陪伴」就是給孩子最大的獎勵;能不能好好的陪伴孩子、能不能好好的跟孩子說話,認真地過這個當下,絕對是他們最大的獎賞( ♪見1:48:55)

    🔸關於共讀 (♪見1:21:30)
    →共讀最重要的事情就是過程中你和孩子是否開心
    →不要只是唸故事,試著用其他方式吸引孩子注意或加強他的關係
    →買書沒有要當傳家寶,書只要有好好的用,用好用滿,就算變得很破爛也很有價值,謝謝書陪我們度過這段共讀時光,所以不要擔心孩子可能會撕書或弄壞就不給孩子(不是放縱孩子撕書,若孩子撕書可以跟他說:書是用來看的用來翻的,好有趣噢,如果想撕東西可以用其他的紙玩撕貼遊戲)(♪見1:33:30)
    →帶繪本時,我會讓點讀筆繼續跑完全部的音檔(背景音),然後專注在孩子有興趣的部分,讓孩子喜歡這件事情 (♪見1:37:45)
    →共讀不求每天念好多,但是在過程中開心是最重要的事情,然後每天都持之以恆的陪伴跟給予也是好重要的事

    🔸關於其他點讀書本介紹
    📚Go Away Big Green Monster 繪本( ♪見59:00)
    →有些孩子會怕這畫風
    →是本次新品的兄弟作
    →大人版適合很害怕睡覺有怪獸的小寶寶
    →蒙特梭利說真實是一件很重要的事。愈小的孩子越需要大量真實的事物,尤其是三歲前的孩子,就像海綿一樣都會無差別的全部吸收,所以不要隨便騙孩子/恐嚇孩子(一直作壞事會被警察抓走、不乖媽媽等一下不來接你)

    📚Smohouse與狗店長樂讀詩-唐詩操作書(♪見27:10)
    →也是硬頁操作書系列(中文的)
    →歌曲很洗腦,畫風很可愛
    →適合小一點的孩子,大孩子可能覺得太簡單
    →有用白話的故事講唐詩故事(也有英文故事)
    →有唐詩的朗誦版本

    📚【英文_創意遊戲書】Talk & Play (♪見1:31:30)
    →一共有十本,每個系列有兩本
    →可以逐字點讀,點圖片也會有對應的單字
    →小小本,出門適合帶

    📚【英文_自然科普】My First Discoveries (♪見1:59:10)
    →孩子稱”機機咕咕咚”的書
    →原文為英文,可隨點隨讀(包含膠片)
    →可貼上附上的貼紙,有中文故事
    →適合所有月齡的孩子
    →先挑孩子有喜歡的主題先買

    📚Pete the Cat系列 (♪見02:01:50)
    →要自己貼上原廠附的點讀貼紙,可分頁點讀
    →是一隻樂天的小貓咪
    →是自己很愛的書,特別推薦一下!

    📚【英文_自然科普】New Baby Animals (♪見1:39:40)
    →音檔會重複字尾的部分
    →歌曲甜甜柔柔的,是關於小小動物的故事
    →適合小一點的孩子,低月齡的孩子很喜歡小動物跟媽媽的畫面
    →孩子較大的話可能會覺得太簡單

    📚【英文_創意遊戲書】找找書(♪見2:07:25)
    →很考驗觀察力,建議三歲以上會玩得比較開心
    →會練習到不同的問句
    →選擇孩子喜歡的系列

    📚【中文_有聲立體】傳說 十二生肖(♪見2:09:15)
    →十二生肖的小故事
    →每年過年都可以用到
    →有高級的動動機關,而且機關都有點讀功能超級厲害

    🔸小提醒區
    💡這次跟團進入的是第八梯唷!
    💡這次無法使用五倍券(因為10/8才開始)
    💡衍伸教材都是提供檔案必須自行印出唷!
    💡 JYBook的繪本通常都不含CD唷!
    💡這次沒有古典音樂專輯唷!
    💡歡迎找蒙芽訂購康軒學習雜誌
    →九月跟十月為周年慶非常值得入手
    →會提供分頁點讀音檔&每個月自製的資源

  • 倒三角形符號念法 在 文茜的世界周報 Sisy's World News Facebook 的精選貼文

    2020-06-19 11:32:07
    有 1,143 人按讚

    0619紐約時報

    *【美國最高法院裁定,川普政府不能立即結束“夢想者(Dreamers)”計畫】
    “夢想者”指的是幼兒時便被帶入美國境內的年輕無證件移民,在這項計畫保護之下,有大約70萬名年輕移民免遭驅逐出境。
    https://www.nytimes.com/2020/06/18/us/trump-daca-supreme-court.html

    *【司法部與波頓就出版新書案展開法律鬥爭】
    司法部週三要求法官命令,川普總統的前國家安全顧問波頓(John R.Bolton)停止出版他的回憶錄,該書已經印刷並分發給書商。政府檔說:“手稿的披露將損害美國的國家安全。” “美國要求該法院追究被告人的自由,承擔法律義務,以此作為獲得機密資訊的條件,並防止將其手稿出版給世界帶來的對國家安全的損害。”
    https://www.nytimes.com/2020/06/17/us/politics/john-bolton-lawsuit.html

    *【波頓回憶錄的五個要點】
    “The Room Where It Happened” 通過一系列危機和外交政策挑戰,描述了波頓在川普總統身邊動蕩的17個月。包含幾項重點:提供有關烏克蘭問題的第一手證據;解釋缺乏證詞,並責怪民主黨;選出“妨礙正義作為一種生活方式”的情節;描述管理部門內部的矛盾環境等。https://www.nytimes.com/2020/06/18/us/politics/john-bolton-memoir-takeaways.html

    *【Twitter將川普關於“種族主義嬰兒”的推文標記為操縱媒體】
    川普稍早發布推文,刊登一段視頻,其中有兩個小孩在人行道上奔跑。該視頻已被更改為好像CNN播放過,還稱“種族主義者的孩子可能是川普選民。推特將將其標註為”假新聞”助長了錯誤信息。
    https://www.nytimes.com/2020/06/18/technology/trump-tweet-baby-manipulated.html

    *【臉書移除顯示納粹符號的川普競選廣告】
    在川普競選廣告中使用了一個倒三角形符號,呼籲連署反對「反法西斯主義運動」(Antifa)。該三角形「實際上與納粹政權用來對集中營中的政治犯進行分類的三角形相同」。臉書刪除了這些發文和廣告,因為它們違反了禁止組織仇恨的政策。
    https://www.nytimes.com/2020/06/18/us/politics/facebook-trump-ads-antifa-red-triangle.html

    *【印度反華情緒高漲】
    中印邊境鬥毆致死事件在印度國內持續發酵:一位政府部長呼籲關閉中餐館;其他官員突然開始審查與中國公司的合同;人群在街頭砸毀中國製造的電視機,印度各地均爆發了抵制中國產品的抗議活動。
    https://www.nytimes.com/2020/06/18/world/asia/india-china-border.html

    *【在紐約,理髮和戶外用餐最快週一開始】
    紐約將邁入重新開放第二階段,紐約州長古莫表示,全州將於下週一進入四階段重啟計畫的下一階段,這將允許人們在保持社交距離的情況下戶外用餐、出入理髮店等。
    https://www.nytimes.com/2020/06/18/nyregion/coronavirus-nyc-phase-2.html

    *【北京新一輪疫情的無辜受害者:鮭魚】
    當官方報導稱,新發地的進口鮭魚案板上發現病毒痕跡時,人們反應迅速——日料店生意大幅下滑,全球鮭魚供應商失去中國訂單。如今,中國官員承認進口鮭魚不是疫情暴發原因,但損害已無法挽回。
    https://www.nytimes.com/2020/06/18/world/asia/coronavirus-china-salmon.html

    *【冠狀病毒感染後可能有抗體,但不會太久】
    發表在《自然醫學》上的一項研究顯示,新冠病毒的抗體可能僅持續兩到三個月,特別是對於那些在感染時從未表現出症狀的人。
    https://www.nytimes.com/2020/06/18/health/coronavirus-antibodies.html

    *【川普簽署維吾爾人權法案,引發北京強烈反彈】
    該法案將允許對參與新疆拘禁營的中國官員進行制裁,中國當局稱其為“廢紙一張,必將被正義的力量掃進垃圾桶”。但美國前國安顧問波頓的指控令相關問題變得更為複雜,他在新書中披露,川普曾支持北京對新疆的鎮壓。
    https://www.nytimes.com/2020/06/18/world/asia/china-trump-pompeo-xinjiang-uighurs-bolton.html

    *【金與正的崛起意味著什麼?】
    當朝鮮決定參加平昌冬奧會、開啟南北和解進程時,金與正的笑臉正是這個國家的魅力攻勢。現在兩國關係走向緊張,她再次代表國家表態。分析認為,這名朝鮮領導人胞妹不斷深化的權力和“革命”血統,使其在男權社會的朝鮮成為金正恩的潛在接班人。
    https://www.nytimes.com/2020/06/17/world/asia/north-korea-kim-yo-jong.html

    *【歐洲採取措施阻止中國討價還價】
    擔憂中國企業利用疫情“抄底”收購資產,歐盟推出限制外資收購的新提案,旨在防止外國投資者利用政府補貼,以高於競爭對手的價格吃盡歐洲資產。
    https://www.nytimes.com/2020/06/17/business/european-union-china-deals.html

    *【美國如何度過六月節(Juneteenth)?】
    6月也稱為自由日-在美國已經有150多年的傳統了。起源於德州,林肯總統在1865年發布解放宣言大約兩年半之後,加爾維斯頓市被奴役的非洲裔美國人終於在6月19日獲悉他們的自由。傳統上,人們會在這天吃燒烤、放煙火、喝紅色飲料,對非裔美國人所流的鮮血表示敬意。對一些非裔美國人來說,今年的六月節不僅意味著傳統和紀念,更意味著繼續為平權進行艱難鬥爭。
    https://www.nytimes.com/article/juneteenth-celebration-history.html

    *【氣候變化與生育息息相關】
    一項新研究對超過3200萬美國新生兒進行了調查,結果表明,暴露於高溫或空氣污染的孕婦更有可能早產、生下體重過輕的嬰兒甚至死嬰,其中非裔美國人受影響最大。
    https://www.nytimes.com/2020/06/18/climate/climate-change-pregnancy-study.html

  • 倒三角形符號念法 在 Taipei Ethereum Meetup Facebook 的最佳解答

    2020-03-24 23:33:18
    有 8 人按讚

    📜 [專欄新文章] 類 Python 的合約語言 Vyper 開發入門:與 Solidity 差異、用 Truffle 部署、ERC20 賣幣合約實做
    ✍️ 田少谷 Shao
    📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium

    有鑒於個人近期關注的 Uniswap 及 Curve 皆用 Vyper 實作,索性瀏覽了官方文件並嘗試一些開發工具,希望此文能減少一些讀者初嘗 Vyper 會遇到的麻煩!

    Vyper and Solidity

    Outline

    一. Vyper 極簡介二. 與 Solidity 語法差異三. 開發、開發環境設置 1. 語法高亮 2. 本地 Vyper compiler 安裝 3. 使用 Truffle 操作 ERC20 - 安裝 Truffle - 發幣 - 寫個簡易賣幣合約四. 已知 Remix 問題 五. 結語

    一. Vyper 極簡介

    Vyper 是除 Solidity 外,以太坊上的另一智能合約 (Smart contract) 語言。其語法和 Python 相近,但畢竟也是寫合約的語言,邏輯差異不大,所以若熟悉 Solidity 應該不難理解用 Vyper 寫出的合約!

    Vyper 主要被設計和 Solidity 的區別是安全性及可讀性,這部分會在下一段落及後方的實作中舉例說明。

    二. 與 Solidity 語法差異

    Vyper 與 Solidity 的差異有許多,在本段只就個人認為感受較深的三點進行說明,其他差異只進行翻譯,有興趣的讀者可以到官方文件詳細了解:https://vyper.readthedocs.io/en/latest/index.html

    1. 沒有 modifier

    Solidity 常見的 onlyOwner() modifier; 由於 gist 沒有 Solidity 的語法高亮,故截圖

    在 Vyper 中單純用 assert 及 assert_modifiable 來進行條件檢查,兩者差別為若要檢查函數執行後的返還值,要用後者,如下圖:

    Vyper 寫法

    2. 沒有 Class inheritance 繼承

    繼承是物件導向程式設計 (OOP) 的核心概念,但各種繼承關係有時候確實很複雜。Vyper 沒有繼承,這無疑大幅地增加了程式可讀性及安全性,以及降低審計程式碼的難度。在此提供一個例子供不熟悉 OOP 複雜之處的讀者有個概念:

    source: https://consensys.github.io/smart-contract-best-practices/recommendations/#multiple-inheritance-caution

    在上例中,contract A 的 fee 值 (因繼承自 contract B 和 C,故有 fee 一值) 是 5、a 值也是 5 (因繼承自 contract Final,故有 a 一值)。原因是 A 先繼承 B 再繼承 C,因此 contract A 中的 setFee() 是使用了 contract C 的 setFee(),而 a 值是由於 C(5),這代表 contract C 的 constructor (舊版本中即 function C(),函式名稱同 contract 名稱) 被傳入的值為 5。

    稍微延伸一下以上概念,將 contract A 改成:contract A is C, B。如此一來,a 值還有 fee 值都會是 3,因為這次 A 先繼承 C 再繼承 B,因此最終吃到的值是 contract B 的。

    以上就是 OOP 繼承的複雜之處的簡單範例說明,應該能稍微感受到爲什麼除去繼承後會大幅提高可讀性及安全性,畢竟即使是熟悉 OOP 的人有時頭腦一混亂也會開始懷疑自己寫的程式碼繼承結構是否正確 …

    3. 沒有 dynamic array 動態陣列

    這應該是目前 Vyper 設計中爭議最大的部分。沒有動態陣列代表在宣告陣列時需要宣告其長度,也就是說 Solidity 中的寫法 uint[], bool[] 等等,這些是不會出現在 Vyper 的。在 Vyper 中只能出現諸如:

    # Vyper 的變數宣告方式為 變數名稱: 存取範圍(變數型態(若為陣列給長度))

    values: uint256[10]participants: public(address[20])

    可以看到上方的 uint256 及 address 兩陣列皆需要宣告長度,不能不宣告而使其動態地配置空間。

    沒有動態陣列固然可以確保執行運算的範圍、次數,但一來動態陣列真的很方便、二來在 Solidity 有此功能而 Vyper 卻沒有的情況下可能會造成麻煩,詳見此一討論串:點我。

    4. 沒有 inline assembly,程式碼中不會有組合語言

    5. 沒有 function overloading,函式不會因傳入的參數數目不同而結果不同

    6. 沒有 operator overloading,運算符號不會有不同於預設的自定義功能

    7. 沒有無限迴圈,可免於 gas limit attack

    8. 十進位定點數 decimal fixed point 而非二進位 (binary) 定點數,詳見:點我

    三. 開發、開發環境設置

    結論先講

    開發 Vyper 的最佳姿勢目前個人認為是在本地裝上 Vyper compiler、用 Truffle 部署,並在撰寫時將檔名後加上 .py 就能有 Python 的語法高亮👌

    1. 語法高亮 (syntax highlighting)

    有語法高亮絕對是舒服地寫程式的第一步。

    Remix 有 Vyper 的語法高亮,但一來個人目前不推薦使用 Remix 來撰寫 Vyper,原因詳見下方 4. 已知 Remix 問題;二來 Remix 的語法高亮其實也沒有很清楚,因此個人推薦:在本地開發,將檔名後加上 .py 就會有 Python 的語法高亮。

    2. 本地 Vyper compiler 安裝

    照官方說明使用 Python 的虛擬環境 virtualenv:

    source: https://vyper.readthedocs.io/en/latest/installing-vyper.html#installing-vyper

    簡單兩點提醒:

    如果中間那行報錯但確實已經有 Python,則可能是版本問題。依照自己電腦上的版本改成相應的即可,ex: python3.6 改成 python3

    進入虛擬環境後(檔案路徑前方應有 vyper-venv 的提示),使用此指令: vyper {檔案名稱}.vy,即可編譯 .vy 檔;使用完畢後輸入 deactivate 即可退出

    3. 使用 Truffle 操作 ERC20

    安裝 Truffle

    Truffle 雖有冗餘的 migration 但也別無他法,畢竟 Remix 目前仍不完善 :(

    下載流程可以照官方文件,使用 vyper-example:

    source: https://github.com/truffle-box/vyper-example-box

    由於我們會接上測試網 Ropsten,因此還要下載 truffle-hdwallet-provider:

    source: https://github.com/trufflesuite/truffle-hdwallet-provider

    接者就可以開始使用 Vyper 寫合約了!

    發幣

    由於 Vyper 的官方文件中已經有許多優質範例,因此本文希望來點不一樣但大家卻又很熟悉的…以 ERC20 為例(這千篇一律的主題xD):

    用 Curve 的 ERC20 程式碼為範本,發一個幣(又要發…)

    寫一個簡易賣幣合約

    選擇這個主題一方面畢竟 ERC20 是以太坊的最大宗應用之一,二來有興趣的讀者可以透過讀 ERC20 的程式碼來熟悉 Vyper,並在看過本文的流程後對於用 Vyper+Truffle 來操作 ERC20 有完整的概念!

    好的,首先複製一份 Curve 的 ERC20 程式碼(看到就順手拿來用),並複製到 Truffle 所在路徑的 contracts 資料夾中:https://github.com/curvefi/curve-contract/blob/pool_compound/vyper/ERC20.vy

    由於第一點希望著重在跑一次流程,因此不改動合約的程式碼。

    ERC20.vy 複製到 contracts 資料夾中後,到 migrations 資料夾開啟 2_deploy_contracts.js,首先將 require() 中的參數改為 ERC20.vy 的檔名 ERC20,再來依照自己喜好決定幣的名稱、代號、小數點位數及發行總量,輸入於 deployer.deploy() 中。

    接著,為了和測試網 Ropsten 互動,需要將以下程式碼寫入 truffle-config.js。

    第二行的 privateKeys 是帳號的私鑰。以下實作需要兩個帳號來操作,因此請從錢包匯入兩組私鑰(並非助憶詞)。

    在第 13 行中 HDWalletProvider 此函式的第三個參數代表要用第幾個帳號最為預設帳號(部署合約等),第四個函數代表總共匯入幾組帳號。而第二個參數則是需要至 Infura 申請一個 project 來得到串接 Ropsten 的連結。這兩步驟並非本文重點,因此不詳細解說步驟,Google 搜尋關鍵字應該就會找到方法!

    接著,就可以輸入以下指令來將代幣發佈到 Ropsten:

    truffle deploy --network ropsten

    有進入虛擬環境才可以編譯 .vy 檔,若忘記就會收到如下的錯誤訊息:

    記得打開虛擬環境才能編譯 .vy 檔

    成功後就可以在 contract address 中看到代幣發佈的位置,加入到 Metamask 中就可以看到。本文的例子是維尼代幣 Winnie the Coin, WTC ;)

    contract address 便是 ERC20 的所在

    Winnie the Coin, WTC

    好了,到此測試網上又多了一個測試用的垃圾廢幣。

    寫個簡易賣幣合約

    賣幣合約中我想要簡單有兩個功能就好:付錢買幣 、結束銷售,以下就是程式碼。買幣的部分就不寫太詳細,固定價格為 0.01 Ether 可以買 500 代幣。

    簡單說明幾點:

    Solidity 的 constructor() 在 Vyper 中為 Python 風的 __init__():

    函式的屬性(public, private, payable 等等)放在函式上方,與 Python 的修飾器位置相同

    總之寫法跟 Python 很像,次方也一樣是用兩次乘法代表:**

    變數前加上 self 代表是當前合約的變數/全域變數,因此非常容易與函式中的變數/區域變數做區隔

    由於已經在第一行匯入了 ERC20 那份合約,因此透過將地址傳入合約當參數,就可以呼叫在該地址的合約:ERC20(self.tokenAddress) 。並且,可以將部署的合約存成一個變數 erc20 較方便

    寫完合約後一樣要更改 migrations 資料夾中的 2_deploy_contracts.js 如下,將代幣所在的地址作為參數輸入。

    由於先前已經部署過一次了,因此要重置才能再部署第二次,輸入以下指令:

    truffle deploy --reset --network ropsten

    部署成功之後就要來試著買幣啦!輸入以下來進入 console:

    truffle console --network ropsten

    成功進入後應該會看到 truffle(ropsten)> 的字樣。接著,首先取得部署的兩合約,並查看是否有返回合約資訊:

    # ERC20 及 SellToken 是先前在 2_deploy_contracts.js 中的變數名稱,代表被部署的合約

    let instance1 = await ERC20.deployed()instance1 # 印出 instance1 的資訊

    let instance2 = await SellToken.deployed()instance2 # 印出 instance2 的資訊

    再來,為了讓 SellToken 可以賣幣,要先用 ERC20 的合約匯幣到 SellToken 的合約。因此,輸入以下指令:

    instance1.transfer(instance2.address, 10000)

    # 這裡數字只要設為 > 500 就可以

    接著,我們要利用第二個帳號去買幣(第一個帳號為預設帳號,因此就是代幣擁有者)。將帳號的資訊存入變數 accounts 中,再指定送出交易的帳號是第二個帳號。由於我個人匯入私鑰的順序是將第一個帳號存在 truffle-config.js 的 privateKeys[0]、第二個帳號存在 privateKeys[1],因此第二個帳號的地址就會在 accounts[1] 的位置:

    let accounts = await web3.eth.getAccounts()

    instance2.buyToken({from: accounts[1], value: 10000000000000000})

    # value 為 10^16 是因為在 SellToken 的 buyToken 函式中買一次要 0.01 Ether, 即為 10^16 wei

    然後應該就會在自己的第二個帳號中看到匯入的幣了~

    最後,由於合約中結束銷售就是一個自殺 selfdestruct 函式,因此可以呼叫看看,第一個帳戶錢包中的錢應該會增加,因為第二個帳戶有付款買幣;並且,可以到 Ropsten 上瀏覽,應該能看到相關提示:

    中間 contract 的右上角有 Self Destruct 的樣式

    四. 已知 Remix 問題

    Remix 目前有兩個版本,只有新版有 Vyper 的編譯器。在此整理目前遇到的問題,如果有人也遇到可以對照一下本處,可以省去很多自我懷疑xD

    不會報錯

    Remix 的編譯結果有時會是錯的、和本地端編譯出來的結果不同

    舉上方的 SellToken 合約為例,將其複製到 Remix 中使用左邊的 Remote Compiler 有錯,但又不報錯 q_q (ERC20 的合約有在同檔案目錄)

    左方有紅色三角形,代表編譯失敗,但沒有報錯訊息可以看…

    getter function 竟然要花錢

    用 Solidity 寫的合約,查詢 public 變數的值應該是不用消耗 gas 的,但不知何故查詢 Vyper 寫的合約的 public 變數卻要消耗 gas,如下圖…

    可以看到中下方有 22026 gas 的消耗

    Local compiler 無法使用

    圖中的 Local Compiler 此選項,個人雖照官方文件執行 vyper-serve 但卻失敗,因此若有讀者成功希望能留個言不吝分享!

    五. 結語

    Vyper 作為一個比 Solidity 更新的合約語言,在寫程式碼的方面沒什麼問題,但相關的開發工具、學習資源等都遠不及 Solidity。

    Vyper 主打的兩個特色:可讀性的部分相信看完上面的讀者應該已經有些感覺;安全性…小白如作者我倒是沒有感受到顯著的不同。況且 Solidity 已經發展許久,很多錯誤的寫法、知名的安全漏洞大家應該也很熟悉了,還有 Openzeppelin 提供安全合約寫法的範本,因此有待以後高人解說安全性是否真的是 Vyper 較好。

    有興趣者可以查看 Vyper 的安全報告:點我,大意是目前 Vyper 的編譯器仍有許多問題待改進! (感謝 Chih-Cheng Liang 的提供)

    本文對 Vyper 的介紹及其與 Solidity 的差異只講了個大概,欲知更詳細的介紹還是要麻煩讀者前往官方文件了:https://vyper.readthedocs.io/en/latest/index.html

    最後,如果本文有任何錯誤,請不吝提出,我會盡快做修正;而如果我的文章有幫助到你,可以看看我的其他文章,歡迎一起交流 :)

    田少谷 Shao - Medium

    類 Python 的合約語言 Vyper 開發入門:與 Solidity 差異、用 Truffle 部署、ERC20 賣幣合約實做 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.

    👏 歡迎轉載分享鼓掌