solidity语言介绍以及开发环境准备
Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。
Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。
它的语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有很多的不同,下面列举一些:
- 以太坊底层是基于帐户,而非UTXO的,所以有一个特殊的
Address
的类型。用于定位用户,定位合约,定位合约的代码(合约本身也是一个帐户)。 - 由于语言内嵌框架是支持支付的,所以提供了一些关键字,如
payable
,可以在语言层面直接支持支付,而且超级简单。 - 存储是使用网络上的区块链,数据的每一个状态都可以永久存储,所以需要确定变量使用内存,还是区块链。
- 运行环境是在去中心化的网络上,会比较强调合约或函数执行的调用的方式。因为原来一个简单的函数调用变为了一个网络上的节点中的代码执行,分布式的感觉。
- 最后一个非常大的不同则是它的异常机制,一旦出现异常,所有的执行都将会被回撤,这主要是为了保证合约执行的原子性,以避免中间状态出现的数据不一致。
代码示例:
pragma solidity ^0.4.20; contract HelloWorld{ uint balance; function HelloWorld() { balance = **; } function update(uint amount) returns (address, uint){ balance += amount; return (msg.sender, balance); } }
工欲善其事必先利其器,下面介绍开发的IDE以及环境搭建:
可用的 Solidity 集成
-
基于浏览器的 IDE,集成了编译器和 Solidity 运行时环境,不需要服务端组件。
-
IntelliJ IDEA 的 Solidity 插件(可用于其他所有的 JetBrains IDE)
-
Microsoft Visual Studio 的 Solidity 插件,包含 Solidity 编译器。
-
Package for SublimeText — Solidity language syntax
SublimeText 编辑器的语法高亮包。
-
Atom 编辑器的插件,支持高亮、编译和运行时环境(兼容后端节点和虚拟机)。
-
Atom 编辑器的插件,提供 Solidity 语言的 Lint 检查(静态检查)。
-
Atom 的可配置的 Solidty 静态检查器,基于 Solium。
-
一种静态检查器,识别和修复 Solidity 中的风格以及安全问题。
-
一种静态检查器,提供安全和风格指南以及智能合约验证的最佳实践规则。
-
Microsoft Visual Studio Code 插件,包含语法高亮和 Solidity 编译器。
-
Emacs 编辑器的插件,提供语法高亮和编译错误报告。
-
Vim 编辑器的插件,提供语法高亮。
-
Vim 编辑器的插件,提供编译检查。
不再维护:
-
基于 Qt 的 IDE,可以设计、调试和测试 Solidity 智能合约。
-
专门的网页 IDE,也提供一个完整以太坊环境的脚本访问。
Solidity 工具列表
-
Solidity 语言的构建工具、包管理器以及部署助手。
-
一个命令行控制台,可以让你立刻尝试 Solidity 语言。
-
可视化的 Solidity 控制流,并能标明潜在的安全漏洞。
-
EVM 反汇编程序,可以执行字节码的静态分析,能提供比 EVM 操作更高级的抽象。
-
Solidity 语言的文档生成器。
第三方 Solidity 解析器和语法
-
JavaScript 的 Solidity 解析器
-
ANTLR 4 解析器生成器的 Solidity 语法
我个人主要atom配合 Remix开发的,下面介绍一下Remix的使用
功能
这里我们使用在线编译器,打开网址
文件夹管理
最左边是文件夹管理,里面列出了当前的工作区里的文件,remix可以支持从本地文件夹读取文件。
工作区
正中间是工作区,工作区上半部是代码编辑区,在这里可以写solidity合约。
下半部是日志区,在执行智能合约时,会显示transaction相关的信息。在输出日志的时候还可以查看Details和Debug信息。
功能区
最右边的是功能区,里面有编译,运行,设置和分析以及调试器和支持。
在编译器点击Details可以查看编译细节,里面有NAME,METADATA,BYTECODE,ABI 等一些相关信息。
在设置里面可以选择我们的编译器版本,和一些IDE的使用设置。
其他就不介绍了,使用是很简单的。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
请手动释放你的资源(Please release resources manually)
作者:Laruence() 本文地址:http://www.laruence.com/2012/07/25/2662.html 转载请注明出处 我从来不认为这个问题是个问题, 直到昨天. 昨天晚上的时候, 我提交了一个RFC, 关于引入finally到PHP, 实现这个功能的出发点很简单, 因为我看见不少人的需求, 另外还有就是Stas说, 一直只看到讨论, 没看到有人实现. 于是我就给实现了. 发到邮件组以后, 一个开发组的同学Nikita Popov(nikic), 表示强烈反对这个RFC, 当然最初的论点他说了很多, 最后我们在线讨论的时候, 他表达了一个他的观点: “PHP在请求结束后会释放所有的资源, 所以我们没有必要调用fclose,或者mysql_close来释放资源, PHP会替我们做” 并且他表示, 他从来都不会调用fclose, 认为fclose的存在只是为了继承C函数族. 我很惊讶, 我也不知道还有多少人是和他一样的想法, 所以我决定写这篇文章. 在PHP5.2以前, PHP使用引用计数(Reference count)来做资源管理, 当一个zval的引用计数为0...
- 下一篇
Docker系列教程25-练习:使用Docker Compose编排WordPress博客
原文:http://www.itmuch.com/docker/25-docker-compose-wordpress/,转载请说明出处。 本节,我们来使用Docker Compose编排WordPress博客。 version: '2' services: mysql: image: mysql:5.7 expose: - "3306" environment: - MYSQL_ROOT_PASSWORD=123456 wordpress: image: wordpress ports: - "80:80" environment: - WORDPRESS_DB_HOST=mysql - WORDPRESS_DB_USER=root - WORDPRESS_DB_PASSWORD=123456 WARNING 这里,MySQL镜像只能用5.x的镜像,不能使用8.x的镜像。否则WordPress无法正常连接到MySQL。原因是:目前PHP 7.x(例如7.1.4)所使用的字符集与MySQL 8.x所使用的默认字符集不同:https://bugs.php.net/bug.php?id=7...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2更换Tomcat为Jetty,小型站点的福音