layout: true class: center, middle, inverse --- # Decentralised Applications Development Club ![DApps Dev Club](https://dappsdev.org/img/dadc-logo.png) ## Kickoff Session 20/02/2019 --- layout: false class: left, middle, inverse ## Today - Intro - Partners - Sessions - Focus - Build what? - Just enough blockchain - What's a DApp? - Next session - Announcements --- layout: false class: left, middle, inverse .left-column[ ## Intro ## Brendan ] .right-column[ - Work mostly with NodeJs - Started DApps Dev Club .footnote[https://dappsdev.org/author/bguiz/] ] --- layout: false class: left, middle, inverse .left-column[ ## Intro ## Brendan ## Kenneth ] .right-column[ - Work mostly with Solidity - Runs the Blockchain & DApps meetup .footnote[https://dappsdev.org/author/kenneth/] ] --- layout: false class: left, middle, inverse .left-column[ ## Intro ## Brendan ## Kenneth ## Why DADC? ] .right-column[ - Many blockchain meetups - None that focus on - teaching the underlying technology - how to develop apps .footnote[ https://dappsdev.org/blog/2018-12-31-introducing-the-decentralised-apps-development-club/ ] ] --- layout: false class: left, middle, inverse .left-column[ ## Intro ## Brendan ## Kenneth ## Why DADC? ## Book Club ] .right-column[ - Run like a *book club* meets *tech meetup* - Will actually be using a book - *Mastering Ethereum* - Format is heavily inspired by SingaporeJS' book club .footnote[ - https://github.com/ethereumbook/ethereumbook - https://www.meetup.com/Singapore-JS/ ] ] --- layout: false class: left, middle, inverse .left-column[ ## Thanks ] .right-column[ Blockchain & DApps meetup .width100percent[ ![Blockchain & DApps meetup](https://secure.meetupstatic.com/photos/event/d/6/4/9/highres_472854857.jpeg) ] .footnote[ https://www.meetup.com/BlockChain-Dapps-Technology/ ] ] --- layout: false class: left, middle, inverse .left-column[ ## Thanks ] .right-column[ Wing of NBC'19 .width100percent[ ![National Blockchain Challenge '19](https://www.globaltechchallenge.com/static/NBC_no-font-3678ea62042bbdfc621ac92a89052221.png) ] .footnote[ https://www.globaltechchallenge.com/ ] ] --- layout: false class: left, middle, inverse .left-column[ ## Thanks ] .right-column[ Michael Cheng of Engineers.SG .width100percent[ ![Engineers.SG](https://pbs.twimg.com/profile_images/939337823785594880/YZBJObdX_400x400.jpg) ] .footnote[ https://github.com/engineersftw/gitwiki ] ] --- layout: false class: left, middle, inverse .left-column[ ## Thanks ] .right-column[ Spartan Group .width100percent[ ![Spartan Group](https://static.wixstatic.com/media/dbc33c_2c759d6693424944ad5b6f7be2dd039a~mv2.png) ] .footnote[ https://www.spartangroup.io/ ] ] --- layout: false class: left, middle, inverse .left-column[ ## Thanks ] .right-column[ Microsoft .width100percent[ ![Microsoft](https://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE1Mu3b?ver=5c31) ] .footnote[ https://www.microsoft.com/ ] ] --- layout: false class: left, middle, inverse ## Community - ~~series of meetups~~ - meet + learn + build - workshops in person - work on projects between Sessions ??? - We're not merely running a series of meetups - We're building a club, where members can meet with, learn from, and work with each other - In person component is like a workshop - In between sessions, work on further building what you've started during the sessions --- layout: false class: center, middle, inverse ## Our Nexus https://dappsdev.org --- layout: false class: left, middle, inverse - sessions - discord - rss - certificates - projects .footnote[ https://dappsdev.org ] ??? - https://dappsdev.org - be sure to check back on this site regularly for updates - emphasise RSS feed - show twitter - sessions page orientation - go through the list to see what's coming up - when venues and dates are confirmed, check back here for updates - discord - everyone here can join, and chat with each other between sessions - don't have to wait till the next one - certificates (optional) - Attendance, not attainment - Fun project that we as organisers will be building alongside the course itself - projects (optional) - Publish your WIP and completed projects here --- layout: false class: left, middle, inverse ## Focus - Sessions: Freedom within a framework - Required knowledge - Too simple? Too advanced? - What you'll be learning .footnote[ `slides < code < discussions` (unlike today) ] ??? - Freedom within a framework - The sessions are designed around a loose idea of what DApp development is about - The actual space that DApps cover is far greater than what we can possibly hope to achieve - You as members can shape the direction of the series - Required knowledge - No need to know anything about blockchain - No need to know anything about smart contracts - No need to know anything about web3 - What you'll be learning in the first series - Very briefly cover "just enough blockchain" as background info - Learn smart contracts from scratch, including solidity - Learn web3js from scratch, *not* including javascript - You do not need to already know JS to attend the series, but you'll need to learn it at a basic level --- layout: false class: left, middle, inverse ## Build what? - DApps and CApps - ~~ERC20~~ - ~~"wen ico? wen moon?"~~ - Bring your ideas along to the next session! .footnote[`break;`] ??? - Over the course of these session it will become apparent: - How a DApp differs from a CApp - Which types of applications are suited to DApps and which are not - DApps and CApps can co-exist in the same ecosystem, in fact can even build a DCApp - ERC20 tokens and "wen ico? wen moon?" - That is **not** what we'll be doing in these sessions - Building an ERC20 token almost seems to be the "Hello World" as far as DApp tutorials go - Here we'd like to build something less cliche, and more interesting - Bring your ideas along to the next session! - When we break between topics, mingle with others - Ask each other what idea they would like to build for a DApp - If you're itching to get started on something, please introduce yourself and your idea to everyone here at the end of the session - `break;` - discuss ideas --- layout: false class: left, middle, inverse .left-column[ ## Just enough blockchain ### Blockchain ] .right-column[ - Debuted by Bitcoin - Transactions - So many things! - cryptography - p2p networking - distributed consensus - data structures - immutable ledger .footnote[ - https://bitcoin.org/bitcoin.pdf - https://motherboard.vice.com/en_us/article/j5nzx4/what-was-the-first-blockchain ] ] ??? - DApps are built on top of a technology called blockchain - Bitcoin debuted the concept of a blockchain - 10 years ago - The blockchain is a very complex topic, and we could spend many sessions just talking about that alone - However, that is not our focus here - instead we are going to learn the minimum viable blockchain, in order to delve right into DApps development --- layout: false class: left, middle, inverse .left-column[ ## Just enough blockchain ### Blockchain ### Ethereum Virtual Machine ] .right-column[ - Global computer - Transactions + Apps - Smart contracts - Pay a *gas* fee per function call - Similar to serveless .footnote[ - https://github.com/ethereum/wiki/wiki/White-Paper - serverless ] ] ??? - Ethereum first made it possible to build applications on top of the block chain - EVM is a global computer - every single node participating in the network runs the programs --- layout: false class: left, middle, inverse .left-column[ ## Just enough blockchain ### Blockchain ### Ethereum Virtual Machine ### Anders' Demo ] .right-column[ - Possibly the best explanation out there of how these fit together: - hashes - blocks - blockchain .footnote[ - https://anders.com/blockchain - https://www.youtube.com/watch?v=_160oMzblY8 - Show of hands: Who is already familiar with this? - `break;` ] ] ??? - What is a hash? - What is block? - What is a singly-linked list? - (optional) What is a merkle tree? - What is distributed consensus? - What is the double-spend problem? - Demo the Anders blockchain demo - show of hands who has watched this video or used this demo before --- layout: false class: left, middle, inverse .left-column[ ## Just enough blockchain ### Blockchain ### Ethereum Virtual Machine ### Anders' Demo ### Smart contracts ] .right-column[ - Blocks - Previously: Stored transactions - Now: Also store code & state - Mining - Previously: Verify & proof-of-work - Now: Also execute code & update state .footnote[] ] ??? - previously -> bitcoin; now -> what ethereum adds --- layout: false class: left, middle, inverse .left-column[ ## DApps? ### Theory ] .right-column[ - What a blockchain gives us: - Distributed ledger - Distributed consensus - Immutable state - Tamper proof transactions - Smart contracts - Tamper proof transactions as well - ... not only for units of "coin" - also for state transitions .footnote[ - *append-only* TX logs in SQL databases - http://blog.notdot.net/2009/12/Damn-Cool-Algorithms-Log-structured-storage ] ] ??? - so now we have covered what a blockchain is - what that gets us is a distributed ledger, plus distributed consensus, which equals immutable state - that in itself is an amazing feat, because that enables tamper-proof transactions - the meteoric rise of bitcoin in itself is testament to that - but what if that was not enough? we'd like to do more than process transactions please! - enter smart contracts --- layout: false class: left, middle, inverse .left-column[ ## DApps? ### Theory ### Practice ] .right-column[ - (mostly) written in Solidity - deployed onto blockchain as data - ethereum wallets send messages to smart contracts - via nodes mining on the network - signature + calldata (+ ether) - node executes the specified function - run through the ethereum virtual machine .footnote[ - https://solidity.readthedocs.io/ - `demo;` https://remix.ethereum.org/ ] ] ??? - smart contracts in ethereum are largely written in solidity - these smart contracts are deployed onto the blockchain as data - clients use ethereum wallets to send messages to these smart contracts - signature + calldata + amount of ether - ethereum nodes execute the smart contract function specified by the messages - ethereum virtual machine, which we'll get into more - the new state of the contract is recorded oin the next block --- layout: false class: left, middle, inverse .left-column[ ## DApps? ### Theory ### Practice ### Limitations ] .right-column[ - smart contracts are just programs - EVM programs are currently limited - transaction speed - storage costs - query capabilities - UX .footnote[] ] ??? - You cannot build everything you can in a CApp in a DApp - today - Progress is being made in these areas - When solved, the decentralised web/ web3 will likely be used by the average person - By learning to dev DApps now, you're way ahead of the mass adoption curve --- layout: false class: left, middle, inverse .left-column[ ## DApps? ### Theory ### Practice ### Limitations ### Vision ] .right-column[ - Web 3, or the decentralised Internet - Web 2 - our current internet - is heavily centralised - Centralised technologies are inherently not tamper resistant - Censorship - Control & visibility of data + code - Levelling the playing field .footnote[] ] ??? - smart contracts are merely programs - what makes them special is that they run in a completely decentralised, and thus a tamper proof manner - this makes apps developed using them unlike apps that are developed today using centralised technologies - "web 3" --- layout: false class: left, middle, inverse ## Next session - https://dappsdev.org - [Anders' blockchain demo](https://anders.com/blockchain) - Ethereum Book: - [Chapter 1](https://github.com/ethereumbook/ethereumbook/blob/develop/01what-is.asciidoc) - [Chapter 13](https://github.com/ethereumbook/ethereumbook/blob/develop/13evm.asciidoc) - Bring your DApp ideas! ??? - anyone here already have some ideas for DApps you'd like to build with the club, pls come to the front - if you're shy, just stick around and talk about it with those around you, or to kenneth and myself --- layout: false class: left, middle, inverse ## Partners - Venues wanted! - 2 sessions per month - Consistent venue - Thank you sponsors! .footnote[https://dappsdev.org/partners] ??? - The plan is to run two sessions per month - We need venues for the remaining sessions - If you work at a company, and your company has a space that it is not using on week nights, why not tell them about DApps Dev Club? - We have been lucky to be sponsored for this session - Would anyone here from Microsoft, Spartan, NBC19, or Engineers.SG like to say a few words? --- layout: false class: center, middle, inverse ![DApps Dev Club](https://dappsdev.org/img/dadc-logo.png) https://dappsdev.org ??? - be sure to check out the sessions page for updates, and join our discord - any other announcements?