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()
|
||||
gasUsed := block.Header().GasUsed
|
||||
gasLimit := block.Header().GasLimit
|
||||
gasPrice := 0
|
||||
txFee := 0
|
||||
txStatus := ""
|
||||
isContract := false
|
||||
data:= ""
|
||||
addr := k.String()
|
||||
txCountAccount := v.Nonce +1
|
||||
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
|
||||
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`
|
||||
insertError := sqldb.QueryRow(sqlGenTxStatement, txHash, GENESIS, addr, block.Header().Hash().Hex(), number, v.Balance.String(), gasUsed, gasLimit, txCountAccount, age).Scan(&retNonce)
|
||||
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(), gasPrice, gasUsed, gasLimit, txFee,txCountAccount,txStatus, isContract, age, data).Scan(&retNonce)
|
||||
if insertError != nil {
|
||||
panic(insertError)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,11 +2,15 @@ import React from 'react';
|
|||
import classes from '../nav.css';
|
||||
|
||||
const accountsDetailHeader = (props) => {
|
||||
const total = props.data
|
||||
.map(num => Number(num.Amount) / 10000000000000000000)
|
||||
.reduce((acc, cur) => acc + cur ,0);
|
||||
return (
|
||||
<div className={classes.Secondary}>
|
||||
<span className={classes.Transactions}>Account# {props.addr}</span>
|
||||
<span className={classes.Transactions}>Total Value: {total}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
};
|
||||
|
||||
export default accountsDetailHeader;
|
||||
|
|
@ -4,7 +4,7 @@ import classes from '../nav.css';
|
|||
const blocksCoinbaseHeader = (props) => {
|
||||
return (
|
||||
<div className={classes.Secondary}>
|
||||
<span className={classes.Transactions}>Coinbase: {props.data.Coinbase}</span>
|
||||
<span className={classes.Transactions}>Coinbase: {props.coinbase}</span>
|
||||
</div>
|
||||
)
|
||||
};
|
||||
|
|
|
|||
|
|
@ -24,11 +24,12 @@ class AccountTable extends Component {
|
|||
|
||||
let startNum = 1;
|
||||
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 conversion = data.Balance / 10000000000000000000;
|
||||
const conversion = Number(data.Balance) / 10000000000000000000;
|
||||
const total = sorted
|
||||
.map(num => num.Balance / 10000000000000000000)
|
||||
.map(num => Number(num.Balance) / 10000000000000000000)
|
||||
.reduce((acc, cur) => acc + cur ,0);
|
||||
const percentage = ( (conversion / total) *100);
|
||||
return <AccountsTable
|
||||
|
|
|
|||
|
|
@ -16,6 +16,6 @@ const AccountsTable = (props) => {
|
|||
</tr>
|
||||
</tbody>
|
||||
)
|
||||
}
|
||||
};
|
||||
|
||||
export default AccountsTable;
|
||||
|
|
|
|||
|
|
@ -10,11 +10,8 @@ class AccountTransactionTable extends Component {
|
|||
return <ErrorHandler />
|
||||
}else {
|
||||
table = this.props.data.map((data, i) => {
|
||||
console.log(this.props.data)
|
||||
// const total = this.props.data
|
||||
// .map(num => num.Balance / 10000000000000000000)
|
||||
// .reduce((acc, cur) => acc + cur ,0);
|
||||
const conversion = data.Cost / 10000000000000000000;
|
||||
const costConversion = data.Cost / 10000000000000000000;
|
||||
const amountConversion = data.Amount / 10000000000000000000;
|
||||
return <DetailAccountsTable
|
||||
key={`${data.TxHash}${i}`}
|
||||
age={data.Age}
|
||||
|
|
@ -22,8 +19,8 @@ class AccountTransactionTable extends Component {
|
|||
blockNumber={data.BlockNumber}
|
||||
to={data.To}
|
||||
from={data.From}
|
||||
value={data.Amount}
|
||||
cost={conversion}
|
||||
value={amountConversion}
|
||||
cost={costConversion}
|
||||
addr={this.props.addr}
|
||||
detailTransactionHandler={this.props.transactionDetailHandler}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -32,6 +32,6 @@ const DetailAccountsTable = (props) => {
|
|||
</tr>
|
||||
</tbody>
|
||||
)
|
||||
}
|
||||
};
|
||||
|
||||
export default DetailAccountsTable;
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ const MinedBlockTable = (props) => {
|
|||
<td>{props.Age}</td>
|
||||
<td>{props.TxCount}</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.GasLimit}</td>
|
||||
<td>TBD</td>
|
||||
|
|
@ -21,6 +21,6 @@ const MinedBlockTable = (props) => {
|
|||
</tr>
|
||||
</tbody>
|
||||
)
|
||||
}
|
||||
};
|
||||
|
||||
export default MinedBlockTable;
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class App extends Component {
|
|||
getBlockTransactions = async(blockNumber) => {
|
||||
try {
|
||||
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) {
|
||||
console.log(error)
|
||||
|
|
@ -81,11 +81,9 @@ class App extends Component {
|
|||
};
|
||||
|
||||
getBlocksMined = async(coinbase) => {
|
||||
console.log("THIS RAN")
|
||||
try {
|
||||
const response = await axios.get(`http://localhost:8080/api/get_blocks_mined/${coinbase}`)
|
||||
console.log(response.data);
|
||||
await this.setState({ blocksMined: response.data })
|
||||
await this.setState({ blocksMined: response.data, reqCoinbase: coinbase })
|
||||
}
|
||||
catch(error) {
|
||||
console.log(error)
|
||||
|
|
@ -151,7 +149,7 @@ class App extends Component {
|
|||
<Route path="/block/transactions" exact render={({match}) =>
|
||||
<div>
|
||||
<BlockDetailHeader
|
||||
blockNumber={this.state.blockTransactions.BlockNumber}/>
|
||||
blockNumber={this.state.reqBlockNum}/>
|
||||
<BlockTxs
|
||||
data={this.state.blockTransactions}
|
||||
getBlockTransactions={this.getBlockTransactions}
|
||||
|
|
@ -164,7 +162,7 @@ class App extends Component {
|
|||
<Route path="/mined/blocks" exact render={({match}) =>
|
||||
<div>
|
||||
<BlockCoinbaseHeader
|
||||
data={this.state.blocksMined}/>
|
||||
coinbase={this.state.reqCoinbase}/>
|
||||
<BlocksMinedTable
|
||||
getBlockTransactions={this.getBlockTransactions}
|
||||
getBlocksMined={this.getBlocksMined}
|
||||
|
|
@ -175,7 +173,8 @@ class App extends Component {
|
|||
<Route path="/account/detail" exact render={({match}) =>
|
||||
<div>
|
||||
<AccountDetailHeader
|
||||
addr={this.state.reqAccount}/>
|
||||
addr={this.state.reqAccount}
|
||||
data={this.state.accountDetailData}/>
|
||||
<DetailAccountsTable
|
||||
transactionDetailHandler={this.detailTransactionHandler}
|
||||
addr={this.state.reqAccount}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import (
|
|||
|
||||
_ "github.com/lib/pq"
|
||||
Rewards "github.com/ethereum/go-ethereum/consensus/ethash"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
//SBlock type
|
||||
|
|
@ -77,10 +78,10 @@ type ShyftTxEntryPretty struct {
|
|||
From string
|
||||
BlockHash string
|
||||
BlockNumber string
|
||||
Amount uint64
|
||||
Amount string
|
||||
GasPrice uint64
|
||||
Gas uint64
|
||||
GasLimit uint64
|
||||
GasLimit string
|
||||
Cost uint64
|
||||
Nonce uint64
|
||||
Status string
|
||||
|
|
@ -686,10 +687,10 @@ func GetAllTransactionsFromBlock(sqldb *sql.DB, blockNumber string) string {
|
|||
var from_addr string
|
||||
var blockhash string
|
||||
var blocknumber string
|
||||
var amount uint64
|
||||
var amount string
|
||||
var gasprice uint64
|
||||
var gas uint64
|
||||
var gasLimit uint64
|
||||
var gasLimit string
|
||||
var txfee uint64
|
||||
var nonce uint64
|
||||
var status string
|
||||
|
|
@ -821,10 +822,10 @@ func GetAllTransactions(sqldb *sql.DB) string {
|
|||
var from_addr string
|
||||
var blockhash string
|
||||
var blocknumber string
|
||||
var amount uint64
|
||||
var amount string
|
||||
var gasprice uint64
|
||||
var gas uint64
|
||||
var gasLimit uint64
|
||||
var gasLimit string
|
||||
var txfee uint64
|
||||
var nonce uint64
|
||||
var status string
|
||||
|
|
@ -883,10 +884,10 @@ func GetTransaction(sqldb *sql.DB, txHash string) string {
|
|||
var from_addr string
|
||||
var blockhash string
|
||||
var blocknumber string
|
||||
var amount uint64
|
||||
var amount string
|
||||
var gasprice uint64
|
||||
var gas uint64
|
||||
var gasLimit uint64
|
||||
var gasLimit string
|
||||
var txfee uint64
|
||||
var nonce uint64
|
||||
var status string
|
||||
|
|
@ -994,6 +995,7 @@ func GetAllAccounts(sqldb *sql.DB) string {
|
|||
|
||||
//GetAccount returns account balances
|
||||
func GetAccountTxs(sqldb *sql.DB, address string) string {
|
||||
fmt.Println(address)
|
||||
var arr txRes
|
||||
var txx string
|
||||
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 blockhash string
|
||||
var blocknumber string
|
||||
var amount uint64
|
||||
var amount string
|
||||
var gasprice uint64
|
||||
var gas uint64
|
||||
var gasLimit uint64
|
||||
var gasLimit string
|
||||
var txfee uint64
|
||||
var nonce uint64
|
||||
var status string
|
||||
|
|
@ -1035,6 +1037,7 @@ func GetAccountTxs(sqldb *sql.DB, address string) string {
|
|||
&age,
|
||||
&data,
|
||||
)
|
||||
fmt.Println(reflect.TypeOf(amount))
|
||||
|
||||
arr.TxEntry = append(arr.TxEntry, ShyftTxEntryPretty{
|
||||
TxHash: txhash,
|
||||
|
|
|
|||
Loading…
Reference in a new issue