智能合约从入门到精通:用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/

 

原文地址:https://www.cnblogs.com/shjuzhen/p/8902255.html

时间: 2024-10-02 00:26:40

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

智能合约从入门到精通:Solidity语法之内存变量的布局和状态变量的存储模型

简介:在前面我们已经讲过Solidity语言的一些语法内容,在矩阵元JUICE开放平台的JIDE开发时,一定要注意Layout in Memory和Layout of State Variables in Storage,即内存变量的布局和状态变量的存储模型.内存变量的布局(Layout in Memory) Solidity预留了3个32字节大小的槽位: 0-64:哈希方法的暂存空间(scratch space) 64-96:当前已分配内存大小(也称空闲内存指针(free memory poi

智能合约从入门到精通:Solidity语言的开发规范和开发流程

简介:上面介绍的在Solidity中嵌入的内联汇编语言也可以单独使用.实际上,它是被计划用来作为编译器的一种中间语言.本文我们将介绍开发智能合约过程中Solidity语言的开发规范和开发流程. Solidity作为编译器的一种中间语言.在开发智能合约时需要遵守相应的开发规范和开发流程. 开发规范 命名规范 目录和文件 目录使用小写,请勿使用特殊符号: 库文件和合约文件统一以.sol为后缀: 合约文件名保持与合约名一致: 文件名采用驼峰命名(首字母大写): 合约.库文件命名 合约名采用驼峰命名(首

智能合约从入门到精通:Solidity汇编语言

简介:上一节,我们讲过在JUICE平台开发智能合约的开发规范,本节我们将继续就Solidity定义的汇编语言进行更加深入的讨论.Solidity定义的汇编语言可以达到下述的目标:1.使用它编写的代码要可读,即使代码是从Solidity编译得到的.2.从汇编语言转为字节码应该尽可能的少坑.3.控制流应该容易检测来帮助进行形式验证与优化.为了达到第一条和最后一条的目标,Solidity汇编语言提供了高层级的组件比如,for循环,switch语句和函数调用.这样的话,可以不直接使用SWAP,DUP,J

智能合约从入门到精通:Solidity Assembly

简介:上一节,我们讲过Solidity 汇编语言,这个汇编语言,可以不同Solidity一起使用.这个汇编语言还可以嵌入到Solidity源码中,以内联汇编的方式使用.下面我们将从内联汇编如何使用着手,介绍其与独立使用的汇编语言的不同,最后再介绍这门汇编语言.Solidity Assembly内联汇编通常我们通过库代码,来增强语言我,实现一些精细化的控制,Solidity为我们提供了一种接近于EVM底层的语言,内联汇编,允许与Solidity结合使用.由于EVM是栈式的,所以有时定位栈比较麻烦,

智能合约从入门到精通:智能合约的前世今生

简介:区块链技术由来已久.2008年,神秘的日裔美国人中本聪天才设计出来的电子货币系统:比特币,为人类打开了区块链的大门.2009年,他发布了首个比特币软件,并正式启动了比特币金融系统.依靠POW算法的比特币随着人们认知,2016年以后区块链也为人们所追捧.而以太坊的快速发展,区块链已经进化出智能合约.DApp等新的技术,区块链2.0.3.0时代也正在来临.本文将详细介绍智能合约是什么.区块链是分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实

智能合约从入门到精通:智能合约的应用场景

简介:上一章我们简单介绍了区块链技术的发展情况,并详细介绍智能合约的基础概念.可以说,区块链1.0时代(比特币)除了代币功能,与现实生活相去甚远.智能合约的出现,给区块链带来了巨大的变化,区块链也从一种账本形式,变成了下一代计算网络的雏形.这一章我们将聊聊智能合约的应用场景.在上一篇文章中我们聊过,尼克·萨博对智能合约定义已经说的很清楚,智能合约不是一定要用区块链来实现,很久之前就已经出现了:比如微信和支付宝的信用卡自动还款,您可以认为他是一种智能合约.当还款日到了,还款条件也满足(支付宝的余额

智能合约从入门到精通:完整范例

简介:前几篇文章我们一直在讨论Solidity语言的相关语法,从本文开始,我们将介绍智能合约开发.今天我们将介绍一个完整范例.此章节将介绍一个完整案例来帮助开发者快速了解合约的开发规范及流程.注意:在进行案例编写前,请先前往JUICE开放服务平台,完成用户注册,JUICE区块链账户创建:并下载.安装.配置好JUICE客户端.场景描述在案例实践前请确保已拥有可用的JUICE区块链平台环境!!!现假设一个场景,编写一个顾客管理合约.主要实现以下功能: 提供增加顾客信息功能,手机号作为唯一KEY: 提

智能合约从入门到精通:JIDE集成开发工具

简介:前面两节,我们介绍了JIDE的工具库,本节我们将介绍智能合约开发最后一段内容,JIDE集成开发工具.除了JIDE的安装,我们还将介绍智能合约的编写.编译.部署.运行以及查看日志等.您看过所有的内容之后,将可以完整的开发出一个智能合约.JIDE简介JIDE是JUICE开放服务平台提供用来编写智能合约及DApp的免费开发工具,JIDE集成了JUICE底层测试链.编辑器和Solidity运行时环境,用户无需搭建任何环境就可以快速地编写.编译.部署.运行智能合约与发布DApp.目前JIDE支持So

solidity编写智能合约(入门)

一个简单的智能合约 先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节. 存储 contract SimpleStorage { uint storedData; function set(uint x) { storedData = x; } function get() constant returns (uint retVal) { return storedData; } } 在Solidity中,一个合约由一组代码(合约的函数)和数据(合约的状态)组成