前言:
測試學習是個理論簡單,但實作起來會遇到很多疑問的學習過程。曾經跟Sean Ellis 一起工作的曲卉寫的這本書不但實用,而且還訪問了一大票測試專家。
他們對於測試主題的選擇(大題目還是小題目)、AARRR漏斗的重點,還有測試團隊在組織內的發展也都有不同的見解。
我覺得很值得多看看,所以做了筆記跟大家分享。
這次分3 part,先來一串九個人我印象最深的測試心得,再來九個人的訪談摘要,最後是九個人對於組織與人的看法。enjoy~
..........
《硅谷增長黑客實戰筆記》曲卉
#Greylock Partner / Pinterest(圖片秀), Casey Winters
"不要只做優化,要做有高影響力的事情。不過,得先做優化累積影響力。"
#Mobile Growth Stack / Sound Cloud (Podcast), Andy Carvell
"不要把所有數字綁在一起看,用戶分群是有效優化的開始。"
# GloStation / Postmates(送餐), 陳思齊
"限制供給可以透過奇怪的方式,製造FOMO(害怕錯過fear of missing out) 社交地位(social status)等,讓產品流行"
# Growthstructures / Sofi Finance(學貸轉貸), Steven Dupree
"低垂果實摘完後,會陷入低潮與瓶頸。全公司(或跨團隊)的創新idea大匯集會讓大家一起幫忙,並且不要浪費對失敗案例的紀錄與策略學習。"
#Cerberus Interactive/Acorns (微型投資), Sami Khan
"醜陋、原始的廣告更像是朋友在對用戶說話,有更高機率穿透用戶的防衛心"
#Camera360(修圖), 陳思多
"漏斗的無限解構,原本以為是單純解決留存率問題,結果深究了四層(留存率—>推送更新覆蓋率—>推送更新展示率—>下載權限設定)才達到目的。"
#Square(支付), 羅揚 James Luo
"增長與嚕羊毛黨的鬥智鬥勇,對獎勵的設計要有吸引力,又要養成使用習慣,還要善用推薦者的資訊讓新用戶感受到個性化的感覺。"
#探探(校園招聘)/ 美圖(修圖), 韓知白
"要做增長先要備好基礎設施(行為數據後台,A/B測試框架),才能夠更快速迭代與勤能補拙。"
#專訪 Keep(運動)/豆瓣(社群), 張弦
"有些問題除了用數據作判斷外,直接問用戶可以達到更直接的效用,而且幫助增長團隊打開視野。"
---九篇專訪的摘要全文---
#9-1 Greylock Partner / Pinterest(圖片秀), Casey Winters
-北極星指標是會變動的
-產品(也就是核心地帶)通常是增長的投資報酬率最高的測試,但很難直接說服公司其他成員直接拿產品動刀。
-增長團隊一開始成立時候,選擇三不管地帶,以證明自己;之後才進展到核心地帶
-核心地帶的創造新價值、改善原有價值,通常是產品團隊負責。傳遞已有價值給更多人則是增長團隊負責。
-增長團隊必須是全職的,不能跟人共用成員,否則優先順序會被影響
-做測試時候,如何在容易衡量但效果慢跟全新設計但不知哪個因素產生作用之間做取捨?優化測驗要一個個做,改變方向測驗則直接直搗黃龍。而改變方向的測試才能反應高影響力。
-當低垂果實摘完後,要做高影響力需要高資源的測試需求,而不是低資源但也只需要低影響力的需求
#9-2 Mobile Growth Stack / Sound Cloud (Podcast), Andy Carvell
-對行動應用來說,留存是所有指標中最重要的,因為客人離開沒有成本,但留存會對你有無限好處。留存指標包含以日、週、月計算。
-增長團隊大約7-8人,包含產品經理、分析師、設計師、程序員,最多的是程序員。產品經理需要對分析、UI/UX設計、程序都略懂,才能跟他們溝通。
-以每週的循環討論測試設計、結果與去留。
-SC的做法不是所有用戶綁在一起看留存率,是用戶分群後看留存率,包含新用戶、流失後重新造訪用戶、重複使用用戶。
-當移動應用要藉由更版推送提升客戶體驗的時候,如何達到最好的整體效果?衡量指標是RRF 覆蓋率(reach), 相關性(Relevance), 頻率(Frequency) 三個都達到高水準則影響力最大。但覆蓋率是這當中最重要的
#9-3 GloStation / Postmates(送餐), 陳思齊
-我的前一間公司(Stolen),每個增長流程與工具都做得很好,但就是產品不夠好。當我到Postmaster之後發現他們什麼成長技巧都沒有,但產品很符合市場需求。
-增長最令人喜歡的是,能量化你的影響力,當你實驗做得好,結合了創造力與分析能力得出很好的想法,就像寫程式一樣,你做了某件事就有某個結果。這是令人上癮的。
-增長最令人不喜歡的是,會讓你偏向那些容易衡量並且很快衡量的東西。但有時候最重要的事情,例如產品與市場的契合度,反而不是容易衡量的。
-K因子(referral 用戶轉介人數)持續大於1是不可能的,尤其當你的產品越做越大,群體越來越多。即使是社交軟體,要讓k因子大於1 也需要一些違反自然規律的設計。
-稀缺性可以透過奇怪的方式,讓產品更加流行。從Stolen 得到的認知是,限制供給,造成稀缺性。心理因素是害怕錯過(FOMO) 社交地位(social status)等
-即使在矽谷,增長團隊也不多見。Google就沒有。但是FB就有一大批增長團隊並且擴散到其他地方。增長就是技術驅動,易於衡量的行銷。增長團隊更像升級版的行銷團隊,有了程序員的支持可以把推薦系統做得更精準,未來增長團隊會和市場團隊在一起而不是產品。
-用少於10%的流量,可以做任何測試。
#9-4 Growthstructures / Sofi Finance(學貸轉貸), Steven Dupree
-數學不會就是不會,增長沒效就是沒效。增長可以很快做出改變,並且追蹤哪些改變有效哪些無效。
-增長的低垂果實摘完後,會陷入疲乏,就需要大量idea。創新idea 兩種重要想法:每週五的全公司頭腦風暴 & 忠實紀錄失敗的測試並從中學到策略想法。
-增長團隊刷存在感兩種做法:(1) 在例會中說明有趣但違反直覺的實驗,已讓大家有印象(2) 把大象(重大影響力但耗資源)跟螞蟻(容易但效益有限)的實驗混合起來,避免人家覺得你沒貢獻或者只會做小事情
-新產品開始獲取客人的三種方法:(1) 付費搜索廣告,可以找到真的需要產品並且非常有興趣的人 (2) 抄競爭對手的做法,可以找到他們已經開發過的市場(3) 根據產品特殊屬性的增長手法
#9-5 Cerberus Interactive/Acorns (微型投資與機器人投資), Sami Khan
-靠創意的廣告狂人時代已經過去,excel 跟計算機才是你的好朋友。
-檢視總預算,跨通路預算調整(放大表現好的),通路內預算調整(用七天平均放大表現好的)
-2C新產品上線的建議是先在FB做小量A/B測試,找出好的再往其他通路擴散。測試前要設好追蹤,沒有追蹤,測試學習的迴路就不會成立。
-比起其他app,遊戲是最不需要擔心用戶獲取的,因為人們下載無成本;比較需要擔心的反而是用戶留存。因此要一小批一小批的獲取用戶後,關閉其他溝通通路,只針對這小群人做各種產品測試與改進,確定30 日留存率到達可用水準後才能繼續獲取用戶。
-臉書上,越醜的廣告表現越好。因為大家對電視已經疲乏,精美的廣告創意讓人想到電視會自動跳過,但粗糙的原始的則像是你朋友分享的。
#9-6 Camera360(Photo Editor), 陳思多
-漏斗的無限解構,以解決留存為例。原本想藉由app更新處理留存率低的問題,但發現更新覆蓋率不夠高,後來又發現問題是更新的展示率(被看到)低,而展示率低的原因又是app一開始下載時候的預設權限。所以回頭更改預設權限設定,在更改後次日留存率實現5%增長。(但如何在用戶已下載後調整權限啊)
-各地區的差異化溝通,以美國市場為例,經過逐一測試不同族群發現40+婦女喜歡此產品,於是將廣告視覺改為該族群會喜歡的可愛孩子展示功能,降低33%的獲客成本
-增長的成功要素是CEO的有意識支持。因為增長會用到很多資源,或是影響很多資源。若是沒有CEO的支持,無法成功。
-增長團隊需要的數據分析師,是對產品有深切了解的數據分析人,而不是純粹解讀數字。
#9-7Square(支付服務), 羅揚 James Luo
-留存主要是產品決定的,但在早期留存(D14-D90)增長可以起到很大作用,只要透過各種管道(信件、推送、Retargeting 廣告)重新提醒用戶,就會對早期留存產生明顯效用。
-要做全產品用戶推薦的指標的先決條件,是內部有堅實的大數據團隊,足以做獲客通路歸因。
-通路關鍵三大指標(CPA, ROI, LTV)中,最難建模的是LTV。因為涉及對長期留存率與資本折現率的重要假設。
-好的推薦系統會牽涉到三大項目,獎勵、曝光、轉化。其中獎勵的設計是與嚕羊毛黨鬥智鬥勇的活動。獎勵內容要考慮『有吸引力的額度、合適的條件限制、養成使用習慣的限制,累進式獎勵、考慮對稱式獎勵(利己又利人)』
-即使是最忠誠的用戶,也不會時刻記得你的獎勵項目。
-新用戶進來後,可以用推薦人的資訊提醒他們使用獎勵,不僅給新用戶個性化的感覺,也提醒新用戶『我確實獲得了某人的推薦』
#9-8 探探(校園招聘)/ 美圖(Photo Editor), 韓知白
-美圖的用戶留存指標設在N張照片保存,一開始是基於通路管理的需要,因為有些通路留存數據會有回饋延遲以及作假的問題。
-探探的市場部與增長部的區別在,市場部負責花錢,增長部不負責花錢。
-增長不是先做KPI管理,而是要有好的基礎設施(行為數據後台,A/B測試框架)才能開始觀測指標與迭代增長。
-快速迭代的價值在於,當你沒有人家的靈感,人家一次增長效果比你好3倍(+60% vs +20%)的時候,只要你迭代速度有三倍,還是可以得到一樣的成功增長效果。
-增長要避免的第一個坑就是局部優化,這裡改一點截圖,那裡改一點文案。其實也許改產品名字與圖標是最有效提升app商店轉化率的途徑。增長經理要能夠跳脫盒子思考(out of box thinking)
-剛開始做測試的人,要忘記喬布斯張小龍等產品的大神,他們是靠直覺也很少看數據:正常人要靠數據與即時反饋,勤能補拙。
#9-9 Keep(運動)/豆瓣(社群), 張弦
-全景漏斗,關心橫向的產品功能交互關係。當一個產品不只是工具,還有社交,內容等多種功能。可以根據不同功能設計指標,再看看功能
之間的交互拉提作用,決定整個產品後續的發展。而不是只看單一指標。
-量化與質化的兩腳思維,曾經做測試時候只看指標,以為是A與B的相關性,但從未想過中間還有個C。學到後就會在產品中安插小問卷直接問用戶,但要把握3個題目之內的精簡原則,不可以打擾用戶。
-加法與乘法,做增長後了解了加法與乘法的關係。增加一條溝通管道是加法,優化轉化率是乘法。一般來說,乘法的好處更大一些,但這也是基於加法已經帶來足夠的初始流量,否則盤子太小的乘法也沒啥意義。
-做產品像開船,動力與方向最重要。產品小的時候,著重動力,加速度要夠。產品體量大了後,動力已經比較足了,著重方向,往哪兒發展就更重要。
---以下是關於團隊的摘要---
#Greylock Partner / Pinterest(圖片秀), Casey Winters
"增長團隊必須是全職的,不能跟人共用成員,否則優先順序會被影響"
#Mobile Growth Stack / Sound Cloud (Podcast), Andy Carvell
"增長團隊大約7-8人,包含產品經理、分析師、設計師、程序員,最多的是程序員。產品經理需要對分析、UI/UX設計、程序都略懂,才能跟他們溝通。以每週迭代的循環討論測試設計、結果與去留。"
# GloStation / Postmates(送餐), 陳思齊
"增長最令人不喜歡的是,會讓你偏向那些容易衡量並且很快衡量的東西。但有時候最重要的事情,例如產品與市場的契合度,反而不是容易衡量的。"
#Growthstructures / Sofi Finance(學貸轉貸), Steven Dupree
"增長團隊刷存在感兩種做法:(1) 在例會中說明有趣但違反直覺的實驗,已讓大家有印象(2) 把大事(重大影響力但耗資源)跟小事(容易但效益有限)的實驗混合起來,避免人家覺得你沒貢獻或者只會做小事情"
#Cerberus Interactive/Acorns (微型投資與機器人投資) , Sami Khan
"靠創意的廣告狂人時代已經過去,excel 跟計算機才是你的好朋友。"
# Camera360(修圖), 陳思多
“增長的成功要素是CEO的有意識支持。因為增長會用到很多資源,或是影響很多資源。若是沒有CEO的支持,無法成功。”
#Square(支付), 羅揚 James Luo
“通路關鍵三大指標(CPA, ROI, LTV)中,最難建模的是LTV。因為涉及對長期留存率與資本折現率的重要假設。”
# 探探(校園招聘)/ 美圖(修圖), 韓知白
“快速迭代的價值在於,當你沒有人家的靈感,人家一次增長效果比你好3倍(+60% vs +20%)的時候,只要你迭代速度有三倍,還是可以得到一樣的成功增長效果。”
# Keep(運動)/豆瓣(社群), 張弦
“做產品像開船,動力與方向最重要。產品小的時候,著重動力,加速度要夠。產品體量大了後,動力已經比較足了,著重方向,往哪兒發展就更重要。”
同時也有249部Youtube影片,追蹤數超過4萬的網紅吳老師教學部落格,也在其Youtube影片中提到,[初階]從VBA的自動化到PYTHON網路爬蟲應用3(while迴圈&質數練習&自訂函數&猜數字遊戲&MonthCAI&讀取會員資料檔案) 01_重點複習與while迴圈 02_加總1到99改用while迴圈 03_九九乘法表改為while迴圈 04_練習題質數判斷與精簡程式 05_質數練習改寫為...
「乘法應用題下載」的推薦目錄:
- 關於乘法應用題下載 在 許幼如的職場學習路 Facebook 的精選貼文
- 關於乘法應用題下載 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於乘法應用題下載 在 吳老師excel函數與vba大數據教學 Facebook 的最佳貼文
- 關於乘法應用題下載 在 吳老師教學部落格 Youtube 的最讚貼文
- 關於乘法應用題下載 在 吳老師教學部落格 Youtube 的最佳解答
- 關於乘法應用題下載 在 吳老師教學部落格 Youtube 的最佳解答
- 關於乘法應用題下載 在 三年級乘法練習題的評價費用和推薦,EDU.TW、DCARD 的評價
- 關於乘法應用題下載 在 媽媽數學教室- 【講義分享.. 2年級乘法應用題:①→多】 最近有 ... 的評價
- 關於乘法應用題下載 在 乘法練習卷、小四數學題目在PTT/mobile01評價與討論 的評價
- 關於乘法應用題下載 在 乘法練習卷、小四數學題目在PTT/mobile01評價與討論 的評價
- 關於乘法應用題下載 在 小數乘法練習題下載在PTT/Dcard完整相關資訊 的評價
- 關於乘法應用題下載 在 小數乘法練習題下載在PTT/Dcard完整相關資訊 的評價
- 關於乘法應用題下載 在 小二乘法應用題練習在PTT/Dcard完整相關資訊 - 數位感 的評價
- 關於乘法應用題下載 在 小二乘法應用題練習在PTT/Dcard完整相關資訊 - 數位感 的評價
- 關於乘法應用題下載 在 (13)小數乘法的基本應用題2 - YouTube 的評價
乘法應用題下載 在 Taipei Ethereum Meetup Facebook 的最佳貼文
📜 [專欄新文章] 類 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.
👏 歡迎轉載分享鼓掌
乘法應用題下載 在 吳老師excel函數與vba大數據教學 Facebook 的最佳貼文
昨天在東吳進修推廣部講到數學函數單元,最重要的用到COUNTIF函數,
並舉到樂透彩中獎機率範例,
分享幾個好用的EXCEL應用技巧,
1.定義名稱範圍
2.自訂格式化
3.用公式設定格式化條件
這個範例可以用再只要需要統計機率,
就可以用COUNTIF函數快速的統計出機率,
當然這些資料來自網路上的開放資料,
也可以配合VBA自動下載網路資料。
上課畫面:
01_完成結果畫面
02_定義名稱所有的101年號碼
03_用COUNTIF與COUNT算出機率
04_格式化成1000分之多少
05_算出排名
06_前7名格式化
請先看之前的課程:
如何將數學函數轉EXCEL VBA設計之一
http://terry55wu.blogspot.tw/2014/09/excel-vba_19.html
如何將數學函數轉EXCEL VBA設計之二
http://terry55wu.blogspot.tw/2015/01/excel-vba.html
提高工作效率_黑名單篩選範例分享
http://terry55wu.blogspot.tw/2015/06/blog-post.html
雲端問卷調查及EXCEL統計分析研習分享
http://terry55wu.blogspot.tw/2014/11/excel.html
完整的教學影片:
其他相關學習:
如何設計VBA表單與EXCEL當資料庫用(85期)
提高效率VBA入門班第1次上課心得分享
EXCEL VBA處理股票分析自動最佳化範例
如何在EXCEL VBA中快速刪除空白列
定存範例轉VBA與只能輸入數字的InputBox
如何學會EXCEL VBA資料庫系列之一
EXCEL VBA入門:如何撰寫自動格式化的VBA程式
EXCEL VBA入門之一:如何函數轉VBA
VB.NET設計(九九乘法表&小狗動畫&撲克牌&字幕)
回覆Excel VBA入門與進階課的差異?
如何批次下載股市資料到EXCEL中之2
如何用VBA快速取得期貨交易資料(開收高低量)
如何在EXCEL VBA隱藏與顯示工作表
如何移動工作表與排序之1
如何批次下載股市資料到EXCEL中之1
如何批次下載股市資料到EXCEL中
如何建立表單與將EXCEL當成資料庫
如何讓用ACCESS將EXCEL的資料
如何排序工作表
如何將單次查詢改為批次查詢(EXCEL VBA自動化)
如何在EXCEL VBA的工作表隨機上顏色
如何快速在EXCEL中建立查詢系統(免資料庫)之2
如何精簡VBA程式與傳遞引數
如何快速在EXCEL中建立查詢系統(免資料庫)之1
如何將大量工作表整合在一個工作表
如何在EXCEL VBA新增沒有重複名稱工作表
如何自動下載YAHOO股市資料到EXCEL中
如何建立表單與將EXCEL當成資料庫使用
如何在EXCE VBA中複製工作表
如何在EXCEL VBA如何保護工作表
如何在EXCEL VBA新增沒有重複名稱工作表
如何在EXCEL工作表中移動
EXCEL VBA辦公自動化_如何建立查詢系統
如何當下拉清單改變時自動抓取資料之一
如何將數學函數轉EXCEL VBA設計之二
如何增加EXCEL VBA按鈕
如何設定EXCEL VBA開發環境設定說明
如何將EXCEL函數轉成VBA
如何再VBA中建立EXCEL的自訂函數讓公式變簡單
論壇(請上課學員自行申請加入,不對外開放):
https://groups.google.com/forum/?hl=zh-TW#!forum/scu_excel_vba_83
與前幾期的課程雖然用的是相同的範例,但最大的不同在:
1.除了解說內建函數公式,並將之轉成自訂函數,把複雜的公式變簡單。
2.如何將複雜的公式變成簡單的按鈕,按下按鈕就自動完成工作。
內容主要分成:
1.常用函數
2.進階函數應用
3.從函數到VBA設計
4.如何自訂函數
5.VBA程式設計入門
6.如何錄製巨集與修改
7.如何將大量資料轉存到資料庫
8.如何讀取資料庫資料
詳細目錄:http://goo.gl/eQptxx
有講義與範例和完成的畫面公式與程式碼,
只要按照每周的順序學習,學會EXCEL VBA自動化絕非難事,
優點:
1.可非線性學習:可按照自己最不熟的部分多次學習。
2.可反覆學習:有疑問可以多次聽講,保證學的會。
3.可攜帶學習:只要有瀏覽器就可以播放SWF檔,MAC電腦也沒問題。
上課參考用書:
超圖解 Excel VBA 基礎講座
作者: 亮亨/譯 出版社:旗標
出版日期:2006/05/15 定價:420元
日本Amazon網站同類書籍銷售No.1
課程特色:
1.如何將函數轉成VBA
2.VBA與資料庫快速結合
EXCEL函數、 VBA程式與資料庫是分別屬於三個領域的知識,
但卻是目前大家都需要的一項專業技能,要把三者融合的很好實在非常不容易,
剛好我有近20年的VB程式設計與資料庫設計的經驗,
教EXCEL函數與相關課程也有多年,因此清楚如何把最重要的知識教給大家,
ADO資料庫設計的知識非常多,但根據我多年的設計實務經驗,
覺得最重要的是掌握SQL語言,就可以輕易的完成查詢、新增、修改與刪除等功能,
就可以輕易的完成自己想處理的大量資料,大大提高工作效率了!
更多EXCEL VBA連結:
01_EXCEL函數與VBA http://terry28853669.pixnet.net/blog/category/list/1384521
02_EXCEL VBA自動化教學 http://terry28853669.pixnet.net/blog/category/list/1384524
吳老師 2015/7/21
乘法應用題下載 在 吳老師教學部落格 Youtube 的最讚貼文
[初階]從VBA的自動化到PYTHON網路爬蟲應用3(while迴圈&質數練習&自訂函數&猜數字遊戲&MonthCAI&讀取會員資料檔案)
01_重點複習與while迴圈
02_加總1到99改用while迴圈
03_九九乘法表改為while迴圈
04_練習題質數判斷與精簡程式
05_質數練習改寫為自訂函數
06_有回傳值(類似VBA的Function)
07_練習題猜數字遊戲
08_猜數字遊戲只能猜三次
09_練習題MonthCAI
10_MonthCAI改為三次與猜拳遊戲
11_練習題輸入成績到串列中
12_輸入成績到串列中修改邏輯
13_讀取檔案與分割到串列中
14_迴圈將串列字串轉為整數
15_讀取會員資料檔案menber資料
完整影音
http://goo.gl/aQTMFS
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2020_3
懶人包:
EXCEL函數與VBA http://terry28853669.pixnet.net/blog/category/list/1384521
EXCEL VBA自動化教學 http://terry28853669.pixnet.net/blog/category/list/1384524
[初階]從VBA的自動化到PYTHON網路爬蟲應用
01 建置Python開發環境 3
02 基本語法與結構控制 3
03 迴圈敘述演示與資料結構及函式 3
04 檔案處理與SQLite資料庫處理 6
05 TQC+Python證照第1、2、3類:
基本程式設計與選擇敘述與迴圈敘述 12
06 TQC+Python證照第4、5類:
進階控制流程與函式(Function) 9
[進階]網頁資料擷取、分析與資料視覺化能力
07 網頁資料擷取與分析 3
09 實戰:處理 CSV 檔和 JSON 資料 3
10 實戰:PM2.5即時監測顯示器轉存資料庫 3
11 實戰:下載台銀外匯、下載YAHOO股市類股 3
12 實戰:下載威力彩開獎結果 3
13 TQC+Python 3網頁資料擷取與分析第1類:資料處理能力 3
14 TQC+Python 3第2類:網頁資料擷取與轉換 6
15 TQC+Python 3第3類:資料分析能力 6
16 TQC+Python 3第4類:資料視覺化能力 6
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著
出版社:碁峰 出版日期:2016/11/29
吳老師 109/7/10
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境,資料視覺化
![post-title](https://i.ytimg.com/vi/rk3KMBZsQn4/hqdefault.jpg)
乘法應用題下載 在 吳老師教學部落格 Youtube 的最佳解答
[初階]從VBA的自動化到PYTHON網路爬蟲應用3(while迴圈&質數練習&自訂函數&猜數字遊戲&MonthCAI&讀取會員資料檔案)
01_重點複習與while迴圈
02_加總1到99改用while迴圈
03_九九乘法表改為while迴圈
04_練習題質數判斷與精簡程式
05_質數練習改寫為自訂函數
06_有回傳值(類似VBA的Function)
07_練習題猜數字遊戲
08_猜數字遊戲只能猜三次
09_練習題MonthCAI
10_MonthCAI改為三次與猜拳遊戲
11_練習題輸入成績到串列中
12_輸入成績到串列中修改邏輯
13_讀取檔案與分割到串列中
14_迴圈將串列字串轉為整數
15_讀取會員資料檔案menber資料
完整影音
http://goo.gl/aQTMFS
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2020_3
懶人包:
EXCEL函數與VBA http://terry28853669.pixnet.net/blog/category/list/1384521
EXCEL VBA自動化教學 http://terry28853669.pixnet.net/blog/category/list/1384524
[初階]從VBA的自動化到PYTHON網路爬蟲應用
01 建置Python開發環境 3
02 基本語法與結構控制 3
03 迴圈敘述演示與資料結構及函式 3
04 檔案處理與SQLite資料庫處理 6
05 TQC+Python證照第1、2、3類:
基本程式設計與選擇敘述與迴圈敘述 12
06 TQC+Python證照第4、5類:
進階控制流程與函式(Function) 9
[進階]網頁資料擷取、分析與資料視覺化能力
07 網頁資料擷取與分析 3
09 實戰:處理 CSV 檔和 JSON 資料 3
10 實戰:PM2.5即時監測顯示器轉存資料庫 3
11 實戰:下載台銀外匯、下載YAHOO股市類股 3
12 實戰:下載威力彩開獎結果 3
13 TQC+Python 3網頁資料擷取與分析第1類:資料處理能力 3
14 TQC+Python 3第2類:網頁資料擷取與轉換 6
15 TQC+Python 3第3類:資料分析能力 6
16 TQC+Python 3第4類:資料視覺化能力 6
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著
出版社:碁峰 出版日期:2016/11/29
吳老師 109/7/10
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境,資料視覺化
![post-title](https://i.ytimg.com/vi/R23uK5-uceo/hqdefault.jpg)
乘法應用題下載 在 吳老師教學部落格 Youtube 的最佳解答
[初階]從VBA的自動化到PYTHON網路爬蟲應用3(while迴圈&質數練習&自訂函數&猜數字遊戲&MonthCAI&讀取會員資料檔案)
01_重點複習與while迴圈
02_加總1到99改用while迴圈
03_九九乘法表改為while迴圈
04_練習題質數判斷與精簡程式
05_質數練習改寫為自訂函數
06_有回傳值(類似VBA的Function)
07_練習題猜數字遊戲
08_猜數字遊戲只能猜三次
09_練習題MonthCAI
10_MonthCAI改為三次與猜拳遊戲
11_練習題輸入成績到串列中
12_輸入成績到串列中修改邏輯
13_讀取檔案與分割到串列中
14_迴圈將串列字串轉為整數
15_讀取會員資料檔案menber資料
完整影音
http://goo.gl/aQTMFS
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2020_3
懶人包:
EXCEL函數與VBA http://terry28853669.pixnet.net/blog/category/list/1384521
EXCEL VBA自動化教學 http://terry28853669.pixnet.net/blog/category/list/1384524
[初階]從VBA的自動化到PYTHON網路爬蟲應用
01 建置Python開發環境 3
02 基本語法與結構控制 3
03 迴圈敘述演示與資料結構及函式 3
04 檔案處理與SQLite資料庫處理 6
05 TQC+Python證照第1、2、3類:
基本程式設計與選擇敘述與迴圈敘述 12
06 TQC+Python證照第4、5類:
進階控制流程與函式(Function) 9
[進階]網頁資料擷取、分析與資料視覺化能力
07 網頁資料擷取與分析 3
09 實戰:處理 CSV 檔和 JSON 資料 3
10 實戰:PM2.5即時監測顯示器轉存資料庫 3
11 實戰:下載台銀外匯、下載YAHOO股市類股 3
12 實戰:下載威力彩開獎結果 3
13 TQC+Python 3網頁資料擷取與分析第1類:資料處理能力 3
14 TQC+Python 3第2類:網頁資料擷取與轉換 6
15 TQC+Python 3第3類:資料分析能力 6
16 TQC+Python 3第4類:資料視覺化能力 6
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著
出版社:碁峰 出版日期:2016/11/29
吳老師 109/7/10
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境,資料視覺化
![post-title](https://i.ytimg.com/vi/VpT8XphmnVI/hqdefault.jpg)
乘法應用題下載 在 乘法練習卷、小四數學題目在PTT/mobile01評價與討論 的推薦與評價
在三年級乘法練習題下載這個討論中,有超過5篇Ptt貼文,作者xiang91brs也提到我是自學英文之前下載很多APP,像TED、超級單字王、Lingvist等雖然下載很多其實後來都放在 ... ... <看更多>
乘法應用題下載 在 乘法練習卷、小四數學題目在PTT/mobile01評價與討論 的推薦與評價
在三年級乘法練習題下載這個討論中,有超過5篇Ptt貼文,作者xiang91brs也提到我是自學英文之前下載很多APP,像TED、超級單字王、Lingvist等雖然下載很多其實後來都放在 ... ... <看更多>
乘法應用題下載 在 媽媽數學教室- 【講義分享.. 2年級乘法應用題:①→多】 最近有 ... 的推薦與評價
2年級乘法應用題:①→多】 最近有家長詢問講義中的【多→多】是什麼意思因為我 ... 不過並不會移除連結,如果需要更多的題目練習仍然可以下載、列印未來分享改以新的 ... ... <看更多>