// TODO replace with two functions: // IsContractActive(contractHash), which checks if the contract is in the ACS on disk or in the contractpool; // bool IsContractGeneratedTransactionValid(dbtx, contracthash, ptx), which raises an exception if called with a missing contract //public static bool IsContractGeneratedTransactionValid(TransactionContext dbTx, TransactionValidation.PointedTransaction ptx, byte[] contractHash) //{ // var chainTip = new ChainTip().Context(dbTx).Value; // var tipBlockHeader = chainTip == null ? null : new BlockStore().GetBlock(dbTx, chainTip).Value.header; // return xValid(ptx, contractHash, utxos, tipBlockHeader); //} public void InitBlockTimestamps(TransactionContext dbTx) { if (Tip != null) { var timestamps = new List <long>(); var itr = Tip.Value; while (itr != null && timestamps.Count < BlockTimestamps.SIZE) { timestamps.Add(itr.header.timestamp); if (itr.header.parent.Length == 0) { break; } var bk = BlockStore.GetBlock(dbTx, itr.header.parent); System.Diagnostics.Debug.Assert(bk != null); itr = bk.Value; } Timestamps.Init(timestamps.ToArray()); } }