Пример #1
0
        public void BlockIsValid_RethrowsTransactionRejected()
        {
            var        blockHash     = "000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF";
            BigDecimal currentTarget = BigInteger.Parse("0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", NumberStyles.HexNumber);
            var        sut           = new PowBlockValidator(_blockFinalizerMock.Object, _transactionValidatorMock.Object, _timestamperMock.Object, _signerMock.Object);
            var        transactions  = new List <AbstractTransaction>()
            {
                new StateTransaction(null, "to", null, 0, 5000, 1, TransactionAction.ClaimCoinbase.ToString(), null, 0)
            };
            var expectedException = new TransactionRejectedException("Transaction rejected test", transactions.First());
            var blockchain        = new Blockchain(new List <Block>()
            {
                new Block(new BlockHeader(_netId, 1, "merkleroot", 1, "").Finalize("block1", "privkey"), transactions)
            }, _netId);
            var blockToTest = new Block(new BlockHeader(_netId, 1, "merkleroot", 1, "block1"), transactions);

            blockToTest.Header.Finalize(blockHash, "signature");
            _blockFinalizerMock.Setup(m => m.CalculateHash(blockToTest)).Returns(blockHash);
            _timestamperMock.Setup(m => m.GetCurrentUtcTimestamp()).Returns(1);
            _signerMock.Setup(m => m.SignatureIsValid("signature", blockHash, "to")).Returns(true);
            _transactionValidatorMock.Setup(m => m.CalculateMerkleRoot(transactions)).Returns("merkleroot");
            _transactionValidatorMock.Setup(m => m.ValidateTransaction(transactions.First())).Throws(expectedException);

            var ex = Assert.ThrowsException <TransactionRejectedException>(
                () => sut.ValidateBlock(blockToTest, currentTarget, blockchain, true, true)
                );

            Assert.AreEqual(expectedException, ex);
        }
Пример #2
0
 public static void EnsureSucceededStatus(this TransactionReceipt transactionReceipt)
 {
     if (transactionReceipt.Status.Value != 1)
     {
         TransactionRejectedException.Throw(transactionReceipt);
     }
 }