Giter Club home page Giter Club logo

learning-solidity-2018's Introduction

learning-solidity-2018

These examples are part of my guide The best way to become Ethereum Developer in 2018

and 30/30 challenge on polish ethereum programming FB group (members write one contract a day to improve Solidity skills).

In Ethereum world everything is changing dynamically. I decided to make a set of Smart Contracts for learning purposes.

I know it's funny to name a repo this way but I am quite convinced that in 2019 these examples may not work with the latest Solidity.

Try to write a contract yourself before checking the code in the repo!

Examples

01_say_hello.sol

  • set greeting on creation and allow to change it by the owner (creator of the contract)
  • return greeting to everyone who calls sayHello method
  • return Hello Daddy to the creator

02_balance_address_checker.sol

  • return address of the contract
  • return address of the contract's owner
  • return address of the sender
  • return balance of the contract
  • return balance of the contract's owner (ONLY if you are the owner)
  • return balance of the sender

03_basic_random.sol

04_lottery_10_users.sol

  • 10 users limit
  • user has to pay 0.1 ether to join the lottery
  • same user can join once
  • owner of the contract can join the lottery
  • when 10 users join then the winner is picked
  • winner receives all the money
  • new lottery starts when the winner is pickecd

05_lottery_no_limit.sol

  • user has to pay 0.1 ether to join the lottery
  • no limit for users number
  • same user can join multiple times
  • owner of the contract can join too
  • owner decides when to pick the winner
  • winner receives all the money
  • new lottery starts when the winner is pickecd

06_lottery_muliple_winners

  • no limit for users
  • user joins paying 0.1 eth and picking number 1-100
  • owner decides when to generate random number (1-100)
  • users who picked generated numbers win
  • total prize is distributed to all winners

07_fundraising

  • fundraising has the goal to reach (amount is set on creation)
  • fundraising has the time limit (time is set on creation)
  • anyone can add any amount until time is up or the goal is reached
  • when the time is up but the goal is not reached users can withdraw their funds
  • when the goal is reached owner can withdraw all the money

08_basic_token

  • intial supply of tokens is set on creation
  • contract creator gets initial tokens
  • tokens can be transferred to any account
  • there is a protection from overflow
  • everyone can check balances

09_ERC_20_token

10_ERC20_usage

  • create your own ERC20 token using Open Zeppelin implementation
  • inherit from "StandardToken"
  • add custom name, symbol, decimals and initial supply

11_ERC_721_usage

  • create your own ERC721 token using Open Zeppelin implementation
  • inherit from "ERC721Token"
  • add custom name and symbol

want more?

Check Truffle examples

Contribution

  • feel to free to add new challenges in the README.
  • feel free to add your solution to any challenge (of course if it's different than the existing one)

Example:

If you want to add another Basic Token contract:

  1. Fork the repo
  2. Add basic_token_b.sol to the 07_basic_token directory
  3. Make a PR
  4. Let me review it and merge it
  5. Enjoy having a nice contribution to the great project :)

Like it?

If you like it please share it with others :)

learning-solidity-2018's People

Contributors

adamskrodzki avatar pbrudny avatar sebastiankozub avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.