/// <summary>Creates a new block with mocked serialized size.</summary> public Block GenerateBlock(long size) { Block block = new StraxMain().Consensus.ConsensusFactory.CreateBlock(); block.SetPrivatePropertyValue("BlockSize", size); return(block); }
static async Task Main(string[] args) { int stratisNetworkApiPort; int startBlock = 0; Network straxNetwork; string blockExplorerBaseUrl; if (args.Contains("-testnet")) { startBlock = 1528858; stratisNetworkApiPort = 38221; straxNetwork = new StraxTest(); blockExplorerBaseUrl = "https://stratistestindexer1.azurewebsites.net/api/v1/"; } else { startBlock = 1975500; stratisNetworkApiPort = 37221; straxNetwork = new StraxMain(); blockExplorerBaseUrl = "https://stratismainindexer1.azurewebsites.net/api/v1/"; } var arg = args.FirstOrDefault(a => a.StartsWith("-startfrom")); if (arg != null) { int.TryParse(arg.Split('=')[1], out startBlock); } if (args.Contains("-swap")) { var service = new SwapExtractionService(stratisNetworkApiPort, straxNetwork); await service.RunAsync(startBlock, true, false); } if (args.Contains("-swapvote") || args.Contains("-collateralvote")) { var blockExplorerClient = new BlockExplorerClient(blockExplorerBaseUrl); var service = new VoteExtractionService(stratisNetworkApiPort, straxNetwork, blockExplorerClient); if (args.Contains("-collateralvote")) { await service.RunAsync(VoteType.CollateralVote, startBlock); } if (args.Contains("-swapvote")) { await service.RunAsync(VoteType.SwapVote, startBlock); } } }
public void MaxReorgIsCalculatedProperly() { var btc = new BitcoinMain(); int maxReorgBtc = AddressIndexer.GetMaxReorgOrFallbackMaxReorg(btc); Assert.Equal(maxReorgBtc, AddressIndexer.FallBackMaxReorg); var stratis = new StraxMain(); int maxReorgStratis = AddressIndexer.GetMaxReorgOrFallbackMaxReorg(stratis); Assert.Equal(maxReorgStratis, (int)stratis.Consensus.MaxReorgLength); }
public void GivenApiUriIsProvided_AndGivenStratisNetwork_ThenApiUriIsUsedWithDefaultStratisApiPort() { // Arrange. string customApiUri = "http://0.0.0.0"; Network network = new StraxMain(); var nodeSettings = new NodeSettings(network, args: new[] { $"-apiuri={customApiUri}" }); // Act. ApiSettings settings = FullNodeSetup(nodeSettings); // Assert. Assert.Equal(network.DefaultAPIPort, settings.ApiPort); Assert.Equal(new Uri($"{customApiUri}:{network.DefaultAPIPort}"), settings.ApiUri); }
public void GivenNoApiSettingsAreProvided_AndOnStratisNetwork_ThenDefaultSettingAreUsed() { // Arrange. Network network = new StraxMain(); var nodeSettings = new NodeSettings(network); // Act. ApiSettings settings = FullNodeSetup(nodeSettings); // Assert. Assert.Equal(network.DefaultAPIPort, settings.ApiPort); Assert.Equal(new Uri($"{ApiSettings.DefaultApiHost}:{network.DefaultAPIPort}"), settings.ApiUri); settings.HttpsCertificateFilePath.Should().BeNull(); settings.UseHttps.Should().BeFalse(); }
static async Task Main(string[] args) { int stratisNetworkApiPort; int startBlock = 0; Network straxNetwork; if (args.Contains("-testnet")) { startBlock = 1_450_000; stratisNetworkApiPort = 38221; straxNetwork = new StraxTest(); } else { startBlock = 1_949_800; stratisNetworkApiPort = 37221; straxNetwork = new StraxMain(); } var service = new SwapExtractionService(stratisNetworkApiPort, straxNetwork); var arg = args.FirstOrDefault(a => a.StartsWith("-startfrom")); if (arg != null) { int.TryParse(arg.Split('=')[1], out startBlock); } if (args.Contains("-swap")) { await service.RunAsync(ExtractionType.Swap, startBlock); } if (args.Contains("-vote")) { await service.RunAsync(ExtractionType.Vote, startBlock); } }
public void Eight_Of_Fifteen_SufficientlyFunded() { var network = new StraxMain(); const int n = 15; const int m = 8; Key[] keys = new Key[n]; Key ultimateReceiver = new Key(); for (int i = 0; i < n; i++) { keys[i] = new Key(); } Script redeemScript = PayToMultiSigTemplate.Instance.GenerateScriptPubKey(m, keys.Select(x => x.PubKey).ToArray()); const int inputCount = 50; const decimal fundingInputAmount = 100; const decimal fundingAmount = 99; // Must be less than fundingInputAmount. var multiSigCoins = new List <ICoin>(); for (int i = 0; i < inputCount; i++) { var builder = new TransactionBuilder(network); // Build transactions to fund the multisig Transaction funding = builder .AddCoins(GetCoinSource(keys[0], new[] { Money.Coins(fundingInputAmount) })) .AddKeys(keys[0]) .Send(redeemScript.Hash, Money.Coins(fundingAmount)) .SetChange(keys[0].PubKey.Hash) .SendFees(Money.Satoshis(5000)) .BuildTransaction(true); multiSigCoins.Add(ScriptCoin.Create(network, funding, funding.Outputs.To(redeemScript.Hash).First(), redeemScript)); } var fedPegSettings = new FederatedPegSettings(new NodeSettings(network, args: new string[] { "mainchain", "redeemscript=" + redeemScript.ToString(), "publickey=" + keys[0].PubKey.ToHex(), "federationips=0.0.0.0" })); // Construct the withdrawal tx var txBuilder = new TransactionBuilder(network); Transaction tx = txBuilder .AddCoins(multiSigCoins) .AddKeys(keys.Take(m).ToArray()) .Send(ultimateReceiver.PubKey.Hash, Money.Coins(inputCount * fundingAmount - 1)) .SetChange(redeemScript.Hash) .SendFees(fedPegSettings.GetWithdrawalTransactionFee(inputCount)) .BuildTransaction(true); bool verify = txBuilder.Verify(tx, out TransactionPolicyError[] errors); Assert.True(verify); }