Solidity入门

参考

https://solidity.readthedocs.io/en/latest/contracts.html#contracts

综合

  1. Solidity是一种静态类型语言,需要再编译期间指定每个变量(静态和局部)的类型。
    类似于java,是强类型的,int 就是int,string 就是string,但是 JavaScript是动态类型的,变量 var test=1; test="hzs"; 都是可以的

  2. Solidity分为2个大类:Value Types(值类型)和Reference Types(引用类型)

  3. 对于值类型,总是会进行拷贝,对于引用类型,都是指针的使用

int a=100;
int b=a; //拷贝一份 b=100
b=200; //此时 a的值还是100
  1. 交易
    交易是从一个账户发送到另一个账户的消息。你可以发送一笔交易给另一个账户以转移ETH。如果目的账户是合约账户,其代码也将被执行。请注意,涉及代码执行的每笔交易都将在网络中的所有节点上执行。此外,所有的代码运行以及交易执行都将被记录在以太坊区块链上。

  2. Solidity
    Solidity 是一种面向合约的高级语言,其语法与JavaScript相似。Solidity是静态类型的,支持继承,库以及复杂的用户定义类型。其编译后就是节点运行的EVM程序集。

智能合约的布局

合约的布局
https://solidity.readthedocs.io/en/latest/layout-of-source-files.html

pragma solidity ^0.4.0;
import * as symbolName from "filename";
import "github.com/ethereum/dapp-bin/library/iterable_mapping.sol" as it_mapping;
import "./filename.sol";

/** @title Shape calculator. */
contract ShapeCalculator {
    /** @dev Calculates a rectangle's surface and perimeter.
      * @param w Width of the rectangle.
      * @param h Height of the rectangle.
      * @return s The calculated surface.
      * @return p The calculated perimeter.
      */
    function rectangle(uint w, uint h) public pure returns (uint s, uint p) {
        s = w * h;
        p = 2 * (w + h);
    }
}

合约的构成

https://solidity.readthedocs.io/en/latest/contracts.html#contracts

Solidity的合约编程和面向对象编程很类似,支持的特性很多:状态变量、函数、修饰符、事件、类型、枚举、继承、类库、接口

  1. 构造函数:当创建一个合约的时候,会触发一次构造函数。solidity的构造函数不允许重载,系统默认会添加一个空的构造函数,也可以自己写一个带参数,或者不带参数的构造函数。
contract Coin {
    address public minter;
    //这个构造函数的代码仅仅只在合约创建的时候被运行。
    function Coin() {
        minter = msg.sender;
    }
}

关键字

https://blog.csdn.net/black_bearb/article/details/81000513

在Solidity v4.17之前,只有constant,后续版本将constant拆成了view和pure

  1. view: 表示这是一个可以读取状态变量但是不能改的函数,不需要耗费 gas
  2. pure: 表示函数不能改也不能读状态变量,不需要耗费 gas
  3. payable: 表示函数要进行货币操作必须要带上payable关键字,否则编译不通过

数字运算

  1. solidity里面有 int和 uint的区别
  2. 2**4 表示2的4次方,就是16
  3. &(与) , |(或) , ^ (异或), ~ (非) 运算符
  4. << 左右移动运算符

你可能感兴趣的:(Solidity入门)