public static Block GenerateGenesisBlock(KeyPair keyPair)
        {
            var outEntry = new OutEntry()
            {
                RecipientHash = BlockchainUtil.ToAddress(keyPair.PublicKey),
                Value         = 10
            };

            var genesisBlock = new Block()
            {
                Id           = 0,
                Hash         = genesisHash,
                PreviousHash = null,
                Timestamp    = DateTime.Now,
                Transaction  = new Transaction()
                {
                    Id         = 0,
                    Signature  = EccService.Sign(genesisHash, keyPair.PrivateKey, keyPair.PublicKey),
                    Timestamp  = DateTime.Now,
                    InEntries  = null,
                    OutEntries = new List <OutEntry>()
                    {
                        outEntry
                    }
                }
            };

            return(genesisBlock);
        }
        public static KeyPair LoadFrom(string path)
        {
            var keyContent = File.ReadAllText(path);
            var keyPair    = JsonConvert.DeserializeObject <KeyPair>(keyContent);

            if (!EccService.TestKey(keyPair.PrivateKey, keyPair.PublicKey))
            {
                throw new InvalidDataException("Collapsed keypair.");
            }

            return(keyPair);
        }