bc/peer/main.go
peer/main.goRaw
1package main
2
3import (
4 "fmt"
5 "os"
6 "time"
7
8 blockchainlib "./blockchainlib"
9 p2plib "./p2plib"
10 "github.com/fatih/color"
11)
12
13var tp p2plib.ThisPeer
14var blockchain blockchainlib.Blockchain
15
16func main() {
17
18 if len(os.Args) < 3 {
19 color.Red("need to call:")
20 color.Red("./peer client 3001 3002")
21 os.Exit(3)
22 }
23
24 color.Blue("Starting Peer")
25 //read configuration file
26 readConfig("config.json")
27
28 //read the stored blockchain
29 err := blockchain.ReadFromDisk()
30 check(err)
31 blockchain.Print()
32
33 //initialize p2plib
34 configuredMsgCases := createMsgHandlerCases()
35 tp = p2plib.InitializePeer(os.Args[1], "127.0.0.1",
36 os.Args[2], os.Args[3], config.ServerIP, config.ServerPort, configuredMsgCases)
37
38 if tp.RunningPeer.Role == "client" {
39 color.Red("http://" + config.IP + ":" + config.ServerRESTPort)
40 fmt.Println(blockchain.GenesisBlock)
41 blockchain.ReconstructBlockchainFromBlock("http://"+config.IP+":"+config.ServerRESTPort, blockchain.GenesisBlock)
42 }
43 color.Blue("initialized")
44 go runRestServer()
45
46 fmt.Println(tp.Running)
47 for tp.Running {
48 time.Sleep(1000 * time.Millisecond)
49 }
50}