Blockchain applications in Python
Prasanna Walimbe (~pwalimbe) |
Blockchain is the new buzzword. And in most cases a remedy recommended to almost anything and everything. So what is Blockchain, Dapp, DLT? And what is the hype around this? And in particular as Python developer community - how can we participate in this new app development paradigm?
So Blockchain in a nut shell is:
- Shared Ledger (Append-only system of record shared across business network)
- Cryptography (Ensuring secure, authenticated & verifiable transactions)
- Consensus (All parties agree to network verified transaction )
- Shared / Smart Contract (Business terms embedded in transaction database & executed with transactions)
In short it is a network owned (not centrally owned), permissioned, highly scalable data, business process management technology.
- What does it solve?
- Ownership trail - so all supply chain & Traceability use cases are leading the blockchain adoption efforts in enterprise.
- Single point of failure - data breaches can no longer be single enterprise failures.
- Network focussed - tries to solve asset, trust exchange business problems
- Identity - yet protects identity and ensures privacy in all of the above.
- IOT - using device data on blockchain, solve EV charging/payment systems, GPS tracking systems
Types of Blockchain networks:
- Public / Un permissioned like Corda, Bitcoin, Ethereum
- Private / permissioned like Ripple, Hyperledger
Technical challenges to be overcome: Vitalik Buterin's trilemma
Choose any 2 of the below:
- Scalability - Throughput and Latency
- Decentralization - governance / control
- Security - Identity / Token standards
So development wise what are the main changes a developer has to look for:
- No single database in the backend -- you need to commit txn, wait for consensus to approve and then use block explorer to get confirmed status. On some blockchains it can take up to 10 minutes for confirmation. So your synchronous code may need a lot of redesign.
- No single file storage - IPFS and other decentralized file storage mechanisms are required to provide scale and growth.
- User management - it is no longer about userid and password. Keys, Keys and keys. Blockchain protocol key generation process (to ensure interoperability)
- Business process - redesigned and to be modeled as asset / coin transfers. This is the biggest challenge since your txn is modeled and the code is now residing as a smart contract.
Python: Most stacks have Python sdks (although natively Go is becoming more popular). Examples of sdks used for Hyperledger, Ethereum will be discussed.
- Intro to blockchain
- Python programming
- Intro to cryptography
Overall blockchain sites of interest:
Python related links
Link to slides for the talk
Prasanna Walimbe. Have more than 25+ years of experience in software development. Have founded and exited 2 startups (into financial research for global markets) and have used Python numerical analysis extensively. Latest experiments in blockchain are being conducted under Bluecrest Software.