最近和W律師討論出本「一百個錯誤法律觀念」,我們目前列了以下錯誤法律觀念,如果大家有發現什麼錯誤觀念,或覺得有什麼法律觀念很重要觀念要正確,也歡迎留言,感謝。
以下是錯誤法律觀念:
契約成立一定要書面白紙黑字
保證承保,但不保證理賠
簽名無效,蓋章才有效
公司名義簽約比較有保障
公司欠錢可找負責人個人要錢
父債子要還
刑事案件可以和解就不起訴案
取得債務人所有權狀,就能享有抵押權
沒有向政府登記就沒有著作權
欠錢惡意不還要坐牢
嫁出去的女兒沒有繼承權
養子女不是親生的也沒有繼承權或只能分少一點
協議離婚雙方簽名就完成
協議離婚必須處理的議題
檢察官可以幫我討債索賠
沒工作收入無法取得子女監護權
公平法是管制物價的法律
通姦違憲後抓姦也沒用
分居二年就可以離婚
打滿三張驗傷單才能訴請離婚
是借貸或投資關係不重要
欠錢躲超過15年就沒事
過期的本票支票完全沒有用
發生碰撞才算車禍
車禍處理很簡單
車禍和解書怎麼寫?
簽約只管對方有簽名蓋章就好
試用期約定不合法
有本票支票就可以向對方討債
離婚證人不用和雙方碰面
違反定型化契約範本的契約無效
網路上文案圖片可以任意複製下載
網路上影片可以自由下載並分享
出資委託的配音可以自由使用
創作甄選的參賽作品主辦單位可以自由使用
攝影師可以自由使用模特兒照片
車禍傷人可全由保險公司出面處理
車禍肇事責任鑑定會寫責任比例
對方同意就可以和他/她發生性行為
跟蹤纏擾目前無法可管
裝修房子簽合約太麻煩
裝修品質有問題就是刑事詐欺
網路購物七天內一定可以退款
公寓大廈社區不能禁止養寵物
管委會可以拒絕住戶影印任何文件
建商拖延公設點交無法可管
產品申請專利權就不會侵害專利
商標圖案近似就是侵害商標權
漏水爭議只能上法院訴訟
租約有公證就不必上法院訴訟
房東房客可以任意提前終止租約
簽發本票支票不寫禁止背書轉讓
存證信函內容隨便寫就好
老闆可以任意付錢資遣員工
建商廣告不實消費者當然能解約
房屋實價登錄灌水沒關係
隱瞞凶宅或重大瑕疵不會有刑責
屋況說明書內容不實一定能解約
遺產可以只留給女兒
打官司的律師費可以要對方賠
遺囑自己寫一寫就有效
虛擬貨幣不能用來付錢
App使用者資料可以蒐集賣錢
開加盟店比上班領死薪水好
房屋久占別人土地就免拆
加盟契約條件加盟總部說得算
竊盜罪只有當場抓到才會成立
加入工會根本沒什麼用
網路空間的言論自由無法可管
罷工是侵害他人權益的違法行為
面試新人時絕對不能詢問前科
工作場所可以任意設置監視器
契約違約金條款不受法律限制
員工五人以下公司免保勞健保
颱風天不上班會構成曠職
不動產買賣有仲介代書就無須履保
員工自己疏失發生職災老闆可免責
職場霸凌無法可管
法律問題諮詢免費律師就好
沒收犯罪所得可以保護被害人?
擔任國民法官很輕鬆
犯罪案件媒體可以自由報導
法官的邏輯一定也和我一樣
友善父母原則可以不用理會
沒付扶養費不能探視小孩
補習班倒閉信用卡分期帳款只能乖乖繳完
假扣押有甚麼功能?
關於假扣押常被誤解的觀念
運動比賽中任何傷害都可免責
粉絲抖內的金錢不用歸還
商品直播代言人有何法律責任
打官司有證人就夠了
私人錄音不能當證據
行政訴訟都會敗訴
銀行帳戶被凍結不能解除
營業秘密保護可以包山包海
合夥作生意靠信任不用簽約
取消訂位可以要求餐廳退訂金
無罪推定原則是真的?
沒錢請律師無法打官司
糾紛鬧上法院就不用調解了
打贏官司對方就會賠我錢
#錯誤法律觀念
「詢價單範本下載」的推薦目錄:
- 關於詢價單範本下載 在 Facebook 的最佳解答
- 關於詢價單範本下載 在 威廉氏後人 - 李毅評醫師 Facebook 的最讚貼文
- 關於詢價單範本下載 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於詢價單範本下載 在 英文報價單範本下載2023-在Facebook/IG/Youtube上的焦點 ... 的評價
- 關於詢價單範本下載 在 英文報價單範本下載2023-在Facebook/IG/Youtube上的焦點 ... 的評價
- 關於詢價單範本下載 在 如何用Excel 打造一套簡易訂單系統(上) (報價單、銷貨明細表等 ... 的評價
- 關於詢價單範本下載 在 2023 包裝盒刀模下載youtube - omegxx.online 的評價
- 關於詢價單範本下載 在 2023 包裝盒刀模下載youtube - xxgamee.online 的評價
- 關於詢價單範本下載 在 2023 包裝盒刀模下載youtube 的評價
- 關於詢價單範本下載 在 包裝盒刀模下載youtube 2023 - gamewarr.online 的評價
- 關於詢價單範本下載 在 包裝盒刀模下載youtube 2023 的評價
- 關於詢價單範本下載 在 包裝盒刀模下載youtube 2023 的評價
詢價單範本下載 在 威廉氏後人 - 李毅評醫師 Facebook 的最讚貼文
< 不孕症治療、人工生殖、試管嬰兒:所得稅報稅問題總整理 >
各位好
小弟威廉氏後人 – 李毅評醫師
-
中華民國台灣,在每年五月,
申報所得稅是大部分民眾感到極為痛苦且厭煩的過程
我相信沒有人會想要竭盡所能的繳錢給政府。
-
所以,
在合法的範圍下
盡可能提高所得之扣除額
就能有效地減少所得稅的申報。
.
假設妳的所得稅率是40%
如果可以將去年試管嬰兒所花費的20萬元
全數申報為所得扣除額的醫藥及生育費部分的話
就可以減少約8萬元的所得稅。
.
如果試管嬰兒支出為50萬元的話
在所得稅率40%的情況下
就可以減少20萬元的所得稅。
-
在這裡
我會很具體地把會面臨到的問題和疑問一次說明
我這篇文章設公開、且具實名
我會為我所寫的文字負責。
請放心閱讀。
-
問題一:人工、試管嬰兒療程,是否可以被列為醫療費支出,成為列舉扣除額?
答:
針對這個問題
如果搜尋網路上過去的許多文章
幾乎都會告訴妳:
人工生殖被國稅局認定:不是醫療行為,
若申報會被剔除,無法報稅。
-
但是
根據今年,2020年國稅局網站說明
國稅局節稅手冊,線上版
“醫藥及生育費” 說明:
「納稅義務人、配偶或申報受扶養親屬的醫藥和生育費用。以付與公立醫院、全民健保特約醫院、診所和經財政部認定之會計紀錄完備醫院為限。自101年7月6日起,納稅義務人、配偶或受扶養親屬如屬因身心失能無力自理生活而須長期照護者,其付與公立醫院、全民健康保險特約醫院及診所或其他合法醫院及診所的醫藥費,得依法扣除。受有保險給付部分不得扣除。」
根據這段說明裡面,
完全沒有提到人工生殖被排除在外。
.
他僅規定必須是要在:「公立醫院、全民健保特約醫院、診所和經財政部認定之會計紀錄完備醫院為限。」
連結如下:
https://www.etax.nat.gov.tw/etwmain/front/ETW118W/CON/406/5140077482396615285?fbclid=IwAR33Ds4vPypSNBIgcxFb7-HnIP1621CsDQ8XHVNRuSUDnhWkJ8ZpoJXfu5g
-
那為什麼還會有網路上的文章或說法認定人工生殖排除在外呢?
.
為了解決這個問題
我本人已致電至國稅局 - 台北總局 (02)2311-3711
撥專線後按9接總機,詢問綜合所得稅的列舉扣除額,
告知後轉#4910。
.
承辦人回答:「只要健保合約醫療院所,所開的收據加上醫生的診斷證明書,就可以。」
-
同樣在今年本月份
也有其他網友幫忙致電
國稅局 - 台北信義分局 (02)2720-1599
國地稅免付費電話: 0800-000-321 (稅務問題);
都得到同樣的答案。
.
國稅局承辦人回覆:「不孕症是醫療行為,可以列報。但需要檢具醫療院所收據或醫師診斷證明。」
-
也有網友反問國稅局承辦人員
那為何過去曾有報稅被核退的案例呢?
國稅局的人回答:「可能是以前的人申報但沒提供診斷證明。很明確不能列報的目前只有醫美。畢竟這是額外自願要進行的治療,很明顯就不是治療行為,就一定不能列報。如果是要列舉申報,報稅者要提供診斷證明,上面要記載治療項目、使用的藥物、藥劑,以及藥物是因醫療治療需求,並非自願用藥就可以。」
-
目前
包括我本人在內的好幾位網友
都已詢問國稅局稅務人員
還沒有人收到國稅局判定不能申報的回答。
.
各位好朋友
如果有閒暇或有疑慮
也可以再自行致電至國稅局詢問這個問題。
.
至少我本人打電話去問的時候
所得到的答案是:確定可以申報。
-
問題二:人工、試管嬰兒療程,如何申報列舉扣除額?
答:
根據其他患者實測
各大醫院的醫療費用
都能夠以手機、自然人憑證、或戶口名簿等方法
直接下載去年在該醫院的醫療支出
會在報稅軟體下載的 ”扣除額資料清單裡面”
裡面會有報稅人、身份證字號、金額、跟醫療院所
但不會有詳細的費用用途說明
.
不過
根據金額
我相信各位可以知道
某一筆十幾萬的醫療費用
就是試管的費用
這些金額通常包括:院內藥品、取卵手術、胚胎培養、植入費用等等
.
若妳使用線上報稅軟體下載
可以直接得到妳去年在某醫院的自付總金額。
這些,
報稅軟體會自動幫你做醫療及生育費的列舉扣除額申報。
所以,可以不用擔心
.
至少根據網友在本院(新光醫院)的經驗
這些金額都會直接在軟體中出現。
也就沒有所謂”能不能申報”的問題。
-
問題三:人工、試管嬰兒療程,若有使用院外藥局藥品,藥費是否可以申報?
答:
在這裡
必須先跟各位說明
為什麼會有”院外藥品”的情況出現
-
是不是李毅評醫師本人跟院外藥局有掛勾
因此收受院外藥師回扣
才要求患者前往藥局買藥?
-
這我可以對天發誓,沒有。
如果我有收受院外藥局
任何人工生殖相關療程藥物費用的回扣的話
我天打雷劈、不得好死。
-
原因是這樣的
由於醫院藥局藥品太多
管理困難
不可能所有品項都進入醫院。
.
以排卵針(r-FSH)為例
院內只有進75 IU的果納芬和75 IU的美諾孕
而且都是水粉分開,必須自行泡製。
.
每隻75IU的果納芬
院內單價為:1122元
平均每IU = 14.96元
且每次領藥需額外支付50元左右的藥師服務費。
-
而醫院對面的院外藥局為例
除了人工生殖相關藥物品項齊備、應有盡有之外
也經常可以協助患者向周邊藥局調藥
便利性絕非院內藥局可比
.
院外藥局的果納芬
是方便患者注射用的具刻度筆針
每隻300 IU的果納芬筆針
是4100元。
也就是平均每IU = 13.67元
.
而且,
如果使用胰島素空針抽取筆針
每隻300 IU的果納芬筆針
可抽取約360 IU (一般人無經驗者的抽取技術皆可)
也就是平均每IU = 11.39元
而且也不用額外支付藥師服務費。
-
因此
若以一個一般體重、標準療程的試管患者來說
225 IU 乘以施打10天,
共耗費2250 IU,
.
就算不考慮院內藥局的藥師服務費 (每次差50元)
以這樣的藥量
在院內藥局跟院外藥局領藥的費用
分別是:
14.96 X 2250 = 33660
11.39 X 2250 = 25628
相差金額差到 8032元。
因此
為了方便病人用藥
也為了完成各種不同的藥物配方
更為了減省患者藥費
我針對人工或試管療程
都會讓病人去院外藥局買藥。
-
但是
這樣的話
在所得稅申報時
每次療程可能就會少報到3-4萬的藥費。
-
為了解決這個問題
根據今年,2020年國稅局網站說明
國稅局節稅手冊,線上版,第五大點,第9小點。
五、醫藥及生育費核實列報無上限
9. 納稅義務人、配偶或其受扶養親屬,在合於所得稅法第17條第1項規定之醫療院、所治療,因病情需要急須使用該院所無之特種藥物,而自行購買使用者,其藥費可憑該醫療院、所之住院或就醫證明、主治醫師出具准予外購藥名、數量之證明及書明使用人為抬頭之統一發票或收據,申報醫藥及生育費列舉扣除。
-
也就是說
只要這個藥物是在合乎規定的醫療院所接受治療
且院內沒有之藥品,
可憑就醫證明、
主治醫師出具准予外購藥名、數量之證明
及書明使用人為抬頭之統一發票或收據,
作為醫藥及生育費列舉扣除額申報。
-
這部分的申報較為繁瑣
-
簡單來說
就是需要當時買藥的收據
收據需有使用人的姓名。
另外
還需”主治醫師出具准予外購藥名、數量之證明”
就是一張蓋有我印章或我簽名的外購藥購買單
上面會有購買人、購買日期、藥品名、數量。
.
這些藥費收據、外購藥購買單、再加上診斷證明書
就可以依法申報所得稅列舉扣除額。
-
以上
是關於每年所得稅人工生殖部分的列舉扣除額申報問題
我已經盡我所能的去查證
並且根據今年最新的國稅局網路公告內容作解說
提出的試管嬰兒療程所得稅申報詳解。
-
當然啦
就算我們都依照規定申報
但國稅局怎麼認定並不是妳我所能改變
國稅局查核人員也未必跟接電話詢問的承辦人員有一樣的想法
.
但是
我們能做的
就是依照法律規定上白紙黑字寫的內容
依法進行申報
.
如果多成功申報了十萬
少繳了三、四萬塊的稅金
也算是對試管嬰兒患者
守法、依法、合法
而能夠得到的一點點小確幸。
-
這篇文章歡迎分享至所有有關人工生殖的社團或粉專
我為我寫的文字負全責。
若有其他會計、法律的專家看到此文
或者各位好朋友致電國稅局後,有不同的回答
也歡迎在本文下方留言討論
也謝謝各位,一同為試管姊妹努力
也祝福各位,早日脫離不孕症的苦海。
-
參考資料:
1. 國稅局台北總局,電話詢問內容
2. 國稅局網站 – 國稅節稅手冊 伍、扣除額篇
3. https://www.etax.nat.gov.tw/etwmain/front/ETW118W/CON/406/5140077482396615285?fbclid=IwAR33Ds4vPypSNBIgcxFb7-HnIP1621CsDQ8XHVNRuSUDnhWkJ8ZpoJXfu5g
-
p.s.
這裡,我有一個很小的不情之請。
為了提供較高的門診看診品質,
為了提供更多患者諮詢與看診的時間,
是否可以麻煩各位
在門診,要開立診斷書當日,
事先將院外藥物的相關收據、購藥日期、總金額
等相關資訊整理妥當,
不要在診間一張一張翻找,
造成診斷書開立耗時過長,
導致其他患者就醫品質下降。
我很樂意幫忙各位節稅省錢,
但也希望大家幫忙,
真的非常感謝各位的協助
-
p.s.2.
以下為我去年幫患者申請所得稅申報的診斷書
目前已成功申報,且並無任何問題
此範本提供我的療程患者整理收據時
當作參考範本。
只要是我本人開立的外購藥單
都可以以此類推,作為所得稅扣除額申報使用。
-
醫師診斷書 :
診斷:不孕症
"醫囑:病患依上述原因,接受人工授精及試管嬰兒等人工生殖療程,病患於o月x日至x月o日期間,因不孕症療程需要,使用相關之排卵針劑、雌激素、黃體素等藥劑,因病情需要,且需使用本院無品項之藥物,病患依醫師開立之外購藥品購買單,前往全民健保特約藥局 - xx藥局購買相關藥品,總金額為:ooxxx元。"
懇請我的療程患者
協助整理好:
1. 外購藥的購買日期 (第一張 & 最後一張的日期,作為時間區間)
2. 外購藥品的購買單及買藥收據,依時間次序排列
3. 總金額。
這樣在門診就可以快速地完成診斷書開立
謝謝大家協助。
-
"所得稅的申報,等於是試管療程唯一能打的一點點小折扣,13-15萬的療程,如果可以少報個3-4萬塊稅金,也算是打了七折,不無小補吧"
-
~威廉氏後人 李毅評醫師~
臉書蒐尋 : 威廉氏後人 李毅評醫師
粉絲專頁 : https://www.facebook.com/mrwilliams999
網誌連結 : https://mrwilliams999.blogspot.tw
-
詢價單範本下載 在 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.
👏 歡迎轉載分享鼓掌
詢價單範本下載 在 英文報價單範本下載2023-在Facebook/IG/Youtube上的焦點 ... 的推薦與評價
熊猫办公网站提供精品英文报价单Excel表格模板下载,汇集全球精品流行的英文报价单Excel表格完整版模板,下载后直接替换文字图片即可使用,方便快捷的不二选择。 報價單 ... ... <看更多>
詢價單範本下載 在 如何用Excel 打造一套簡易訂單系統(上) (報價單、銷貨明細表等 ... 的推薦與評價
註1如果下拉選單跟表格是在「同一張」工作表的話,可以省略建立名稱的步驟,只要把下拉選單的來源,直接指定到表格的B2:B7 (產品欄) 就OK 了▻ 內容 ... ... <看更多>
詢價單範本下載 在 英文報價單範本下載2023-在Facebook/IG/Youtube上的焦點 ... 的推薦與評價
熊猫办公网站提供精品英文报价单Excel表格模板下载,汇集全球精品流行的英文报价单Excel表格完整版模板,下载后直接替换文字图片即可使用,方便快捷的不二选择。 報價單 ... ... <看更多>