blockchainIDsystem/peer/utils.go
peer/utils.goRaw
1package main
2
3import (
4 "crypto/sha256"
5 "encoding/base64"
6 "encoding/json"
7 "math/rand"
8 "net"
9 "strings"
10)
11
12func getIPPortFromConn(conn net.Conn) string {
13 ip := getIPFromConn(conn)
14 port := getPortFromConn(conn)
15 return ip + ":" + port
16}
17func getIPFromConn(conn net.Conn) string {
18 s := conn.RemoteAddr().String()
19 s = strings.Split(s, ":")[0]
20 s = strings.Trim(s, ":")
21 return s
22}
23func getPortFromConn(conn net.Conn) string {
24 s := conn.RemoteAddr().String()
25 s = strings.Split(s, ":")[1]
26 s = strings.Trim(s, ":")
27 return s
28}
29func randInt(min int, max int) int {
30 r := rand.Intn(max-min) + min
31 return r
32}
33func hashPeer(p Peer) string {
34 peerString := p.IP + ":" + p.Port
35
36 h := sha256.New()
37 h.Write([]byte(peerString))
38 return base64.URLEncoding.EncodeToString(h.Sum(nil))
39}
40func hashBlock(b Block) string {
41 blockJson, err := json.Marshal(b)
42 check(err)
43 blockString := string(blockJson)
44
45 h := sha256.New()
46 h.Write([]byte(blockString))
47 return base64.URLEncoding.EncodeToString(h.Sum(nil))
48}