/
sdk.go
executable file
·115 lines (99 loc) · 2.76 KB
/
sdk.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/*
Copyright (C) CESS. All rights reserved.
Copyright (C) Cumulus Encrypted Storage System. All rights reserved.
SPDX-License-Identifier: Apache-2.0
*/
package main
import (
"bytes"
"context"
"fmt"
"log"
"math/big"
"time"
cess "github.com/CESSProject/cess-go-sdk"
"github.com/centrifuge/go-substrate-rpc-client/v4/types"
"github.com/vedhavyas/go-subkey/scale"
)
// Substrate well-known mnemonic:
//
// https://github.com/substrate-developer-hub/substrate-developer-hub.github.io/issues/613
var MY_MNEMONIC = "bottom drive obey lake curtain smoke basket hold race lonely fit walk"
var RPC_ADDRS = []string{
//devnet
//"wss://devnet-rpc.cess.cloud/ws/",
//testnet
//"wss://testnet-rpc0.cess.cloud/ws/",
"wss://testnet-rpc1.cess.cloud/ws/",
"wss://testnet-rpc2.cess.cloud/ws/",
}
func main() {
sdk, err := cess.New(
context.Background(),
cess.ConnectRpcAddrs(RPC_ADDRS),
//cess.Mnemonic(MY_MNEMONIC),
cess.TransactionTimeout(time.Second*10),
)
if err != nil {
panic(err)
}
defer sdk.GetSubstrateAPI().Client.Close()
fmt.Println(sdk.ChainVersion())
fmt.Println(sdk.InitExtrinsicsName())
fmt.Println(sdk.GetCurrentRpcAddr())
//
fmt.Println(sdk.QueryEraValidatorReward(0))
return
blockhash, err := sdk.GetSubstrateAPI().RPC.Chain.GetBlockHash(180)
if err != nil {
log.Fatalln(err)
}
fmt.Println(sdk.RetrieveAllEventFromBlock(blockhash))
// header, err := sdk.GetSubstrateAPI().RPC.Chain.GetHeader(blockhash)
// if err != nil {
// log.Fatalln(err)
// }
// fmt.Println("------------block header-----------")
// fmt.Println(blockhash.Hex())
// fmt.Println(header.ParentHash.Hex())
// fmt.Println(header.ExtrinsicsRoot.Hex())
// fmt.Println(header.Number)
// fmt.Println(header.StateRoot.Hex())
// for i := 0; i < len(header.Digest); i++ {
// fmt.Println(i, ": ", header.Digest[i])
// }
// fmt.Println("------------block-----------")
//
block, err := sdk.GetSubstrateAPI().RPC.Chain.GetBlock(blockhash)
if err != nil {
log.Fatalln(err)
}
fmt.Println("number of Extrinsics: ", len(block.Block.Extrinsics))
callIndex, err := sdk.GetMetadata().FindCallIndex("Timestamp.set")
if err != nil {
log.Fatalln(err)
}
var eve = types.EventRecords{}
_ = eve
// for _, e := range eve.System_ExtrinsicFailed {
// //if IsApplyExtrinsic
// //e.Phase.AsApplyExtrinsic
// }
timestamp := new(big.Int)
for _, extrinsic := range block.Block.Extrinsics {
if extrinsic.Method.CallIndex != callIndex {
continue
}
timeDecoder := scale.NewDecoder(bytes.NewReader(extrinsic.Method.Args))
timestamp, err = timeDecoder.DecodeUintCompact()
if err != nil {
log.Fatalln(err)
}
break
}
msec := timestamp.Int64()
time := time.Unix(msec/1e3, (msec%1e3)*1e6)
fmt.Println(msec)
fmt.Println(time)
fmt.Println(sdk.RetrieveAllEventFromBlock(blockhash))
}