/// <inheritdoc/> public override void CheckTransaction(MempoolValidationContext context) { TxOut scTxOut = context.Transaction.TryGetSmartContractTxOut(); if (scTxOut == null) { // No SC output to validate. return; } ContractTxData txData = ContractTransactionChecker.GetContractTxData(this.callDataSerializer, scTxOut); SmartContractFormatLogic.Check(txData, context.Fees); }
/// <inheritdoc/> public override void CheckTransaction(MempoolValidationContext context) { TxOut scTxOut = context.Transaction.TryGetSmartContractTxOut(); if (scTxOut == null) { // No SC output to validate. return; } ContractTxData txData = ContractTransactionChecker.GetContractTxData(this.callDataSerializer, scTxOut); // Delegate to full validation rule. The full validation rule will differ for PoA/PoS. this.contractTransactionFullValidationRule.CheckContractTransaction(txData, null, this.chainIndexer.Tip.Height); }
/// <inheritdoc/> public override void CheckTransaction(MempoolValidationContext context) { TxOut scTxOut = context.Transaction.TryGetSmartContractTxOut(); if (scTxOut == null) { // No SC output to validate. return; } ContractTxData txData = ContractTransactionChecker.GetContractTxData(this.callDataSerializer, scTxOut); if (!txData.IsCreateContract) { return; } byte[] hashedCode = this.hashingStrategy.Hash(txData.ContractExecutionCode); if (!this.whitelistedHashChecker.CheckHashWhitelisted(hashedCode)) { AllowedCodeHashLogic.ThrowInvalidCode(); } }