Пример #1
0
        private async Task Peer_OnVersion(BitcoinPeer s, bitcoin_lib.P2P.Version v)
        {
            var va = new VerAck();
            await s.WriteMessage(va);

            Console.WriteLine($"Client connected {v.UserAgent}");
        }
Пример #2
0
        private async Task Peer_OnPing(BitcoinPeer s, Ping p)
        {
            var pong = new Pong();

            pong.Nonce = p.Nonce;

            await s.WriteMessage(pong);
        }
Пример #3
0
        public BitcoinNodePeer(BitcoinPeer p)
        {
            Peer                = p;
            Peer.OnAddr        += Peer_OnAddr;
            Peer.OnAlert       += Peer_OnAlert;
            Peer.OnFeeFilter   += Peer_OnFeeFilter;
            Peer.OnFilterAdd   += Peer_OnFilterAdd;
            Peer.OnFilterClear += Peer_OnFilterClear;
            Peer.OnFilterLoad  += Peer_OnFilterLoad;
            Peer.OnGetAddr     += Peer_OnGetAddr;
            Peer.OnGetBlocks   += Peer_OnGetBlocks;
            Peer.OnGetData     += Peer_OnGetData;
            Peer.OnGetHeaders  += Peer_OnGetHeaders;
            Peer.OnHeaders     += Peer_OnHeaders;
            Peer.OnInv         += Peer_OnInv;
            Peer.OnMemPool     += Peer_OnMemPool;
            Peer.OnNotFound    += Peer_OnNotFound;
            Peer.OnPing        += Peer_OnPing;
            Peer.OnPong        += Peer_OnPong;
            Peer.OnReject      += Peer_OnReject;
            Peer.OnSendHeaders += Peer_OnSendHeaders;
            Peer.OnVerAck      += Peer_OnVerAck;
            Peer.OnVersion     += Peer_OnVersion;

            Peer.Start();

            //Send version
            Ver = new bitcoin_lib.P2P.Version($"/hashstream:0.0.1-alpha/");
            var nd = new byte[9];

            new Random().NextBytes(nd);
            Ver.Nonce         = BitConverter.ToUInt64(nd, 0);
            Ver.RecvIp        = ((IPEndPoint)Peer.RemoteEndpoint).Address;
            Ver.RecvPort      = (UInt16)((IPEndPoint)Peer.RemoteEndpoint).Port;
            Ver.RecvServices  = 0;
            Ver.StartHeight   = 0;
            Ver.Timestamp     = (UInt64)DateTimeOffset.Now.ToUnixTimeSeconds();
            Ver.TransIp       = IPAddress.None;
            Ver.TransPort     = 0;
            Ver.TransServices = (UInt64)Services.NODE_NETWORK;

            Peer.WriteMessage(Ver);
        }