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); } }
public WhitelistedContractTests() { this.network = new SmartContractsPoARegTest(); this.builder = SmartContractNodeBuilder.Create(this); this.nodeFactory = (nodeIndex) => this.builder.CreateWhitelistedContractPoANode(this.network, nodeIndex).Start(); }
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); }
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 }
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); }
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); }
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); }
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); } }
public void Actual_Withdrawal_Passes() { Transaction withdrawal = new SmartContractsPoARegTest().CreateTransaction("01000000019eb9793f7c69bd31d4b03518f349e70384f8f20456556b4be0f941dbaebec9d400000000fdfe0000483045022100f6d3d20ebfe9b336a1432e06365c549a3dac5b411cb0fe2cd6dd46b09530adf202206e65df4c8f18f66f65409652463300c8b1b90ad69486c9ebabd58987baeeb7fd01483045022100e399eec964ccc1d99b1a0b285031284e7c4a4b0aa678dd52ea4698973c326622022011814dddddcd4a43fd4a223509de4815e2d687814c5fc5abde68ec3801026fe1014c69522102eef7619de25578c9717a289d08c61d4598b2bd81d2ee5db3072a07fa2d121e6521027ce19209dd1212a6a4fc2b7ddf678c6dea40b596457f934f73f3dcc5d0d9ee552103093239d5344ddb4c69c46c75bd629519e0b68d2cfc1a86cd63115fd068f202ba53aeffffffff03c0dc8743fd1a070017a91442938bb61378468a38629c4ffa1521759d0283578700e1f505000000001976a9148732134e7953ebfe51f65d455612a4245f9610ae88ac0000000000000000226a2009422af22360465d208f70e4c86284e538706db5db5dae1c2c4fcad5eef928eb00000000"); AllowedScriptTypeRule.CheckTransaction(this.network, withdrawal); }