solidity payable_以太坊区块链搭建与使用(五)-智能合约Solidity

一、智能合约Solidity开发工具

1、remix-ide http://remix.ethereum.org/ 在线版本,也可以去github下载安装到本地。开发、编译、发布、执行、测试

2、remix-ide-cn http://remix.hubwiz.com/ 在线中文版本,也可以去github下载安装到本地。支持开发、编译、发布、执行、测试 。这个有个好用的地方就是部署的合约可以直接在这里调用执行。

p.s. 一般打开链接是空白可以试试Ctrl+F5强刷几次试试。

3、Ethereum Studio 目前官网推出Ethereum Studio。 https://studio.ethereum.org/ 在线版本,还是比较好用,不过目前没看到可下载本地。

4、IntelliJIDEA Java开发者可以试试IDEA的插件,不过开发与编译好像要安装2插件才行。

二、智能合约Solidity入门

Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上。Solidity与其它语言相关的特点?
它的语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有很多的不同,下面列举一些:

  • 以太坊底层是基于帐户,而非UTXO的,所以有一个特殊的Address的类型。用于定位用户,定位合约,定位合约的代码(合约本身也是一个帐户)。
  • 由于语言内嵌框架是支持支付的,所以提供了一些关键字,如payable,可以在语言层面直接支持支付,而且超级简单。
  • 存储是使用网络上的区块链,数据的每一个状态都可以永久存储,所以需要确定变量使用内存,还是区块链。
  • 运行环境是在去中心化的网络上,会比较强调合约或函数执行的调用的方式。因为原来一个简单的函数调用变为了一个网络上的节点中的代码执行,分布式的感觉。
  • 最后一个非常大的不同则是它的异常机制,一旦出现异常,所有的执行都将会被回撤,这主要是为了保证合约执行的原子性,以避免中间状态出现的数据不一致。

Hello Wolrd!
听起来高大上,其实入手玩起来也可以很简单:pragma solidity ^0.4.0; contract HelloWorld{ uint balance; function update(uint amount) returns (address, uint){ balance += amount; return (msg.sender, balance); } }
通过读取参数输入的新值,并将之累加至合约的变量中,返回发送人的地址,和最终的累计值。Solidity的完整语法:入门说明:

  • Solidity智能合约文件结构
  • 智能合约源文件的基本要素概览(Structure of a Contract)

值类型:

  • 类型
  • 布尔(Booleans)
  • 整型(Integer)
  • 地址(Address)
  • 字节数组(byte arrays)
  • 小数
  • 字符串(String literal)
  • 十六进制字面量
  • 枚举
  • 函数(Function Types)

引用类型:

  • 引用类型(Reference Types)
  • 数据位置(Data location)
  • 数组(Arrays)
  • 数据结构(struct)

杂项:

  • 映射/字典(mappings)
  • 左值运算符(Operators Involving LValues)
  • 类型间的转换(Conversions between Elementary Types)
  • 类型推断(Type Deduction)

单位:

  • 货币单位(Ether Units)
  • 时间单位(Time Units)

语言内置特性:

  • 特殊变量及函数(Special Variables and Functions)
  • 数学和加密函数(Mathematical and Cryptographic Functions)
  • 地址相关(Address Related)

进阶:

  • 入参和出参(Input Parameters and Output Parameters)
  • 控制结构
  • 函数调用(Function Calls)
  • 创建合约实例(Creating Contracts via new)
  • 表达式的执行顺序(Order of Evaluation of Expressions)
  • 赋值(Assignment)
  • 作用范围和声明(Scoping And Decarations)
  • 异常(Excepions)
  • 内联汇编(Inline Assembly)

合约详解:

  • 合约
  • 可见性或权限控制(Visibility And Accessors)
  • 访问函数(Accessor Functions)
  • 函数修改器(Function Modifiers)
  • 常状态变量(constant state variables)
  • 回退函数(fallback function)
  • 事件(Events)
  • 继承(Inheritance)
  • 接口(Abstract Contracts)

其它:

  • 库(Libraries)
  • 状态变量的存储模型(Layout of State Variables in Storage)
  • 内存变量的存局(Layout in Memory)
  • 调用数据的布局(Layout of CallData)
此文引用网络资源 https://www. tryblockchain.org/
hanko:以太坊区块链搭建与使用(一)-私有链​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(二)-私有链配置与启动​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(三)-联盟链​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(四)-以太坊钱包工具​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(五)-智能合约Solidity​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(六)-基于Java调用以太坊​zhuanlan.zhihu.com

你可能感兴趣的:(solidity,payable)