public bool VerifyTransaction(Hash tx, MerklePath path, ulong parentChainHeight) { var key = new UInt64Value { Value = parentChainHeight }; Api.Assert(_parentChainBlockInfo.GetValue(key) != null, $"Parent chain block at height {parentChainHeight} is not recorded."); var rootCalculated = path.ComputeRootWith(tx); var parentRoot = _parentChainBlockInfo.GetValue(key)?.Root?.SideChainTransactionsRoot; //Api.Assert((parentRoot??Hash.Zero).Equals(rootCalculated), "Transaction verification Failed"); return((parentRoot ?? Hash.Zero).Equals(rootCalculated)); }
private Hash ComputeMerklePath(Hash leaf, MerklePath path) { return(path.ComputeRootWith(leaf)); }