python, blockchain, and byte-size change

Post on 16-Apr-2017

552 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Python, Blockchain, and

Byte-Size ChangePortia Burton

@pkafeiPyDX 2016

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

What is a Blockchain?

A blockchain is a cross between a decentralized data store and bittorrent.

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

Many Different Types of Cryptocurrencies

Bitcoin vs. BlockchainBitcoin is part of a blockchain

Blockchain is a digital ledger of transactions

Each transaction is cryptographically signed

Blockchains are trustless

Ethereum

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)

Different Consensus MechanismsProof 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.

Ethereum Chains (not all blockchains are the same)

Different BlockchainsPublic 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

Can an average developer build blockchain applications?

Indeed, We Can!

But first, some more background

Smart Contracts (also known as DApps)

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

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

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

Demo Time!

But what about Python?

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

Actionable Ways Python Developers Can Interact with Blockchain

1. Checkout BigchainDB2. Contribute to Open Bazaar3. Get web3 to interact with

Django or Flask

Bigchain DB● This DB is actually in production (used

by ascribe.io)● Hybrid of a database and blockchain● NoSql datastore

BigchainDB compared to other data stores

Web3.jsJavaScript 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

Why Should We Care?

Democracy and Governance

Democracy as We Know It Can ChangeVoting 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

Financial Industry

More Transparency, More ControlMoney 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

Less Sharing in the Sharing Economy

Peer-to-Peer ProfitsAbility 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)

Solidity Contract BugsTransaction-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

https://ethereum.karalabe.com/talks/2016-hackethon.html#1

Smart Contract Bloopers

How to Get Started TodaySolidity 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/

Contribute to Existing Blockchain ProjectsOpenBazaar: https://github.com/OpenBazaar/OpenBazaar-Server/issues

BigChainDB: https://github.com/bigchaindb/bigchaindb/issues

Portia Burton

@pkafei

http://bit.ly/2dyGohH

Thank You!

References1. 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/

top related