mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 10:22:23 +00:00
commit
31445f995e
9 changed files with 126 additions and 28 deletions
|
|
@ -27,8 +27,9 @@ type SBlock struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type InteralWrite struct {
|
type InteralWrite struct {
|
||||||
|
ID int
|
||||||
Hash string
|
Hash string
|
||||||
Type string
|
Action string
|
||||||
From string
|
From string
|
||||||
To string
|
To string
|
||||||
Value string
|
Value string
|
||||||
|
|
@ -39,6 +40,10 @@ type InteralWrite struct {
|
||||||
Time string
|
Time string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type InternalArray struct {
|
||||||
|
InternalEntry []InteralWrite
|
||||||
|
}
|
||||||
|
|
||||||
//blockRes struct
|
//blockRes struct
|
||||||
type BlockRes struct {
|
type BlockRes struct {
|
||||||
hash string
|
hash string
|
||||||
|
|
|
||||||
|
|
@ -372,8 +372,8 @@ func InsertTx(sqldb *sql.DB, txData stypes.ShyftTxEntryPretty) {
|
||||||
//InsertInternalTx writes internal tx to Postgres Db
|
//InsertInternalTx writes internal tx to Postgres Db
|
||||||
func InsertInternalTx(sqldb *sql.DB, i stypes.InteralWrite) {
|
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(action, 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.Action, 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)
|
||||||
if qerr != nil {
|
if qerr != nil {
|
||||||
fmt.Println(qerr)
|
fmt.Println(qerr)
|
||||||
panic(qerr)
|
panic(qerr)
|
||||||
|
|
|
||||||
|
|
@ -386,3 +386,86 @@ func SGetAccountTxs(sqldb *sql.DB, address string) string {
|
||||||
}
|
}
|
||||||
return txx
|
return txx
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//GetAllInternalTransactions getter fn for API
|
||||||
|
func SGetAllInternalTransactions(sqldb *sql.DB) string {
|
||||||
|
var arr stypes.InternalArray
|
||||||
|
var internaltx string
|
||||||
|
rows, err := sqldb.Query(`SELECT * FROM internaltxs`)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("err")
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
for rows.Next() {
|
||||||
|
var txhash, action, to_addr, from_addr, amount, input, output string
|
||||||
|
var gas, gasUsed uint64
|
||||||
|
var id int
|
||||||
|
var age string
|
||||||
|
|
||||||
|
err = rows.Scan(
|
||||||
|
&id, &txhash, &action, &to_addr, &from_addr, &amount, &gas, &gasUsed, &age, &input, &output,
|
||||||
|
)
|
||||||
|
|
||||||
|
arr.InternalEntry = append(arr.InternalEntry, stypes.InteralWrite{
|
||||||
|
ID: id,
|
||||||
|
Hash: txhash,
|
||||||
|
Action: action,
|
||||||
|
To: to_addr,
|
||||||
|
From: from_addr,
|
||||||
|
Value: amount,
|
||||||
|
Gas: gas,
|
||||||
|
GasUsed: gasUsed,
|
||||||
|
Time: age,
|
||||||
|
Input: input,
|
||||||
|
Output: output,
|
||||||
|
})
|
||||||
|
|
||||||
|
tx, _ := json.Marshal(arr.InternalEntry)
|
||||||
|
newtx := string(tx)
|
||||||
|
internaltx = newtx
|
||||||
|
}
|
||||||
|
return internaltx
|
||||||
|
}
|
||||||
|
|
||||||
|
//GetInternalTransaction fn returns single tx
|
||||||
|
func SGetInternalTransaction(sqldb *sql.DB, txHash string) string {
|
||||||
|
var arr stypes.InternalArray
|
||||||
|
var internaltx string
|
||||||
|
|
||||||
|
sqlStatement := `SELECT * FROM internaltxs WHERE txhash=$1;`
|
||||||
|
rows, err := sqldb.Query(sqlStatement, txHash)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("err")
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
|
||||||
|
for rows.Next() {
|
||||||
|
var txhash, action, to_addr, from_addr, amount, input, output string
|
||||||
|
var id int
|
||||||
|
var gas, gasUsed uint64
|
||||||
|
var age string
|
||||||
|
|
||||||
|
err = rows.Scan(
|
||||||
|
&id, &txhash, &action, &to_addr, &from_addr, &amount, &gas, &gasUsed, &age, &input, &output,
|
||||||
|
)
|
||||||
|
|
||||||
|
arr.InternalEntry = append(arr.InternalEntry, stypes.InteralWrite{
|
||||||
|
ID: id,
|
||||||
|
Hash: txhash,
|
||||||
|
Action: action,
|
||||||
|
To: to_addr,
|
||||||
|
From: from_addr,
|
||||||
|
Value: amount,
|
||||||
|
Gas: gas,
|
||||||
|
GasUsed: gasUsed,
|
||||||
|
Time: age,
|
||||||
|
Input: input,
|
||||||
|
Output: output,
|
||||||
|
})
|
||||||
|
|
||||||
|
tx, _ := json.Marshal(arr.InternalEntry)
|
||||||
|
newtx := string(tx)
|
||||||
|
internaltx = newtx
|
||||||
|
}
|
||||||
|
return internaltx
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package eth
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/ShyftNetwork/go-empyrean/common"
|
"github.com/ShyftNetwork/go-empyrean/common"
|
||||||
"github.com/ShyftNetwork/go-empyrean/params"
|
"github.com/ShyftNetwork/go-empyrean/params"
|
||||||
|
|
|
||||||
|
|
@ -607,7 +607,7 @@ func (i *Internals) SWriteInteralTxs(hash common.Hash) {
|
||||||
|
|
||||||
iTx := stypes.InteralWrite{
|
iTx := stypes.InteralWrite{
|
||||||
Hash: hash.Hex(),
|
Hash: hash.Hex(),
|
||||||
Type: i.Type,
|
Action: i.Type,
|
||||||
From: i.From,
|
From: i.From,
|
||||||
To: i.To,
|
To: i.To,
|
||||||
Value: amount,
|
Value: amount,
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ CREATE TABLE IF NOT EXISTS contracts (
|
||||||
CREATE TABLE IF NOT EXISTS internalTxs (
|
CREATE TABLE IF NOT EXISTS internalTxs (
|
||||||
id SERIAL PRIMARY KEY,
|
id SERIAL PRIMARY KEY,
|
||||||
txHash text references txs(txHash),
|
txHash text references txs(txHash),
|
||||||
type text,
|
action text,
|
||||||
to_addr text,
|
to_addr text,
|
||||||
from_addr text,
|
from_addr text,
|
||||||
amount text,
|
amount text,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
\connect
|
\connect shyftdb;
|
||||||
shyftdb;
|
|
||||||
DROP TABLE internalTxs;
|
DROP TABLE internalTxs;
|
||||||
DROP TABLE txs;
|
DROP TABLE txs;
|
||||||
DROP TABLE blocks;
|
DROP TABLE blocks;
|
||||||
|
|
|
||||||
|
|
@ -195,25 +195,37 @@ func GetRecentBlock(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//GetInternalTransactions gets internal txs
|
//GetInternalTransactions gets internal txs
|
||||||
func GetInternalTransactions(w http.ResponseWriter, r *http.Request) {
|
func GetInternalTransactionsByHash(w http.ResponseWriter, r *http.Request) {
|
||||||
|
sqldb, err := core.DBConnection()
|
||||||
|
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
address := vars["address"]
|
txHash := vars["txHash"]
|
||||||
|
|
||||||
|
internalTxs := core.SGetInternalTransaction(sqldb, txHash)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), 500)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
|
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
|
|
||||||
fmt.Fprintln(w, "Get InternalTransactions", address)
|
fmt.Fprintln(w, internalTxs)
|
||||||
}
|
}
|
||||||
|
|
||||||
//GetInternalTransactionsHash gets internal txs hash
|
//GetInternalTransactionsHash gets internal txs hash
|
||||||
func GetInternalTransactionsHash(w http.ResponseWriter, r *http.Request) {
|
func GetInternalTransactions(w http.ResponseWriter, r *http.Request) {
|
||||||
vars := mux.Vars(r)
|
sqldb, err := core.DBConnection()
|
||||||
transactionHash := vars["transaction_hash"]
|
|
||||||
|
|
||||||
|
internalTxs := core.SGetAllInternalTransactions(sqldb)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), 500)
|
||||||
|
return
|
||||||
|
}
|
||||||
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
|
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
|
|
||||||
fmt.Fprintln(w, "Get Internal Transaction Hash", transactionHash)
|
fmt.Fprintln(w, internalTxs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func BroadcastTx(w http.ResponseWriter, r *http.Request) {
|
func BroadcastTx(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
|
||||||
|
|
@ -78,14 +78,14 @@ var routes = Routes{
|
||||||
Route{
|
Route{
|
||||||
"GetInternalTransactions",
|
"GetInternalTransactions",
|
||||||
"GET",
|
"GET",
|
||||||
"/api/get_internal_transactions/{address}",
|
"/api/get_internal_transactions/",
|
||||||
GetInternalTransactions,
|
GetInternalTransactions,
|
||||||
},
|
},
|
||||||
Route{
|
Route{
|
||||||
"GetInternalTransactionsHash",
|
"GetInternalTransactionsByHash",
|
||||||
"GET",
|
"GET",
|
||||||
"/api/get_internal_transactions_hash/{transactions_hash}",
|
"/api/get_internal_transactions/{txHash}",
|
||||||
GetInternalTransactionsHash,
|
GetInternalTransactionsByHash,
|
||||||
},
|
},
|
||||||
Route{
|
Route{
|
||||||
"BroadcastTx",
|
"BroadcastTx",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue