public static string ToJson(this BlockChain blockChain) { blockChain.Verify(nameof(blockChain)).IsNotNull(); blockChain.Blocks.Count.Verify(nameof(blockChain.Blocks.Count)).Assert <int, InvalidOperationException>(x => x > 1, "Empty block chain"); var list = new List <BlockChainNodeModel>(); foreach (BlockNode node in blockChain) { BlockChainNodeModel dataBlockNodeModel = node.ConvertTo(); list.Add(dataBlockNodeModel); } var blockChainModel = new BlockChainModel() { Blocks = list, }; return(JsonConvert.SerializeObject(blockChainModel)); }
public static MerkleTree ToMerkleTree(this BlockChain blockChain) { return(new MerkleTree() .Append(blockChain.Select(x => x.Digest).ToArray())); }