Skip to content

Commit f15c0a9

Browse files
committed
working on CreateTRC10Token function
1 parent deb7420 commit f15c0a9

File tree

4 files changed

+219
-27
lines changed

4 files changed

+219
-27
lines changed

cmd/api.go

+128
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
package main
2+
3+
import "encoding/hex"
4+
5+
// ===== Account ===== //
6+
func GetAccount(address string) (map[string]interface{}, error) {
7+
8+
payload := map[string]any{
9+
"address": address,
10+
"visible": true,
11+
}
12+
13+
return post("/wallet/getaccount", payload)
14+
}
15+
16+
func GetAccountBalance(address string) (int, error) {
17+
18+
result, err := GetAccount(address)
19+
if err != nil {
20+
return 0, nil
21+
}
22+
23+
balance, ok := result["balance"]
24+
if !ok {
25+
return 0, nil
26+
}
27+
28+
return convertToInt(balance), nil
29+
}
30+
31+
// ===== Account Resource ===== //
32+
33+
func GetAccountResource(address string) (int, int, int, error) {
34+
35+
payload := map[string]any{
36+
"address": address,
37+
"visible": true,
38+
}
39+
40+
result, err := post("/wallet/getaccountresource", payload)
41+
if err != nil {
42+
return 0, 0, 0, err
43+
}
44+
45+
totalEneryLimit, ok := result["TotalEnergyLimit"]
46+
if !ok {
47+
return 0, 0, 0, err
48+
}
49+
50+
totalNetLimit, ok := result["TotalNetLimit"]
51+
if !ok {
52+
return 0, 0, 0, err
53+
}
54+
55+
freeNetLimit, ok := result["freeNetLimit"]
56+
if !ok {
57+
return 0, 0, 0, err
58+
}
59+
60+
return convertToInt(totalEneryLimit), convertToInt(totalNetLimit), convertToInt(freeNetLimit), nil
61+
}
62+
63+
func GetAccountNet(address string) (int, int, error) {
64+
65+
payload := map[string]any{
66+
"address": address,
67+
"visible": true,
68+
}
69+
70+
result, err := post("/wallet/getaccountnet", payload)
71+
if err != nil {
72+
return 0, 0, err
73+
}
74+
75+
totalNetLimit, ok := result["TotalNetLimit"]
76+
if !ok {
77+
return 0, 0, err
78+
}
79+
80+
freeNetLimit, ok := result["freeNetLimit"]
81+
if !ok {
82+
return 0, 0, err
83+
}
84+
85+
return convertToInt(totalNetLimit), convertToInt(freeNetLimit), nil
86+
}
87+
88+
// ===== Network ===== //
89+
90+
func GetNodeInfo() (map[string]any, error) {
91+
92+
return get("/wallet/getnodeinfo")
93+
}
94+
95+
// ===== TRC10 ===== //
96+
97+
func GetAccountTRC10(address string) (map[string]any, error) {
98+
99+
payload := map[string]any{
100+
"address": address,
101+
"visible": true,
102+
}
103+
104+
result, err := post("/wallet/getassetissuebyaccount", payload)
105+
if err != nil {
106+
return nil, err
107+
}
108+
109+
return result, nil
110+
}
111+
112+
func CreateTRC10Token(address string, name string) (map[string]any, error) {
113+
114+
tokenName := hex.EncodeToString([]byte(name))
115+
116+
payload := map[string]any{
117+
"owner_address": address,
118+
"name": tokenName,
119+
"abbr": abbr,
120+
}
121+
122+
result, err := post("/wallet/getassetissuebyaccount", payload)
123+
if err != nil {
124+
return nil, err
125+
}
126+
127+
return result, nil
128+
}

cmd/client.go

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package main
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"fmt"
7+
"io"
8+
"net/http"
9+
)
10+
11+
const baseUrl = "http://localhost:9090"
12+
13+
func post(path string, payload map[string]any) (map[string]any, error) {
14+
15+
json_data, err := json.Marshal(payload)
16+
if err != nil {
17+
return nil, err
18+
}
19+
20+
resp, err := http.Post(baseUrl+path, "application/json", bytes.NewBuffer(json_data))
21+
if err != nil {
22+
return nil, err
23+
}
24+
25+
var res map[string]interface{}
26+
27+
defer resp.Body.Close()
28+
body, err := io.ReadAll(resp.Body)
29+
if err != nil {
30+
return nil, err
31+
}
32+
33+
// fmt.Println(string(body))
34+
35+
err = json.Unmarshal(body, &res)
36+
if err != nil {
37+
return nil, err
38+
}
39+
40+
return res, nil
41+
}
42+
43+
func get(path string) (map[string]any, error) {
44+
45+
resp, err := http.Get(baseUrl + path)
46+
if err != nil {
47+
return nil, err
48+
}
49+
50+
var res map[string]any
51+
52+
defer resp.Body.Close()
53+
body, err := io.ReadAll(resp.Body)
54+
if err != nil {
55+
return nil, err
56+
}
57+
58+
fmt.Println(string(body))
59+
60+
err = json.Unmarshal(body, &res)
61+
if err != nil {
62+
return nil, err
63+
}
64+
65+
return res, nil
66+
}

cmd/main.go

+4-27
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,12 @@ package main
22

33
import (
44
"fmt"
5-
"io"
6-
"net/http"
7-
"strings"
85
)
96

10-
func main() {
11-
12-
// privateKey := "5e408d58b36aaaef69a91dacd444a4bfc285d0e61fdb147bcb501aed8d5f959d"
13-
address := "TFdZsjFTqT5APEcWmGo4oeMJ84BGSZgJnH"
14-
15-
getAccountInfo(address)
16-
}
17-
18-
func getAccountInfo(address string) {
19-
20-
url := "https://api.shasta.trongrid.io/wallet/getaccount"
7+
const address = "TFdZsjFTqT5APEcWmGo4oeMJ84BGSZgJnH"
8+
const privateKey = "5e408d58b36aaaef69a91dacd444a4bfc285d0e61fdb147bcb501aed8d5f959d"
219

22-
payload := strings.NewReader("{\"address\":\"TZ4UXDV5ZhNW7fb2AMSbgfAEZ7hWsnYS2g\",\"visible\":true}")
23-
24-
req, _ := http.NewRequest("POST", url, payload)
25-
26-
req.Header.Add("accept", "application/json")
27-
req.Header.Add("content-type", "application/json")
28-
29-
res, _ := http.DefaultClient.Do(req)
30-
31-
defer res.Body.Close()
32-
body, _ := io.ReadAll(res.Body)
33-
34-
fmt.Println(string(body))
10+
func main() {
3511

12+
fmt.Println(GetAccountTRC10(address))
3613
}

cmd/utils.go

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package main
2+
3+
import (
4+
"strconv"
5+
)
6+
7+
func convertToInt(value interface{}) int {
8+
switch v := value.(type) {
9+
case int:
10+
return v
11+
case float64:
12+
return int(v)
13+
case float32:
14+
return int(v)
15+
case string:
16+
temp, _ := strconv.Atoi(v)
17+
return temp
18+
default:
19+
return 0
20+
}
21+
}

0 commit comments

Comments
 (0)