repos / hub.go.git


Evgenii Akentev  ·  2024-09-02

chain-listener.go

 1package main
 2
 3import (
 4  "context"
 5  "log"
 6
 7	"github.com/xssnick/tonutils-go/liteclient"
 8	"github.com/xssnick/tonutils-go/ton"
 9
10  "main/contracts"
11)
12
13func listenChain() {
14  log.Println("Start liteclient")
15  client := liteclient.NewConnectionPool()
16
17  var liteServers string
18  switch contracts.GetContractEnvironment() {
19  case "MAINNET":
20    liteServers = "https://ton.org/global.config.json"
21  default:
22    liteServers = "https://ton.org/testnet-global.config.json"
23  }
24
25	// connect to mainnet lite servers
26	err := client.AddConnectionsFromConfigUrl(context.Background(), liteServers) 
27	if err != nil {
28		log.Fatalln("connection err: ", err.Error())
29		return
30	} 
31
32  api := ton.NewAPIClient(client, ton.ProofCheckPolicyFast).WithRetry()
33	ctx := client.StickyContext(context.Background())
34
35  for {
36    log.Println("get masterchain info")
37    b, err := api.CurrentMasterchainInfo(ctx)
38	  if err != nil {
39	  	log.Fatalln("get block err:", err.Error())
40	  	return
41	  }
42  
43    log.Println("read declarations")
44    declarations := readDeclarations(api, ctx, b, nil)
45    
46    for _, decl := range declarations {
47      log.Println("%V", decl)
48    }
49
50
51  }
52}