示例#1
0
        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();
        }