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

智能合约编程语言

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容