mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 02:12:23 +00:00
UI, API changes
This commit is contained in:
parent
3a9affe2a0
commit
abdeb11c3c
10 changed files with 44 additions and 35 deletions
|
|
@ -161,6 +161,11 @@ func WriteShyftGen(sqldb *sql.DB, gen *Genesis, block *types.Block) {
|
||||||
number := block.Header().Number.String()
|
number := block.Header().Number.String()
|
||||||
gasUsed := block.Header().GasUsed
|
gasUsed := block.Header().GasUsed
|
||||||
gasLimit := block.Header().GasLimit
|
gasLimit := block.Header().GasLimit
|
||||||
|
gasPrice := 0
|
||||||
|
txFee := 0
|
||||||
|
txStatus := ""
|
||||||
|
isContract := false
|
||||||
|
data:= ""
|
||||||
addr := k.String()
|
addr := k.String()
|
||||||
txCountAccount := v.Nonce +1
|
txCountAccount := v.Nonce +1
|
||||||
i, err := strconv.ParseInt(block.Time().String(), 10, 64)
|
i, err := strconv.ParseInt(block.Time().String(), 10, 64)
|
||||||
|
|
@ -179,8 +184,8 @@ func WriteShyftGen(sqldb *sql.DB, gen *Genesis, block *types.Block) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var retNonce string
|
var retNonce string
|
||||||
sqlGenTxStatement := `INSERT INTO txs(txhash, from_addr, to_addr, blockhash, blockNumber, amount, gas, gasLimit, nonce,age) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10)) RETURNING nonce`
|
sqlGenTxStatement := `INSERT INTO txs(txhash, from_addr, to_addr, blockhash, blockNumber, amount,gasPrice, gas, gasLimit,txFee,nonce,txstatus, iscontract,age, data) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10), ($11), ($12), ($13), ($14), ($15)) RETURNING nonce`
|
||||||
insertError := sqldb.QueryRow(sqlGenTxStatement, txHash, GENESIS, addr, block.Header().Hash().Hex(), number, v.Balance.String(), gasUsed, gasLimit, txCountAccount, age).Scan(&retNonce)
|
insertError := sqldb.QueryRow(sqlGenTxStatement, txHash, GENESIS, addr, block.Header().Hash().Hex(), number, v.Balance.String(), gasPrice, gasUsed, gasLimit, txFee,txCountAccount,txStatus, isContract, age, data).Scan(&retNonce)
|
||||||
if insertError != nil {
|
if insertError != nil {
|
||||||
panic(insertError)
|
panic(insertError)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,15 @@ import React from 'react';
|
||||||
import classes from '../nav.css';
|
import classes from '../nav.css';
|
||||||
|
|
||||||
const accountsDetailHeader = (props) => {
|
const accountsDetailHeader = (props) => {
|
||||||
|
const total = props.data
|
||||||
|
.map(num => Number(num.Amount) / 10000000000000000000)
|
||||||
|
.reduce((acc, cur) => acc + cur ,0);
|
||||||
return (
|
return (
|
||||||
<div className={classes.Secondary}>
|
<div className={classes.Secondary}>
|
||||||
<span className={classes.Transactions}>Account# {props.addr}</span>
|
<span className={classes.Transactions}>Account# {props.addr}</span>
|
||||||
|
<span className={classes.Transactions}>Total Value: {total}</span>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
};
|
||||||
|
|
||||||
export default accountsDetailHeader;
|
export default accountsDetailHeader;
|
||||||
|
|
@ -4,7 +4,7 @@ import classes from '../nav.css';
|
||||||
const blocksCoinbaseHeader = (props) => {
|
const blocksCoinbaseHeader = (props) => {
|
||||||
return (
|
return (
|
||||||
<div className={classes.Secondary}>
|
<div className={classes.Secondary}>
|
||||||
<span className={classes.Transactions}>Coinbase: {props.data.Coinbase}</span>
|
<span className={classes.Transactions}>Coinbase: {props.coinbase}</span>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -24,11 +24,12 @@ class AccountTable extends Component {
|
||||||
|
|
||||||
let startNum = 1;
|
let startNum = 1;
|
||||||
const sorted = [...this.state.data];
|
const sorted = [...this.state.data];
|
||||||
sorted.sort((a, b) => a.Balance > b.Balance);
|
sorted.sort((a, b) => Number(a.Balance) > Number(b.Balance));
|
||||||
|
console.log(sorted);
|
||||||
const table = sorted.reverse().map((data, i) => {
|
const table = sorted.reverse().map((data, i) => {
|
||||||
const conversion = data.Balance / 10000000000000000000;
|
const conversion = Number(data.Balance) / 10000000000000000000;
|
||||||
const total = sorted
|
const total = sorted
|
||||||
.map(num => num.Balance / 10000000000000000000)
|
.map(num => Number(num.Balance) / 10000000000000000000)
|
||||||
.reduce((acc, cur) => acc + cur ,0);
|
.reduce((acc, cur) => acc + cur ,0);
|
||||||
const percentage = ( (conversion / total) *100);
|
const percentage = ( (conversion / total) *100);
|
||||||
return <AccountsTable
|
return <AccountsTable
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,6 @@ const AccountsTable = (props) => {
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
)
|
)
|
||||||
}
|
};
|
||||||
|
|
||||||
export default AccountsTable;
|
export default AccountsTable;
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,8 @@ class AccountTransactionTable extends Component {
|
||||||
return <ErrorHandler />
|
return <ErrorHandler />
|
||||||
}else {
|
}else {
|
||||||
table = this.props.data.map((data, i) => {
|
table = this.props.data.map((data, i) => {
|
||||||
console.log(this.props.data)
|
const costConversion = data.Cost / 10000000000000000000;
|
||||||
// const total = this.props.data
|
const amountConversion = data.Amount / 10000000000000000000;
|
||||||
// .map(num => num.Balance / 10000000000000000000)
|
|
||||||
// .reduce((acc, cur) => acc + cur ,0);
|
|
||||||
const conversion = data.Cost / 10000000000000000000;
|
|
||||||
return <DetailAccountsTable
|
return <DetailAccountsTable
|
||||||
key={`${data.TxHash}${i}`}
|
key={`${data.TxHash}${i}`}
|
||||||
age={data.Age}
|
age={data.Age}
|
||||||
|
|
@ -22,8 +19,8 @@ class AccountTransactionTable extends Component {
|
||||||
blockNumber={data.BlockNumber}
|
blockNumber={data.BlockNumber}
|
||||||
to={data.To}
|
to={data.To}
|
||||||
from={data.From}
|
from={data.From}
|
||||||
value={data.Amount}
|
value={amountConversion}
|
||||||
cost={conversion}
|
cost={costConversion}
|
||||||
addr={this.props.addr}
|
addr={this.props.addr}
|
||||||
detailTransactionHandler={this.props.transactionDetailHandler}
|
detailTransactionHandler={this.props.transactionDetailHandler}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,6 @@ const DetailAccountsTable = (props) => {
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
)
|
)
|
||||||
}
|
};
|
||||||
|
|
||||||
export default DetailAccountsTable;
|
export default DetailAccountsTable;
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ const MinedBlockTable = (props) => {
|
||||||
<td>{props.Age}</td>
|
<td>{props.Age}</td>
|
||||||
<td>{props.TxCount}</td>
|
<td>{props.TxCount}</td>
|
||||||
<td>{props.UncleCount}</td>
|
<td>{props.UncleCount}</td>
|
||||||
<td className={classes.addressTag}><Link to="/blocks/mined" onClick={() => props.getBlocksMined(props.Coinbase)}>{props.Coinbase}</Link></td>
|
<td className={classes.addressTag}>{props.Coinbase}</td>
|
||||||
<td>{props.GasUsed}</td>
|
<td>{props.GasUsed}</td>
|
||||||
<td>{props.GasLimit}</td>
|
<td>{props.GasLimit}</td>
|
||||||
<td>TBD</td>
|
<td>TBD</td>
|
||||||
|
|
@ -21,6 +21,6 @@ const MinedBlockTable = (props) => {
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
)
|
)
|
||||||
}
|
};
|
||||||
|
|
||||||
export default MinedBlockTable;
|
export default MinedBlockTable;
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ class App extends Component {
|
||||||
getBlockTransactions = async(blockNumber) => {
|
getBlockTransactions = async(blockNumber) => {
|
||||||
try {
|
try {
|
||||||
const response = await axios.get(`http://localhost:8080/api/get_all_transactions_from_block/${blockNumber}`)
|
const response = await axios.get(`http://localhost:8080/api/get_all_transactions_from_block/${blockNumber}`)
|
||||||
await this.setState({ blockTransactions: response.data })
|
await this.setState({ blockTransactions: response.data, reqBlockNum: blockNumber })
|
||||||
}
|
}
|
||||||
catch(error) {
|
catch(error) {
|
||||||
console.log(error)
|
console.log(error)
|
||||||
|
|
@ -81,11 +81,9 @@ class App extends Component {
|
||||||
};
|
};
|
||||||
|
|
||||||
getBlocksMined = async(coinbase) => {
|
getBlocksMined = async(coinbase) => {
|
||||||
console.log("THIS RAN")
|
|
||||||
try {
|
try {
|
||||||
const response = await axios.get(`http://localhost:8080/api/get_blocks_mined/${coinbase}`)
|
const response = await axios.get(`http://localhost:8080/api/get_blocks_mined/${coinbase}`)
|
||||||
console.log(response.data);
|
await this.setState({ blocksMined: response.data, reqCoinbase: coinbase })
|
||||||
await this.setState({ blocksMined: response.data })
|
|
||||||
}
|
}
|
||||||
catch(error) {
|
catch(error) {
|
||||||
console.log(error)
|
console.log(error)
|
||||||
|
|
@ -151,7 +149,7 @@ class App extends Component {
|
||||||
<Route path="/block/transactions" exact render={({match}) =>
|
<Route path="/block/transactions" exact render={({match}) =>
|
||||||
<div>
|
<div>
|
||||||
<BlockDetailHeader
|
<BlockDetailHeader
|
||||||
blockNumber={this.state.blockTransactions.BlockNumber}/>
|
blockNumber={this.state.reqBlockNum}/>
|
||||||
<BlockTxs
|
<BlockTxs
|
||||||
data={this.state.blockTransactions}
|
data={this.state.blockTransactions}
|
||||||
getBlockTransactions={this.getBlockTransactions}
|
getBlockTransactions={this.getBlockTransactions}
|
||||||
|
|
@ -164,7 +162,7 @@ class App extends Component {
|
||||||
<Route path="/mined/blocks" exact render={({match}) =>
|
<Route path="/mined/blocks" exact render={({match}) =>
|
||||||
<div>
|
<div>
|
||||||
<BlockCoinbaseHeader
|
<BlockCoinbaseHeader
|
||||||
data={this.state.blocksMined}/>
|
coinbase={this.state.reqCoinbase}/>
|
||||||
<BlocksMinedTable
|
<BlocksMinedTable
|
||||||
getBlockTransactions={this.getBlockTransactions}
|
getBlockTransactions={this.getBlockTransactions}
|
||||||
getBlocksMined={this.getBlocksMined}
|
getBlocksMined={this.getBlocksMined}
|
||||||
|
|
@ -175,7 +173,8 @@ class App extends Component {
|
||||||
<Route path="/account/detail" exact render={({match}) =>
|
<Route path="/account/detail" exact render={({match}) =>
|
||||||
<div>
|
<div>
|
||||||
<AccountDetailHeader
|
<AccountDetailHeader
|
||||||
addr={this.state.reqAccount}/>
|
addr={this.state.reqAccount}
|
||||||
|
data={this.state.accountDetailData}/>
|
||||||
<DetailAccountsTable
|
<DetailAccountsTable
|
||||||
transactionDetailHandler={this.detailTransactionHandler}
|
transactionDetailHandler={this.detailTransactionHandler}
|
||||||
addr={this.state.reqAccount}
|
addr={this.state.reqAccount}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import (
|
||||||
|
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
Rewards "github.com/ethereum/go-ethereum/consensus/ethash"
|
Rewards "github.com/ethereum/go-ethereum/consensus/ethash"
|
||||||
|
"reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
//SBlock type
|
//SBlock type
|
||||||
|
|
@ -77,10 +78,10 @@ type ShyftTxEntryPretty struct {
|
||||||
From string
|
From string
|
||||||
BlockHash string
|
BlockHash string
|
||||||
BlockNumber string
|
BlockNumber string
|
||||||
Amount uint64
|
Amount string
|
||||||
GasPrice uint64
|
GasPrice uint64
|
||||||
Gas uint64
|
Gas uint64
|
||||||
GasLimit uint64
|
GasLimit string
|
||||||
Cost uint64
|
Cost uint64
|
||||||
Nonce uint64
|
Nonce uint64
|
||||||
Status string
|
Status string
|
||||||
|
|
@ -686,10 +687,10 @@ func GetAllTransactionsFromBlock(sqldb *sql.DB, blockNumber string) string {
|
||||||
var from_addr string
|
var from_addr string
|
||||||
var blockhash string
|
var blockhash string
|
||||||
var blocknumber string
|
var blocknumber string
|
||||||
var amount uint64
|
var amount string
|
||||||
var gasprice uint64
|
var gasprice uint64
|
||||||
var gas uint64
|
var gas uint64
|
||||||
var gasLimit uint64
|
var gasLimit string
|
||||||
var txfee uint64
|
var txfee uint64
|
||||||
var nonce uint64
|
var nonce uint64
|
||||||
var status string
|
var status string
|
||||||
|
|
@ -821,10 +822,10 @@ func GetAllTransactions(sqldb *sql.DB) string {
|
||||||
var from_addr string
|
var from_addr string
|
||||||
var blockhash string
|
var blockhash string
|
||||||
var blocknumber string
|
var blocknumber string
|
||||||
var amount uint64
|
var amount string
|
||||||
var gasprice uint64
|
var gasprice uint64
|
||||||
var gas uint64
|
var gas uint64
|
||||||
var gasLimit uint64
|
var gasLimit string
|
||||||
var txfee uint64
|
var txfee uint64
|
||||||
var nonce uint64
|
var nonce uint64
|
||||||
var status string
|
var status string
|
||||||
|
|
@ -883,10 +884,10 @@ func GetTransaction(sqldb *sql.DB, txHash string) string {
|
||||||
var from_addr string
|
var from_addr string
|
||||||
var blockhash string
|
var blockhash string
|
||||||
var blocknumber string
|
var blocknumber string
|
||||||
var amount uint64
|
var amount string
|
||||||
var gasprice uint64
|
var gasprice uint64
|
||||||
var gas uint64
|
var gas uint64
|
||||||
var gasLimit uint64
|
var gasLimit string
|
||||||
var txfee uint64
|
var txfee uint64
|
||||||
var nonce uint64
|
var nonce uint64
|
||||||
var status string
|
var status string
|
||||||
|
|
@ -994,6 +995,7 @@ func GetAllAccounts(sqldb *sql.DB) string {
|
||||||
|
|
||||||
//GetAccount returns account balances
|
//GetAccount returns account balances
|
||||||
func GetAccountTxs(sqldb *sql.DB, address string) string {
|
func GetAccountTxs(sqldb *sql.DB, address string) string {
|
||||||
|
fmt.Println(address)
|
||||||
var arr txRes
|
var arr txRes
|
||||||
var txx string
|
var txx string
|
||||||
sqlStatement := `SELECT * FROM txs WHERE to_addr=$1 OR from_addr=$1;`
|
sqlStatement := `SELECT * FROM txs WHERE to_addr=$1 OR from_addr=$1;`
|
||||||
|
|
@ -1008,10 +1010,10 @@ func GetAccountTxs(sqldb *sql.DB, address string) string {
|
||||||
var from_addr string
|
var from_addr string
|
||||||
var blockhash string
|
var blockhash string
|
||||||
var blocknumber string
|
var blocknumber string
|
||||||
var amount uint64
|
var amount string
|
||||||
var gasprice uint64
|
var gasprice uint64
|
||||||
var gas uint64
|
var gas uint64
|
||||||
var gasLimit uint64
|
var gasLimit string
|
||||||
var txfee uint64
|
var txfee uint64
|
||||||
var nonce uint64
|
var nonce uint64
|
||||||
var status string
|
var status string
|
||||||
|
|
@ -1035,6 +1037,7 @@ func GetAccountTxs(sqldb *sql.DB, address string) string {
|
||||||
&age,
|
&age,
|
||||||
&data,
|
&data,
|
||||||
)
|
)
|
||||||
|
fmt.Println(reflect.TypeOf(amount))
|
||||||
|
|
||||||
arr.TxEntry = append(arr.TxEntry, ShyftTxEntryPretty{
|
arr.TxEntry = append(arr.TxEntry, ShyftTxEntryPretty{
|
||||||
TxHash: txhash,
|
TxHash: txhash,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue