コード例 #1
0
        public static NetAddr FromStream(Stream s)
        {
            NetAddr x = new NetAddr();

            x.Read(s);
            return(x);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
ファイル: Version.cs プロジェクト: ystallonne/Bitcoin-Tool
 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();
 }
コード例 #4
0
ファイル: Version.cs プロジェクト: thetooi/Bitcoin-Tool
        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();
        }
コード例 #5
0
ファイル: Version.cs プロジェクト: ystallonne/Bitcoin-Tool
        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;
        }
コード例 #6
0
ファイル: Version.cs プロジェクト: thetooi/Bitcoin-Tool
        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);
        }
コード例 #7
0
        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();
        }
コード例 #8
0
ファイル: NetAddr.cs プロジェクト: ystallonne/Bitcoin-Tool
 public static NetAddr FromStream(Stream s)
 {
     NetAddr x = new NetAddr();
     x.Read(s);
     return x;
 }