bool ValidBundle_SingleItem(string transactionTrytes) { var tran = new TransactionItem(transactionTrytes); var bundleHash = tran.Bundle; var bundleTrytes = tran.GetBundleTrytes(); var curl = new Kerl(); String trxTrytes = transactionTrytes.Substring(2187, 162); Assert.AreEqual(bundleTrytes, trxTrytes); // Absorb bundle hash + value + timestamp + lastIndex + currentIndex trytes. curl.Absorb(Utils.Converter.ToTrits(trxTrytes)); int[] bundleFromTrxs = new int[243]; curl.Squeeze(bundleFromTrxs); String bundleFromTxString = Utils.Converter.ToTrytes(bundleFromTrxs); // Check if bundle hash is the same as returned by tx object if (!bundleFromTxString.Equals(bundleHash)) { throw new ArgumentException($"INVALID_BUNDLE_HASH_ERROR: Expected: {bundleFromTxString} but your bundle is {bundleHash}"); } // Last tx in the bundle should have currentIndex === lastIndex //bundle.setLength(bundle.getTransactions().size()); return(tran.CurrentIndex == tran.LastIndex); }