2022-01-15|閱讀時間 ‧ 約 5 分鐘

智能合約開發實戰(二) - 撰寫智能合約的程式語言

一、Solidity:用來撰寫智能合約的程式語言之一,也是最多人用的,Solidity的語法概念最早是由加文·伍德在2014年提出,後期則以Christian Reitwiessner所領導的以太坊團隊Solidity接手開發。(出處:維基百科)
由於加文·伍德在規劃Solidity語言時參照了ECMAScript的語法概念,所以Solidity語法比較類似JavaScript,對於寫過JavaScript的人來說是相對比較容易上手的,Solidity最後經過編譯後可以放到EVM(Ethereum Virtual Machine)上執行。 區塊鏈其實分為:公鏈(比特幣(Bitcoin)以太坊(Ethereum))、測試鏈(RopstenKovanRinkebyGoerli)、個人鏈(Ganache),這個部份我另外再開篇幅做講解,這裡就不多做解釋。
所以如果您是對於JavaScript相對熟悉的話,那選擇用Solidity來撰寫智能合約就對了,在學習上會來的輕鬆一些,照著官方文件做學習,應該就能學會如何撰寫智能合約了,Solidity官方網站
  1. pragma solidity ^0.4.19;
  2. contract HelloWorld {
  3.   function sayHello() public returns (string) {
  4.     return ("Hello World");
  5.   }
  6. }
學習的話還有另外一個僵屍遊戲教學平台,藉由僵屍遊戲的教學,教你一步一步學習Solidity,由於中間是用僵屍來當做說明的,比如而如何產生一個僵屍、僵屍攻擊等,我個人是覺得還蠻有意思的,簡單易學,還蠻推薦的。
二、Vyper:用來撰寫智能合約的程式語言之二,Vyper 是一種面向合約的Pythonic編程語言,針對以太坊虛擬機 (EVM),相對於Solidity是比較相似於JavaScript的,Vyper是較相似於Python的,由於Vyper比Solidity晚出現,所以目前網路上對於Vyper的相關教學相對來說會比較少,但還是可以到Vyper官方網站去做學習,如果你是比較熟悉Python的話,IDE的話一樣都可以使用RemixVisual Studio Code做為開發環境,這個就看個人的習慣了。
  1. # @version ^0.2.0
  2. greet: public(String[100])
  3. @external
  4. def __init__():
  5. self.greet = "Hello World"
兩個程式語言各有各的優缺點,如果你還是很困惑該選哪一個,那我們來比較一下這兩個有什麼差異?在Vyper的官方文件中有詳細的說明,有興趣的人可以點進去了解:Vyper官方文件,下面是我針對有對它的說明做的一些理解說明,有疑慮的可以點進去官方文件中了解。
  • Vyper沒有Modifiers,取而代之的是assert及assert_modifiable。
  • 沒有繼承(Class inheritance),Vyper的說明是去除繼承能夠提升程式的可讀性和安全性,畢竟一個寫的很複雜的繼承會降 低程式的可讀性(要一直找繼承xd),看到頭都暈了,相對的也能提升安全性(易讀就不容易寫錯),這樣說也是有道理。
  • 沒有重載(Function overloading),官方說法是:"這可能會導致在任何給定時間調用哪個函數時產生很多混淆",個人覺得是還好,但官方主要是強調Vyper的程式碼易讀性,也可以說是程式碼的單純性,所以去限制了重載的功能,進而提升程式碼的易讀性(不讓你寫的太複雜xd)。
  • Recursive calling,官方說法是:"Recursive calling會使得無法設置gas limit的上限,為gas limit攻擊敞開大門",gas是合約交易時要支付的費用,可以看成是手續費。
  • Infinite-length loops,官方說是:"和遞歸一樣無法Set gas limits,會有安全性移疑慮"
以上說明,希望各位看的還明白,Solidity是比較早出來的,所以網路上的教學也好、範例也好都是會比較豐富的,但Vyper是最近幾年才出現的,也有它的優點,看得出來是希望讓開發人員撰寫出比較易讀又安全的程式碼,而且是類似Python的(對熟悉Python而不熟JavaScript的人來說是一大吸引力),只是網路上的教學或是範例目前還是相對來說比較少的,選好未來想做為開發合約的程式語言了嗎?那就來繼續往下面走吧。
有什麼想要了解或是不清楚的部份,歡迎留言和我分享,謝謝。 如果喜歡我的文章歡迎追隨,按愛心,我每週都會上新文章。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.