Contract Overview
More Info
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xb356dd7b6f236e8bcc39db4d15ef5791a15ca22272dd4261114176996145a940 | 5605349 | 1555 days 16 hrs ago | 0x10ec03b714a2660581040c1a0329d88e381ca603 | 0xd9a74a40a79a718f7b82d0fe7af448d1b375a9dd | 0.02 Ether |
[ Download CSV Export ]
Contract Name:
EthPledge
Compiler Version
v0.4.21+commit.dfe3193c
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-03-24 */ pragma solidity ^0.4.2; /* EthPledge allows people to pledge to donate a certain amount to a charity, which gets sent only if others match it. A user may pledge to donate 10 Ether to a charity, for example, which will get listed here and will be sent to the charity later only if other people also collectively contribute 10 Ether under that pledge. You can also pledge to donate several times what other people donate, up to a certain amount -- for example, you may choose to put up 10 Ether, which gets sent to the charity if others only contribute 2 Ether. Matching pledges of this kind are quite common (companies may pledge to match all charitable donations their employees make up to a certain amount, for example, or it may just be a casual arrangement between 2 people) and by running on the Ethereum blockchain, EthPledge guarantees 100% transparency. Note that as Ethereum is still relatively new at this stage, not many charities have an Ethereum address to take donations yet, though it's our hope that more will come. The main charity with an Ethereum donation address at this time is Heifer International, whose Ethereum address is 0xb30cb3b3E03A508Db2A0a3e07BA1297b47bb0fb1 (see https://www.heifer.org/what-you-can-do/give/digital-currency.html) Visit EthPledge.com to play with this smart contract. Reach out: [email protected] */ contract EthPledge { address public owner; function EthPledge() { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } struct Campaign { address benefactor; // Person starting the campaign, who puts in some ETH to donate to an Ethereum address. address charity; uint amountPledged; uint amountRaised; uint donationsReceived; uint multiplier; // If this was 5, for example, other donators would only need to put up 1/5th of the amount the benefactor does for the pledge to be successful and all funds to be donated. Eg. Benefactor pledges 10 ETH, then after only 2 ETH is contributed to the campaign, all funds are send to the charity and the campaign ends bool active; bool successful; uint timeStarted; bytes32 descriptionPart1; // Allow a description of up to 132 characters. Each bytes32 part can only hold 32 characters. bytes32 descriptionPart2; bytes32 descriptionPart3; bytes32 descriptionPart4; } mapping (uint => Campaign) public campaign; mapping (address => uint[]) public campaignsStartedByUser; mapping (address => mapping(uint => uint)) public addressToCampaignIDToFundsDonated; mapping (address => uint[]) public campaignIDsDonatedToByUser; // Will contain duplicates if a user donates to a campaign twice struct Donation { address donator; uint amount; uint timeSent; } mapping (uint => mapping(uint => Donation)) public campaignIDtoDonationNumberToDonation; uint public totalCampaigns; uint public totalDonations; uint public totalETHraised; uint public minimumPledgeAmount = 10**14; // Basically nothing, can be adjusted later function createCampaign (address charity, uint multiplier, bytes32 descriptionPart1, bytes32 descriptionPart2, bytes32 descriptionPart3, bytes32 descriptionPart4) payable { require (msg.value >= minimumPledgeAmount); require (multiplier > 0); campaign[totalCampaigns].benefactor = msg.sender; campaign[totalCampaigns].charity = charity; campaign[totalCampaigns].multiplier = multiplier; campaign[totalCampaigns].timeStarted = now; campaign[totalCampaigns].amountPledged = msg.value; campaign[totalCampaigns].active = true; campaign[totalCampaigns].descriptionPart1 = descriptionPart1; campaign[totalCampaigns].descriptionPart2 = descriptionPart2; campaign[totalCampaigns].descriptionPart3 = descriptionPart3; campaign[totalCampaigns].descriptionPart4 = descriptionPart4; campaignsStartedByUser[msg.sender].push(totalCampaigns); totalETHraised += msg.value; totalCampaigns++; } function cancelCampaign (uint campaignID) { // If the benefactor cancels their campaign, they get a refund of their pledge amount in line with how much others have donated - if you cancel the pledge when 10% of the donation target has been reached, for example, 10% of the pledge amount (along with the donations) will be sent to the charity address, and 90% of the pledge amount you put up will be returned to you require (msg.sender == campaign[campaignID].benefactor); require (campaign[campaignID].active == true); campaign[campaignID].active = false; campaign[campaignID].successful = false; uint amountShort = campaign[campaignID].amountPledged - (campaign[campaignID].amountRaised * campaign[campaignID].multiplier); uint amountToSendToCharity = campaign[campaignID].amountPledged + campaign[campaignID].amountRaised - amountShort; campaign[campaignID].charity.transfer(amountToSendToCharity); campaign[campaignID].benefactor.transfer(amountShort); } function contributeToCampaign (uint campaignID) payable { require (msg.value > 0); require (campaign[campaignID].active == true); campaignIDsDonatedToByUser[msg.sender].push(campaignID); addressToCampaignIDToFundsDonated[msg.sender][campaignID] += msg.value; campaignIDtoDonationNumberToDonation[campaignID][campaign[campaignID].donationsReceived].donator = msg.sender; campaignIDtoDonationNumberToDonation[campaignID][campaign[campaignID].donationsReceived].amount = msg.value; campaignIDtoDonationNumberToDonation[campaignID][campaign[campaignID].donationsReceived].timeSent = now; campaign[campaignID].donationsReceived++; totalDonations++; totalETHraised += msg.value; campaign[campaignID].amountRaised += msg.value; if (campaign[campaignID].amountRaised >= (campaign[campaignID].amountPledged / campaign[campaignID].multiplier)) { // Target reached campaign[campaignID].active = false; campaign[campaignID].successful = true; campaign[campaignID].charity.transfer(campaign[campaignID].amountRaised + campaign[campaignID].amountPledged); } } function adjustMinimumPledgeAmount (uint newMinimum) onlyOwner { require (newMinimum > 0); minimumPledgeAmount = newMinimum; } // Below are view functions that an external contract can call to get information on a campaign ID or user function returnHowMuchMoreETHNeeded (uint campaignID) view returns (uint) { return (campaign[campaignID].amountPledged / campaign[campaignID].multiplier - campaign[campaignID].amountRaised); } function generalInfo() view returns (uint, uint, uint) { return (totalCampaigns, totalDonations, totalETHraised); } function lookupDonation (uint campaignID, uint donationNumber) view returns (address, uint, uint) { return (campaignIDtoDonationNumberToDonation[campaignID][donationNumber].donator, campaignIDtoDonationNumberToDonation[campaignID][donationNumber].amount, campaignIDtoDonationNumberToDonation[campaignID][donationNumber].timeSent); } // Below two functions have to be split into two parts, otherwise there are call-stack too deep errors function lookupCampaignPart1 (uint campaignID) view returns (address, address, uint, uint, uint, bytes32, bytes32) { return (campaign[campaignID].benefactor, campaign[campaignID].charity, campaign[campaignID].amountPledged, campaign[campaignID].amountRaised,campaign[campaignID].donationsReceived, campaign[campaignID].descriptionPart1, campaign[campaignID].descriptionPart2); } function lookupCampaignPart2 (uint campaignID) view returns (uint, bool, bool, uint, bytes32, bytes32) { return (campaign[campaignID].multiplier, campaign[campaignID].active, campaign[campaignID].successful, campaign[campaignID].timeStarted, campaign[campaignID].descriptionPart3, campaign[campaignID].descriptionPart4); } // Below functions are probably not necessary, but included just in case another contract needs this information in future function lookupUserDonationHistoryByCampaignID (address user) view returns (uint[]) { return (campaignIDsDonatedToByUser[user]); } function lookupAmountUserDonatedToCampaign (address user, uint campaignID) view returns (uint) { return (addressToCampaignIDToFundsDonated[user][campaignID]); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"charity","type":"address"},{"name":"multiplier","type":"uint256"},{"name":"descriptionPart1","type":"bytes32"},{"name":"descriptionPart2","type":"bytes32"},{"name":"descriptionPart3","type":"bytes32"},{"name":"descriptionPart4","type":"bytes32"}],"name":"createCampaign","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalCampaigns","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"campaignID","type":"uint256"}],"name":"contributeToCampaign","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"campaignID","type":"uint256"}],"name":"returnHowMuchMoreETHNeeded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"campaignID","type":"uint256"},{"name":"donationNumber","type":"uint256"}],"name":"lookupDonation","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"addressToCampaignIDToFundsDonated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"generalInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"campaignID","type":"uint256"}],"name":"cancelCampaign","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"campaignID","type":"uint256"}],"name":"lookupAmountUserDonatedToCampaign","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalETHraised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMinimum","type":"uint256"}],"name":"adjustMinimumPledgeAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"campaignsStartedByUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"campaign","outputs":[{"name":"benefactor","type":"address"},{"name":"charity","type":"address"},{"name":"amountPledged","type":"uint256"},{"name":"amountRaised","type":"uint256"},{"name":"donationsReceived","type":"uint256"},{"name":"multiplier","type":"uint256"},{"name":"active","type":"bool"},{"name":"successful","type":"bool"},{"name":"timeStarted","type":"uint256"},{"name":"descriptionPart1","type":"bytes32"},{"name":"descriptionPart2","type":"bytes32"},{"name":"descriptionPart3","type":"bytes32"},{"name":"descriptionPart4","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"}],"name":"lookupUserDonationHistoryByCampaignID","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"campaignID","type":"uint256"}],"name":"lookupCampaignPart1","outputs":[{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bytes32"},{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalDonations","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumPledgeAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"campaignIDtoDonationNumberToDonation","outputs":[{"name":"donator","type":"address"},{"name":"amount","type":"uint256"},{"name":"timeSent","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"campaignID","type":"uint256"}],"name":"lookupCampaignPart2","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bool"},{"name":"","type":"bool"},{"name":"","type":"uint256"},{"name":"","type":"bytes32"},{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"campaignIDsDonatedToByUser","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
Contract Creation Code
6060604052655af3107a4000600955341561001957600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117dc806100686000396000f30060606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630161d5f01461012257806302932f561461018d5780630b7ef89b146101b65780631527d657146101ce57806318cf1c251461020557806323eba3e31461027f57806325a6c545146102d557806345598b4a1461030c5780637a6b2a2c1461032f5780637d4504e014610385578063806c6188146103ae5780638da5cb5b146103d1578063bf832a3514610426578063ccd390371461047c578063ceea391414610587578063d73f0b2514610615578063de2ed893146106de578063decf1e6414610707578063fa99a77c14610730578063fcd24400146107aa578063fe6c52f31461081c575b600080fd5b61018b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803560001916906020019091908035600019169060200190919080356000191690602001909190803560001916906020019091905050610872565b005b341561019857600080fd5b6101a0610add565b6040518082815260200191505060405180910390f35b6101cc6004808035906020019091905050610ae3565b005b34156101d957600080fd5b6101ef6004808035906020019091905050610eb3565b6040518082815260200191505060405180910390f35b341561021057600080fd5b61022f6004808035906020019091908035906020019091905050610f0c565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b341561028a57600080fd5b6102bf600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610fb6565b6040518082815260200191505060405180910390f35b34156102e057600080fd5b6102e8610fdb565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561031757600080fd5b61032d6004808035906020019091905050610ff4565b005b341561033a57600080fd5b61036f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611268565b6040518082815260200191505060405180910390f35b341561039057600080fd5b6103986112c3565b6040518082815260200191505060405180910390f35b34156103b957600080fd5b6103cf60048080359060200190919050506112c9565b005b34156103dc57600080fd5b6103e461133d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561043157600080fd5b610466600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611362565b6040518082815260200191505060405180910390f35b341561048757600080fd5b61049d6004808035906020019091905050611393565b604051808e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b81526020018a8152602001898152602001881515151581526020018715151515815260200186815260200185600019166000191681526020018460001916600019168152602001836000191660001916815260200182600019166000191681526020019d505050505050505050505050505060405180910390f35b341561059257600080fd5b6105be600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611453565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106015780820151818401526020810190506105e6565b505050509050019250505060405180910390f35b341561062057600080fd5b61063660048080359060200190919050506114f0565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018360001916600019168152602001826000191660001916815260200197505050505050505060405180910390f35b34156106e957600080fd5b6106f16115f5565b6040518082815260200191505060405180910390f35b341561071257600080fd5b61071a6115fb565b6040518082815260200191505060405180910390f35b341561073b57600080fd5b61075a6004808035906020019091908035906020019091905050611601565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b34156107b557600080fd5b6107cb6004808035906020019091905050611658565b60405180878152602001861515151581526020018515151515815260200184815260200183600019166000191681526020018260001916600019168152602001965050505050505060405180910390f35b341561082757600080fd5b61085c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061171a565b6040518082815260200191505060405180910390f35b600954341015151561088357600080fd5b60008511151561089257600080fd5b3360016000600654815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560016000600654815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460016000600654815260200190815260200160002060050181905550426001600060065481526020019081526020016000206007018190555034600160006006548152602001908152602001600020600201819055506001806000600654815260200190815260200160002060060160006101000a81548160ff02191690831515021790555083600160006006548152602001908152602001600020600801816000191690555082600160006006548152602001908152602001600020600901816000191690555081600160006006548152602001908152602001600020600a01816000191690555080600160006006548152602001908152602001600020600b018160001916905550600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281610a9c919061174b565b916000526020600020900160006006549091909150555034600860008282540192505081905550600660008154809291906001019190505550505050505050565b60065481565b600034111515610af257600080fd5b600115156001600083815260200190815260200160002060060160009054906101000a900460ff161515141515610b2857600080fd5b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806001018281610b79919061174b565b91600052602060002090016000839091909150555034600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060008282540192505081905550336005600083815260200190815260200160002060006001600085815260200190815260200160002060040154815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034600560008381526020019081526020016000206000600160008581526020019081526020016000206004015481526020019081526020016000206001018190555042600560008381526020019081526020016000206000600160008581526020019081526020016000206004015481526020019081526020016000206002018190555060016000828152602001908152602001600020600401600081548092919060010191905055506007600081548092919060010191905055503460086000828254019250508190555034600160008381526020019081526020016000206003016000828254019250508190555060016000828152602001908152602001600020600501546001600083815260200190815260200160002060020154811515610d8f57fe5b046001600083815260200190815260200160002060030154101515610eb05760006001600083815260200190815260200160002060060160006101000a81548160ff021916908315150217905550600180600083815260200190815260200160002060060160016101000a81548160ff0219169083151502179055506001600082815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc60016000848152602001908152602001600020600201546001600085815260200190815260200160002060030154019081150290604051600060405180830381858888f193505050501515610eaf57600080fd5b5b50565b6000600160008381526020019081526020016000206003015460016000848152602001908152602001600020600501546001600085815260200190815260200160002060020154811515610f0357fe5b04039050919050565b600080600060056000868152602001908152602001600020600085815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660056000878152602001908152602001600020600086815260200190815260200160002060010154600560008881526020019081526020016000206000878152602001908152602001600020600201549250925092509250925092565b6003602052816000526040600020602052806000526040600020600091509150505481565b6000806000600654600754600854925092509250909192565b6000806001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561106757600080fd5b600115156001600085815260200190815260200160002060060160009054906101000a900460ff16151514151561109d57600080fd5b60006001600085815260200190815260200160002060060160006101000a81548160ff02191690831515021790555060006001600085815260200190815260200160002060060160016101000a81548160ff021916908315150217905550600160008481526020019081526020016000206005015460016000858152602001908152602001600020600301540260016000858152602001908152602001600020600201540391508160016000858152602001908152602001600020600301546001600086815260200190815260200160002060020154010390506001600084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156111ed57600080fd5b6001600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050151561126357600080fd5b505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b60085481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561132457600080fd5b60008111151561133357600080fd5b8060098190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60026020528160005260406000208181548110151561137d57fe5b9060005260206000209001600091509150505481565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020154908060030154908060040154908060050154908060060160009054906101000a900460ff16908060060160019054906101000a900460ff169080600701549080600801549080600901549080600a01549080600b015490508d565b61145b611777565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156114e457602002820191906000526020600020905b8154815260200190600101908083116114d0575b50505050509050919050565b60008060008060008060006001600089815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008a815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008b815260200190815260200160002060020154600160008c815260200190815260200160002060030154600160008d815260200190815260200160002060040154600160008e815260200190815260200160002060080154600160008f8152602001908152602001600020600901549650965096509650965096509650919395979092949650565b60075481565b60095481565b6005602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b60008060008060008060016000888152602001908152602001600020600501546001600089815260200190815260200160002060060160009054906101000a900460ff16600160008a815260200190815260200160002060060160019054906101000a900460ff16600160008b815260200190815260200160002060070154600160008c8152602001908152602001600020600a0154600160008d8152602001908152602001600020600b015495509550955095509550955091939550919395565b60046020528160005260406000208181548110151561173557fe5b9060005260206000209001600091509150505481565b81548183558181151161177257818360005260206000209182019101611771919061178b565b5b505050565b602060405190810160405280600081525090565b6117ad91905b808211156117a9576000816000905550600101611791565b5090565b905600a165627a7a72305820afaafa26ac8afaaaaf361f9e5fc41baacc5612d6f8cde0b829ec44f6791f0f0f0029
Swarm Source
bzzr://afaafa26ac8afaaaaf361f9e5fc41baacc5612d6f8cde0b829ec44f6791f0f0f
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.