以太坊編程涉及那些開發語言?

智能合約編程語言

Solidity

Solidity是第一批的描述智能合約的語言。當前是最流行的語言,因此也有最多的例子,文檔,和教程。你應該學習這個,除非你有要學習其它的理由。

你可以使用基於瀏覽器的Remix IDE來進行快速驗證。

下面是一個Solidity的合約:

pragma solidity ^0.4.11;
contract BasicToken { 
    mapping(address => uint256) balances; 
    function transfer(address _to, uint256 _value) returns () {
        balances[msg.sender] = balances[msg.sender] - _value;
        balances[_to] = balances[_to] + _value; 
    } 
    function balanceOf(address _owner) constant returns (uint256 balance) { 
        return balances[_owner];
    }
}

LLL

LLL是一門Lisp風格的底層編程語言,就像語言名稱看到的這樣。雖然以太坊官方並沒有將它作爲主要需要支持的語言,但它仍舊持續進行着更新,且與solidity在同一個資源庫。

這是一個使用LLL語言寫的一個ERC20代幣的合約,鏈接:https://github.com/benjaminion/LLL_erc20/blob/1c659e890e2b30408555b9467a8dfd8988211b3b/erc20.lll

如果你正在學習,也許不是那麼的容易習慣LLL語言的寫法。

Serpent

Serpent是一個類Python的高級語言,最終也會被編譯爲EVM字節碼。它主要被Augur團隊使用。

但最近Zeppelin Solution團隊發現其編譯器有一個嚴重的bug,鏈接:https://blog.zeppelin.solutions/serpent-compiler-audit-3095d1257929在這個問題被修復之前都不建議繼續使用。

如果你對Augur如何解決這些漏洞感興趣,你可以閱讀Zeppelin Solution的這篇文章。鏈接:https://blog.zeppelin.solutions/augur-rep-token-critical-vulnerability-disclosure-3d8bdffd79d2

Serpent的合約看起來如下:

def register(key, value): # Key not yet claimed if not
self.storage[key]: self.storage[key] = value return(1) else: return(0) 
# Key already claimeddef ask(key): return(self.storage[key])

知識星球二維碼380.png

發佈了44 篇原創文章 · 獲贊 7 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章