智能合约是编程在区块链上的汇编语言。通常人们不会本人写字节码,然而会从更高级的语言来编译它,例如用 Solidity,与 Javascript 相似的专用语言。链上智能合约 dapp 零碎开发定制(I34 案例 -I633 源码 -53I9),这些字节码的确给区块链的功能性提供了指引,因而代码能够很容易与它进行交互,例如转移密码学货币和记录事件。它是运行在可复制、共享的账本上的计算机程序,能够解决信息,接管、贮存和发送价值。
pragma solidity ^0.4.22;
contract SimpleStorage{
uint storedDate;
function set (uint x) public{storedDate = x;}
function get() public view returns(uint){return storedDate;}
}
pragma solidity ^0.4.22;
contract SolidityTest{
constructor() public{}
function getResult() public view returns(uint){
// 这是单行正文
/*
* 这是多行正文
* 相似其余语言的正文
*/
uint a = 1;
uint b = 2;
uint result = a + b;
return result;
}
}
地址类型
地址类型示意以太坊地址,长度为 20 字节。地址能够应用.balance 办法取得余额,也能够应用.transfer 办法将余额转到另一个地址。
address x = 0x212;
address myAddress = this;
if (x.balance < 10 && myAddress.balance >= 10)
x.transfer(10);
援用类型 / 复合数据类型
Solidity 中,有一些数据类型由值类型组合而成,相比于简略的值类型,这些类型通常通过名称援用,被称为援用类型。
援用类型包含:
- 数组 (字符串与 bytes 是非凡的数组,所以也是援用类型)
- struct (构造体)
- map (映射)
状态变量
Solidity 反对三种类型的变量:
状态变量 – 变量值永恒保留在合约存储空间中的变量。
局部变量 – 变量值仅在函数执行过程中无效的变量,函数退出后,变量有效。
全局变量 – 保留在全局命名空间,用于获取区块链相干信息的非凡变量。
Solidity 是一种动态类型语言,这意味着须要在申明期间指定变量类型。每个变量申明时,都有一个基于其类型的默认值。没有 undefined 或 null 的概念。
pragma solidity ^0.4.22;
contract SolidityTest1{
uint storedDate; // 状态变量
constructor() public {storedDate = 10; // 应用状态变量}
}
局部变量
变量值仅在函数执行过程中无效的变量,函数退出后,变量有效。函数参数是局部变量
pragma solidity ^0.4.22;
contract SolidityTest2{
uint storedDate; // 状态变量
constructor() public{storedDate = 10;}
function getResult() public view returns(uint){
uint a=1; // 局部变量
uint b=2;
uint result = a+b;
return result;// 拜访局部变量
}
}