Example #1
0
        public void CanRetrieveSavedConversionRequest()
        {
            var network    = new SmartContractsPoARegTest();
            var dataFolder = TestBase.CreateDataFolder(this, network: network);

            var serializer = new DBreezeSerializer(network.Consensus.ConsensusFactory);
            var kvs        = new ConversionRequestKeyValueStore(dataFolder, serializer);

            var repo = new ConversionRequestRepository(kvs);

            var request = new ConversionRequest()
            {
                RequestId          = "requestId",
                RequestType        = ConversionRequestType.Mint,
                Processed          = false,
                RequestStatus      = ConversionRequestStatus.Unprocessed,
                Amount             = 100000000,
                BlockHeight        = 123,
                DestinationAddress = ""
            };

            repo.Save(request);

            var request2 = repo.Get(request.RequestId);

            Assert.Equal(request.RequestId, request2.RequestId);
            Assert.Equal(request.RequestType, request2.RequestType);
            Assert.Equal(request.Processed, request2.Processed);
            Assert.Equal(request.RequestStatus, request2.RequestStatus);
            Assert.Equal(request.Amount, request2.Amount);
            Assert.Equal(request.BlockHeight, request2.BlockHeight);
            Assert.Equal(request.DestinationAddress, request2.DestinationAddress);
        }
        protected PoAMockChainFixture(int nodeNum)
        {
            var network = new SmartContractsPoARegTest();

            this.builder = SmartContractNodeBuilder.Create(this);

            CoreNode factory(int nodeIndex) => this.builder.CreateSmartContractPoANode(network, nodeIndex).Start();

            PoAMockChain mockChain = new PoAMockChain(2, factory).Build();

            this.Chain = mockChain;
            MockChainNode node1 = this.Chain.Nodes[0];
            MockChainNode node2 = this.Chain.Nodes[1];

            // Get premine
            mockChain.MineBlocks(10);

            // Send half to other from whoever received premine
            if ((long)node1.WalletSpendableBalance == node1.CoreNode.FullNode.Network.Consensus.PremineReward.Satoshi)
            {
                this.PayHalfPremine(node1, node2);
            }
            else
            {
                this.PayHalfPremine(node2, node1);
            }
        }
        protected PoAMockChainFixture(int nodeNum)
        {
            var network = new SmartContractsPoARegTest();

            // TODO: The PoA tests seem to use the same network class to do sets of tests with different rule requirements (signed/unsigned). Need to normalise it to avoid this hack.
            network.Consensus.MempoolRules.Remove(typeof(AllowedCodeHashLogicMempoolRule));

            this.builder = SmartContractNodeBuilder.Create(this);

            CoreNode factory(int nodeIndex) => this.builder.CreateSmartContractPoANode(network, nodeIndex).Start();

            PoAMockChain mockChain = new PoAMockChain(nodeNum, factory).Build();

            this.Chain = mockChain;
            MockChainNode node1 = this.Chain.Nodes[0];
            MockChainNode node2 = this.Chain.Nodes[1];

            // Get premine
            mockChain.MineBlocks(10);

            // Send half to other from whoever received premine
            if ((long)node1.WalletSpendableBalance == node1.CoreNode.FullNode.Network.Consensus.PremineReward.Satoshi)
            {
                this.PayHalfPremine(node1, node2);
            }
            else
            {
                this.PayHalfPremine(node2, node1);
            }
        }
Example #4
0
        public WhitelistedContractTests()
        {
            this.network = new SmartContractsPoARegTest();

            this.builder     = SmartContractNodeBuilder.Create(this);
            this.nodeFactory = (nodeIndex) => this.builder.CreateWhitelistedContractPoANode(this.network, nodeIndex).Start();
        }
Example #5
0
        public SmartContractRPCTests()
        {
            var network = new SmartContractsPoARegTest();

            this.network     = network;
            this.builder     = SmartContractNodeBuilder.Create(this);
            this.nodeFactory = (nodeIndex) => this.builder.CreateSmartContractPoANode(network, nodeIndex).Start();
            this.methodParameterStringSerializer = new MethodParameterStringSerializer(this.network);
        }
Example #6
0
        public TestChain()
        {
            var network = new SmartContractsPoARegTest();

            this.network         = network;
            this.builder         = SmartContractNodeBuilder.Create(this);
            this.nodeFactory     = (nodeIndex) => this.builder.CreateSmartContractPoANode(network, nodeIndex).Start();
            this.chain           = new PoAMockChain(2, nodeFactory, SharedWalletMnemonic);
            this.paramSerializer = new MethodParameterStringSerializer(network); // TODO: Inject
        }
