You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.0 KiB
88 lines
2.0 KiB
package explorer
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"math/big"
|
|
"strconv"
|
|
|
|
"github.com/harmony-one/harmony/core/types"
|
|
)
|
|
|
|
/*
|
|
* All the code here is work of progress for the sprint.
|
|
*/
|
|
|
|
// Data ...
|
|
type Data struct {
|
|
Blocks []*Block `json:"blocks"`
|
|
// Block Block `json:"block"`
|
|
Address Address `json:"address"`
|
|
TX Transaction
|
|
}
|
|
|
|
// Address ...
|
|
type Address struct {
|
|
ID string `json:"id"`
|
|
Balance *big.Int `json:"balance"`
|
|
TXs []*Transaction `json:"txs"`
|
|
}
|
|
|
|
// Transaction ...
|
|
type Transaction struct {
|
|
ID string `json:"id"`
|
|
Timestamp string `json:"timestamp"`
|
|
From string `json:"from"`
|
|
To string `json:"to"`
|
|
Value *big.Int `json:"value"`
|
|
Bytes string `json:"bytes"`
|
|
Data string `json:"data"`
|
|
}
|
|
|
|
// Block ...
|
|
type Block struct {
|
|
Height string `json:"height"`
|
|
ID string `json:"id"`
|
|
TXCount string `json:"txCount"`
|
|
Timestamp string `json:"timestamp"`
|
|
MerkleRoot string `json:"merkleRoot"`
|
|
PrevBlock RefBlock `json:"prevBlock"`
|
|
Bytes string `json:"bytes"`
|
|
NextBlock RefBlock `json:"nextBlock"`
|
|
TXs []*Transaction `json:"txs"`
|
|
}
|
|
|
|
// RefBlock ...
|
|
type RefBlock struct {
|
|
ID string `json:"id"`
|
|
Height string `json:"height"`
|
|
}
|
|
|
|
// Node ...
|
|
type Node struct {
|
|
ID string `json:"id"`
|
|
}
|
|
|
|
// Shard ...
|
|
type Shard struct {
|
|
Nodes []Node `json:"nodes"`
|
|
}
|
|
|
|
// GetTransaction ...
|
|
func GetTransaction(tx *types.Transaction, accountBlock *types.Block) *Transaction {
|
|
if tx.To() == nil {
|
|
return nil
|
|
}
|
|
msg, err := tx.AsMessage(types.HomesteadSigner{})
|
|
if err != nil {
|
|
Log.Error("Error when parsing tx into message")
|
|
}
|
|
return &Transaction{
|
|
ID: tx.Hash().Hex(),
|
|
Timestamp: strconv.Itoa(int(accountBlock.Time().Int64() * 1000)),
|
|
From: msg.From().Hex(),
|
|
To: msg.To().Hex(),
|
|
Value: msg.Value(),
|
|
Bytes: strconv.Itoa(int(tx.Size())),
|
|
Data: hex.EncodeToString(tx.Data()),
|
|
}
|
|
}
|
|
|