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

更新於 發佈於 閱讀時間約 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的人來說是一大吸引力),只是網路上的教學或是範例目前還是相對來說比較少的,選好未來想做為開發合約的程式語言了嗎?那就來繼續往下面走吧。
有什麼想要了解或是不清楚的部份,歡迎留言和我分享,謝謝。
如果喜歡我的文章歡迎追隨,按愛心,我每週都會上新文章。
為什麼會看到廣告
avatar-img
20會員
38內容數
目前加密貨幣的市場上幣種非常的多 讓你看得眼花撩亂了嗎? 可以藉由這一系列的加密貨幣分析 能夠幫忙您了解每一個加密貨幣它的價值所在 每一集都會介紹一種幣 是一個很實用的專題,歡迎大家訂閱~
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
宅D嘉的沙龍 的其他內容
智能合約(英語:Smart contract)是一種特殊協定,在區塊鏈內製定合約時使用,當中內含了程式碼函式 (Function),亦能與其他合約進行互動、做決策、儲存資料及傳送以太幣等功能(出處:維基百科),簡單的說就是在區塊鏈上做以太幣的交易或互動的一種程式(合約)。
最近年終歲末了,不過你們看到這篇應該已經年初了 汽車也到了又要保養又要繳保險的時間了 這篇就來簡單分享汽車保養可以怎麼省
確立乙太幣的未來發展 升級乙太坊2.0 邁向Web 3.0
乙太幣 (ETH) 做為乙太坊 (Ethereum)的使用貨幣,此篇我們就來看看乙太幣的價值在哪? 2.市值:目前乙太幣的市值為4674億美元,流通量為118,804,120個乙太幣,市值的高低也就代表著此加密貨幣有一定的價值存在。 熱門的區塊鏈遊戲《Axie Infinity》
說到乙太幣 (ETH) 就不能不提乙太坊 (Ethereum) - 乙太坊是由俄羅斯裔加拿大程序員 - Vitalik Buterin (人稱V神) 和Gavin Wood共同推出的,乙太坊是一種去中心化而有智能合約功能的一種公共的區塊鏈平台,開發者需要支付乙太幣做為運行智能合約所需的交易手續費
加密貨幣最重要的就是這個幣有沒有價值! 我們來看看,比特幣(BTC)的價值在哪裡? 2.信仰:我相信有不少人會相信未來的世界裡,加密貨幣一定會愈來愈壯大,包含Web 3.0是以區塊鏈為架構來運行的,有了這一層的信仰,而身為龍頭的比特幣,很多人也相信比特幣未來是無法取代的,也不會消失,信仰也代表著有它
智能合約(英語:Smart contract)是一種特殊協定,在區塊鏈內製定合約時使用,當中內含了程式碼函式 (Function),亦能與其他合約進行互動、做決策、儲存資料及傳送以太幣等功能(出處:維基百科),簡單的說就是在區塊鏈上做以太幣的交易或互動的一種程式(合約)。
最近年終歲末了,不過你們看到這篇應該已經年初了 汽車也到了又要保養又要繳保險的時間了 這篇就來簡單分享汽車保養可以怎麼省
確立乙太幣的未來發展 升級乙太坊2.0 邁向Web 3.0
乙太幣 (ETH) 做為乙太坊 (Ethereum)的使用貨幣,此篇我們就來看看乙太幣的價值在哪? 2.市值:目前乙太幣的市值為4674億美元,流通量為118,804,120個乙太幣,市值的高低也就代表著此加密貨幣有一定的價值存在。 熱門的區塊鏈遊戲《Axie Infinity》
說到乙太幣 (ETH) 就不能不提乙太坊 (Ethereum) - 乙太坊是由俄羅斯裔加拿大程序員 - Vitalik Buterin (人稱V神) 和Gavin Wood共同推出的,乙太坊是一種去中心化而有智能合約功能的一種公共的區塊鏈平台,開發者需要支付乙太幣做為運行智能合約所需的交易手續費
加密貨幣最重要的就是這個幣有沒有價值! 我們來看看,比特幣(BTC)的價值在哪裡? 2.信仰:我相信有不少人會相信未來的世界裡,加密貨幣一定會愈來愈壯大,包含Web 3.0是以區塊鏈為架構來運行的,有了這一層的信仰,而身為龍頭的比特幣,很多人也相信比特幣未來是無法取代的,也不會消失,信仰也代表著有它
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在幣圈,常聽到一句話——「珍愛生命,遠離合約」。這句話可不是空穴來風。虛擬貨幣合約交易,因其高槓桿和高風險,吸引了無數投資人進場,也讓許多人在瞬間失去所有資本。本文將深入探討什麼是虛擬貨幣合約交易、其優勢和風險,並引導讀者在進場前做出慎重考慮。 什麼是虛擬貨幣合約交易? 虛擬貨幣合約交易指的是
分佈式帳本是區塊鏈技術不可或缺的一部分,它通過將數據分散儲存於多個節點,提升數據的安全性及可信度。區塊鏈的共識機制決定交易的有效性及節點的權限運作。本文對不同共識機制,如工作量證明(PoW)和權益證明(PoS)進行探討,並分析其各自的優缺點及在實際應用中的潛力。
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
在幣圈,常聽到一句話——「珍愛生命,遠離合約」。這句話可不是空穴來風。虛擬貨幣合約交易,因其高槓桿和高風險,吸引了無數投資人進場,也讓許多人在瞬間失去所有資本。本文將深入探討什麼是虛擬貨幣合約交易、其優勢和風險,並引導讀者在進場前做出慎重考慮。 什麼是虛擬貨幣合約交易? 虛擬貨幣合約交易指的是
分佈式帳本是區塊鏈技術不可或缺的一部分,它通過將數據分散儲存於多個節點,提升數據的安全性及可信度。區塊鏈的共識機制決定交易的有效性及節點的權限運作。本文對不同共識機制,如工作量證明(PoW)和權益證明(PoS)進行探討,並分析其各自的優缺點及在實際應用中的潛力。
0. 大綱Outline 以太坊交易 發起交易 與智能合約互動 receive & fallback function 1. 舊以太坊交易 Ethereum Gas Tracker - 7 Gwei - Etherscan //交易技術, 表示特定帳戶的交易數量,是計數器, 每發一筆交