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

image

1

solidity語言的知識點

forgit

ETH網絡中,對於區塊鏈的寫入操做,是須要用戶支付Gas的,因此咱們不少時候選用 memory 而不是 storage。微信

memory用於臨時存儲,相似於RAM。網絡

這樣定義多個 memory。app

uint[] memory evens = new uint[](5);

for 語句和其餘語言裏面的語句很相似。函數

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

  uint[] memory evens = new uint[](5);

  // Keep track of the index in the new array:

  uint counter = 0;

  // Iterate 1 through 10 with a for loop:

  for (uint i = 1; i <= 10; i++) {

    // If `i` is even...

    if (i % 2 == 0) {

      // Add it to our array

      evens[counter] = i;

      // Increment counter to the next empty index in `evens`:

      counter++;

    }

  }

  return evens;oop

能夠獲得:  [2, 4, 6, 8, 10]學習

payable,ether

還記得咱們學習過的函數可視範圍詞麼?區塊鏈

image

還有對於函數的操做範圍的限定詞:ui

image

還有能夠自定義的限定詞:this

image

payable 是solidity語言裏面的另一個很是有用的限定詞。

ether 是solidity語言裏面的以太幣單位。

咱們來看一下這個函數:

function buySomething() external payable {

    // Check to make sure 0.001 ether was sent to the function call:

      require(msg.value == 0.001 ether);

      // If so, some logic to transfer the digital item to the caller of the function:

    transferThing(msg.sender);

  }

 msg.value :用戶支付的以太幣

 若是這個函數沒有payable而用戶支付的以太幣不會被接受

Withdraws

假設你編寫了一個小遊戲,有不少玩家能夠在遊戲裏面購買裝備。你的這個小遊戲賺錢了。

等積累到了必定程度,你是否是想把錢取出來呢?

你能夠這樣編寫一個函數:

contract GetPaid is Ownable {

  function withdraw() external onlyOwner {

   owner.transfer(this.balance);
 }
}

假設,Ownable 和 onlyOwner 是經過modifier實現了的函數。

this.balance 是指這個Dapp的以太幣

transfer 是轉帳函數。

好比,若是咱們的用戶支付了多餘的以太幣,能夠這樣找零

uint itemFee = 0.001 ether; msg.sender.transfer(msg.value - itemFee);

咱們甚至能夠幫助用戶之間交易裝備:

seller.transfer(msg.value)

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

原文發佈於簡書

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

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

時間:2018年10月19-21日

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

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

image

北京blockathon回顧:

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

成都blockathon回顧:

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

相關文章
相關標籤/搜索