Created
June 30, 2018 19:57
-
-
Save timbeiko/6b5cfd983c0f1212a57bd397ccc6eff5 to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.4.24+commit.e67f0147.js&optimize=false&gist=
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.17; | |
contract Adoption { | |
address[16] public adopters; | |
function adopt(uint petId) public returns (uint) { | |
require(petId >= 0 && petId <= 15); | |
adopters[petId] = msg.sender; | |
return petId; | |
} | |
function getAdopters() public view returns(address[16]) { | |
return adopters; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.11; | |
contract CrowdFunding { | |
// Defines a new type with two fields. | |
struct Funder { | |
address addr; | |
uint amount; | |
} | |
struct Campaign { | |
address beneficiary; | |
uint fundingGoal; | |
uint numFunders; | |
uint amount; | |
mapping (uint => Funder) funders; | |
} | |
uint public numCampaigns; | |
mapping (uint => Campaign) public campaigns; | |
function newCampaign(address beneficiary, uint goal) public returns (uint campaignID) { | |
campaignID = numCampaigns++; // campaignID is return variable | |
// Creates new struct and saves in storage. We leave out the mapping type. | |
campaigns[campaignID] = Campaign(beneficiary, goal, 0, 0); | |
} | |
function contribute(uint campaignID) public payable { | |
Campaign storage c = campaigns[campaignID]; | |
// Creates a new temporary memory struct, initialised with the given values | |
// and copies it over to storage. | |
// Note that you can also use Funder(msg.sender, msg.value) to initialise. | |
c.funders[c.numFunders++] = Funder({addr: msg.sender, amount: msg.value}); | |
c.amount += msg.value; | |
} | |
function checkGoalReached(uint campaignID) public returns (bool reached) { | |
Campaign storage c = campaigns[campaignID]; | |
if (c.amount < c.fundingGoal) | |
return false; | |
uint amount = c.amount; | |
c.amount = 0; | |
c.beneficiary.transfer(amount); | |
return true; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment