public static NetAddr FromStream(Stream s) { NetAddr x = new NetAddr(); x.Read(s); return(x); }
public void Read(Stream s) { BinaryReader br = new BinaryReader(s); addr_list = new TimeNetAddr[VarInt.FromStream(s)]; for (int i = 0; i < addr_list.Length; i++) { addr_list[i].time = br.ReadUInt32(); addr_list[i].net_addr = NetAddr.FromStream(s); } }
public void Read(Stream s) { BinaryReader br = new BinaryReader(s); version = br.ReadInt32(); services = (Services)br.ReadUInt64(); timestamp = br.ReadInt64(); addr_recv = NetAddr.FromStream(s); addr_from = NetAddr.FromStream(s); nonce = br.ReadUInt64(); user_agent = VarStr.FromStream(s); start_height = br.ReadInt32(); }
public static Version Default(NetAddr addr_recv, NetAddr addr_from, Int32 start_height) { Random rand = new Random(); String user_agent = "/Bitcoin-Tool:" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + "/"; Version v = new Version(); v.version = 60001; v.services = Services.NODE_NETWORK; v.timestamp = UnixTimestamp.Now; v.addr_recv = addr_recv; v.addr_from = addr_from; v.nonce = (((UInt64)rand.Next()) << 32) | (UInt32)rand.Next(); v.user_agent = new VarStr(user_agent); v.start_height = start_height; return v; }
public static Version Default(NetAddr addr_recv, NetAddr addr_from, Int32 start_height) { Random rand = new Random(); String user_agent = "/Bitcoin-Tool:" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + "/"; Version v = new Version(); v.version = 60001; v.services = Services.NODE_NETWORK; v.timestamp = UnixTimestamp.Now; v.addr_recv = addr_recv; v.addr_from = addr_from; v.nonce = (((UInt64)rand.Next()) << 32) | (UInt32)rand.Next(); v.user_agent = new VarStr(user_agent); v.start_height = start_height; return(v); }
static void _Main(string[] args) { TcpClient tcpClient = new TcpClient("10.1.1.40", 8333); NetworkStream ns = tcpClient.GetStream(); NetAddr localaddr = new NetAddr(Services.NODE_NETWORK, ((IPEndPoint)tcpClient.Client.LocalEndPoint).Address, (UInt16)((IPEndPoint)tcpClient.Client.LocalEndPoint).Port); NetAddr remaddr = new NetAddr(Services.NODE_NETWORK, ((IPEndPoint)tcpClient.Client.RemoteEndPoint).Address, (UInt16)((IPEndPoint)tcpClient.Client.RemoteEndPoint).Port); new Message("version", Version.Default(remaddr, localaddr, 0)).Write(ns); Tx tx = new Tx(HexString.ToByteArray("0100000001b924de36d37e9b46171036c2380dd3f86c33de7868b95f295c79d057abb876c9000000006c493046022100d35d290d515b2310a81850b14522f3965982ad059b08b7d6646372c9f6f98642022100d2d0fa06f8afa2a9df7bf7e06f901f08fc40882f486b292c217c96706912f23a012103b5091600a12d971b056170a682ea596b6680dd8a784f2960b1bfdc891155db44ffffffff0100ae4c2d000000001976a91443e86640aa84e2a53597e79109e912f8f9ebda1188ac00000000")); Message mtx = new Message("tx", tx); mtx.Write(ns); while (tcpClient.Client.Connected) { Message msg = Message.FromStream(ns); ISerialize p = msg.payload; Console.WriteLine(msg.payload); switch (msg.strcmd) { case "addr": break; case "alert": break; case "block": break; case "getaddr": { // Message m = new Message("addr", new Addr()); break; } case "getblocks": break; case "getdata": break; case "getheaders": break; case "headers": break; case "inv": { Inv inv = (Inv)msg.payload; new Message("getdata", new GetData(inv.inventory)).Write(ns); break; } case "ping": break; case "tx": break; case "verack": break; case "version": { Message m = new Message("verack", new VerAck()); m.Write(ns); break; } default: break; } } /* string line; Transaction txUnspent = new Transaction(HexString.ToByteArray("0100000001f165b1179cb8ed7057540375884214287cf1592f2325080364f0bd8ef51d638b010000006a47304402207cf76bb48434e70ff0ea86a949ec4191fff0c31fdbbf6441c28293a09cb6841d022039906ff8b98761aa0d113e975c7af277d091a3cb9aaceae07dffe91f13fd65830121031adaac125ad58a48d1289bd44624d569b3ace8f9c59e02557e8ad00787dc7e06ffffffff0100ae4c2d00000000232102004066b81e658b2535b951c309edc4807a5260d9f1387e5dfda2d91355e562efac00000000")); Address addr = new Address("1QJqE3KiyFBSCP12kTybW1ZRSeuJZTUwBY"); TxIn txIn = new TxIn(txUnspent.hash, 0, new Byte[0]); TxOut txOut = new TxOut(760000000, ScriptTemplate.PayToAddress(addr).ToBytes()); Transaction tx = new Transaction(1, new TxIn[] { txIn }, new TxOut[] { txOut }, 0); PrivateKey pk = PrivateKey.FromWIF("L1F95LNfoyGozceafTC1Pex8296YeF3EbsfETs22E83uhqVF5PBy"); tx.inputs[0].Sign(tx, txUnspent.outputs[0], pk); Console.WriteLine(HexString.FromByteArray(tx.ToBytes())); Script t = new Script(tx.inputs[0].scriptSig, txUnspent.outputs[0].scriptPubKey); Console.WriteLine(t.Evaluate(tx, 0)); /****/ /* int blockFileNum = 0; FileStream fs = new FileStream(@"C:\Users\Administrator\AppData\Roaming\Bitcoin\blocks\blk" + blockFileNum.ToString("D5") + ".dat", FileMode.Open); List<Block_Disk> blocks = new List<Block_Disk>(); List<Byte[]> blockHashes = new List<byte[]>(); List<Address> addrs = new List<Address>(); while (fs.Position < fs.Length) { Block_Disk b; b = Block_Disk.FromStream(fs); if (b.blockSize == 0) { blockFileNum++; try { fs = new FileStream(@"C:\Users\Administrator\AppData\Roaming\Bitcoin\blocks\blk" + blockFileNum.ToString("D5") + ".dat", FileMode.Open); } catch (FileNotFoundException) { break; } continue; } foreach (Transaction t in b.txns) foreach (TxOut txo in t.outputs) { addrs.Add(Address.FromScript(txo.script)); //Console.WriteLine(Address.FromScript(txo.script)); //Console.ReadLine(); } //blockHashes.Add(b.prev_block); //Console.WriteLine(HexString.FromByteArray(b.hash)); //blocks.Add(b); } Console.WriteLine(HexString.FromByteArray(blockHashes[blockHashes.Count() - 1])); /**/ Console.ReadLine(); }
public static NetAddr FromStream(Stream s) { NetAddr x = new NetAddr(); x.Read(s); return x; }