Get logs for a contract (#99)
* Add ability to fetch logs for a contract and a block * Test contract related code against Infura, so can run on Travis * Add godo task for getLogs
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"flag"
|
||||
|
||||
"github.com/8thlight/vulcanizedb/cmd"
|
||||
"github.com/8thlight/vulcanizedb/pkg/core"
|
||||
"github.com/8thlight/vulcanizedb/pkg/geth"
|
||||
)
|
||||
|
||||
func main() {
|
||||
environment := flag.String("environment", "", "Environment name")
|
||||
contractHash := flag.String("contract-hash", "", "Contract hash to show summary")
|
||||
_blockNumber := flag.Int64("block-number", -1, "Block number of summary")
|
||||
flag.Parse()
|
||||
config := cmd.LoadConfig(*environment)
|
||||
blockchain := geth.NewGethBlockchain(config.Client.IPCPath)
|
||||
blockNumber := cmd.RequestedBlockNumber(_blockNumber)
|
||||
|
||||
logs, err := blockchain.GetLogs(core.Contract{Hash: *contractHash}, blockNumber)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
for _, l := range logs {
|
||||
fmt.Println("\tAddress: ", l.Address)
|
||||
fmt.Println("\tTxHash: ", l.TxHash)
|
||||
fmt.Println("\tBlockNumber ", l.BlockNumber)
|
||||
fmt.Println("\tTopics: ")
|
||||
for i, topic := range l.Topics {
|
||||
fmt.Printf("\t\tTopic %d: %s\n", i, topic)
|
||||
}
|
||||
fmt.Printf("\tData: %s", l.Data)
|
||||
fmt.Print("\n\n")
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,8 +7,6 @@ import (
|
||||
|
||||
"fmt"
|
||||
|
||||
"math/big"
|
||||
|
||||
"github.com/8thlight/vulcanizedb/cmd"
|
||||
"github.com/8thlight/vulcanizedb/pkg/contract_summary"
|
||||
"github.com/8thlight/vulcanizedb/pkg/geth"
|
||||
@@ -22,7 +20,7 @@ func main() {
|
||||
config := cmd.LoadConfig(*environment)
|
||||
blockchain := geth.NewGethBlockchain(config.Client.IPCPath)
|
||||
repository := cmd.LoadPostgres(config.Database, blockchain.Node())
|
||||
blockNumber := requestedBlockNumber(_blockNumber)
|
||||
blockNumber := cmd.RequestedBlockNumber(_blockNumber)
|
||||
|
||||
contractSummary, err := contract_summary.NewSummary(blockchain, repository, *contractHash, blockNumber)
|
||||
if err != nil {
|
||||
@@ -31,13 +29,3 @@ func main() {
|
||||
output := contract_summary.GenerateConsoleOutput(contractSummary)
|
||||
fmt.Println(output)
|
||||
}
|
||||
|
||||
func requestedBlockNumber(blockNumber *int64) *big.Int {
|
||||
var _blockNumber *big.Int
|
||||
if *blockNumber == -1 {
|
||||
_blockNumber = nil
|
||||
} else {
|
||||
_blockNumber = big.NewInt(*blockNumber)
|
||||
}
|
||||
return _blockNumber
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@ import (
|
||||
|
||||
"fmt"
|
||||
|
||||
"math/big"
|
||||
|
||||
"github.com/8thlight/vulcanizedb/pkg/config"
|
||||
"github.com/8thlight/vulcanizedb/pkg/core"
|
||||
"github.com/8thlight/vulcanizedb/pkg/geth"
|
||||
@@ -55,3 +57,13 @@ func GetAbi(abiFilepath string, contractHash string) string {
|
||||
}
|
||||
return contractAbiString
|
||||
}
|
||||
|
||||
func RequestedBlockNumber(blockNumber *int64) *big.Int {
|
||||
var _blockNumber *big.Int
|
||||
if *blockNumber == -1 {
|
||||
_blockNumber = nil
|
||||
} else {
|
||||
_blockNumber = big.NewInt(*blockNumber)
|
||||
}
|
||||
return _blockNumber
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user