github.com/diadata-org/diadata@v1.4.593/pkg/dia/scraper/blockchain-scrapers/scrapers/random-reward-scraper.go (about) 1 package blockchainscrapers 2 3 import ( 4 "log" 5 "time" 6 7 "github.com/blockstatecom/go-bitcoind" 8 "github.com/diadata-org/diadata/pkg/dia" 9 ) 10 11 const ( 12 SLEEP_TIME = 10 13 ) 14 15 func RunScraper(host string, port int, user, password, symbol string, elapsedTime int) { 16 log.SetFlags(log.LstdFlags | log.Lshortfile) 17 18 config := dia.GetConfigApi() 19 if config == nil { 20 log.Fatal("Couldn't load config") 21 } 22 23 client := dia.NewClient(config) 24 if client == nil { 25 log.Fatal("Couldn't load client") 26 } 27 28 bitcoinLib, err := bitcoind.New(host, port, user, password, USESSL) 29 if err != nil { 30 log.Fatal(err) 31 } 32 33 var waitTime time.Duration = time.Duration(elapsedTime) * time.Second 34 var lastSupply float64 = 0 35 36 for { 37 bestHash, err := bitcoinLib.GetBestBlockhash() 38 if err != nil { 39 log.Println(err) 40 } 41 42 block, err := bitcoinLib.GetBlock(bestHash) 43 if err != nil { 44 log.Println(err) 45 } 46 47 blockTime := time.Unix(block.Time, 0) 48 49 if time.Since(blockTime) > waitTime { 50 txOutSetInfo, err := bitcoinLib.GetTxOutsetInfo() 51 if err != nil { 52 log.Println(err) 53 } 54 55 if txOutSetInfo.TotalAmount > lastSupply { 56 lastSupply = txOutSetInfo.TotalAmount 57 58 err = client.SendSupply(&dia.Supply{ 59 Asset: dia.Asset{Symbol: symbol}, 60 CirculatingSupply: lastSupply, 61 }) 62 if err != nil { 63 log.Println("Error sending supply to API: ", err) 64 } else { 65 log.Println("Sent supply", lastSupply, "to API") 66 } 67 } 68 } else { 69 log.Println("Block:", block.Height, "synchronized for", time.Since(blockTime)) 70 } 71 72 time.Sleep(SLEEP_TIME * time.Second) 73 } 74 }