Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lesson: Intro To Solidity #7

Open
Dan-Nolan opened this issue Jan 26, 2019 · 15 comments

Comments

@Dan-Nolan
Copy link
Contributor

@Dan-Nolan Dan-Nolan commented Jan 26, 2019

Goal

Build an Intro To Solidity Tutorial using the ChainShot Builder open-source IDE.

For more background information, I'd suggest running through a ChainShot tutorial on the main ChainShot site. This will help get a feel for how our tutorials currently run.

Also there's plenty of documentation on the Builder, which is our open-source IDE that can create these tutorials.

All of ChainShot's content is stored here

Similar Tutorials

We've built an Escrow Tutorial for Solidity. We're looking for a tutorial that takes someone from scratch and walks them through concepts in Solidity.

We also have this Solidity Buidlathon which has been used in Solidity workshops. It gives a pretty good example of how to start.

Terms

There are some ChainShot-specific terms we use. Should define these quick before jumping into the spec 😄

Stage - A set of Code Files and documentation that is combined to create a goal for the user. They should be given one or more code files that they need to change, and one or more test code files that have assertions and cannot be changed.

Stage Container (Building Block, Lesson, Challenge) - Every stage belongs to some stage container, which defines the tutorial/challenge. A Challenge is exactly how it sounds, less hand-holdy and more "demonstrate your knowledge" through a difficult problem. A Building Block is a tutorial that is built with the intention of creating a project; at the end the user can download the application they wrote. A Lesson is generally more esoteric. It is not necessarily a project that the user would continue, although it teaches concepts that will be useful to know.

More information can be found in the ChainShot Builder Docs.

Spec

Expected Number of Stages - Somewhere between 8-20. We aren't particular on this, however each stage should be have a very specific purpose. For instance, teaching how to write an array, or how to write a constructor or how to use the require function.

Purpose/Theme - Not necessary to have a common theme throughout, although it can definitely make the Tutorial more enjoyable!

Target User - Assume that the user begins with relatively little programming knowledge. They have never worked with Solidity before.

Solidity Version - v0.5.0

Concepts to Cover

There are number of concepts we'd like to cover in this tutorial. They do not need to be covered in any particular order and it's not a strict list of concepts. It can certainly be used as a checklist, but feel free to use your own judgment.

  1. Basic Programming Concepts - General programming concepts that carry over from other programming languages. Things like comments, operators and simple arithmetic.

  2. Contract Structure - Explaining basic contract syntax. How to define the version, a contract and a constructor. Teaching functions and modifying state variables.

  3. Function Visibility - Especially public and private. Explaining the differences between the two and how public creates a getter function. Mentioning that no data stored on the ethereum blockchain is currently truly private. internal and external for bonus points 👍

  4. Events - Cover when events should be used and how to pass data through an event.

  5. Global Properties - Not all global properties need to be covered, although the common ones should be. Among these msg.value and msg.sender should be utilized.

  6. Control Flow - Loops, if/else and return. Potentially break/continue, not necessary.

  7. View Functions - And how to return many values from a view function. Should mention the differences between a view function and one that modifies state.

  8. Value Types - Not necessary to cover all value types. At least one type of integer should be covered, as well as boolean, enum, and address (perhaps when explaining how an address works?)

  9. Reference Types - Should cover array, mapping and struct.

  10. Error Handling - At least one exception function like require. May be good to introduce along with msg.sender/msg.value for security purposes.

  11. Payable Functions - Should cover msg.value, balance transferring, and the payable modifier.

  12. Function Modifiers - Creating their own custom modifier.

@Dan-Nolan Dan-Nolan changed the title Intro To Solidity Lesson: Intro To Solidity Jan 26, 2019
@gitcoinbot

This comment has been minimized.

Copy link

@gitcoinbot gitcoinbot commented Feb 27, 2019

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 1000.0 DAI (1000.0 USD @ $1.0/DAI) attached to it.

@gitcoinbot

This comment has been minimized.

Copy link

@gitcoinbot gitcoinbot commented Feb 27, 2019

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 1 week, 3 days from now.
Please review their action plans below:

1) nikolayangelov has applied to start work (Funders only: approve worker | reject worker).

Hello there.
I am experienced blockchain trainer that had a lead and prepared materials for multiple blockchain courses worldwide.
Besides that, I have done multiple lectures and workshops on Blockchain topic in different conferences.
Here is a link to one of my Workshops - http://nikolaytech.com/create-decentralized-application/

Learn more on the Gitcoin Issue Details page.

2) tomo93 has applied to start work (Funders only: approve worker | reject worker).

I want do my first gitcoin project. i complete step by step this tutorial.

Learn more on the Gitcoin Issue Details page.

3) jalextowle has been approved to start work.

As it happens, I already have a curriculum developed that covers all of the topics listed (and more). To complete this bounty, I would take my existing educational work and modify it into a form that could be presented in a tutorial style. After that, I would learn how the ChainShot IDE works and create the tutorial using the materials I had prepared. I’ve always been very passionate about education, and ever since I got into Solidity, I’ve wanted to share my knowledge, so I really hope I get this one!

Learn more on the Gitcoin Issue Details page.

4) saarang1995 has applied to start work (Funders only: approve worker | reject worker).

First of all, I will setup ChainShot Builder open-source IDE. Then build tutorials on it by keeping in mind the points mentioned in the Guide.

It would be great if somebody could brief me a little about, how the end product should be like.

Regards,
Saarang

Learn more on the Gitcoin Issue Details page.

5) beovolytics has applied to start work (Funders only: approve worker | reject worker).

I am velmurugan from Beovolytics company from india, we have team in india working on blockchain application. we can contribute to create Solidity tutorial using the ChainShot with high quality.

As this work helps our team help us to learn Solidity better we ready to work for less payment also.

Learn more on the Gitcoin Issue Details page.

@ekene90

This comment has been minimized.

Copy link

@ekene90 ekene90 commented Feb 27, 2019

Good

@Dan-Nolan

This comment has been minimized.

Copy link
Contributor Author

@Dan-Nolan Dan-Nolan commented Mar 3, 2019

Thanks everyone for applying! Incredible to see so much raw talent.

@jalextowle - Looking forward to working with you! If you have any questions jump into our Slack; @Roots2D and I are online most of the time. Feel free to message us directly!

As a heads up, we are releasing a new version of the Builder IDE tonight. The command line utility will automatically download the latest when you run it. I'll be preparing some release notes for the newest version in a couple hours. Among a number of changes, the previous version of the Builder IDE compile was only using Solidity v0.4.19. In the newest version it will respect the language version set in the stage configuration.

@jalextowle

This comment has been minimized.

Copy link

@jalextowle jalextowle commented Mar 3, 2019

Awesome! I’m excited to get started. I’ll hop your slack when I start work tomorrow.

@gitcoinbot

This comment has been minimized.

Copy link

@gitcoinbot gitcoinbot commented Mar 9, 2019

@jalextowle Hello from Gitcoin Core - are you still working on this issue? Please submit a WIP PR or comment back within the next 3 days or you will be removed from this ticket and it will be returned to an ‘Open’ status. Please let us know if you have questions!

  • reminder (3 days)
  • escalation to mods (6 days)

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

@gitcoinbot

This comment has been minimized.

Copy link

@gitcoinbot gitcoinbot commented Mar 10, 2019

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


@jalextowle due to inactivity, we have escalated this issue to Gitcoin's moderation team. Let us know if you believe this has been done in error!

  • reminder (3 days)
  • escalation to mods (6 days)

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

1 similar comment
@gitcoinbot

This comment has been minimized.

Copy link

@gitcoinbot gitcoinbot commented Mar 12, 2019

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


@jalextowle due to inactivity, we have escalated this issue to Gitcoin's moderation team. Let us know if you believe this has been done in error!

  • reminder (3 days)
  • escalation to mods (6 days)

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

@jalextowle

This comment has been minimized.

Copy link

@jalextowle jalextowle commented Mar 12, 2019

I am still working on this bounty. The ChainShot team and I have communicated about the timeline, and I haven't started working on the bounty yet. This said, I will, and I believe that we are all on the same page as far as the timeline goes.

@gitcoinbot

This comment has been minimized.

Copy link

@gitcoinbot gitcoinbot commented Mar 19, 2019

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


@jalextowle due to inactivity, we have escalated this issue to Gitcoin's moderation team. Let us know if you believe this has been done in error!

  • reminder (3 days)
  • escalation to mods (6 days)

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

1 similar comment
@gitcoinbot

This comment has been minimized.

Copy link

@gitcoinbot gitcoinbot commented Mar 21, 2019

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


@jalextowle due to inactivity, we have escalated this issue to Gitcoin's moderation team. Let us know if you believe this has been done in error!

  • reminder (3 days)
  • escalation to mods (6 days)

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

Dan-Nolan added a commit that referenced this issue Apr 22, 2019
Plasma QA Session #7
@Dan-Nolan Dan-Nolan added the WIP label Jul 2, 2019
@Roots2D

This comment has been minimized.

Copy link
Contributor

@Roots2D Roots2D commented Aug 15, 2019

Hey @jalextowle, anything we can help with to get this bounty closed down?

@Dan-Nolan

This comment has been minimized.

Copy link
Contributor Author

@Dan-Nolan Dan-Nolan commented Aug 27, 2019

@jalextowle - I know you made some good progress on this. Is this something you'll be able to complete by this Sunday? If not, we will need to transfer the bounty to complete this.

@jalextowle

This comment has been minimized.

Copy link

@jalextowle jalextowle commented Aug 27, 2019

@Dan-Nolan

This comment has been minimized.

Copy link
Contributor Author

@Dan-Nolan Dan-Nolan commented Aug 27, 2019

Great! Yes, I believe that was all that was left to do 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
5 participants
You can’t perform that action at this time.