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}