智能合约从入门到精通:用Solidity开发一个“Hello World”

简介:上一章中我们聊到了智能合约的应用场景,在了解区块链技术目前的发展情况、智能合约的概念以及其应用场景之后,我们将在后续的文章中共同学习智能合约的编成语言。今天,我们就来简单地谈一谈用于编写智能合约的语言——Solidity语言。

 

那么,什么是Solidity语言呢?在前面的文章中我们反复提到过以太坊,以太坊区块链2.0典型代表,Solidity以太坊中撰写智能合约最受欢迎的语言,因此今天我们大家介绍一下这个作为智能合约开发中最主流的语言

 

Solidity是运行Ethereum虚拟机(EVM)上的一种智能合约高级语言。的语法Javascript相似,是一种面向对象的语言。但作为一种真正意义网络上运行中的去中心合约,它又有各种各样的特别之处,以下我们列举了其中的一部分,以便大家能够更直观地去理解Solidity语言的特点。

 

1. Solidity语言中,以太坊底层构造是基于帐户而非UTXO的,所以有一个特殊的Address的类型用于用户、合约以及合约代码的定位合约本身也是一个帐户)。

 

2. Solidity语言具备语言内嵌框架支持支付的特点提供了一系列诸如payable的关键字,可以在语言层面直接进行支付,在运用上快捷简便

 

3. 存储。Solidity语言的存储使用的是网络上现有的区块链,数据的每一个阶段、状态都可以得到永久存储,所以需要明确变量使用内存还是区块链。

 

4. 关于Solidity的运行环境,其运行环境建立在去中心化的网络上,强调的是合约或函数执行的调用的方式。因为原来一个简单的函数调用变为了一个网络节点的代码执行,有着分布式的特点

 

5.最后Solidity语言有着一个十分特殊的异常处理机制。在过程中一旦出现任何异常,所有的执行都将会被强制回撤,这一机制有效避免中间状态突然出现数据不一致的情况,从而保证合约执行的原子性

 

Hello World作为在《The C Programme Language》中使用的第一个演示程序,在编程的世界里听起来也许非常高端但实际上想要上手玩转其实非常地简单:

 

pragma solidity ^0.4.0;

contract HelloWorld{

    uint balance;

    function update(uint amount) returns (address, uint){

        balance += amount;

        return (msg.sender, balance);

    }

}

 

如上所示,通过读取参数输入的新值,并将累加至合约的变量中,返回发送人的地址,和最终的累计值。

 

最后,在这里给大家介绍一款浏览器编译器——Remix

 

浏览器编译器Remix可谓称得上是Solidity语言的开发神器,是一个无需安装即可使用的在线编译器。只需打开其网址,即可在线使用并看到具体效果。打开后,如下图所示:

 

输入上述代码,点击Create按钮,就能在浏览器中创建能调用函数的按钮。在update按钮旁输入入参,点击就能执行函数调用并打印出函数返回的结果了。

 

如果出现错误,可以等待浏览器资源加载完成,或强制刷新后再试。

 

除了Remix今天我们介绍一款国内的编译器JIDE

 

JIDE是JUICE开放服务平台提供用来编写智能合约及DApp的免费开发工具,JIDE集成了JUICE底层测试链、编辑器和Solidity运行时环境,用户无需搭建任何环境就可以快速地编写、编译、部署、运行智能合约

 

Remix相同JIDE是一个无需安装即可使用的在线编译器。只需打开其网址,即可在线使用并看到具体效果。http://open.juzix.net

 

JIDE提供了完整了中文开发文档,对于初学者来讲,这是非常方便

 

Solidity的完整语法,敬请期待后续文章。

部分资料来源:http://www.tryblockchain.org/

 

 

posted @ 2018-04-21 17:06  区块链技术  阅读(6711)  评论(0编辑  收藏  举报