【原创】solidity基础知识+实战专题(完结)

solidity

#1

在本文中,我们将介绍以太坊智能合约的开发语言solidity。 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);
    }
}

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

浏览器编译器Remix

使用无需安装的浏览器编译器Remix可以立即看到效果。打开后,如下图所示:

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

备注

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

solidity[1]-HelloWorld

solidity智能合约[2]-helloworld

solidity智能合约[3]-代码结构

solidity智能合约[4]-pure与view剖析

solidity智能合约[5]——一笔交易详解

solidity智能合约[8]-位运算与字面量

solidity智能合约[7]-整型与运算

solidity智能合约[6]-基本类型与bool运算

solidity智能合约[9]-字节数组与运算

solidity智能合约[10]-动态字节数组

solidity智能合约[11]-字符串

solidity智能合约[12]-固定字节数组相互转换

solidity智能合约[13]-固定字节数组转动态字节数组

solidity智能合约[14]-动态字节数组转换为string

solidity智能合约[15]-fixtostring

solidity智能合约[16]-固定长度数组

solidity智能合约[18]-twoarray

solidity智能合约[17]-动态长度数组

solidity智能合约[19]-for循环

solidity智能合约[20]-动态二维数组

solidity智能合约[21]-数组字面量

solidity智能合约[22]-地址

solidity智能合约[23]-payable

solidity智能合约[24]-global

solidity智能合约[25]-转账的3种方式与比较

solidity智能合约[26]-mapping

solidity智能合约[27]-函数与函数重载

solidity智能合约[28]-函数返回值

solidity智能合约[29]-函数作用域

solidity智能合约[30]-值拷贝

solidity智能合约[31]-构造函数

solidity智能合约[32]-函数modifire

solidity智能合约[33]-modifire-deep

solidity智能合约[34]-合约继承与可见性

solidity智能合约[35]-function-automatic

solidity智能合约[36]-连续继承与多重继承

solidity智能合约[37]-以太坊虚拟机数据存储

solidity智能合约[38]-storage引用

solidity智能合约[39]-结构体

solidity智能合约[40]-memory属性

solidity智能合约[41]-structdeep

solidity智能合约[42]-memory与storage相互转换

solidity智能合约[43]-众筹案例

solidity智能合约[44]-以太坊测试网络与metamask

solidity智能合约[45]-library库

solidity[46]-随机数与事件

solidity智能合约[47]-interface

solidity智能合约[48]-call函数

solidity智能合约[49]-安全-溢出攻击

solidity智能合约[50]-assembly内联汇编

solidity智能合约[51]-安全—dos攻击

solidity智能合约[52]-安全-storage陷阱

solidity智能合约[53]-安全-重入攻击

solidity智能合约[54]-安全—取反

solidity智能合约[55]-数字货币发行(上)

solidity智能合约[56]-solc编译智能合约

solidity智能合约[57]-测试web3j

solidity[57]-test-deploy-contract

solidity[59]-infura-deploy