SlideShare a Scribd company logo
1 of 15
Download to read offline
Programming Decentralized
Application
Dr. Bambang Purnomosidi D. P.
VP Curriculum at Refactory
Faculty at STMIK AKAKOM
Road to DevSummit - STMIK AKAKOM - 28 Oktober 2017
Agenda
1. What is Blockchain?
2. What is Decentralized Application (DApp)?
3. What do I need to program a DApp?
4. Enter Ethereum
5. Ethereum Clients
6. Private or Public BlockChain?
7. Overview of Development Environment in Ethereum
8. Development Without Framework
9. Development With Framework
10. Deployment
What is BlockChain?
● “We can define the blockchain as a system that allows a group of connected
computers to maintain a single updated and secure ledger.” (Michele D’Aliessi,
2016).
● “A blockchain is a decentralized and distributed digital ledger that is used to
record transactions across many computers so that the record cannot be altered
retroactively without the alteration of all subsequent blocks and the collusion of
the network”. (Stephen Armstrong, 2018).
● Preliminary research: Cryptographically secured chain of blocks (Stuart Haber
dan W. Scott Stornetta, 1991), Ross J. Anderson (1996), Michael Doyle (1997),
Bruce Schneier and John Kelsey (1998), Nick Szabo (1998, bit gold), Stefan Konst
(2000).
● Satoshi Nakamoto (2008): Bitcoin
Source: http://dataconomy.com/2015/10/wtf-is-the-blockchain-a-guide-for-total-beginners/
Image was taken from “Blockchain for Dummies - IBM”
What is Decentralized Application (DApp)?
What Do I Need to Program A DApp?
● Blockchain Platform:
○ Ethereum
○ Tezos
○ Corda
○ Exonum
○ Hyperledger Project
● Development Tools
● See https://www.stateofthedapps.com/ for inspiration.
Enter Ethereum
● Ethereum is a decentralized platform that runs smart contracts: applications that
run exactly as programmed without any possibility of downtime, censorship,
fraud or third party interference.
● It has ether as its cryptocurrency.
● Provides smart contracts for DApp development
● Provides Ethereum Virtual Machine. EVM is an environment where arbitrary
code of smart contracts and other operations can be executed.
● There are some high level language for DApp development:
○ Solidity
○ Serpent
○ LLL
Ethereum Clients
● Ethereum client refers to any node able to parse and verify the blockchain, its
smart contracts and everything related. It also allows you/provides interfaces to
create transactions and mine blocks which is the key for any blockchain
interaction.
● Official Reference Implementation:
○ Go: go-ethereum (geth):: https://geth.ethereum.org/
○ C++: cpp-ethereum (eth): http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/
○ Python (pyethapp): https://github.com/ethereum/pyethapp
● 3rd party:
○ Rust: parity: https://parity.io
○ Java: https://github.com/ethereum/ethereumj
○ JS: https://github.com/ethereumjs/ethereumjs-vm
○ Ruby: https://github.com/janx/ruby-ethereum
Private, Consortium, or Public BlockChain?
● Private blockchains: a fully private blockchain is a blockchain where write
permissions are kept centralized to one organization.
● Consortium blockchains: a consortium blockchain is a blockchain where the
consensus process is controlled by a pre-selected set of nodes; for example, one
might imagine a consortium of 15 financial institutions, each of which operates a
node and of which 10 must sign every block in order for the block to be valid.
● Public blockchains: a public blockchain is a blockchain that anyone in the world
can read, anyone in the world can send transactions to and expect to see them
included if they are valid, and anyone in the world can participate in the
consensus process.
Overview of Development Environment / Workflow in
Ethereum
● The development process of a ÐApp often entails a Whitepaper and a working
prototype, a token sale, an initial coin offering (ICO), its implementation and
launch.
● From the workflow, developer tasks are:
○ Create token
○ Create application
○ Deploy application to EVM
Development Without Framework
● Never use public blockchain for test.
● What you have to learn:
○ Smart contract and how to use Solidity programming language. Get Solidity compiler
(https://github.com/ethereum/solidity/releases). Some Linux distros provide official package (ex:
Arch Linux pacman: community/solidity 0.4.18-1)
○ How to deploy your smart contract to EVM
○ Documentation for Solidity: http://solidity.readthedocs.io/en/latest/
● Development environment: Atom, Emacs, Vim, Intellij, VSCode, See Awesome
Solidity (https://github.com/bkrem/awesome-solidity)
● Step:
○ Build everything in local computer. Use testrpc to mimick blockchain
(https://github.com/ethereumjs/testrpc).
○ Test on the staging blockchain (Ether and any other resource fees are fake).: Ropsten. See
https://github.com/ethereum/ropsten and https://ropsten.etherscan.io/ . Also --morden when run
Ethereum clients.
○ Real Ethereum deployment. Mainnet - Homestead.
Development With Framework
● Truffle Framework (http://truffleframework.com/) - A Swiss army knife for smart
contract development and deployment.
● DApp (https://dapp.readthedocs.io/en/latest/) - simple command line tool for
smart contract development for package management, source code building, unit
testing, simple contract deployments.
Deployment
● In deployment, understanding Gas is important.
● Transactions on the Ethereum network require fees in the form of gas. The
amount of gas depends on the amount of computation required to complete the
transaction.
● Estimating transaction costs:
http://ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-and-tran
sactions.html
The End

More Related Content

What's hot

Introduction to Blockchain and Smart Contracts
Introduction to Blockchain and Smart ContractsIntroduction to Blockchain and Smart Contracts
Introduction to Blockchain and Smart ContractsTechracers
 
Blockchain basics
Blockchain basicsBlockchain basics
Blockchain basicsRomit Bose
 
Blockchain 101 | Blockchain Tutorial | Blockchain Smart Contracts | Blockchai...
Blockchain 101 | Blockchain Tutorial | Blockchain Smart Contracts | Blockchai...Blockchain 101 | Blockchain Tutorial | Blockchain Smart Contracts | Blockchai...
Blockchain 101 | Blockchain Tutorial | Blockchain Smart Contracts | Blockchai...Edureka!
 
An Investor's Guide to Web3 / Crypto / Blockchain
An Investor's Guide to Web3 / Crypto / BlockchainAn Investor's Guide to Web3 / Crypto / Blockchain
An Investor's Guide to Web3 / Crypto / BlockchainBernard Leong
 
Introduction to Blockchain
Introduction to BlockchainIntroduction to Blockchain
Introduction to BlockchainMalak Abu Hammad
 
Introduction to Blockchain and Smart Contracts
Introduction to Blockchain and Smart ContractsIntroduction to Blockchain and Smart Contracts
Introduction to Blockchain and Smart ContractsSaad Zaher
 
Understanding blockchain
Understanding blockchainUnderstanding blockchain
Understanding blockchainPriyab Satoshi
 
Decentralized Application: A Software Engineering Perspective
Decentralized Application: A Software Engineering PerspectiveDecentralized Application: A Software Engineering Perspective
Decentralized Application: A Software Engineering PerspectiveBambang Purnomosidi D. P.
 
Ethereum Solidity Fundamentals
Ethereum Solidity FundamentalsEthereum Solidity Fundamentals
Ethereum Solidity FundamentalsEno Bassey
 
An Introduction to Blockchain Technology
An Introduction to Blockchain Technology An Introduction to Blockchain Technology
An Introduction to Blockchain Technology Niuversity
 
Blockchain and Smart Contracts (Series: Blockchain Basics)
Blockchain and Smart Contracts (Series: Blockchain Basics)Blockchain and Smart Contracts (Series: Blockchain Basics)
Blockchain and Smart Contracts (Series: Blockchain Basics)Financial Poise
 
Blockchain Technology Fundamentals
Blockchain Technology FundamentalsBlockchain Technology Fundamentals
Blockchain Technology FundamentalsExperfy
 
How To Become A Blockchain Engineer
How To Become A Blockchain EngineerHow To Become A Blockchain Engineer
How To Become A Blockchain Engineer101 Blockchains
 
Ethereum Tutorial - Ethereum Explained | What is Ethereum? | Ethereum Explain...
Ethereum Tutorial - Ethereum Explained | What is Ethereum? | Ethereum Explain...Ethereum Tutorial - Ethereum Explained | What is Ethereum? | Ethereum Explain...
Ethereum Tutorial - Ethereum Explained | What is Ethereum? | Ethereum Explain...Simplilearn
 
Basic introduction in blockchain, smart contracts, permissioned ledgers
Basic introduction in blockchain, smart contracts, permissioned ledgersBasic introduction in blockchain, smart contracts, permissioned ledgers
Basic introduction in blockchain, smart contracts, permissioned ledgersKoen Vingerhoets
 
Blockchain Technology.pptx
Blockchain Technology.pptxBlockchain Technology.pptx
Blockchain Technology.pptxtanvi253303
 

What's hot (20)

Blockchain 2.0
Blockchain 2.0Blockchain 2.0
Blockchain 2.0
 
Introduction to Blockchain and Smart Contracts
Introduction to Blockchain and Smart ContractsIntroduction to Blockchain and Smart Contracts
Introduction to Blockchain and Smart Contracts
 
Blockchain basics
Blockchain basicsBlockchain basics
Blockchain basics
 
Blockchain
BlockchainBlockchain
Blockchain
 
Blockchain 101 | Blockchain Tutorial | Blockchain Smart Contracts | Blockchai...
Blockchain 101 | Blockchain Tutorial | Blockchain Smart Contracts | Blockchai...Blockchain 101 | Blockchain Tutorial | Blockchain Smart Contracts | Blockchai...
Blockchain 101 | Blockchain Tutorial | Blockchain Smart Contracts | Blockchai...
 
An Investor's Guide to Web3 / Crypto / Blockchain
An Investor's Guide to Web3 / Crypto / BlockchainAn Investor's Guide to Web3 / Crypto / Blockchain
An Investor's Guide to Web3 / Crypto / Blockchain
 
Introduction to Blockchain
Introduction to BlockchainIntroduction to Blockchain
Introduction to Blockchain
 
Introduction to Blockchain and Smart Contracts
Introduction to Blockchain and Smart ContractsIntroduction to Blockchain and Smart Contracts
Introduction to Blockchain and Smart Contracts
 
Understanding blockchain
Understanding blockchainUnderstanding blockchain
Understanding blockchain
 
Blockchain Explained
Blockchain ExplainedBlockchain Explained
Blockchain Explained
 
Decentralized Application: A Software Engineering Perspective
Decentralized Application: A Software Engineering PerspectiveDecentralized Application: A Software Engineering Perspective
Decentralized Application: A Software Engineering Perspective
 
Ethereum Solidity Fundamentals
Ethereum Solidity FundamentalsEthereum Solidity Fundamentals
Ethereum Solidity Fundamentals
 
An Introduction to Blockchain Technology
An Introduction to Blockchain Technology An Introduction to Blockchain Technology
An Introduction to Blockchain Technology
 
Blockchain and Smart Contracts (Series: Blockchain Basics)
Blockchain and Smart Contracts (Series: Blockchain Basics)Blockchain and Smart Contracts (Series: Blockchain Basics)
Blockchain and Smart Contracts (Series: Blockchain Basics)
 
Blockchain
BlockchainBlockchain
Blockchain
 
Blockchain Technology Fundamentals
Blockchain Technology FundamentalsBlockchain Technology Fundamentals
Blockchain Technology Fundamentals
 
How To Become A Blockchain Engineer
How To Become A Blockchain EngineerHow To Become A Blockchain Engineer
How To Become A Blockchain Engineer
 
Ethereum Tutorial - Ethereum Explained | What is Ethereum? | Ethereum Explain...
Ethereum Tutorial - Ethereum Explained | What is Ethereum? | Ethereum Explain...Ethereum Tutorial - Ethereum Explained | What is Ethereum? | Ethereum Explain...
Ethereum Tutorial - Ethereum Explained | What is Ethereum? | Ethereum Explain...
 
Basic introduction in blockchain, smart contracts, permissioned ledgers
Basic introduction in blockchain, smart contracts, permissioned ledgersBasic introduction in blockchain, smart contracts, permissioned ledgers
Basic introduction in blockchain, smart contracts, permissioned ledgers
 
Blockchain Technology.pptx
Blockchain Technology.pptxBlockchain Technology.pptx
Blockchain Technology.pptx
 

Similar to Programming Decentralized Application

Ethereum introduction
Ethereum introductionEthereum introduction
Ethereum introductionkesavan N B
 
Best practices to build secure smart contracts
Best practices to build secure smart contractsBest practices to build secure smart contracts
Best practices to build secure smart contractsGautam Anand
 
The Decentralized Developer Toolbox by Petros Ring
The Decentralized Developer Toolbox by Petros RingThe Decentralized Developer Toolbox by Petros Ring
The Decentralized Developer Toolbox by Petros RingBlock 16
 
The JavaScript toolset for development on Ethereum
The JavaScript toolset for development on EthereumThe JavaScript toolset for development on Ethereum
The JavaScript toolset for development on EthereumGreeceJS
 
Javascript toolset for Ethereum Smart Contract development
Javascript toolset for Ethereum Smart Contract developmentJavascript toolset for Ethereum Smart Contract development
Javascript toolset for Ethereum Smart Contract developmentBugSense
 
Blockchain Coding Dojo - BlockchainHub Graz
Blockchain Coding Dojo - BlockchainHub GrazBlockchain Coding Dojo - BlockchainHub Graz
Blockchain Coding Dojo - BlockchainHub GrazBlockchainHub Graz
 
Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)Tomoaki Sato
 
Blockchain Experiments 1-11.pptx
Blockchain Experiments 1-11.pptxBlockchain Experiments 1-11.pptx
Blockchain Experiments 1-11.pptxsaiproject
 
Building Digital Transaction Systems in the new Banking World
Building Digital Transaction Systems in the new Banking WorldBuilding Digital Transaction Systems in the new Banking World
Building Digital Transaction Systems in the new Banking WorldRamit Surana
 
Blockchain and smart contracts, what they are and why you should really care ...
Blockchain and smart contracts, what they are and why you should really care ...Blockchain and smart contracts, what they are and why you should really care ...
Blockchain and smart contracts, what they are and why you should really care ...maeste
 
gething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang clientgething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang clientSathish VJ
 
10 Best Programming Languages for Blockchain in 2023.pdf
10 Best Programming Languages for Blockchain in 2023.pdf10 Best Programming Languages for Blockchain in 2023.pdf
10 Best Programming Languages for Blockchain in 2023.pdfWDP Technologies
 
Using Docker Platform to Provide Services
Using Docker Platform to Provide ServicesUsing Docker Platform to Provide Services
Using Docker Platform to Provide ServicesGLC Networks
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil FrameworkVeilFramework
 
SFScon19 - Roberto Innocenti - The Butteryfly Effect of an Open Hardware Note...
SFScon19 - Roberto Innocenti - The Butteryfly Effect of an Open Hardware Note...SFScon19 - Roberto Innocenti - The Butteryfly Effect of an Open Hardware Note...
SFScon19 - Roberto Innocenti - The Butteryfly Effect of an Open Hardware Note...South Tyrol Free Software Conference
 
The Butteryfly Effect of an Open Hardware Notebook Motherboard
The Butteryfly Effect of an Open Hardware Notebook MotherboardThe Butteryfly Effect of an Open Hardware Notebook Motherboard
The Butteryfly Effect of an Open Hardware Notebook MotherboardRoberto Innocenti
 

Similar to Programming Decentralized Application (20)

Ethereum
EthereumEthereum
Ethereum
 
Ethereum
EthereumEthereum
Ethereum
 
All About Ethereum
All About EthereumAll About Ethereum
All About Ethereum
 
Ethereum introduction
Ethereum introductionEthereum introduction
Ethereum introduction
 
Best practices to build secure smart contracts
Best practices to build secure smart contractsBest practices to build secure smart contracts
Best practices to build secure smart contracts
 
The Decentralized Developer Toolbox by Petros Ring
The Decentralized Developer Toolbox by Petros RingThe Decentralized Developer Toolbox by Petros Ring
The Decentralized Developer Toolbox by Petros Ring
 
The JavaScript toolset for development on Ethereum
The JavaScript toolset for development on EthereumThe JavaScript toolset for development on Ethereum
The JavaScript toolset for development on Ethereum
 
Javascript toolset for Ethereum Smart Contract development
Javascript toolset for Ethereum Smart Contract developmentJavascript toolset for Ethereum Smart Contract development
Javascript toolset for Ethereum Smart Contract development
 
How to design, code, deploy and execute a smart contract
How to design, code, deploy and execute a smart contractHow to design, code, deploy and execute a smart contract
How to design, code, deploy and execute a smart contract
 
Blockchain Coding Dojo - BlockchainHub Graz
Blockchain Coding Dojo - BlockchainHub GrazBlockchain Coding Dojo - BlockchainHub Graz
Blockchain Coding Dojo - BlockchainHub Graz
 
Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)
 
Blockchain Experiments 1-11.pptx
Blockchain Experiments 1-11.pptxBlockchain Experiments 1-11.pptx
Blockchain Experiments 1-11.pptx
 
Building Digital Transaction Systems in the new Banking World
Building Digital Transaction Systems in the new Banking WorldBuilding Digital Transaction Systems in the new Banking World
Building Digital Transaction Systems in the new Banking World
 
Blockchain and smart contracts, what they are and why you should really care ...
Blockchain and smart contracts, what they are and why you should really care ...Blockchain and smart contracts, what they are and why you should really care ...
Blockchain and smart contracts, what they are and why you should really care ...
 
gething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang clientgething started - ethereum & using the geth golang client
gething started - ethereum & using the geth golang client
 
10 Best Programming Languages for Blockchain in 2023.pdf
10 Best Programming Languages for Blockchain in 2023.pdf10 Best Programming Languages for Blockchain in 2023.pdf
10 Best Programming Languages for Blockchain in 2023.pdf
 
Using Docker Platform to Provide Services
Using Docker Platform to Provide ServicesUsing Docker Platform to Provide Services
Using Docker Platform to Provide Services
 
The State of the Veil Framework
The State of the Veil FrameworkThe State of the Veil Framework
The State of the Veil Framework
 
SFScon19 - Roberto Innocenti - The Butteryfly Effect of an Open Hardware Note...
SFScon19 - Roberto Innocenti - The Butteryfly Effect of an Open Hardware Note...SFScon19 - Roberto Innocenti - The Butteryfly Effect of an Open Hardware Note...
SFScon19 - Roberto Innocenti - The Butteryfly Effect of an Open Hardware Note...
 
The Butteryfly Effect of an Open Hardware Notebook Motherboard
The Butteryfly Effect of an Open Hardware Notebook MotherboardThe Butteryfly Effect of an Open Hardware Notebook Motherboard
The Butteryfly Effect of an Open Hardware Notebook Motherboard
 

More from Bambang Purnomosidi D. P.

Disciplined Agile Delivery: Agile Framework untuk Membangun Software
Disciplined Agile Delivery: Agile Framework untuk Membangun SoftwareDisciplined Agile Delivery: Agile Framework untuk Membangun Software
Disciplined Agile Delivery: Agile Framework untuk Membangun SoftwareBambang Purnomosidi D. P.
 
Programming Languages and Development Tools: State of the Art and (Hopefully)...
Programming Languages and Development Tools: State of the Art and (Hopefully)...Programming Languages and Development Tools: State of the Art and (Hopefully)...
Programming Languages and Development Tools: State of the Art and (Hopefully)...Bambang Purnomosidi D. P.
 
Teknologi Blockchain dan Implikasinya Terhadap Dunia Bisnis
Teknologi Blockchain dan Implikasinya Terhadap Dunia BisnisTeknologi Blockchain dan Implikasinya Terhadap Dunia Bisnis
Teknologi Blockchain dan Implikasinya Terhadap Dunia BisnisBambang Purnomosidi D. P.
 
Serialisasi Data: JSON, JSON Schema, dan BSON
Serialisasi Data: JSON, JSON Schema, dan BSONSerialisasi Data: JSON, JSON Schema, dan BSON
Serialisasi Data: JSON, JSON Schema, dan BSONBambang Purnomosidi D. P.
 
Pengembangan Aplikasi Cloud Computing Menggunakan Node.js
Pengembangan Aplikasi Cloud Computing Menggunakan Node.jsPengembangan Aplikasi Cloud Computing Menggunakan Node.js
Pengembangan Aplikasi Cloud Computing Menggunakan Node.jsBambang Purnomosidi D. P.
 
Using ICT to Teach English: Towards Learner-centered Learning
Using ICT to Teach English: Towards Learner-centered LearningUsing ICT to Teach English: Towards Learner-centered Learning
Using ICT to Teach English: Towards Learner-centered LearningBambang Purnomosidi D. P.
 
Pengembangan si-berbasis-opensource-devtools
Pengembangan si-berbasis-opensource-devtoolsPengembangan si-berbasis-opensource-devtools
Pengembangan si-berbasis-opensource-devtoolsBambang Purnomosidi D. P.
 
Seminar Web 2.0 Security - Undip Semarang - Nov 2007
Seminar Web 2.0 Security - Undip Semarang - Nov 2007Seminar Web 2.0 Security - Undip Semarang - Nov 2007
Seminar Web 2.0 Security - Undip Semarang - Nov 2007Bambang Purnomosidi D. P.
 
Web Engineering dalam Konteks Web Science: Isu Terkini dan Tantangan
Web Engineering dalam Konteks Web Science: Isu Terkini dan TantanganWeb Engineering dalam Konteks Web Science: Isu Terkini dan Tantangan
Web Engineering dalam Konteks Web Science: Isu Terkini dan TantanganBambang Purnomosidi D. P.
 
Web Engineering dalam Konteks Web Science - Keynote Speech SRITI 2010
Web Engineering dalam Konteks Web Science - Keynote Speech SRITI 2010Web Engineering dalam Konteks Web Science - Keynote Speech SRITI 2010
Web Engineering dalam Konteks Web Science - Keynote Speech SRITI 2010Bambang Purnomosidi D. P.
 

More from Bambang Purnomosidi D. P. (17)

Disciplined Agile Delivery: Agile Framework untuk Membangun Software
Disciplined Agile Delivery: Agile Framework untuk Membangun SoftwareDisciplined Agile Delivery: Agile Framework untuk Membangun Software
Disciplined Agile Delivery: Agile Framework untuk Membangun Software
 
Programming Languages and Development Tools: State of the Art and (Hopefully)...
Programming Languages and Development Tools: State of the Art and (Hopefully)...Programming Languages and Development Tools: State of the Art and (Hopefully)...
Programming Languages and Development Tools: State of the Art and (Hopefully)...
 
Teknologi Blockchain dan Implikasinya Terhadap Dunia Bisnis
Teknologi Blockchain dan Implikasinya Terhadap Dunia BisnisTeknologi Blockchain dan Implikasinya Terhadap Dunia Bisnis
Teknologi Blockchain dan Implikasinya Terhadap Dunia Bisnis
 
Serialisasi Data: JSON, JSON Schema, dan BSON
Serialisasi Data: JSON, JSON Schema, dan BSONSerialisasi Data: JSON, JSON Schema, dan BSON
Serialisasi Data: JSON, JSON Schema, dan BSON
 
Pengenalan XML
Pengenalan XMLPengenalan XML
Pengenalan XML
 
Pengembangan Aplikasi Cloud Computing Menggunakan Node.js
Pengembangan Aplikasi Cloud Computing Menggunakan Node.jsPengembangan Aplikasi Cloud Computing Menggunakan Node.js
Pengembangan Aplikasi Cloud Computing Menggunakan Node.js
 
Kepemimpinan: Apa dan Bagaimana?
Kepemimpinan: Apa dan Bagaimana?Kepemimpinan: Apa dan Bagaimana?
Kepemimpinan: Apa dan Bagaimana?
 
Using ICT to Teach English: Towards Learner-centered Learning
Using ICT to Teach English: Towards Learner-centered LearningUsing ICT to Teach English: Towards Learner-centered Learning
Using ICT to Teach English: Towards Learner-centered Learning
 
Agent-based System - Introduction
Agent-based System - IntroductionAgent-based System - Introduction
Agent-based System - Introduction
 
Agent-based System - Introduction
Agent-based System - IntroductionAgent-based System - Introduction
Agent-based System - Introduction
 
Intro to Agent-based System
Intro to Agent-based SystemIntro to Agent-based System
Intro to Agent-based System
 
Presentasi malioboro--10-des-2010
Presentasi malioboro--10-des-2010Presentasi malioboro--10-des-2010
Presentasi malioboro--10-des-2010
 
Pengembangan si-berbasis-opensource-devtools
Pengembangan si-berbasis-opensource-devtoolsPengembangan si-berbasis-opensource-devtools
Pengembangan si-berbasis-opensource-devtools
 
Seminar Web 2.0 Security - Undip Semarang - Nov 2007
Seminar Web 2.0 Security - Undip Semarang - Nov 2007Seminar Web 2.0 Security - Undip Semarang - Nov 2007
Seminar Web 2.0 Security - Undip Semarang - Nov 2007
 
Web Engineering dalam Konteks Web Science: Isu Terkini dan Tantangan
Web Engineering dalam Konteks Web Science: Isu Terkini dan TantanganWeb Engineering dalam Konteks Web Science: Isu Terkini dan Tantangan
Web Engineering dalam Konteks Web Science: Isu Terkini dan Tantangan
 
Web Engineering dalam Konteks Web Science - Keynote Speech SRITI 2010
Web Engineering dalam Konteks Web Science - Keynote Speech SRITI 2010Web Engineering dalam Konteks Web Science - Keynote Speech SRITI 2010
Web Engineering dalam Konteks Web Science - Keynote Speech SRITI 2010
 
WSTRG Meeting 1
WSTRG Meeting 1WSTRG Meeting 1
WSTRG Meeting 1
 

Recently uploaded

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 

Recently uploaded (20)

Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 

Programming Decentralized Application

  • 1. Programming Decentralized Application Dr. Bambang Purnomosidi D. P. VP Curriculum at Refactory Faculty at STMIK AKAKOM Road to DevSummit - STMIK AKAKOM - 28 Oktober 2017
  • 2. Agenda 1. What is Blockchain? 2. What is Decentralized Application (DApp)? 3. What do I need to program a DApp? 4. Enter Ethereum 5. Ethereum Clients 6. Private or Public BlockChain? 7. Overview of Development Environment in Ethereum 8. Development Without Framework 9. Development With Framework 10. Deployment
  • 3. What is BlockChain? ● “We can define the blockchain as a system that allows a group of connected computers to maintain a single updated and secure ledger.” (Michele D’Aliessi, 2016). ● “A blockchain is a decentralized and distributed digital ledger that is used to record transactions across many computers so that the record cannot be altered retroactively without the alteration of all subsequent blocks and the collusion of the network”. (Stephen Armstrong, 2018). ● Preliminary research: Cryptographically secured chain of blocks (Stuart Haber dan W. Scott Stornetta, 1991), Ross J. Anderson (1996), Michael Doyle (1997), Bruce Schneier and John Kelsey (1998), Nick Szabo (1998, bit gold), Stefan Konst (2000). ● Satoshi Nakamoto (2008): Bitcoin
  • 5. Image was taken from “Blockchain for Dummies - IBM”
  • 6. What is Decentralized Application (DApp)?
  • 7. What Do I Need to Program A DApp? ● Blockchain Platform: ○ Ethereum ○ Tezos ○ Corda ○ Exonum ○ Hyperledger Project ● Development Tools ● See https://www.stateofthedapps.com/ for inspiration.
  • 8. Enter Ethereum ● Ethereum is a decentralized platform that runs smart contracts: applications that run exactly as programmed without any possibility of downtime, censorship, fraud or third party interference. ● It has ether as its cryptocurrency. ● Provides smart contracts for DApp development ● Provides Ethereum Virtual Machine. EVM is an environment where arbitrary code of smart contracts and other operations can be executed. ● There are some high level language for DApp development: ○ Solidity ○ Serpent ○ LLL
  • 9. Ethereum Clients ● Ethereum client refers to any node able to parse and verify the blockchain, its smart contracts and everything related. It also allows you/provides interfaces to create transactions and mine blocks which is the key for any blockchain interaction. ● Official Reference Implementation: ○ Go: go-ethereum (geth):: https://geth.ethereum.org/ ○ C++: cpp-ethereum (eth): http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/ ○ Python (pyethapp): https://github.com/ethereum/pyethapp ● 3rd party: ○ Rust: parity: https://parity.io ○ Java: https://github.com/ethereum/ethereumj ○ JS: https://github.com/ethereumjs/ethereumjs-vm ○ Ruby: https://github.com/janx/ruby-ethereum
  • 10. Private, Consortium, or Public BlockChain? ● Private blockchains: a fully private blockchain is a blockchain where write permissions are kept centralized to one organization. ● Consortium blockchains: a consortium blockchain is a blockchain where the consensus process is controlled by a pre-selected set of nodes; for example, one might imagine a consortium of 15 financial institutions, each of which operates a node and of which 10 must sign every block in order for the block to be valid. ● Public blockchains: a public blockchain is a blockchain that anyone in the world can read, anyone in the world can send transactions to and expect to see them included if they are valid, and anyone in the world can participate in the consensus process.
  • 11. Overview of Development Environment / Workflow in Ethereum ● The development process of a ÐApp often entails a Whitepaper and a working prototype, a token sale, an initial coin offering (ICO), its implementation and launch. ● From the workflow, developer tasks are: ○ Create token ○ Create application ○ Deploy application to EVM
  • 12. Development Without Framework ● Never use public blockchain for test. ● What you have to learn: ○ Smart contract and how to use Solidity programming language. Get Solidity compiler (https://github.com/ethereum/solidity/releases). Some Linux distros provide official package (ex: Arch Linux pacman: community/solidity 0.4.18-1) ○ How to deploy your smart contract to EVM ○ Documentation for Solidity: http://solidity.readthedocs.io/en/latest/ ● Development environment: Atom, Emacs, Vim, Intellij, VSCode, See Awesome Solidity (https://github.com/bkrem/awesome-solidity) ● Step: ○ Build everything in local computer. Use testrpc to mimick blockchain (https://github.com/ethereumjs/testrpc). ○ Test on the staging blockchain (Ether and any other resource fees are fake).: Ropsten. See https://github.com/ethereum/ropsten and https://ropsten.etherscan.io/ . Also --morden when run Ethereum clients. ○ Real Ethereum deployment. Mainnet - Homestead.
  • 13. Development With Framework ● Truffle Framework (http://truffleframework.com/) - A Swiss army knife for smart contract development and deployment. ● DApp (https://dapp.readthedocs.io/en/latest/) - simple command line tool for smart contract development for package management, source code building, unit testing, simple contract deployments.
  • 14. Deployment ● In deployment, understanding Gas is important. ● Transactions on the Ethereum network require fees in the form of gas. The amount of gas depends on the amount of computation required to complete the transaction. ● Estimating transaction costs: http://ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-and-tran sactions.html