public void Init() { //remove all blocks _chain = new List <Block>(); _currentTransactions = new List <Transaction>(); _nodes = new List <Node>(); NodeId = System.Configuration.ConfigurationManager.AppSettings["NodeId"]; //create the genesis block CreateNewBlock(proof: 100, previousHash: "1"); //get the crytpo provider name from the string cp = System.Configuration.ConfigurationManager.AppSettings["cryptoProvider"]; LoadCryptoProvider(cp); //create or load server node keys string filename = Path.Combine(appDir, cp + ".key"); if (File.Exists(filename)) { _cryptoProvider.ImportKeyPairFromFile(filename); } else { _cryptoProvider.GenerateKeyPair(); _cryptoProvider.ExportKeyPairToFile(filename); } _publicKey = _cryptoProvider.GetPublicKey(); _privateKey = _cryptoProvider.GetPrivateKey(); Logger.Log(String.Format("BlockChain Initialized : NodeId={0}", NodeId)); RegisterNodes(); }