Skip to content

wmanshu/learning-solidity-2018

This branch is 11 commits behind pbrudny/learning-solidity-2018:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

cf28f25 · Jul 31, 2018

History

35 Commits
Jun 20, 2018
Jun 20, 2018
Jun 20, 2018
Jul 12, 2018
Jul 6, 2018
Jul 8, 2018
Jul 6, 2018
Jul 9, 2018
Jul 6, 2018
Jul 11, 2018
Jul 12, 2018
Jul 15, 2018
Jul 31, 2018

Repository files navigation

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!

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

About

Basic examples of Solidity smart contracts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Solidity 100.0%