Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python, Blockchain, and Byte-Size Change

14,293 views

Published on

How full-stack developers can make blockchain applications using Ethereum, Python, and JavaScript

Published in: Technology

Python, Blockchain, and Byte-Size Change

  1. 1. Python, Blockchain, and Byte-Size Change Portia Burton @pkafei PyDX 2016
  2. 2. Who am I? My name is Portia Burton I am a full-stack developer at the Atlantic magazine Became interested in blockchains earlier this year Not a cryptographic expert
  3. 3. What is a Blockchain? A blockchain is a cross between a decentralized data store and bittorrent.
  4. 4. What is Bitcoin? Type of Cryptocurrency Creation based on paper by Satoshi Nakamoto titled “Bitcoin: Peer-to-Peer Electronic Cash System” Peer-to-peer which means transactions happen without a third party. Alice can send money directly to Bob
  5. 5. Many Different Types of Cryptocurrencies
  6. 6. Bitcoin vs. Blockchain Bitcoin is part of a blockchain Blockchain is a digital ledger of transactions Each transaction is cryptographically signed Blockchains are trustless
  7. 7. Ethereum
  8. 8. Introduction to Ethereum Ethereum is a programmable blockchain, every new blockchain spawned from Ethereum has the same properties as Ethereum Ethereum Virtual Machine is the low level machine language Is Turing complete, unlike bitcoin which does not have looping capabilities It also is aware of multiple states, unlike bitcoin which is only aware of two states (spent and unspent)
  9. 9. Different Consensus Mechanisms Proof of Work: Uses the Etash DAG algorithm. The Etash DAG algorithm is based on Bitcoin’s the Dagger-Hashimoto algorithm. Proof of Stake: Proof of Stake is another way of validating. It calculates the weight of the node, being proportional to its computational resources. It’s less resource intensive than Proof of Work.
  10. 10. Ethereum Chains (not all blockchains are the same)
  11. 11. Different Blockchains Public blockchain: It is the official Ethereum chain that everyone can read and interact with Testnet blockchain: The official test chain of Ethereum. Good way to test contracts without wasting real ether Private blockchain: This is a blockchain that you can create yourself. This blockchain can be freely accessed by others, or you can add addresses by invite only
  12. 12. Can an average developer build blockchain applications?
  13. 13. Indeed, We Can!
  14. 14. But first, some more background
  15. 15. Smart Contracts (also known as DApps)
  16. 16. What is a Smart Contract? Stored on the blockchain and executed by code Many smart contracts are written in Solidity Powered by gas which can be computationally mined or purchased in an exchange
  17. 17. Transaction: Signed data package that stores a message to be sent GAS: the name for the execution fee that senders of transactions need to pay for operations on Ethereum blockchain VALUE (field): The amount of wei to transfer from sender to the recipient STARTGAS (value): Representing the maximum number of computational steps the transaction execution is allowed to take GASPRICE (value): Representing the fee the sender is willing to pay for gas
  18. 18. Applications of Ethereum Blockchain of Smart Contracts Self-executing legal contracts Create “American Idol” where people can vote using generated tokens Company boards can be ran virtually Dropbox business model create and sell encrypted storage space Predicting financial futures based on an oracle
  19. 19. Demo Time!
  20. 20. But what about Python?
  21. 21. Python Ethereum Client ● Regular commits ● Interacts with private blockchains AND the official Ethereum blockchain ● Doesn’t download blocks as fast as Go or Rust’s Ethereum client Parity
  22. 22. Actionable Ways Python Developers Can Interact with Blockchain 1. Checkout BigchainDB 2. Contribute to Open Bazaar 3. Get web3 to interact with Django or Flask
  23. 23. Bigchain DB ● This DB is actually in production (used by ascribe.io) ● Hybrid of a database and blockchain ● NoSql datastore
  24. 24. BigchainDB compared to other data stores
  25. 25. Web3.js JavaScript library that connects applications to a blockchain The blockchain act as an alternative or complements the database Currently web3 is used in the Javascript framework meteor but could be used in Flask or Django
  26. 26. Why Should We Care?
  27. 27. Democracy and Governance
  28. 28. Democracy as We Know It Can Change Voting can occur on the blockchain Agreements will be controlled by code as opposed to legal contracts Alternative way to keep track of identity Laws and bill can be kept on the blockchain which will create a permanent immutable record
  29. 29. Financial Industry
  30. 30. More Transparency, More Control Money transfers can happen more seamlessly (less reliance on Western Union) Transparent immutable ledger (do not have to trust banks with personal funds) Access to capital for nations that lack a dependable banking system
  31. 31. Less Sharing in the Sharing Economy
  32. 32. Peer-to-Peer Profits Ability to rent out rooms and rides without giving a portion of the profits to a third-party company Musicians earn more money when listeners stream their music Alternative marketplace for creators (such as ascribe.io and OpenBazaar)
  33. 33. Solidity Contract Bugs Transaction-Ordering Bug (TOD): Smart contract assumes a particular state of a contract that doesn’t exist Timestamp Dependence Bug: Asynchronous network is disconnected from a synchronized global clock. Some contracts assume that network is on global contract Unchecked Send: Most common exploit. Attacker elicits unexpected behavior from the contract by calling if from a carefully constructed call-stack
  34. 34. https://ethereum.karalabe.com/talks/2016-hackethon.html#1 Smart Contract Bloopers
  35. 35. How to Get Started Today Solidity Tutorial: https://solidity.readthedocs.io/en/develop/ Bootstrap Meteor App: https://github.com/SilentCicero/meteor-dapp-boilerplate Example Dapps: http://ethereum.stackexchange.com/questions/2940/where-can-i-find-some-solidity-smart-contract-source-code-examples Command Line Interface of Interacting with the Ethereum Network: https://www.ethereum.org/cli Meteor: https://www.meteor.com/
  36. 36. Contribute to Existing Blockchain Projects OpenBazaar: https://github.com/OpenBazaar/OpenBazaar-Server/issues BigChainDB: https://github.com/bigchaindb/bigchaindb/issues
  37. 37. Portia Burton @pkafei http://bit.ly/2dyGohH
  38. 38. Thank You!
  39. 39. References 1. http://ethdocs.org/en/latest/mining.html#what-is-mining 2. http://ethdocs.org/en/latest/frequently-asked-questions/frequently-asked-questions .html#what-s-the-difference-between-account-and-wallet-contract 3. http://www.coindesk.com/making-sense-smart-contracts/ 4. https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options 5. http://www.ethdocs.org/en/latest/contracts-and-transactions/account-types-gas-an d-transactions.html 6. https://blog.ethereum.org/2016/07/12/build-server-less-applications-mist/
  40. 40. 7.http://www.techrepublic.com/article/uk-government-using-blockchain-to-trac k-welfare-spending/ 8. https://github.com/ethereum/pyethapp 9. https://www.bigchaindb.com/whitepaper/bigchaindb-whitepaper.pdf

×