Soildity入门学习(一)

Solidity代码都包含在合约里面,一份合约就是以太币应用的基本模块,所有的变量都属于一份合约,它是所有应用的起点。

文本

中度可信度描述已自动生成

一份名为HelloWorld的空合约

版本指令

所有的Solidity源码都必须有“version
pragma
”—标明Solidity编译器的版本,以避免将来新的编译器可能破坏代码。(当前最新版本是0.4.19

 

状态变量

无符号整数:uint

其值不能是负数,在Solidity中,uint实际上是uint256代名词,一个256位的无符号整数。

字符串:string

字符串用于保存任意长度的UTF-8编码数据

string greeting = “Hello world!”

 

结构体

结构体允许生成一个更复杂的数据类型,有多个属性.

 

数组

如果想建立一个集合,可以用数组这样的数据类型,Solidity支持静态数组和动态数组。也可以建立一个结构体类型的数组。状态变量被永久保存在区块链中。所以在合约中创建动态数组来保存成结构的数据是非常有意义的。

 

函数

习惯上Solodity函数里的变量都是以(_)开头以区别全局变量,这是一个名为eatHamburgers的空函数,它接受两个参数:一个string类型的和一个uint类型的参数。

图片包含 文本

描述已自动生成

Solidity定义的函数的属性默认为public,这就意味着任何一方(或者其他合约)都可以调用合约里的函数。显然并不是任何时候都需要这样,而且这样的合约易于受到攻击,所以函数定义为private是一个好的编程习惯,只有需要外部调用时才设置为public

 

返回值

Solidity里,函数的定义里可以包含返回值的数据类型。函数的修饰符用于确定函数的权限。当函数定义为view时,意味着它只能读取数据不能更改数据,pure函数表明这个函数甚至都不访问应用里的数据、状态,它的返回值完全取决于它的输入参数。Solidity编译器会给出提示,提醒应该使用的修饰符。

 

Keccak256

Ethereum内部有一个散列函数keccak256,它用了SHA3版本,能够在Ethereal中有很多应用,同样也可以用它造一个伪随机数。(在区块链中安全地产生一个随机数是一个很难的问题)

 

事件

事件是合约和区块链通讯的一种机制。用户前端应用“监听”某些事件,并做出反应。

 

 

 

Leave a Reply

Your email address will not be published.