智能合约是编程在区块链上的汇编语言。通常人们不会本人写字节码,然而会从更高级的语言来编译它,例如用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;//拜访局部变量}
}