Commit ffdb9455 authored by duanjinfei's avatar duanjinfei

change scan block

parent 42785f15
...@@ -17,25 +17,32 @@ import ( ...@@ -17,25 +17,32 @@ import (
) )
func main() { func main() {
// Get the last block height
var currentScanedBlock int64 = getLastTimeBlockNumber()
addressArr := []string{"0x5b68ff12be7fd90284ebe2702050879d4d50061a"} addressArr := []string{"0x5b68ff12be7fd90284ebe2702050879d4d50061a"}
start("https://galaxy.block.caduceus.foundation", addressArr)
}
func start(url string, addArr []string) {
// get operate signal // get operate signal
makeSignal := make(chan os.Signal, 1) makeSignal := make(chan os.Signal, 1)
// monitor all signals // monitor all signals
signal.Notify(makeSignal, syscall.SIGINT) signal.Notify(makeSignal, syscall.SIGINT)
go start("https://galaxy.block.caduceus.foundation", addressArr, &currentScanedBlock)
processSignal := <-makeSignal
if processSignal != nil {
fmt.Println(currentScanedBlock)
stop(currentScanedBlock)
fmt.Println("process end:", processSignal)
os.Exit(3)
}
}
func start(url string, addArr []string, currentScanedBlock *int64) {
//Block until a signal comes in //Block until a signal comes in
fmt.Println("monitor start") fmt.Println("monitor start")
client, err := ethclient.Dial(url) client, err := ethclient.Dial(url)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
// Get the last block height
num := getLastTimeBlockNumber()
var currentScanedBlock int64 = num
// create ticker // create ticker
var ticker *time.Ticker = time.NewTicker(1 * time.Second) var ticker *time.Ticker = time.NewTicker(1 * time.Second)
count := 10
for { for {
select { select {
case <-ticker.C: case <-ticker.C:
...@@ -46,25 +53,22 @@ func start(url string, addArr []string) { ...@@ -46,25 +53,22 @@ func start(url string, addArr []string) {
} }
newBlockNum := header.Number.Int64() newBlockNum := header.Number.Int64()
fmt.Println("newBlockNum:", newBlockNum) fmt.Println("newBlockNum:", newBlockNum)
if currentScanedBlock < newBlockNum { fmt.Println("currentScanedBlock:", &currentScanedBlock)
for num := *currentScanedBlock; num < newBlockNum; num++ {
if count == 0 {
*currentScanedBlock = *currentScanedBlock + 100
break
}
fmt.Println("current scan block number:", currentScanedBlock) fmt.Println("current scan block number:", currentScanedBlock)
for _, pendingVerifyAddress := range addArr { for _, pendingVerifyAddress := range addArr {
// Get tx with in a block // Get tx with in a block
if getBlockTxThroughAddress(client, big.NewInt(currentScanedBlock), pendingVerifyAddress) { if getBlockTxThroughAddress(client, big.NewInt(num), pendingVerifyAddress) {
fmt.Println("verify success:", pendingVerifyAddress) fmt.Println("verify success:", pendingVerifyAddress)
} else { } else {
fmt.Println("verifing......", pendingVerifyAddress) fmt.Println("verifing......", pendingVerifyAddress)
} }
} }
currentScanedBlock++ count--
}
}
case processSignal := <-makeSignal:
{
if processSignal != nil {
stop(currentScanedBlock, *ticker)
fmt.Println("process end:", processSignal)
os.Exit(3)
} }
} }
} }
...@@ -110,8 +114,7 @@ func getLastTimeBlockNumber() (number int64) { ...@@ -110,8 +114,7 @@ func getLastTimeBlockNumber() (number int64) {
number = 7048864 number = 7048864
return return
} }
func stop(blockNum int64, ticker time.Ticker) { func stop(blockNum int64) {
ticker.Stop()
// In Mysql storage end blockNum // In Mysql storage end blockNum
fmt.Println("Ticker stopped and storage blockNum:", blockNum) fmt.Println("Ticker stopped and storage blockNum:", blockNum)
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment