Skip to content

pbrudny/learning-solidity-2018

Repository files navigation

learning solidity 2018 [We are updating this project in 2024 😎]

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!

Challenges

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

Other challenges

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 :)

Releases

No releases published

Packages

No packages published