以太坊编程涉及那些开发语言?

智能合约编程语言

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

你可能感兴趣的:(以太坊编程涉及那些开发语言?)