十一課堂|經過小遊戲學習Ethereum DApps編程(1)

image

這篇文章,是經過製做一款可愛的遊戲(DAPP,也能夠稱作智能合約),從而學習Solidity語言。和ETH網絡的一些基礎知識。git

全程在線編程,無需搭建複雜的環境,只須要有任何其餘語言的編程經驗,便可立刻學習。github

網址:https://cryptozombies.io編程

這篇文章是一篇關於製做遊戲的總結。微信

1

在線遊戲簡介

支持多語言界面:網絡

image

https://cryptozombies.io/函數

課程:學習

image

cryptozombies課程區塊鏈

編輯頁面ui

image

在線編輯頁面code

學習總結

可視範圍的

image

函數專用限制語法

image

整數

image

int是帶符號整數

其餘變量

image

2

solidity語言的知識點

modifier

modifier 和 function有些類似。

主要用於提早檢查function的參數是否符合function的要求。

這個就是經典檢查調用智能合約的owner是不是此智能合約的開發者的modifier。

出自:https://github.com/OpenZeppelin/openzeppelin-solidity

OpenZeppelin is a library for writing secure Smart Contracts on Ethereum.

/**

   * @dev Throws if called by any account other than the owner.

   */

  modifier onlyOwner() {

    require(msg.sender == owner);

    _;

  }

在遊戲裏面,咱們增長了對於級別的判斷。

modifier aboveLevel(uint _level, uint _zombieId) {
   require(zombies[_zombieId].level >= _level);
   _;
 }

用法:添加在須要檢查的function定義的末尾

function changeName(uint _zombieId, string _newName) external aboveLevel(2, _zombieId) {
}

Gas

在ETH網絡上,用戶在經過智能合約修改區塊鏈上的數值的時候,須要支付Gas的。Gas能夠經過以太幣來兌換。

簡單的說,修改區塊鏈的時候,不是免費的。難免費的理由能夠參照網絡。

而只是查詢區塊鏈上的信息的時候,是免費。因此爲了給你的用戶節約費用,開發者可用經過設置函數爲 view 和 pure 來實現。

image

好比,用戶能夠查詢本身擁有的東東的時候,能夠這樣寫function。

 function getZombiesByOwner(address _owner) external view returns (uint[]) {
 }

還記得 external 麼?

image

storage

更新區塊鏈是須要支付Gas的,尤爲是 storage 的寫入操做。

開發者須要儘可能避免 storage 的寫入。其餘語言,循環是效率低的,但在solidity裏面,比起Gas的消耗,咱們仍是傾向於用循環。

除非,讓邏輯過於複雜化的處理,好比每次都須要在 memory 上從新創建序列。

或者是每次都須要調用函數來獲得特定值的時候。

經過在變量定義的時候,加入 memory 能夠在 memory 上新建一個僅僅存儲在 memory 裏面的變量

function getArray() external pure returns(uint[]) {

  // Instantiate a new array in memory with a length of 3

  uint[] memory values = new uint[](3);

  // Add some values to it

  values.push(1);

  values.push(2);

  values.push(3);

  // Return the array

  return values;

}

pure : 函數內沒有使用任何外部數據

本系列文章做者:HiBlock區塊鏈技術佈道羣-A****mywu

原文發佈於簡書

加微信baobaotalk_com,加入技術佈道羣

Blockathon|48小時極客競賽,區塊鏈馬拉松等你挑戰(上海)

時間:2018年10月19-21日

地點:(上海黃浦)露香園路1號(近淮海東路)P2

  • 招募50名開發者(識別下圖二維碼或點擊「閱讀原文」便可瞭解詳情並報名)

image

北京blockathon回顧:

Blockathon(北京):48小時極客開發,區塊鬆11個現場交付項目創意公開

成都blockathon回顧:

Blockathon2018(成都站)比賽落幕,留給咱們這些區塊鏈應用思考

相關文章
相關標籤/搜索