Smart Contract 開發實戰(一) — 變數型態

Bryan Yang
A multi hyphen life
3 min readJun 24, 2018

這一系列主要紀錄學習開發 Smart Contract 的過程…

Smart Contract 為在以太坊網絡上運行的分散式應用程式通稱.Smart Contract 其實就是一段程式語言,部署在以太坊網絡上,因此也具備去中心以及不可變等特性,而程式運行的結果會被寫在以太坊上,變成區塊鏈的一份子.(簡單來說如果寫錯就 GG 了)

Solidity

Solidity 為開發 Smart Contract 的程式語言,文件可以參考http://solidity.readthedocs.io/en/v0.4.24/

Helloworld

學新語言一定要來一下 Helloworld 的

pragma solidity ^0.4.19; //1. 宣告使用的版本//2. 宣告 contract Helloworld 是合約的名字contract HelloWorld {}

宣告變數

Solidity 裡面也可以宣告變數.這裡的變數又稱為 State Variable,這個變數在執行後會被寫入區塊鏈中(一樣,命名寫歪就 GG,而且全世界的人都看得到).

範例中宣告的變數 uint 等同於 uint256,這邊要注意 Solidity 也會有溢位的情況,溢位後該變數就等於 0… 之後會發生什麼事請參考以下悲劇…

pragma solidity ^0.4.19;contract HelloWorld{    uint digits = 16;}

數學運算

  • 加: x + y
  • 減: x - y,
  • 乘: x * y
  • 除: x / y
  • 餘數: x % y

不過強烈建議使用 safeMath…

https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/math/SafeMath.sol

Struct

Solidity 也支援比較複雜的資料格式,可以用 Struct 來定義一組變項的集合.

struct Person{
string name;
uint dna;
}

如果想要巢狀的 Struct 的話,可以用 Struct in Struct 的方式.

struct IpfsHash {
bytes32 hash;
uint hashSize;
}

struct Member {
IpfsHash ipfsHash;
}

Array

Solidity 中有支援兩種 Array,固定和動態的.


uint[2] fixedArray; //長度為 2 的 int array
string[5] stringArray; //長度為 5 的 string Arrayuint[] dynamicArray; //動態 Array

另外還可以建立 struct 的 Array,像這樣:

Person[] public people;

短評:

定義 Struct Array 的方式真的滿方便的!

--

--

Bryan Yang
A multi hyphen life

Data Engineer, Data Producer Manager, Data Solution Architect