private void Code5() { var blockr = new QBitNinjaTransactionRepository(Network.Main); Transaction transaction = blockr.Get("0b948b0674a3dbd229b2a0b436e0fce8aa84e6de28b088c610d110c2bf54acb4"); Console.WriteLine(transaction.ToString()); }
public void Play() { var tx = new Transaction("01000000000101e502f6440f6c9db9a0b431f07eaec96797915c009f590f4bb38bfa78be8b1aaf0400000000ffffffff02c03b47030000000017a914ec732bc1867010d1ce9a92047316cf5c31dfb47987d876503800000000220020701a8d401c84fb13e6baf169d59684e17abd9fa216c8cc5b9fc63d622ff8c58d040047304402200aa8d36495fddfd806167106051a2a720689639e43995b1af72b52dbe596b503022058aa0966dc323faf54b0228c2ad99aaaad9bb80ca31fad3141d8c3f651fcfd1801483045022100d2f1b0d6db2bf9032d761ec1da6fce8bdf05f1fbab6db0436e6603bc06faaa160220275ef8749b6e6a0bc0571c547a96f1d8328c52efcde0fd8ea95898626c7417b2016952210279d1f38c1c80d47cb00ddbbe2915a60d5706e1ef66056a169150f083b288eb952102cb7d02b654f8616bfc5ab017b7a3ec9092e466381af0f552b7efcd8d920453672103c96d495bfdd5ba4145e3e046fee45e84a8a48ad05bd8dbb395c011a32cf9f88053ae00000000"); foreach (var input in tx.Inputs.AsIndexedInputs()) { var parent = new QBitNinjaTransactionRepository(Network.Main).Get(input.PrevOut.Hash); var verified = input.VerifyScript(parent.Outputs.AsCoins().Skip((int)input.PrevOut.N).First()); Assert.True(verified); } }
private void Code6() { var blockr = new QBitNinjaTransactionRepository(Network.Main); Transaction fundingTransaction = blockr.Get("0b948b0674a3dbd229b2a0b436e0fce8aa84e6de28b088c610d110c2bf54acb4"); Transaction payment = new Transaction(); payment.Inputs.Add(new TxIn() { PrevOut = new OutPoint(fundingTransaction.GetHash(), 1) }); var programmingBlockchain = new BitcoinPubKeyAddress("1KF8kUVHK42XzgcmJF4Lxz4wcL5WDL97PB"); payment.Outputs.Add(new TxOut() { Value = Money.Coins(0.0004m), ScriptPubKey = programmingBlockchain.ScriptPubKey }); payment.Outputs.Add(new TxOut() { Value = Money.Coins(0.0059m), ScriptPubKey = paymentAddress.ScriptPubKey }); //Feedback ! var message = "Thanks ! :)"; var bytes = Encoding.UTF8.GetBytes(message); payment.Outputs.Add(new TxOut() { Value = Money.Zero, ScriptPubKey = TxNullDataTemplate.Instance.GenerateScriptPubKey(bytes) }); Console.WriteLine(payment); payment.Inputs[0].ScriptSig = paymentAddress.ScriptPubKey; //also OK : //payment.Inputs[0].ScriptSig = fundingTransaction.Outputs[1].ScriptPubKey; payment.Sign(paymentSecret, false); Console.WriteLine(payment); using (var node = Node.ConnectToLocal(Network.Main)) //Connect to the node { node.VersionHandshake(); //Say hello //Advertize your transaction (send just the hash) node.SendMessage(new InvPayload(InventoryType.MSG_TX, payment.GetHash())); //Send it node.SendMessage(new TxPayload(payment)); Thread.Sleep(500); //Wait a bit } return; }
public static void Play() { var node = Node.ConnectToLocal(Network.TestNet); node.VersionHandshake(); var chain = node.GetChain(); var r = chain.Validate(Network.TestNet, true); //Wallet wallet = new Wallet(new ExtKey(), Network.Main); //wallet.Connect(addrman: AddressManager.LoadPeerFile(@"E:\Program Files\Bitcoin\peers.dat", Network.Main)); //while(true) //{ // Thread.Sleep(1000); // Console.WriteLine(wallet.ConnectedNodes + " " + wallet.State); //} //var node = Node.ConnectToLocal(Network.Main); //node.VersionHandshake(); //var chain = node.GetChain(); //var v3 = chain.Tip // .EnumerateToGenesis() // .Take(1000) // .Aggregate(0, (a, b) => b.Header.Version == 3 ? a+1 : a); //var r = (double)v3 / (double)1000; Stopwatch watch = new Stopwatch(); watch.Start(); System.Net.ServicePointManager.DefaultConnectionLimit = 100; System.Net.ServicePointManager.Expect100Continue = false; var repo = new QBitNinjaTransactionRepository("http://rapidbase-test.azurewebsites.net/"); var colored = new OpenAsset.NoSqlColoredTransactionRepository(repo); var result = repo .Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de") .GetColoredTransaction(colored); watch.Stop(); //for(int i = 0 ; i < 100 ; i++) //{ // using(var node = Node.ConnectToLocal(Network.Main)) // { // node.VersionHandshake(); // var chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); // } //} }
public static void CanRequestTransactionOnQBit() { var repo = new QBitNinjaTransactionRepository(Network.Main); var result = repo.Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de"); Assert.NotNull(result); Assert.Equal("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de", result.GetHash().ToString()); result = repo.Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927df"); Assert.Null(result); repo = new QBitNinjaTransactionRepository(Network.TestNet); result = repo.Get("7d4c5d69a85c70ff70daff789114b9b76fb6d2613ac18764bd96f0a2b9358782"); Assert.NotNull(result); }
public static void Play() { new Key().PubKey.WitHash.GetAddress(Network.SegNet).ToString(); var node = Node.Connect(Network.SegNet, "qbitninja-server.cloudapp.net"); node.VersionHandshake(); uint256 p2wsh = null; uint256 p2pwkh = null; uint256 p2wshp2sh = null; uint256 p2wpkhp2sh = null; foreach (var block in node.GetBlocks()) { foreach (var tx in block.Transactions) { if (p2wsh != null && p2pwkh != null && p2wshp2sh != null && p2wpkhp2sh != null) { break; } if (!tx.IsCoinBase && !tx.Witness.IsEmpty) { foreach (var input in tx.Inputs.AsIndexedInputs()) { if (input.WitScript == WitScript.Empty) { continue; } if (input.ScriptSig == Script.Empty) { if (PayToWitPubKeyHashTemplate.Instance.ExtractWitScriptParameters(input.WitScript) != null) { p2pwkh = tx.GetHash(); } else { p2wsh = tx.GetHash(); } } else { if (PayToWitPubKeyHashTemplate.Instance.ExtractWitScriptParameters(input.WitScript) != null) { p2wpkhp2sh = tx.GetHash(); } else { p2wshp2sh = tx.GetHash(); } } break; } } } } var secret = new BitcoinSecret("QTrKVpsVwNUD9GayzdbUNz2NNDqiPgjd9RCprwSa4gmBFg3V2oik", Network.SegNet); var oo = secret.PubKey.WitHash.GetAddress(Network.SegNet); var key = new Key().GetBitcoinSecret(Network.SegNet); var aa = key.GetAddress(); foreach (var n in new[] { Network.Main, Network.SegNet }) { for (int i = 0; i < 2; i++) { BitcoinAddress addr = i == 0 ? (BitcoinAddress) new Key().PubKey.GetSegwitAddress(n) : new Key().ScriptPubKey.GetWitScriptAddress(n); var c = addr.ScriptPubKey.ToString(); } } var networks = Network.GetNetworks().ToArray(); List <Conflict> conflicts = new List <Conflict>(); for (int n = 0; n < networks.Length; n++) { for (int n2 = n + 1; n2 < networks.Length; n2++) { var a = networks[n]; var b = networks[n2]; if (a == Network.RegTest || b == Network.RegTest) { continue; } if (a == b) { throw new Exception(); } for (int i = 0; i < a.base58Prefixes.Length; i++) { for (int y = i + 1; y < a.base58Prefixes.Length; y++) { if (a.base58Prefixes[i] != null && b.base58Prefixes[y] != null) { var ae = Encoders.Hex.EncodeData(a.base58Prefixes[i]); var be = Encoders.Hex.EncodeData(b.base58Prefixes[y]); if (ae == be) { continue; } if (ae.StartsWith(be) || be.StartsWith(ae)) { ConflictPart ca = new ConflictPart(); ca.Network = a; ca.Type = (Base58Type)i; ca.Value = a.base58Prefixes[i]; ConflictPart cb = new ConflictPart(); cb.Network = b; cb.Type = (Base58Type)y; cb.Value = b.base58Prefixes[y]; Conflict cc = new Conflict(); cc.A = ca; cc.B = cb; conflicts.Add(cc); } } } } } } var rr = String.Join("\r\n", conflicts.OfType <object>().ToArray()); Console.WriteLine(); //ConcurrentChain chain = new ConcurrentChain(Network.Main); //ChainBehavior chainBehavior = new ChainBehavior(chain); //NodeConnectionParameters para = new NodeConnectionParameters(); //para.TemplateBehaviors.Add(chainBehavior); //NodesGroup group = new NodesGroup(Network.Main, para); //group.Connect(); //while(true) //{ // Thread.Sleep(1000); //} //Parallel.ForEach(Enumerable.Range(0, 10), _ => //{ // ConcurrentChain chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); //}); //Wallet wallet = new Wallet(new ExtKey(), Network.Main); //wallet.Connect(addrman: AddressManager.LoadPeerFile(@"E:\Program Files\Bitcoin\peers.dat", Network.Main)); //while(true) //{ // Thread.Sleep(1000); // Console.WriteLine(wallet.ConnectedNodes + " " + wallet.State); //} //var node = Node.ConnectToLocal(Network.Main); //node.VersionHandshake(); //var chain = node.GetChain(); //var v3 = chain.Tip // .EnumerateToGenesis() // .Take(1000) // .Aggregate(0, (a, b) => b.Header.Version == 3 ? a+1 : a); //var r = (double)v3 / (double)1000; Stopwatch watch = new Stopwatch(); watch.Start(); System.Net.ServicePointManager.DefaultConnectionLimit = 100; System.Net.ServicePointManager.Expect100Continue = false; var repo = new QBitNinjaTransactionRepository("http://rapidbase-test.azurewebsites.net/"); var colored = new OpenAsset.NoSqlColoredTransactionRepository(repo); var result = repo .Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de") .GetColoredTransaction(colored); watch.Stop(); //for(int i = 0 ; i < 100 ; i++) //{ // using(var node = Node.ConnectToLocal(Network.Main)) // { // node.VersionHandshake(); // var chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); // } //} }
public static void Play() { Transaction txxxxx = new Transaction("0100000000010213206299feb17742091c3cb2ab45faa3aa87922d3c030cafb3f798850a2722bf0000000000feffffffa12f2424b9599898a1d30f06e1ce55eba7fabfeee82ae9356f07375806632ff3010000006b483045022100fcc8cf3014248e1a0d6dcddf03e80f7e591605ad0dbace27d2c0d87274f8cd66022053fcfff64f35f22a14deb657ac57f110084fb07bb917c3b42e7d033c54c7717b012102b9e4dcc33c9cc9cb5f42b96dddb3b475b067f3e21125f79e10c853e5ca8fba31feffffff02206f9800000000001976a9144841b9874d913c430048c78a7b18baebdbea440588ac8096980000000000160014e4873ef43eac347471dd94bc899c51b395a509a502483045022100dd8250f8b5c2035d8feefae530b10862a63030590a851183cb61b3672eb4f26e022057fe7bc8593f05416c185d829b574290fb8706423451ebd0a0ae50c276b87b43012102179862f40b85fa43487500f1d6b13c864b5eb0a83999738db0f7a6b91b2ec64f00db080000"); Script scriptCode = new Script("OP_DUP OP_HASH160 e4873ef43eac347471dd94bc899c51b395a509a5 OP_EQUALVERIFY OP_CHECKSIG"); var rrrr = Script.SignatureHash(scriptCode, txxxxx, 0, SigHash.All, Money.Satoshis(10000000), HashVersion.Witness); //Console.WriteLine(total); new Key().PubKey.WitHash.GetAddress(Network.SegNet).ToString(); var node = Node.Connect(Network.SegNet, "qbitninja-server.cloudapp.net"); node.VersionHandshake(); uint256 p2wsh = null; uint256 p2pwkh = null; uint256 p2wshp2sh = null; uint256 p2wpkhp2sh = null; foreach(var block in node.GetBlocks()) { foreach(var tx in block.Transactions) { if(p2wsh != null && p2pwkh != null && p2wshp2sh != null && p2wpkhp2sh != null) break; if(!tx.IsCoinBase && tx.HasWitness) { foreach(var input in tx.Inputs.AsIndexedInputs()) { if(input.WitScript == WitScript.Empty) continue; if(input.ScriptSig == Script.Empty) { if(PayToWitPubKeyHashTemplate.Instance.ExtractWitScriptParameters(input.WitScript) != null) p2pwkh = tx.GetHash(); else p2wsh = tx.GetHash(); } else { if(PayToWitPubKeyHashTemplate.Instance.ExtractWitScriptParameters(input.WitScript) != null) p2wpkhp2sh = tx.GetHash(); else p2wshp2sh = tx.GetHash(); } break; } } } } var secret = new BitcoinSecret("QTrKVpsVwNUD9GayzdbUNz2NNDqiPgjd9RCprwSa4gmBFg3V2oik", Network.SegNet); var oo = secret.PubKey.WitHash.GetAddress(Network.SegNet); var key = new Key().GetBitcoinSecret(Network.SegNet); var aa = key.GetAddress(); foreach(var n in new[] { Network.Main, Network.SegNet }) { for(int i = 0 ; i < 2 ; i++) { BitcoinAddress addr = i == 0 ? (BitcoinAddress)new Key().PubKey.GetSegwitAddress(n) : new Key().ScriptPubKey.GetWitScriptAddress(n); var c = addr.ScriptPubKey.ToString(); } } var networks = Network.GetNetworks().ToArray(); List<Conflict> conflicts = new List<Conflict>(); for(int n = 0 ; n < networks.Length ; n++) { for(int n2 = n + 1 ; n2 < networks.Length ; n2++) { var a = networks[n]; var b = networks[n2]; if(a == Network.RegTest || b == Network.RegTest) continue; if(a == b) throw new Exception(); for(int i = 0 ; i < a.base58Prefixes.Length ; i++) { for(int y = i + 1 ; y < a.base58Prefixes.Length ; y++) { if(a.base58Prefixes[i] != null && b.base58Prefixes[y] != null) { var ae = Encoders.Hex.EncodeData(a.base58Prefixes[i]); var be = Encoders.Hex.EncodeData(b.base58Prefixes[y]); if(ae == be) continue; if(ae.StartsWith(be) || be.StartsWith(ae)) { ConflictPart ca = new ConflictPart(); ca.Network = a; ca.Type = (Base58Type)i; ca.Value = a.base58Prefixes[i]; ConflictPart cb = new ConflictPart(); cb.Network = b; cb.Type = (Base58Type)y; cb.Value = b.base58Prefixes[y]; Conflict cc = new Conflict(); cc.A = ca; cc.B = cb; conflicts.Add(cc); } } } } } } var rr = String.Join("\r\n", conflicts.OfType<object>().ToArray()); Console.WriteLine(); //ConcurrentChain chain = new ConcurrentChain(Network.Main); //ChainBehavior chainBehavior = new ChainBehavior(chain); //NodeConnectionParameters para = new NodeConnectionParameters(); //para.TemplateBehaviors.Add(chainBehavior); //NodesGroup group = new NodesGroup(Network.Main, para); //group.Connect(); //while(true) //{ // Thread.Sleep(1000); //} //Parallel.ForEach(Enumerable.Range(0, 10), _ => //{ // ConcurrentChain chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); //}); //Wallet wallet = new Wallet(new ExtKey(), Network.Main); //wallet.Connect(addrman: AddressManager.LoadPeerFile(@"E:\Program Files\Bitcoin\peers.dat", Network.Main)); //while(true) //{ // Thread.Sleep(1000); // Console.WriteLine(wallet.ConnectedNodes + " " + wallet.State); //} //var node = Node.ConnectToLocal(Network.Main); //node.VersionHandshake(); //var chain = node.GetChain(); //var v3 = chain.Tip // .EnumerateToGenesis() // .Take(1000) // .Aggregate(0, (a, b) => b.Header.Version == 3 ? a+1 : a); //var r = (double)v3 / (double)1000; Stopwatch watch = new Stopwatch(); watch.Start(); System.Net.ServicePointManager.DefaultConnectionLimit = 100; System.Net.ServicePointManager.Expect100Continue = false; var repo = new QBitNinjaTransactionRepository("http://rapidbase-test.azurewebsites.net/"); var colored = new OpenAsset.NoSqlColoredTransactionRepository(repo); var result = repo .Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de") .GetColoredTransaction(colored); watch.Stop(); //for(int i = 0 ; i < 100 ; i++) //{ // using(var node = Node.ConnectToLocal(Network.Main)) // { // node.VersionHandshake(); // var chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); // } //} }
public static void CanRequestTransactionOnQBit() { var repo = new QBitNinjaTransactionRepository(Network.Main); var result = repo.Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de"); Assert.NotNull(result); Assert.Equal("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de", result.GetHash().ToString()); result = repo.Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927df"); Assert.Null(result); repo = new QBitNinjaTransactionRepository(Network.TestNet); result = repo.Get("7d4c5d69a85c70ff70daff789114b9b76fb6d2613ac18764bd96f0a2b9358782"); Assert.NotNull(result); }
public static void Play() { for(int i = 0 ; i < 400000 ; i++) { var node = Node.Connect(Network.Main, "23.102.26.138:1273"); node.StateChanged += (s, a) => { if(node.State == NodeState.HandShaked) { ConcurrentChain chain = new ConcurrentChain(Network.Main); node.SynchronizeChain(chain); } }; node.VersionHandshake(); node.DisconnectAsync(); } //Parallel.ForEach(Enumerable.Range(0, 10), _ => //{ // ConcurrentChain chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); //}); //Wallet wallet = new Wallet(new ExtKey(), Network.Main); //wallet.Connect(addrman: AddressManager.LoadPeerFile(@"E:\Program Files\Bitcoin\peers.dat", Network.Main)); //while(true) //{ // Thread.Sleep(1000); // Console.WriteLine(wallet.ConnectedNodes + " " + wallet.State); //} //var node = Node.ConnectToLocal(Network.Main); //node.VersionHandshake(); //var chain = node.GetChain(); //var v3 = chain.Tip // .EnumerateToGenesis() // .Take(1000) // .Aggregate(0, (a, b) => b.Header.Version == 3 ? a+1 : a); //var r = (double)v3 / (double)1000; Stopwatch watch = new Stopwatch(); watch.Start(); System.Net.ServicePointManager.DefaultConnectionLimit = 100; System.Net.ServicePointManager.Expect100Continue = false; var repo = new QBitNinjaTransactionRepository("http://rapidbase-test.azurewebsites.net/"); var colored = new OpenAsset.NoSqlColoredTransactionRepository(repo); var result = repo .Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de") .GetColoredTransaction(colored); watch.Stop(); //for(int i = 0 ; i < 100 ; i++) //{ // using(var node = Node.ConnectToLocal(Network.Main)) // { // node.VersionHandshake(); // var chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); // } //} }
public static void Play() { new Key().PubKey.WitHash.GetAddress(Network.SegNet).ToString(); var node = Node.Connect(Network.SegNet, "qbitninja-server.cloudapp.net"); node.VersionHandshake(); uint256 p2wsh = null; uint256 p2pwkh = null; uint256 p2wshp2sh = null; uint256 p2wpkhp2sh = null; foreach(var block in node.GetBlocks()) { foreach(var tx in block.Transactions) { if(p2wsh != null && p2pwkh != null && p2wshp2sh != null && p2wpkhp2sh != null) break; if(!tx.IsCoinBase && !tx.Witness.IsEmpty) { foreach(var input in tx.Inputs.AsIndexedInputs()) { if(input.WitScript == WitScript.Empty) continue; if(input.ScriptSig == Script.Empty) { if(PayToWitPubKeyHashTemplate.Instance.ExtractWitScriptParameters(input.WitScript) != null) p2pwkh = tx.GetHash(); else p2wsh = tx.GetHash(); } else { if(PayToWitPubKeyHashTemplate.Instance.ExtractWitScriptParameters(input.WitScript) != null) p2wpkhp2sh = tx.GetHash(); else p2wshp2sh = tx.GetHash(); } break; } } } } var secret = new BitcoinSecret("QTrKVpsVwNUD9GayzdbUNz2NNDqiPgjd9RCprwSa4gmBFg3V2oik", Network.SegNet); var oo = secret.PubKey.WitHash.GetAddress(Network.SegNet); var key = new Key().GetBitcoinSecret(Network.SegNet); var aa = key.GetAddress(); foreach(var n in new[]{Network.Main, Network.SegNet}) { for(int i = 0; i < 2;i++) { BitcoinAddress addr = i == 0 ? (BitcoinAddress)new Key().PubKey.GetSegwitAddress(n) : new Key().ScriptPubKey.GetWitScriptAddress(n); var c = addr.ScriptPubKey.ToString(); } } var networks = Network.GetNetworks().ToArray(); List<Conflict> conflicts = new List<Conflict>(); for(int n = 0 ; n < networks.Length ; n++) { for(int n2 = n+1; n2 < networks.Length ; n2++) { var a = networks[n]; var b = networks[n2]; if(a == Network.RegTest || b == Network.RegTest) continue; if(a == b) throw new Exception(); for(int i = 0 ; i < a.base58Prefixes.Length ; i++) { for(int y = i + 1 ; y < a.base58Prefixes.Length ; y++) { if(a.base58Prefixes[i] != null && b.base58Prefixes[y] != null) { var ae = Encoders.Hex.EncodeData(a.base58Prefixes[i]); var be = Encoders.Hex.EncodeData(b.base58Prefixes[y]); if(ae == be) continue; if(ae.StartsWith(be) || be.StartsWith(ae)) { ConflictPart ca = new ConflictPart(); ca.Network = a; ca.Type = (Base58Type)i; ca.Value = a.base58Prefixes[i]; ConflictPart cb = new ConflictPart(); cb.Network = b; cb.Type = (Base58Type)y; cb.Value = b.base58Prefixes[y]; Conflict cc = new Conflict(); cc.A = ca; cc.B = cb; conflicts.Add(cc); } } } } } } var rr = String.Join("\r\n", conflicts.OfType<object>().ToArray()); Console.WriteLine(); //ConcurrentChain chain = new ConcurrentChain(Network.Main); //ChainBehavior chainBehavior = new ChainBehavior(chain); //NodeConnectionParameters para = new NodeConnectionParameters(); //para.TemplateBehaviors.Add(chainBehavior); //NodesGroup group = new NodesGroup(Network.Main, para); //group.Connect(); //while(true) //{ // Thread.Sleep(1000); //} //Parallel.ForEach(Enumerable.Range(0, 10), _ => //{ // ConcurrentChain chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); //}); //Wallet wallet = new Wallet(new ExtKey(), Network.Main); //wallet.Connect(addrman: AddressManager.LoadPeerFile(@"E:\Program Files\Bitcoin\peers.dat", Network.Main)); //while(true) //{ // Thread.Sleep(1000); // Console.WriteLine(wallet.ConnectedNodes + " " + wallet.State); //} //var node = Node.ConnectToLocal(Network.Main); //node.VersionHandshake(); //var chain = node.GetChain(); //var v3 = chain.Tip // .EnumerateToGenesis() // .Take(1000) // .Aggregate(0, (a, b) => b.Header.Version == 3 ? a+1 : a); //var r = (double)v3 / (double)1000; Stopwatch watch = new Stopwatch(); watch.Start(); System.Net.ServicePointManager.DefaultConnectionLimit = 100; System.Net.ServicePointManager.Expect100Continue = false; var repo = new QBitNinjaTransactionRepository("http://rapidbase-test.azurewebsites.net/"); var colored = new OpenAsset.NoSqlColoredTransactionRepository(repo); var result = repo .Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de") .GetColoredTransaction(colored); watch.Stop(); //for(int i = 0 ; i < 100 ; i++) //{ // using(var node = Node.ConnectToLocal(Network.Main)) // { // node.VersionHandshake(); // var chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); // } //} }
public static void Play() { var networks = Network.GetNetworks().ToArray(); List<Conflict> conflicts = new List<Conflict>(); for(int n = 0 ; n < networks.Length ; n++) { for(int n2 = n+1; n2 < networks.Length ; n2++) { var a = networks[n]; var b = networks[n2]; if(a == Network.RegTest || b == Network.RegTest) continue; if(a == b) throw new Exception(); for(int i = 0 ; i < a.base58Prefixes.Length ; i++) { for(int y = i + 1 ; y < a.base58Prefixes.Length ; y++) { if(a.base58Prefixes[i] != null && b.base58Prefixes[y] != null) { var ae = Encoders.Hex.EncodeData(a.base58Prefixes[i]); var be = Encoders.Hex.EncodeData(b.base58Prefixes[y]); if(ae == be) continue; if(ae.StartsWith(be) || be.StartsWith(ae)) { ConflictPart ca = new ConflictPart(); ca.Network = a; ca.Type = (Base58Type)i; ca.Value = a.base58Prefixes[i]; ConflictPart cb = new ConflictPart(); cb.Network = b; cb.Type = (Base58Type)y; cb.Value = b.base58Prefixes[y]; Conflict cc = new Conflict(); cc.A = ca; cc.B = cb; conflicts.Add(cc); } } } } } } var rr = String.Join("\r\n", conflicts.OfType<object>().ToArray()); Console.WriteLine(); //ConcurrentChain chain = new ConcurrentChain(Network.Main); //ChainBehavior chainBehavior = new ChainBehavior(chain); //NodeConnectionParameters para = new NodeConnectionParameters(); //para.TemplateBehaviors.Add(chainBehavior); //NodesGroup group = new NodesGroup(Network.Main, para); //group.Connect(); //while(true) //{ // Thread.Sleep(1000); //} //Parallel.ForEach(Enumerable.Range(0, 10), _ => //{ // ConcurrentChain chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); //}); //Wallet wallet = new Wallet(new ExtKey(), Network.Main); //wallet.Connect(addrman: AddressManager.LoadPeerFile(@"E:\Program Files\Bitcoin\peers.dat", Network.Main)); //while(true) //{ // Thread.Sleep(1000); // Console.WriteLine(wallet.ConnectedNodes + " " + wallet.State); //} //var node = Node.ConnectToLocal(Network.Main); //node.VersionHandshake(); //var chain = node.GetChain(); //var v3 = chain.Tip // .EnumerateToGenesis() // .Take(1000) // .Aggregate(0, (a, b) => b.Header.Version == 3 ? a+1 : a); //var r = (double)v3 / (double)1000; Stopwatch watch = new Stopwatch(); watch.Start(); System.Net.ServicePointManager.DefaultConnectionLimit = 100; System.Net.ServicePointManager.Expect100Continue = false; var repo = new QBitNinjaTransactionRepository("http://rapidbase-test.azurewebsites.net/"); var colored = new OpenAsset.NoSqlColoredTransactionRepository(repo); var result = repo .Get("c3462373f1a722c66cbb1b93712df94aa7b3731f4142cd8413f10c9e872927de") .GetColoredTransaction(colored); watch.Stop(); //for(int i = 0 ; i < 100 ; i++) //{ // using(var node = Node.ConnectToLocal(Network.Main)) // { // node.VersionHandshake(); // var chain = new ConcurrentChain(Network.Main); // node.SynchronizeChain(chain); // } //} }