package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
|
|
blockchainlib "./blockchainlib"
|
|
p2plib "./p2plib"
|
|
"github.com/fatih/color"
|
|
)
|
|
|
|
var tp p2plib.ThisPeer
|
|
var blockchain blockchainlib.Blockchain
|
|
|
|
func main() {
|
|
|
|
if len(os.Args) < 3 {
|
|
color.Red("need to call:")
|
|
color.Red("./peer client 3001 3002")
|
|
os.Exit(3)
|
|
}
|
|
|
|
color.Blue("Starting Peer")
|
|
//read configuration file
|
|
readConfig("config.json")
|
|
|
|
//read the stored blockchain
|
|
err := blockchain.ReadFromDisk()
|
|
check(err)
|
|
blockchain.Print()
|
|
|
|
//initialize p2plib
|
|
configuredMsgCases := createMsgHandlerCases()
|
|
tp = p2plib.InitializePeer(os.Args[1], "127.0.0.1",
|
|
os.Args[2], os.Args[3], config.ServerIP, config.ServerPort, configuredMsgCases)
|
|
|
|
if tp.RunningPeer.Role == "client" {
|
|
color.Red("http://" + config.IP + ":" + config.ServerRESTPort)
|
|
fmt.Println(blockchain.GenesisBlock)
|
|
blockchain.ReconstructBlockchainFromBlock("http://"+config.IP+":"+config.ServerRESTPort, blockchain.GenesisBlock)
|
|
}
|
|
color.Blue("initialized")
|
|
go runRestServer()
|
|
|
|
fmt.Println(tp.Running)
|
|
for tp.Running {
|
|
time.Sleep(1000 * time.Millisecond)
|
|
}
|
|
}
|