arnaucube
arnaucube/bcPublic Self-hosted repository
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}