Giter VIP home page Giter VIP logo

ethereumdb's Introduction

EthereumDB (Python and SQL)

Create the EthereumDB containing data residing on the Ethereum blockchain. Database management system: SQLite.

Create a database

  1. Connect to Infura (or run a local node).
  2. Uncomment and specify the path in database.py:
#uncomment one of the options below
# 1. connection via Infura
#web3 = Web3(Web3.HTTPProvider("https://mainnet.infura.io/your-personal-number"))

# 2. or connection via local node 
#web3 = Web3(Web3.IPCProvider('/your-path-to/geth.ipc'))
  1. execute: python database.py

More on database design

Database consists of 3 tables:

  • Quick: most relevant transaction info for quick access & analysis
  • TX: all remainder transaction info
  • Block: block-specific info
Quick TX Block
'from'/'sender', 'to'/'recipient', 'value', 'nonce', 'blockNumber', 'txHash', 'balanceTo', 'balanceFrom' 'blockNumber', 'gas', 'gasPrice', 'input', 'transactionIndex', 'v', 'r', 's', 'contractAddress', 'cumulativeGasUsed', 'gasUsed', 'logs', 'logsBloom', 'status', 'transactionHash' 'difficulty', 'extraData', 'gasLimit', 'blockGasUsed', 'blockHash', 'blockLogsBloom', 'miner', 'mixHash', 'blockNonce', 'blockNumber', 'parentHash', 'receiptsRoot', 'sha3Uncles', 'size', 'stateRoot', 'timestamp', 'totalDifficulty', 'transactions', 'transactionsRoot', 'uncles'

Meaning of the variables in the EthereumDB

Quick

Variable Meaning
sender 160-bit address of a sender of a transaction
recipient address of the recipient or null for a contract creation transaction
value number of wei to be transfered to the recipient or newly created account (case of contract creation)
nonce number of transactions/contract creations sent by the sender prior to this one
blockNumber number of the block the transaction belongs to (PRIMARY KEY)
txHash transaction hash (unique identifier)
balanceTo balance of the recipient after that transaction (note: different than balance from web3 which is after all tx-s in the block)
balanceFrom balance of the sender after that particular transaction (note: different than balance from web3 which is after all tx-s in the block)

TX

Variable Meaning
blockNumber number of the block the transaction belongs to
gas gas consumed by the transaction
gasPrice number of Wei to be paid per unit of gas for all computatioon costs of this transaction
input the data sent along with the transaction
transactionIndex index of the transaction in the block
v, r, s used to identify the sender; the signature values of the transaction
contractAddress the contract address created, if the transaction was a contract creation, otherwise null
cumulativeGasUsed the sum of gasUsed by this transaction and all preceding transactions in the same block
gasUsed the total amount of gas used when this transaction was executed in the block
logs array of log objects, which the transaction has generated
logsBloom the Bloom filter from indexable info (logger address and log topics) contained in each log entry from the receipt of each transaction in the transaction list
status boolean whether the transaction was successfull; false if the EVM (Ethereum Virtual Machine) reverted the transaction
txHash transaction hash (unique identifier) (PRIMARY KEY)

Block

Variable Meaning
difficulty scalar value corresponding to the difficulty level of the block
extraData extra data in byte array
gasLimit maximum gas expenditure allowed in this block
blockGasUsed total gas used by all transactions in this block
blockHash hash of the block
blockLogsBloom the Bloom filter from indexable info (logger address and log topics)
miner 160-bit address for fees collected from successful mining
mixHash 256-bit hash, which is combined with the nonce and used to prove that sufficient amount of computation has been carried out on this block
blockNonce hash of the generated proof-of-work; null when its a pending block
blockNumber scalar value equal to the number of ancestor blocks (genesis block=0)
parentHash Keccak256 hash of the parent block's header
receiptsRoot Keccak 256-bit hash of the root node of the tree structure populated with receipts of all transactions in this block
sha3Uncles SHA3 of the uncles data in the block.
size size of the block in bytes
stateRoot Keccak256 hash of the root node if the state trie, after all transactions are executed and finalisations applied
timestamp Unix's time() at this block's inception
totalDifficulty integer of the total difficulty of the chain until this block
transactions list of transaction hashes included in the block
transactionsRoot Keccak256 hash of the root node of the trie structure populated with the receipts of each transaction in the transactions list
uncles list of uncle hashes

source1 source 2 source 3 source 4 source5

How to use the database

import sqlite3 as sq3
conn = sq3.connect("blockchain.db")
cur = conn.cursor()

# some SQL code, e.g. select first five entries of the table Quick
cur.execute("SELECT * FROM Quick LIMIT 5")
a = cur.fetchall() #list of tuples containing all elements of the row
print(a)
conn.close()
Warning: the full database is large. You might not be able to open everything in one go.

ethereumdb's People

Contributors

alexsokolowska avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.