Example #7
0
        public CoreNode CreateWhitelistedContractPoANode(SmartContractsPoARegTest network, int nodeIndex)
        {
            string dataFolder = this.GetNextDataFolderName();

            CoreNode node     = this.CreateNode(new WhitelistedContractPoARunner(dataFolder, network, this.TimeProvider), "poa.conf");
            var      settings = new NodeSettings(network, args: new string[] { "-conf=poa.conf", "-datadir=" + dataFolder });

            var tool = new KeyTool(settings.DataFolder);

            tool.SavePrivateKey(network.FederationKeys[nodeIndex]);
            return(node);
        }
        public CoreNode CreateSmartContractPoANode(Key key)
        {
            Network  network    = new SmartContractsPoARegTest();
            string   dataFolder = this.GetNextDataFolderName();
            CoreNode node       = this.CreateNode(new SmartContractPoARunner(dataFolder, network, this.TimeProvider), "poa.conf");

            var settings = new NodeSettings(network, args: new string[] { "-conf=poa.conf", "-datadir=" + dataFolder });
            var tool     = new KeyTool(settings.DataFolder);

            tool.SavePrivateKey(key);

            return(node);
        }
Example #9
0
        public void RetrievingInvalidRequestIdFails()
        {
            var network    = new SmartContractsPoARegTest();
            var dataFolder = TestBase.CreateDataFolder(this, network: network);

            var serializer = new DBreezeSerializer(network.Consensus.ConsensusFactory);
            var kvs        = new ConversionRequestKeyValueStore(dataFolder, serializer);

            var repo = new ConversionRequestRepository(kvs);

            var request = repo.Get("nonexistent");

            Assert.Null(request);
        }
Example #10
0
        public PoAMockChain Build()
        {
            var network = new SmartContractsPoARegTest();

            for (int nodeIndex = 0; nodeIndex < this.nodes.Length; nodeIndex++)
            {
                CoreNode node = this.builder.CreateSmartContractPoANode(network, nodeIndex).Start();

                for (int j = 0; j < nodeIndex; j++)
                {
                    MockChainNode otherNode = this.nodes[j];
                    TestHelper.Connect(node, otherNode.CoreNode);
                }

                this.nodes[nodeIndex] = new MockChainNode(node, this, this.initMnemonic);
            }

            return(this);
        }
Example #11
0
        public PoAMockChain(int numNodes)
        {
            this.builder = SmartContractNodeBuilder.Create(this);
            this.nodes   = new MockChainNode[numNodes];
            var network = new SmartContractsPoARegTest();

            this.Network = network;
            for (int i = 0; i < numNodes; i++)
            {
                CoreNode node = this.builder.CreateSmartContractPoANode(network.FederationKeys[i]).Start();

                for (int j = 0; j < i; j++)
                {
                    MockChainNode otherNode = this.nodes[j];
                    TestHelper.Connect(node, otherNode.CoreNode);
                    TestHelper.Connect(otherNode.CoreNode, node);
                }

                this.nodes[i] = new MockChainNode(node, this);
            }
        }
Example #12
0
        public void Actual_Withdrawal_Passes()
        {
            Transaction withdrawal = new SmartContractsPoARegTest().CreateTransaction("01000000019eb9793f7c69bd31d4b03518f349e70384f8f20456556b4be0f941dbaebec9d400000000fdfe0000483045022100f6d3d20ebfe9b336a1432e06365c549a3dac5b411cb0fe2cd6dd46b09530adf202206e65df4c8f18f66f65409652463300c8b1b90ad69486c9ebabd58987baeeb7fd01483045022100e399eec964ccc1d99b1a0b285031284e7c4a4b0aa678dd52ea4698973c326622022011814dddddcd4a43fd4a223509de4815e2d687814c5fc5abde68ec3801026fe1014c69522102eef7619de25578c9717a289d08c61d4598b2bd81d2ee5db3072a07fa2d121e6521027ce19209dd1212a6a4fc2b7ddf678c6dea40b596457f934f73f3dcc5d0d9ee552103093239d5344ddb4c69c46c75bd629519e0b68d2cfc1a86cd63115fd068f202ba53aeffffffff03c0dc8743fd1a070017a91442938bb61378468a38629c4ffa1521759d0283578700e1f505000000001976a9148732134e7953ebfe51f65d455612a4245f9610ae88ac0000000000000000226a2009422af22360465d208f70e4c86284e538706db5db5dae1c2c4fcad5eef928eb00000000");

            AllowedScriptTypeRule.CheckTransaction(this.network, withdrawal);
        }