diff --git a/shyftDb/postgres_setup/create_tables.psql b/shyftDb/postgres_setup/create_tables.psql index 16506fa497..e80c608779 100644 --- a/shyftDb/postgres_setup/create_tables.psql +++ b/shyftDb/postgres_setup/create_tables.psql @@ -1,6 +1,11 @@ CREATE TABLE IF NOT EXISTS blocks ( hash text primary key, - coinbase text, + coinbase text, + gasUsed numeric, + gasLimit numeric, + txCount numeric, + uncleCount numeric, + age timestamp, number bigint ); diff --git a/shyftdb/shyft_database_util.go b/shyftdb/shyft_database_util.go index 13ee5e2252..8525204936 100644 --- a/shyftdb/shyft_database_util.go +++ b/shyftdb/shyft_database_util.go @@ -6,8 +6,8 @@ import ( "math/big" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" - - + "time" + "strconv" "database/sql" "log" @@ -20,6 +20,11 @@ type SBlock struct { Hash string Coinbase string Number string + GasUsed string + GasLimit string + TxCount string + UncleCount string + Age string } //blockRes struct @@ -87,8 +92,19 @@ type SendAndReceive struct { func WriteBlock(sqldb *sql.DB, block *types.Block) error { coinbase := block.Header().Coinbase.String() number := block.Header().Number.String() - sqlStatement := `INSERT INTO blocks(hash, coinbase, number) VALUES(($1), ($2), ($3)) RETURNING number` - qerr := sqldb.QueryRow(sqlStatement, block.Header().Hash().Hex(), coinbase, number).Scan(&number) + gasUsed := block.Header().GasUsed + gasLimit := block.Header().GasLimit + txCount := block.Transactions().Len() + uncleCount := len(block.Uncles()) + + i, err := strconv.ParseInt(block.Time().String(), 10, 64) + if err != nil { + panic(err) + } + age := time.Unix(i, 0) + + sqlStatement := `INSERT INTO blocks(hash, coinbase, number, gasUsed, gasLimit, txCount, uncleCount, age) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8)) RETURNING number` + qerr := sqldb.QueryRow(sqlStatement, block.Header().Hash().Hex(), coinbase, number, gasUsed, gasLimit, txCount, uncleCount, age).Scan(&number) if qerr != nil { panic(qerr) } @@ -126,7 +142,7 @@ func WriteTransactions(sqldb *sql.DB, tx *types.Transaction, blockHash common.Ha gas := txData.Gas data := txData.Data to := txData.To - if(to == nil){ + if (to == nil){ var retNonce string sqlStatement := `INSERT INTO txs(txhash, from_addr, blockhash, amount, gasprice, gas, nonce, data) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8)) RETURNING nonce` qerr := sqldb.QueryRow(sqlStatement, txHash, from, blockHasher, amount, gasPrice, gas, nonce, data).Scan(&retNonce) @@ -317,7 +333,12 @@ func GetAllBlocks(sqldb *sql.DB) string { SELECT number, hash, - coinbase + coinbase, + gasused, + gaslimit, + txcount, + unclecount, + age FROM blocks`) if err != nil { fmt.Println("err") @@ -328,16 +349,32 @@ func GetAllBlocks(sqldb *sql.DB) string { var num string var hash string var coinbase string + var gasUsed string + var gasLimit string + var txCount string + var uncleCount string + var age string + err = rows.Scan( &num, &hash, &coinbase, + &gasUsed, + &gasLimit, + &txCount, + &uncleCount, + &age, ) arr.Blocks = append(arr.Blocks, SBlock{ Hash: hash, Number: num, Coinbase: coinbase, + GasUsed: gasUsed, + GasLimit: gasLimit, + TxCount: txCount, + UncleCount: uncleCount, + Age: age, }) blocks, _ := json.Marshal(arr.Blocks) @@ -355,12 +392,31 @@ func GetBlock(sqldb *sql.DB) string { var num string var hash string var coinbase string - row.Scan(&num, &hash, &coinbase) + var gasUsed string + var gasLimit string + var txCount string + var uncleCount string + var age string + + row.Scan( + &num, + &hash, + &coinbase, + &gasUsed, + &gasLimit, + &txCount, + &uncleCount, + &age,) block := SBlock{ Hash: hash, Number: num, Coinbase: coinbase, + GasUsed: gasUsed, + GasLimit: gasLimit, + TxCount: txCount, + UncleCount: uncleCount, + Age: age, } json, _ := json.Marshal(block) return string(json) diff --git a/simulations/sendTransactions.js b/simulations/sendTransactions.js index c3a302d699..b338e7ba94 100644 --- a/simulations/sendTransactions.js +++ b/simulations/sendTransactions.js @@ -2,7 +2,7 @@ var firstAccount = web3.eth.accounts[0] var secondAccount = web3.eth.accounts[1] var thirdAccount = web3.eth.accounts[2] -for (var i = 0; i < 1; i++) { +for (var i = 0; i < 10; i++) { console.log('\t\t' + (i + 1) + ' - Transactions') web3.eth.sendTransaction({ from: web3.eth.accounts[1], @@ -11,19 +11,19 @@ for (var i = 0; i < 1; i++) { gas: 50000, gasPrice: 20 }); - // web3.eth.sendTransaction({ - // from: web3.eth.accounts[1], - // to: web3.eth.accounts[2], - // value: 291, - // gas: 50000, - // gasPrice: 20 - // }); - // - // web3.eth.sendTransaction({ - // from: web3.eth.accounts[0], - // to: web3.eth.accounts[1], - // value: 53039, - // gas: 50000, - // gasPrice: 20 - // }); + web3.eth.sendTransaction({ + from: web3.eth.accounts[0], + to: web3.eth.accounts[2], + value: 291, + gas: 50000, + gasPrice: 20 + }); + + web3.eth.sendTransaction({ + from: web3.eth.accounts[0], + to: web3.eth.accounts[1], + value: 53039, + gas: 50000, + gasPrice: 20 + }); } \ No newline at end of file