mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 10:22:23 +00:00
removed fmt prints, created types file and fixed UI
This commit is contained in:
parent
ba48ad13e9
commit
a37f60d6a3
15 changed files with 370 additions and 260 deletions
|
|
@ -18,16 +18,20 @@ package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"database/sql"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"database/sql"
|
"time"
|
||||||
|
|
||||||
"github.com/ShyftNetwork/go-empyrean/common"
|
"github.com/ShyftNetwork/go-empyrean/common"
|
||||||
"github.com/ShyftNetwork/go-empyrean/common/hexutil"
|
"github.com/ShyftNetwork/go-empyrean/common/hexutil"
|
||||||
"github.com/ShyftNetwork/go-empyrean/common/math"
|
"github.com/ShyftNetwork/go-empyrean/common/math"
|
||||||
|
stypes "github.com/ShyftNetwork/go-empyrean/core/sTypes"
|
||||||
"github.com/ShyftNetwork/go-empyrean/core/state"
|
"github.com/ShyftNetwork/go-empyrean/core/state"
|
||||||
"github.com/ShyftNetwork/go-empyrean/core/types"
|
"github.com/ShyftNetwork/go-empyrean/core/types"
|
||||||
"github.com/ShyftNetwork/go-empyrean/ethdb"
|
"github.com/ShyftNetwork/go-empyrean/ethdb"
|
||||||
|
|
@ -35,8 +39,6 @@ import (
|
||||||
"github.com/ShyftNetwork/go-empyrean/params"
|
"github.com/ShyftNetwork/go-empyrean/params"
|
||||||
"github.com/ShyftNetwork/go-empyrean/rlp"
|
"github.com/ShyftNetwork/go-empyrean/rlp"
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
"strconv"
|
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:generate gencodec -type Genesis -field-override genesisSpecMarshaling -out gen_genesis.go
|
//go:generate gencodec -type Genesis -field-override genesisSpecMarshaling -out gen_genesis.go
|
||||||
|
|
@ -168,12 +170,12 @@ func WriteShyftGen(gen *Genesis, block *types.Block) {
|
||||||
}
|
}
|
||||||
age := time.Unix(i, 0)
|
age := time.Unix(i, 0)
|
||||||
|
|
||||||
txData := ShyftTxEntryPretty {
|
txData := stypes.ShyftTxEntryPretty{
|
||||||
TxHash: txHash,
|
TxHash: txHash,
|
||||||
From: GENESIS,
|
From: GENESIS,
|
||||||
To: toAddr,
|
To: toAddr,
|
||||||
BlockHash: block.Header().Hash().Hex(),
|
BlockHash: block.Header().Hash().Hex(),
|
||||||
BlockNumber:block.Header().Number.String(),
|
BlockNumber: block.Header().Number.String(),
|
||||||
Amount: v.Balance.String(),
|
Amount: v.Balance.String(),
|
||||||
Cost: cost,
|
Cost: cost,
|
||||||
GasPrice: gasPrice,
|
GasPrice: gasPrice,
|
||||||
|
|
@ -191,9 +193,11 @@ func WriteShyftGen(gen *Genesis, block *types.Block) {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
log.Info("Found Genesis Block")
|
log.Info("Found Genesis Block")
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//WriteShyftBlockZero writes block 0 to postgres db
|
||||||
func WriteShyftBlockZero(block *types.Block, gen *Genesis) error {
|
func WriteShyftBlockZero(block *types.Block, gen *Genesis) error {
|
||||||
sqldb, _ := DBConnection()
|
sqldb, _ := DBConnection()
|
||||||
|
|
||||||
|
|
@ -203,7 +207,7 @@ func WriteShyftBlockZero(block *types.Block, gen *Genesis) error {
|
||||||
}
|
}
|
||||||
age := time.Unix(i, 0)
|
age := time.Unix(i, 0)
|
||||||
|
|
||||||
blockData := SBlock{
|
blockData := stypes.SBlock{
|
||||||
Hash: block.Header().Hash().Hex(),
|
Hash: block.Header().Hash().Hex(),
|
||||||
Coinbase: block.Header().Coinbase.String(),
|
Coinbase: block.Header().Coinbase.String(),
|
||||||
Number: block.Header().Number.String(),
|
Number: block.Header().Number.String(),
|
||||||
|
|
|
||||||
92
core/sTypes/stypes.go
Normal file
92
core/sTypes/stypes.go
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
package stypes
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/ShyftNetwork/go-empyrean/common"
|
||||||
|
)
|
||||||
|
|
||||||
|
//SBlock type
|
||||||
|
type SBlock struct {
|
||||||
|
Hash string
|
||||||
|
Coinbase string
|
||||||
|
AgeGet string
|
||||||
|
Age time.Time
|
||||||
|
ParentHash string
|
||||||
|
UncleHash string
|
||||||
|
Difficulty string
|
||||||
|
Size string
|
||||||
|
Rewards string
|
||||||
|
Number string
|
||||||
|
GasUsed uint64
|
||||||
|
GasLimit uint64
|
||||||
|
Nonce uint64
|
||||||
|
TxCount int
|
||||||
|
UncleCount int
|
||||||
|
Blocks []SBlock
|
||||||
|
}
|
||||||
|
|
||||||
|
type InteralWrite struct {
|
||||||
|
Hash string
|
||||||
|
Type string
|
||||||
|
From string
|
||||||
|
To string
|
||||||
|
Value string
|
||||||
|
Gas uint64
|
||||||
|
GasUsed uint64
|
||||||
|
Input string
|
||||||
|
Output string
|
||||||
|
Time string
|
||||||
|
}
|
||||||
|
|
||||||
|
//blockRes struct
|
||||||
|
type BlockRes struct {
|
||||||
|
hash string
|
||||||
|
coinbase string
|
||||||
|
number string
|
||||||
|
Blocks []SBlock
|
||||||
|
}
|
||||||
|
|
||||||
|
type SAccounts struct {
|
||||||
|
Addr string
|
||||||
|
Balance string
|
||||||
|
AccountNonce string
|
||||||
|
}
|
||||||
|
|
||||||
|
type AccountRes struct {
|
||||||
|
addr string
|
||||||
|
balance string
|
||||||
|
AllAccounts []SAccounts
|
||||||
|
}
|
||||||
|
|
||||||
|
type TxRes struct {
|
||||||
|
TxEntry []ShyftTxEntryPretty
|
||||||
|
}
|
||||||
|
|
||||||
|
type ShyftTxEntryPretty struct {
|
||||||
|
TxHash string
|
||||||
|
To *common.Address
|
||||||
|
ToGet string
|
||||||
|
From string
|
||||||
|
BlockHash string
|
||||||
|
BlockNumber string
|
||||||
|
Amount string
|
||||||
|
GasPrice uint64
|
||||||
|
Gas uint64
|
||||||
|
GasLimit uint64
|
||||||
|
Cost uint64
|
||||||
|
Nonce uint64
|
||||||
|
Status string
|
||||||
|
IsContract bool
|
||||||
|
Age time.Time
|
||||||
|
Data []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type SendAndReceive struct {
|
||||||
|
To string
|
||||||
|
From string
|
||||||
|
Amount string
|
||||||
|
Address string
|
||||||
|
Balance string
|
||||||
|
AccountNonce uint64 `json:",string"`
|
||||||
|
}
|
||||||
|
|
@ -11,103 +11,106 @@ import (
|
||||||
|
|
||||||
"github.com/ShyftNetwork/go-empyrean/common"
|
"github.com/ShyftNetwork/go-empyrean/common"
|
||||||
Rewards "github.com/ShyftNetwork/go-empyrean/consensus/ethash"
|
Rewards "github.com/ShyftNetwork/go-empyrean/consensus/ethash"
|
||||||
|
stypes "github.com/ShyftNetwork/go-empyrean/core/sTypes"
|
||||||
"github.com/ShyftNetwork/go-empyrean/core/types"
|
"github.com/ShyftNetwork/go-empyrean/core/types"
|
||||||
"github.com/ShyftNetwork/go-empyrean/shyfttracerinterface"
|
"github.com/ShyftNetwork/go-empyrean/shyfttracerinterface"
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//IShyftTracer Used to initialize ShyftTracer
|
||||||
var IShyftTracer shyfttracerinterface.IShyftTracer
|
var IShyftTracer shyfttracerinterface.IShyftTracer
|
||||||
|
|
||||||
|
//SetIShyftTracer sets tracer type
|
||||||
func SetIShyftTracer(st shyfttracerinterface.IShyftTracer) {
|
func SetIShyftTracer(st shyfttracerinterface.IShyftTracer) {
|
||||||
IShyftTracer = st
|
IShyftTracer = st
|
||||||
}
|
}
|
||||||
|
|
||||||
//SBlock type
|
// //SBlock type
|
||||||
type SBlock struct {
|
// type SBlock struct {
|
||||||
Hash string
|
// Hash string
|
||||||
Coinbase string
|
// Coinbase string
|
||||||
AgeGet string
|
// AgeGet string
|
||||||
Age time.Time
|
// Age time.Time
|
||||||
ParentHash string
|
// ParentHash string
|
||||||
UncleHash string
|
// UncleHash string
|
||||||
Difficulty string
|
// Difficulty string
|
||||||
Size string
|
// Size string
|
||||||
Rewards string
|
// Rewards string
|
||||||
Number string
|
// Number string
|
||||||
GasUsed uint64
|
// GasUsed uint64
|
||||||
GasLimit uint64
|
// GasLimit uint64
|
||||||
Nonce uint64
|
// Nonce uint64
|
||||||
TxCount int
|
// TxCount int
|
||||||
UncleCount int
|
// UncleCount int
|
||||||
Blocks []SBlock
|
// Blocks []SBlock
|
||||||
}
|
// }
|
||||||
|
|
||||||
type InteralWrite struct {
|
// type InteralWrite struct {
|
||||||
Hash string
|
// Hash string
|
||||||
Type string
|
// Type string
|
||||||
From string
|
// From string
|
||||||
To string
|
// To string
|
||||||
Value string
|
// Value string
|
||||||
Gas uint64
|
// Gas uint64
|
||||||
GasUsed uint64
|
// GasUsed uint64
|
||||||
Input string
|
// Input string
|
||||||
Output string
|
// Output string
|
||||||
Time string
|
// Time string
|
||||||
}
|
// }
|
||||||
|
|
||||||
//blockRes struct
|
// //blockRes struct
|
||||||
type blockRes struct {
|
// // type blockRes struct {
|
||||||
hash string
|
// // hash string
|
||||||
coinbase string
|
// // coinbase string
|
||||||
number string
|
// // number string
|
||||||
Blocks []SBlock
|
// // Blocks []SBlock
|
||||||
}
|
// // }
|
||||||
|
|
||||||
type SAccounts struct {
|
// type SAccounts struct {
|
||||||
Addr string
|
// Addr string
|
||||||
Balance string
|
// Balance string
|
||||||
AccountNonce string
|
// AccountNonce string
|
||||||
}
|
// }
|
||||||
|
|
||||||
type accountRes struct {
|
// type accountRes struct {
|
||||||
addr string
|
// addr string
|
||||||
balance string
|
// balance string
|
||||||
AllAccounts []SAccounts
|
// AllAccounts []SAccounts
|
||||||
}
|
// }
|
||||||
|
|
||||||
type txRes struct {
|
// type txRes struct {
|
||||||
TxEntry []ShyftTxEntryPretty
|
// TxEntry []ShyftTxEntryPretty
|
||||||
}
|
// }
|
||||||
|
|
||||||
type ShyftTxEntryPretty struct {
|
// type ShyftTxEntryPretty struct {
|
||||||
TxHash string
|
// TxHash string
|
||||||
To *common.Address
|
// To *common.Address
|
||||||
ToGet string
|
// ToGet string
|
||||||
From string
|
// From string
|
||||||
BlockHash string
|
// BlockHash string
|
||||||
BlockNumber string
|
// BlockNumber string
|
||||||
Amount string
|
// Amount string
|
||||||
GasPrice uint64
|
// GasPrice uint64
|
||||||
Gas uint64
|
// Gas uint64
|
||||||
GasLimit uint64
|
// GasLimit uint64
|
||||||
Cost uint64
|
// Cost uint64
|
||||||
Nonce uint64
|
// Nonce uint64
|
||||||
Status string
|
// Status string
|
||||||
IsContract bool
|
// IsContract bool
|
||||||
Age time.Time
|
// Age time.Time
|
||||||
Data []byte
|
// Data []byte
|
||||||
}
|
// }
|
||||||
|
|
||||||
type SendAndReceive struct {
|
// type SendAndReceive struct {
|
||||||
To string
|
// To string
|
||||||
From string
|
// From string
|
||||||
Amount string
|
// Amount string
|
||||||
Address string
|
// Address string
|
||||||
Balance string
|
// Balance string
|
||||||
AccountNonce uint64 `json:",string"`
|
// AccountNonce uint64 `json:",string"`
|
||||||
}
|
// }
|
||||||
|
|
||||||
//WriteBlock writes to block info to sql db
|
//SWriteBlock writes to block info to sql db
|
||||||
func SWriteBlock(block *types.Block, receipts []*types.Receipt) error {
|
func SWriteBlock(block *types.Block, receipts []*types.Receipt) error {
|
||||||
sqldb, err := DBConnection()
|
sqldb, err := DBConnection()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -123,7 +126,7 @@ func SWriteBlock(block *types.Block, receipts []*types.Receipt) error {
|
||||||
}
|
}
|
||||||
age := time.Unix(i, 0)
|
age := time.Unix(i, 0)
|
||||||
|
|
||||||
blockData := SBlock{
|
blockData := stypes.SBlock{
|
||||||
Hash: block.Header().Hash().Hex(),
|
Hash: block.Header().Hash().Hex(),
|
||||||
Coinbase: block.Header().Coinbase.String(),
|
Coinbase: block.Header().Coinbase.String(),
|
||||||
Number: block.Header().Number.String(),
|
Number: block.Header().Number.String(),
|
||||||
|
|
@ -185,7 +188,7 @@ func swriteTransactions(sqldb *sql.DB, tx *types.Transaction, blockHash common.H
|
||||||
toAddr = tx.To()
|
toAddr = tx.To()
|
||||||
}
|
}
|
||||||
|
|
||||||
txData := ShyftTxEntryPretty{
|
txData := stypes.ShyftTxEntryPretty{
|
||||||
TxHash: tx.Hash().Hex(),
|
TxHash: tx.Hash().Hex(),
|
||||||
From: tx.From().Hex(),
|
From: tx.From().Hex(),
|
||||||
To: toAddr,
|
To: toAddr,
|
||||||
|
|
@ -212,7 +215,7 @@ func swriteTransactions(sqldb *sql.DB, tx *types.Transaction, blockHash common.H
|
||||||
|
|
||||||
//SWriteInternalTxBalances Writes internal txs and updates balances
|
//SWriteInternalTxBalances Writes internal txs and updates balances
|
||||||
func SWriteInternalTxBalances(sqldb *sql.DB, toAddr string, fromAddr string, amount string) error {
|
func SWriteInternalTxBalances(sqldb *sql.DB, toAddr string, fromAddr string, amount string) error {
|
||||||
sendAndReceiveData := SendAndReceive{
|
sendAndReceiveData := stypes.SendAndReceive{
|
||||||
To: toAddr,
|
To: toAddr,
|
||||||
From: fromAddr,
|
From: fromAddr,
|
||||||
Amount: amount,
|
Amount: amount,
|
||||||
|
|
@ -233,11 +236,12 @@ func SWriteInternalTxBalances(sqldb *sql.DB, toAddr string, fromAddr string, amo
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func adjustBalanceFromAddr(sqldb *sql.DB, s SendAndReceive, value *big.Int) {
|
func adjustBalanceFromAddr(sqldb *sql.DB, s stypes.SendAndReceive, value *big.Int) {
|
||||||
fromAddressBalance, fromAccountNonce, err := AccountExists(sqldb, s.From)
|
fromAddressBalance, fromAccountNonce, err := AccountExists(sqldb, s.From)
|
||||||
switch {
|
switch {
|
||||||
case err == sql.ErrNoRows:
|
case err == sql.ErrNoRows:
|
||||||
fmt.Println("Need to write From", s.From)
|
CreateAccount(sqldb, s.From, "0", "1")
|
||||||
|
fmt.Println("New From account created")
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|
@ -257,7 +261,7 @@ func adjustBalanceFromAddr(sqldb *sql.DB, s SendAndReceive, value *big.Int) {
|
||||||
UpdateAccount(sqldb, s.From, newBalanceSender.String(), newAccountNonceSender.String())
|
UpdateAccount(sqldb, s.From, newBalanceSender.String(), newAccountNonceSender.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
func balanceHelper(sqldb *sql.DB, s SendAndReceive, amount string) {
|
func balanceHelper(sqldb *sql.DB, s stypes.SendAndReceive, amount string) {
|
||||||
fromAddressBalance, fromAccountNonce, err := AccountExists(sqldb, s.From)
|
fromAddressBalance, fromAccountNonce, err := AccountExists(sqldb, s.From)
|
||||||
toAddressBalance, toAccountNonce, err := AccountExists(sqldb, s.To)
|
toAddressBalance, toAccountNonce, err := AccountExists(sqldb, s.To)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -383,6 +387,8 @@ func sstoreReward(sqldb *sql.DB, address string, reward *big.Int) {
|
||||||
///////////////////////
|
///////////////////////
|
||||||
//DB Utility functions
|
//DB Utility functions
|
||||||
//////////////////////
|
//////////////////////
|
||||||
|
|
||||||
|
//CreateAccount writes new account to Postgres Db
|
||||||
func CreateAccount(sqldb *sql.DB, addr string, balance string, accountNonce string) {
|
func CreateAccount(sqldb *sql.DB, addr string, balance string, accountNonce string) {
|
||||||
sqlStatement := `INSERT INTO accounts(addr, balance, accountNonce) VALUES(($1), ($2), ($3)) RETURNING addr`
|
sqlStatement := `INSERT INTO accounts(addr, balance, accountNonce) VALUES(($1), ($2), ($3)) RETURNING addr`
|
||||||
insertErr := sqldb.QueryRow(sqlStatement, strings.ToLower(addr), balance, accountNonce).Scan(&addr)
|
insertErr := sqldb.QueryRow(sqlStatement, strings.ToLower(addr), balance, accountNonce).Scan(&addr)
|
||||||
|
|
@ -391,6 +397,7 @@ func CreateAccount(sqldb *sql.DB, addr string, balance string, accountNonce stri
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//AccountExists checks if account exists in Postgres Db
|
||||||
func AccountExists(sqldb *sql.DB, addr string) (string, string, error) {
|
func AccountExists(sqldb *sql.DB, addr string) (string, string, error) {
|
||||||
var addressBalance, accountNonce string
|
var addressBalance, accountNonce string
|
||||||
sqlExistsStatement := `SELECT balance, accountNonce from accounts WHERE addr = ($1)`
|
sqlExistsStatement := `SELECT balance, accountNonce from accounts WHERE addr = ($1)`
|
||||||
|
|
@ -405,6 +412,7 @@ func AccountExists(sqldb *sql.DB, addr string) (string, string, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//BlockExists checks if block exists in Postgres Db
|
||||||
func BlockExists(sqldb *sql.DB, hash string) error {
|
func BlockExists(sqldb *sql.DB, hash string) error {
|
||||||
var res string
|
var res string
|
||||||
sqlExistsStatement := `SELECT hash from blocks WHERE hash= ($1)`
|
sqlExistsStatement := `SELECT hash from blocks WHERE hash= ($1)`
|
||||||
|
|
@ -418,6 +426,7 @@ func BlockExists(sqldb *sql.DB, hash string) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//UpdateAccount updates account in Postgres Db
|
||||||
func UpdateAccount(sqldb *sql.DB, addr string, balance string, accountNonce string) {
|
func UpdateAccount(sqldb *sql.DB, addr string, balance string, accountNonce string) {
|
||||||
updateSQLStatement := `UPDATE accounts SET balance = ($2), accountNonce = ($3) WHERE addr = ($1)`
|
updateSQLStatement := `UPDATE accounts SET balance = ($2), accountNonce = ($3) WHERE addr = ($1)`
|
||||||
_, updateErr := sqldb.Exec(updateSQLStatement, strings.ToLower(addr), balance, accountNonce)
|
_, updateErr := sqldb.Exec(updateSQLStatement, strings.ToLower(addr), balance, accountNonce)
|
||||||
|
|
@ -426,7 +435,8 @@ func UpdateAccount(sqldb *sql.DB, addr string, balance string, accountNonce stri
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func InsertBlock(sqldb *sql.DB, blockData SBlock) {
|
//InsertBlock writes block to Postgres Db
|
||||||
|
func InsertBlock(sqldb *sql.DB, blockData stypes.SBlock) {
|
||||||
sqlStatement := `INSERT INTO blocks(hash, coinbase, number, gasUsed, gasLimit, txCount, uncleCount, age, parentHash, uncleHash, difficulty, size, rewards, nonce) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10), ($11), ($12),($13), ($14)) RETURNING number`
|
sqlStatement := `INSERT INTO blocks(hash, coinbase, number, gasUsed, gasLimit, txCount, uncleCount, age, parentHash, uncleHash, difficulty, size, rewards, nonce) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10), ($11), ($12),($13), ($14)) RETURNING number`
|
||||||
qerr := sqldb.QueryRow(sqlStatement, strings.ToLower(blockData.Hash), blockData.Coinbase, blockData.Number, blockData.GasUsed, blockData.GasLimit, blockData.TxCount, blockData.UncleCount, blockData.Age, blockData.ParentHash, blockData.UncleHash, blockData.Difficulty, blockData.Size, blockData.Rewards, blockData.Nonce).Scan(&blockData.Number)
|
qerr := sqldb.QueryRow(sqlStatement, strings.ToLower(blockData.Hash), blockData.Coinbase, blockData.Number, blockData.GasUsed, blockData.GasLimit, blockData.TxCount, blockData.UncleCount, blockData.Age, blockData.ParentHash, blockData.UncleHash, blockData.Difficulty, blockData.Size, blockData.Rewards, blockData.Nonce).Scan(&blockData.Number)
|
||||||
if qerr != nil {
|
if qerr != nil {
|
||||||
|
|
@ -434,7 +444,8 @@ func InsertBlock(sqldb *sql.DB, blockData SBlock) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func InsertTx(sqldb *sql.DB, txData ShyftTxEntryPretty) {
|
//InsertTx writes tx to Postgres Db
|
||||||
|
func InsertTx(sqldb *sql.DB, txData stypes.ShyftTxEntryPretty) {
|
||||||
var retNonce string
|
var retNonce string
|
||||||
sqlStatement := `INSERT INTO txs(txhash, from_addr, to_addr, blockhash, blockNumber, amount, gasprice, gas, gasLimit, txfee, nonce, isContract, txStatus, age, data) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10), ($11), ($12), ($13), ($14), ($15)) RETURNING nonce`
|
sqlStatement := `INSERT INTO txs(txhash, from_addr, to_addr, blockhash, blockNumber, amount, gasprice, gas, gasLimit, txfee, nonce, isContract, txStatus, age, data) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10), ($11), ($12), ($13), ($14), ($15)) RETURNING nonce`
|
||||||
err := sqldb.QueryRow(sqlStatement, strings.ToLower(txData.TxHash), strings.ToLower(txData.From), strings.ToLower(txData.To.String()), strings.ToLower(txData.BlockHash), txData.BlockNumber, txData.Amount, txData.GasPrice, txData.Gas, txData.GasLimit, txData.Cost, txData.Nonce, txData.IsContract, txData.Status, txData.Age, txData.Data).Scan(&retNonce)
|
err := sqldb.QueryRow(sqlStatement, strings.ToLower(txData.TxHash), strings.ToLower(txData.From), strings.ToLower(txData.To.String()), strings.ToLower(txData.BlockHash), txData.BlockNumber, txData.Amount, txData.GasPrice, txData.Gas, txData.GasLimit, txData.Cost, txData.Nonce, txData.IsContract, txData.Status, txData.Age, txData.Data).Scan(&retNonce)
|
||||||
|
|
@ -443,7 +454,8 @@ func InsertTx(sqldb *sql.DB, txData ShyftTxEntryPretty) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func InsertInternalTx(sqldb *sql.DB, i InteralWrite) {
|
//InsertInternalTx writes internal tx to Postgres Db
|
||||||
|
func InsertInternalTx(sqldb *sql.DB, i stypes.InteralWrite) {
|
||||||
var returnValue string
|
var returnValue string
|
||||||
sqlStatement := `INSERT INTO internaltxs(type, txhash, from_addr, to_addr, amount, gas, gasUsed, time, input, output) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10)) RETURNING txHash`
|
sqlStatement := `INSERT INTO internaltxs(type, txhash, from_addr, to_addr, amount, gas, gasUsed, time, input, output) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10)) RETURNING txHash`
|
||||||
qerr := sqldb.QueryRow(sqlStatement, i.Type, strings.ToLower(i.Hash), strings.ToLower(i.From), strings.ToLower(i.To), i.Value, i.Gas, i.GasUsed, i.Time, i.Input, i.Output).Scan(&returnValue)
|
qerr := sqldb.QueryRow(sqlStatement, i.Type, strings.ToLower(i.Hash), strings.ToLower(i.From), strings.ToLower(i.To), i.Value, i.Gas, i.GasUsed, i.Time, i.Input, i.Output).Scan(&returnValue)
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,19 @@
|
||||||
package core
|
package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
stypes "github.com/ShyftNetwork/go-empyrean/core/sTypes"
|
||||||
)
|
)
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
// Getters
|
// Getters
|
||||||
//////////
|
//////////
|
||||||
func SGetAllBlocks(sqldb *sql.DB) string {
|
func SGetAllBlocks(sqldb *sql.DB) string {
|
||||||
var arr blockRes
|
var arr stypes.BlockRes
|
||||||
var blockArr string
|
var blockArr string
|
||||||
rows, err := sqldb.Query(`SELECT * FROM blocks`)
|
rows, err := sqldb.Query(`SELECT * FROM blocks`)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -25,9 +27,9 @@ func SGetAllBlocks(sqldb *sql.DB) string {
|
||||||
var txCount, uncleCount int
|
var txCount, uncleCount int
|
||||||
|
|
||||||
err = rows.Scan(
|
err = rows.Scan(
|
||||||
&hash, &coinbase, &gasUsed, &gasLimit, &txCount, &uncleCount, &age, &parentHash, &uncleHash, &difficulty, &size, &nonce, &rewards, &num,)
|
&hash, &coinbase, &gasUsed, &gasLimit, &txCount, &uncleCount, &age, &parentHash, &uncleHash, &difficulty, &size, &nonce, &rewards, &num)
|
||||||
|
|
||||||
arr.Blocks = append(arr.Blocks, SBlock{
|
arr.Blocks = append(arr.Blocks, stypes.SBlock{
|
||||||
Hash: hash,
|
Hash: hash,
|
||||||
Coinbase: coinbase,
|
Coinbase: coinbase,
|
||||||
GasUsed: gasUsed,
|
GasUsed: gasUsed,
|
||||||
|
|
@ -61,9 +63,9 @@ func SGetBlock(sqldb *sql.DB, blockNumber string) string {
|
||||||
var txCount, uncleCount int
|
var txCount, uncleCount int
|
||||||
|
|
||||||
row.Scan(
|
row.Scan(
|
||||||
&hash, &coinbase, &gasUsed, &gasLimit, &txCount, &uncleCount, &age, &parentHash, &uncleHash, &difficulty, &size, &nonce, &rewards, &num,)
|
&hash, &coinbase, &gasUsed, &gasLimit, &txCount, &uncleCount, &age, &parentHash, &uncleHash, &difficulty, &size, &nonce, &rewards, &num)
|
||||||
|
|
||||||
block := SBlock{
|
block := stypes.SBlock{
|
||||||
Hash: hash,
|
Hash: hash,
|
||||||
Coinbase: coinbase,
|
Coinbase: coinbase,
|
||||||
GasUsed: gasUsed,
|
GasUsed: gasUsed,
|
||||||
|
|
@ -91,9 +93,9 @@ func SGetRecentBlock(sqldb *sql.DB) string {
|
||||||
var txCount, uncleCount int
|
var txCount, uncleCount int
|
||||||
|
|
||||||
row.Scan(
|
row.Scan(
|
||||||
&hash, &coinbase, &gasUsed, &gasLimit, &txCount, &uncleCount, &age, &parentHash, &uncleHash, &difficulty, &size, &nonce, &rewards, &num,)
|
&hash, &coinbase, &gasUsed, &gasLimit, &txCount, &uncleCount, &age, &parentHash, &uncleHash, &difficulty, &size, &nonce, &rewards, &num)
|
||||||
|
|
||||||
block := SBlock{
|
block := stypes.SBlock{
|
||||||
Hash: hash,
|
Hash: hash,
|
||||||
Coinbase: coinbase,
|
Coinbase: coinbase,
|
||||||
GasUsed: gasUsed,
|
GasUsed: gasUsed,
|
||||||
|
|
@ -114,7 +116,7 @@ func SGetRecentBlock(sqldb *sql.DB) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func SGetAllTransactionsFromBlock(sqldb *sql.DB, blockNumber string) string {
|
func SGetAllTransactionsFromBlock(sqldb *sql.DB, blockNumber string) string {
|
||||||
var arr txRes
|
var arr stypes.TxRes
|
||||||
var txx string
|
var txx string
|
||||||
sqlStatement := `SELECT * FROM txs WHERE blocknumber=$1`
|
sqlStatement := `SELECT * FROM txs WHERE blocknumber=$1`
|
||||||
rows, err := sqldb.Query(sqlStatement, blockNumber)
|
rows, err := sqldb.Query(sqlStatement, blockNumber)
|
||||||
|
|
@ -133,7 +135,7 @@ func SGetAllTransactionsFromBlock(sqldb *sql.DB, blockNumber string) string {
|
||||||
&txhash, &to_addr, &from_addr, &blockhash, &blocknumber, &amount, &gasprice, &gas, &gasLimit, &txfee, &nonce, &status, &isContract, &age, &data,
|
&txhash, &to_addr, &from_addr, &blockhash, &blocknumber, &amount, &gasprice, &gas, &gasLimit, &txfee, &nonce, &status, &isContract, &age, &data,
|
||||||
)
|
)
|
||||||
|
|
||||||
arr.TxEntry = append(arr.TxEntry, ShyftTxEntryPretty{
|
arr.TxEntry = append(arr.TxEntry, stypes.ShyftTxEntryPretty{
|
||||||
TxHash: txhash,
|
TxHash: txhash,
|
||||||
ToGet: to_addr,
|
ToGet: to_addr,
|
||||||
From: from_addr,
|
From: from_addr,
|
||||||
|
|
@ -159,7 +161,7 @@ func SGetAllTransactionsFromBlock(sqldb *sql.DB, blockNumber string) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func SGetAllBlocksMinedByAddress(sqldb *sql.DB, coinbase string) string {
|
func SGetAllBlocksMinedByAddress(sqldb *sql.DB, coinbase string) string {
|
||||||
var arr blockRes
|
var arr stypes.BlockRes
|
||||||
var blockArr string
|
var blockArr string
|
||||||
sqlStatement := `SELECT * FROM blocks WHERE coinbase=$1`
|
sqlStatement := `SELECT * FROM blocks WHERE coinbase=$1`
|
||||||
rows, err := sqldb.Query(sqlStatement, coinbase)
|
rows, err := sqldb.Query(sqlStatement, coinbase)
|
||||||
|
|
@ -174,9 +176,9 @@ func SGetAllBlocksMinedByAddress(sqldb *sql.DB, coinbase string) string {
|
||||||
var txCount, uncleCount int
|
var txCount, uncleCount int
|
||||||
|
|
||||||
err = rows.Scan(
|
err = rows.Scan(
|
||||||
&hash, &coinbase, &gasUsed, &gasLimit, &txCount, &uncleCount, &age, &parentHash, &uncleHash, &difficulty, &size, &nonce, &rewards, &num,)
|
&hash, &coinbase, &gasUsed, &gasLimit, &txCount, &uncleCount, &age, &parentHash, &uncleHash, &difficulty, &size, &nonce, &rewards, &num)
|
||||||
|
|
||||||
arr.Blocks = append(arr.Blocks, SBlock{
|
arr.Blocks = append(arr.Blocks, stypes.SBlock{
|
||||||
Hash: hash,
|
Hash: hash,
|
||||||
Coinbase: coinbase,
|
Coinbase: coinbase,
|
||||||
GasUsed: gasUsed,
|
GasUsed: gasUsed,
|
||||||
|
|
@ -202,7 +204,7 @@ func SGetAllBlocksMinedByAddress(sqldb *sql.DB, coinbase string) string {
|
||||||
|
|
||||||
//GetAllTransactions getter fn for API
|
//GetAllTransactions getter fn for API
|
||||||
func SGetAllTransactions(sqldb *sql.DB) string {
|
func SGetAllTransactions(sqldb *sql.DB) string {
|
||||||
var arr txRes
|
var arr stypes.TxRes
|
||||||
var txx string
|
var txx string
|
||||||
rows, err := sqldb.Query(`SELECT * FROM txs`)
|
rows, err := sqldb.Query(`SELECT * FROM txs`)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -220,7 +222,7 @@ func SGetAllTransactions(sqldb *sql.DB) string {
|
||||||
&txhash, &to_addr, &from_addr, &blockhash, &blocknumber, &amount, &gasprice, &gas, &gasLimit, &txfee, &nonce, &status, &isContract, &age, &data,
|
&txhash, &to_addr, &from_addr, &blockhash, &blocknumber, &amount, &gasprice, &gas, &gasLimit, &txfee, &nonce, &status, &isContract, &age, &data,
|
||||||
)
|
)
|
||||||
|
|
||||||
arr.TxEntry = append(arr.TxEntry, ShyftTxEntryPretty{
|
arr.TxEntry = append(arr.TxEntry, stypes.ShyftTxEntryPretty{
|
||||||
TxHash: txhash,
|
TxHash: txhash,
|
||||||
ToGet: to_addr,
|
ToGet: to_addr,
|
||||||
From: from_addr,
|
From: from_addr,
|
||||||
|
|
@ -258,7 +260,7 @@ func SGetTransaction(sqldb *sql.DB, txHash string) string {
|
||||||
row.Scan(
|
row.Scan(
|
||||||
&txhash, &to_addr, &from_addr, &blockhash, &blocknumber, &amount, &gasprice, &gas, &gasLimit, &txfee, &nonce, &status, &isContract, &age, &data)
|
&txhash, &to_addr, &from_addr, &blockhash, &blocknumber, &amount, &gasprice, &gas, &gasLimit, &txfee, &nonce, &status, &isContract, &age, &data)
|
||||||
|
|
||||||
tx := ShyftTxEntryPretty{
|
tx := stypes.ShyftTxEntryPretty{
|
||||||
TxHash: txhash,
|
TxHash: txhash,
|
||||||
ToGet: to_addr,
|
ToGet: to_addr,
|
||||||
From: from_addr,
|
From: from_addr,
|
||||||
|
|
@ -280,14 +282,14 @@ func SGetTransaction(sqldb *sql.DB, txHash string) string {
|
||||||
return string(json)
|
return string(json)
|
||||||
}
|
}
|
||||||
|
|
||||||
func InnerSGetAccount(sqldb *sql.DB, address string) (SAccounts, bool) {
|
func InnerSGetAccount(sqldb *sql.DB, address string) (stypes.SAccounts, bool) {
|
||||||
sqlStatement := `SELECT * FROM accounts WHERE addr=$1;`
|
sqlStatement := `SELECT * FROM accounts WHERE addr=$1;`
|
||||||
var addr, balance, accountNonce string
|
var addr, balance, accountNonce string
|
||||||
err := sqldb.QueryRow(sqlStatement, address).Scan(&addr, &balance, &accountNonce)
|
err := sqldb.QueryRow(sqlStatement, address).Scan(&addr, &balance, &accountNonce)
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return SAccounts{}, false
|
return stypes.SAccounts{}, false
|
||||||
} else {
|
} else {
|
||||||
account := SAccounts{
|
account := stypes.SAccounts{
|
||||||
Addr: addr,
|
Addr: addr,
|
||||||
Balance: balance,
|
Balance: balance,
|
||||||
AccountNonce: accountNonce,
|
AccountNonce: accountNonce,
|
||||||
|
|
@ -305,7 +307,7 @@ func SGetAccount(sqldb *sql.DB, address string) string {
|
||||||
|
|
||||||
//GetAllAccounts returns all accounts and balances
|
//GetAllAccounts returns all accounts and balances
|
||||||
func SGetAllAccounts(sqldb *sql.DB) string {
|
func SGetAllAccounts(sqldb *sql.DB) string {
|
||||||
var array accountRes
|
var array stypes.AccountRes
|
||||||
var accountsArr, accountNonce string
|
var accountsArr, accountNonce string
|
||||||
|
|
||||||
accs, err := sqldb.Query(`
|
accs, err := sqldb.Query(`
|
||||||
|
|
@ -326,7 +328,7 @@ func SGetAllAccounts(sqldb *sql.DB) string {
|
||||||
&addr, &balance, &accountNonce,
|
&addr, &balance, &accountNonce,
|
||||||
)
|
)
|
||||||
|
|
||||||
array.AllAccounts = append(array.AllAccounts, SAccounts{
|
array.AllAccounts = append(array.AllAccounts, stypes.SAccounts{
|
||||||
Addr: addr,
|
Addr: addr,
|
||||||
Balance: balance,
|
Balance: balance,
|
||||||
AccountNonce: accountNonce,
|
AccountNonce: accountNonce,
|
||||||
|
|
@ -341,7 +343,7 @@ func SGetAllAccounts(sqldb *sql.DB) string {
|
||||||
|
|
||||||
//GetAccount returns account balances
|
//GetAccount returns account balances
|
||||||
func SGetAccountTxs(sqldb *sql.DB, address string) string {
|
func SGetAccountTxs(sqldb *sql.DB, address string) string {
|
||||||
var arr txRes
|
var arr stypes.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;`
|
||||||
rows, err := sqldb.Query(sqlStatement, address)
|
rows, err := sqldb.Query(sqlStatement, address)
|
||||||
|
|
@ -360,7 +362,7 @@ func SGetAccountTxs(sqldb *sql.DB, address string) string {
|
||||||
&txhash, &to_addr, &from_addr, &blockhash, &blocknumber, &amount, &gasprice, &gas, &gasLimit, &txfee, &nonce, &status, &isContract, &age, &data,
|
&txhash, &to_addr, &from_addr, &blockhash, &blocknumber, &amount, &gasprice, &gas, &gasLimit, &txfee, &nonce, &status, &isContract, &age, &data,
|
||||||
)
|
)
|
||||||
|
|
||||||
arr.TxEntry = append(arr.TxEntry, ShyftTxEntryPretty{
|
arr.TxEntry = append(arr.TxEntry, stypes.ShyftTxEntryPretty{
|
||||||
TxHash: txhash,
|
TxHash: txhash,
|
||||||
ToGet: to_addr,
|
ToGet: to_addr,
|
||||||
From: from_addr,
|
From: from_addr,
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ import (
|
||||||
"github.com/ShyftNetwork/go-empyrean/common"
|
"github.com/ShyftNetwork/go-empyrean/common"
|
||||||
"github.com/ShyftNetwork/go-empyrean/common/hexutil"
|
"github.com/ShyftNetwork/go-empyrean/common/hexutil"
|
||||||
"github.com/ShyftNetwork/go-empyrean/core"
|
"github.com/ShyftNetwork/go-empyrean/core"
|
||||||
|
stypes "github.com/ShyftNetwork/go-empyrean/core/sTypes"
|
||||||
"github.com/ShyftNetwork/go-empyrean/core/vm"
|
"github.com/ShyftNetwork/go-empyrean/core/vm"
|
||||||
"github.com/ShyftNetwork/go-empyrean/crypto"
|
"github.com/ShyftNetwork/go-empyrean/crypto"
|
||||||
"github.com/ShyftNetwork/go-empyrean/log"
|
"github.com/ShyftNetwork/go-empyrean/log"
|
||||||
|
|
@ -604,7 +605,7 @@ func (i *Internals) SWriteInteralTxs(hash common.Hash) {
|
||||||
value, _ := hexutil.DecodeUint64(i.Value)
|
value, _ := hexutil.DecodeUint64(i.Value)
|
||||||
amount := strconv.FormatUint(value, 10)
|
amount := strconv.FormatUint(value, 10)
|
||||||
|
|
||||||
iTx := core.InteralWrite{
|
iTx := stypes.InteralWrite{
|
||||||
Hash: hash.Hex(),
|
Hash: hash.Hex(),
|
||||||
Type: i.Type,
|
Type: i.Type,
|
||||||
From: i.From,
|
From: i.From,
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ class AccountTable extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
|
|
||||||
let startNum = 1;
|
let startNum = 1;
|
||||||
const sorted = [...this.state.data];
|
const sorted = [...this.state.data];
|
||||||
sorted.sort((a, b) => Number(a.Balance) > Number(b.Balance));
|
sorted.sort((a, b) => Number(a.Balance) > Number(b.Balance));
|
||||||
|
|
@ -38,7 +37,7 @@ class AccountTable extends Component {
|
||||||
Percentage={percentage.toFixed(2)}
|
Percentage={percentage.toFixed(2)}
|
||||||
Addr={data.Addr}
|
Addr={data.Addr}
|
||||||
Balance={conversion}
|
Balance={conversion}
|
||||||
TxCountAccount={data.TxCountAccount}
|
AccountNonce={data.AccountNonce}
|
||||||
detailAccountHandler={this.props.detailAccountHandler}
|
detailAccountHandler={this.props.detailAccountHandler}
|
||||||
/>
|
/>
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ const AccountsTable = (props) => {
|
||||||
</Link></td>
|
</Link></td>
|
||||||
<td>{props.Balance}</td>
|
<td>{props.Balance}</td>
|
||||||
<td>{props.Percentage}%</td>
|
<td>{props.Percentage}%</td>
|
||||||
<td>{props.TxCountAccount}</td>
|
<td>{props.AccountNonce}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ class AccountTransactionTable extends Component {
|
||||||
age={data.Age}
|
age={data.Age}
|
||||||
txHash={data.TxHash}
|
txHash={data.TxHash}
|
||||||
blockNumber={data.BlockNumber}
|
blockNumber={data.BlockNumber}
|
||||||
to={data.To}
|
to={data.ToGet}
|
||||||
from={data.From}
|
from={data.From}
|
||||||
value={amountConversion}
|
value={amountConversion}
|
||||||
cost={costConversion}
|
cost={costConversion}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ class BlocksTable extends Component {
|
||||||
Hash={data.Hash}
|
Hash={data.Hash}
|
||||||
Number={data.Number}
|
Number={data.Number}
|
||||||
Coinbase={data.Coinbase}
|
Coinbase={data.Coinbase}
|
||||||
Age={data.Age}
|
AgeGet={data.AgeGet}
|
||||||
GasUsed={data.GasUsed}
|
GasUsed={data.GasUsed}
|
||||||
GasLimit={data.GasLimit}
|
GasLimit={data.GasLimit}
|
||||||
UncleCount={data.UncleCount}
|
UncleCount={data.UncleCount}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const BlockTable = (props) => {
|
||||||
{props.Number}
|
{props.Number}
|
||||||
</Link></td>
|
</Link></td>
|
||||||
<td className={classes.addressTag}>{props.Hash}</td>
|
<td className={classes.addressTag}>{props.Hash}</td>
|
||||||
<td>{props.Age}</td>
|
<td>{props.AgeGet}</td>
|
||||||
<td>{props.TxCount}</td>
|
<td>{props.TxCount}</td>
|
||||||
<td>{props.UncleCount}</td>
|
<td>{props.UncleCount}</td>
|
||||||
<td className={classes.addressTag}><Link to="/mined/blocks" onClick={() => props.getBlocksMined(props.Coinbase)}>{props.Coinbase}</Link></td>
|
<td className={classes.addressTag}><Link to="/mined/blocks" onClick={() => props.getBlocksMined(props.Coinbase)}>{props.Coinbase}</Link></td>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ class DetailBlockTable extends Component {
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">Age:</th>
|
<th scope="col">Age:</th>
|
||||||
<td>{data.Age}</td>
|
<td>{data.AgeGet}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">Txn:</th>
|
<th scope="col">Txn:</th>
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ class BlocksMinedTable extends Component {
|
||||||
Hash={data.Hash}
|
Hash={data.Hash}
|
||||||
Number={data.Number}
|
Number={data.Number}
|
||||||
Coinbase={data.Coinbase}
|
Coinbase={data.Coinbase}
|
||||||
Age={data.Age}
|
AgeGet={data.AgeGet}
|
||||||
GasUsed={data.GasUsed}
|
GasUsed={data.GasUsed}
|
||||||
GasLimit={data.GasLimit}
|
GasLimit={data.GasLimit}
|
||||||
UncleCount={data.UncleCount}
|
UncleCount={data.UncleCount}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const MinedBlockTable = (props) => {
|
||||||
{props.Number}
|
{props.Number}
|
||||||
</Link></td>
|
</Link></td>
|
||||||
<td className={classes.addressTag}>{props.Hash}</td>
|
<td className={classes.addressTag}>{props.Hash}</td>
|
||||||
<td>{props.Age}</td>
|
<td>{props.AgeGet}</td>
|
||||||
<td>{props.TxCount}</td>
|
<td>{props.TxCount}</td>
|
||||||
<td>{props.UncleCount}</td>
|
<td>{props.UncleCount}</td>
|
||||||
<td className={classes.addressTag}>{props.Coinbase}</td>
|
<td className={classes.addressTag}>{props.Coinbase}</td>
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ class DetailTransactionTable extends Component {
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">To:</th>
|
<th scope="col">To:</th>
|
||||||
<td>{ `${data.IsContract}` ? `${data.To} (Contract)` : `${data.To}` }</td>
|
<td>{ `${data.IsContract}` ? `${data.ToGet} (Contract)` : `${data.ToGet}` }</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="col">Value:</th>
|
<th scope="col">Value:</th>
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ class TransactionTable extends Component {
|
||||||
age={data.Age}
|
age={data.Age}
|
||||||
txHash={data.TxHash}
|
txHash={data.TxHash}
|
||||||
blockNumber={data.BlockNumber}
|
blockNumber={data.BlockNumber}
|
||||||
to={data.To}
|
to={data.ToGet}
|
||||||
from={data.From}
|
from={data.From}
|
||||||
value={data.Amount}
|
value={data.Amount}
|
||||||
cost={conversion}
|
cost={conversion}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue