我們彩票案例的目的是多個玩家能夠通過傳送錢參與彩票。玩家傳送的錢越多,他贏得所有資金的機會就越大。當彩票的運營發行者決定關閉彩票後,就會選擇乙個優勝者,並將全部資金轉給這名優勝者。
usersbet[msg.sender] = 10;
// usersbet[msg.sender] == 10
uint nbusers = 0;
uint totalbets = 0;
address owner;
我們然後構建乙個bet
函式。正常賬戶一樣,智慧型合約可以操控以太坊。我們bet
函式需要有乙個支付彩金的功能。當函式被呼叫的時候他就將投入的彩金值傳送給以太坊智慧型合約,並將傳送以太幣的數量儲存在msg.value
。
所以當函式被呼叫時,我們先檢查傳送的以太幣值是否大於零即msg.value>0
。然後我們將傳送值儲存在usersbet
的對映中。如果這個玩家的彩金等於0,我們遞增我們的nbusers
並儲存玩家的位址,這樣我們可以在關閉這一期彩票時遍歷所有玩家。。
function bet() public payable
usersbet[msg.sender] += msg.value;
totalbets += msg.value;}}
function endlottery() public }}
}
乙個特別的說明,我們在這個示例中使用了乙個非常簡單的方法來獲取或取值,現實中特別是在處理錢的時候,你需要用乙個更好的方法來獲得真正的隨機數。
下面所有的智慧型合約**放在一起:
pragma solidity ^0.4
.11;
contract lottery
function bet() public payable
usersbet[msg.sender] += msg.value;
totalbets += msg.value;}}
function endlottery() public }}
}}
所以讓我們部署我們的合約並且來玩一把。我們將用我們的兩個賬戶來傳送彩金用以太坊幣。作為乙個功能你會看到我們可以呼叫函式payable
進行支付。
傳送了以太幣後,你會發現智慧型合約現在成立了。
如果你從彩票運營者賬戶呼叫entlotytye()
函式,彩票收益將轉移給優勝者,並且智慧型合約也將結束。
在本文中,我們使用payable
修飾符,使它可以傳送以太幣到我們的智慧型合約。
原文**這個以太坊部落格
C 開發智慧型合約和以太坊dApp
最近區塊鏈技術引起了我的注意。我剛開始了解它,就看到了區塊鏈去中心化架構的巨大潛力,並且它能夠簡化各種現有繁瑣的流程,通過各種形式的合約。儘管網上提供了大量關於區塊鏈技術和區塊鏈開發的資源,但它們並沒有得到驗證,也不是很容易理解。所以我不得不深入挖掘很多資訊,包括書籍,論壇,文章。現在我能夠將典型的...
開發基於以太坊智慧型合約的DApp
梳理一下架構關係 web3.js與以太坊通訊是通過rpc的方式實現的。ganache cli模擬了乙個以太坊的測試節點並提供對外的rpc訪問方式 就是例子裡經常說的http localhost 7545或者http localhost 8545 同時在其中內建了m個以太坊帳號,用於測試。1 安裝no...
以太坊智慧型合約Hello World示例程式
文章 簡介 以太坊 ethereum 是一提供個智慧型合約 smart contract 功能的公共區塊鏈 blockchain 平台.本文介紹了乙個簡單的以太坊智慧型合約的開發過程.開發環境 在以太坊上開發應用,首先需要安裝其客戶端,本文使用基於go語言的geth,其官網為 第一步 在命令列環境中...