예제 #1
0
 def test_expiring_dict1(self):
     e = expiring_dict.ExpiringDict(3, get_touches=True)
     e[1] = 2
     yield deferral.sleep(1.5)
     assert 1 in e
     yield deferral.sleep(3)
     assert 1 not in e
 def test_expiring_dict2(self):
     e = expiring_dict.ExpiringDict(3, get_touches=True)
     e[1] = 2
     yield deferral.sleep(2.25)
     e[1]
     yield deferral.sleep(2.25)
     assert 1 in e
예제 #3
0
 def download_shares():
     while True:
         desired = yield self.node.desired_var.get_when_satisfies(lambda val: len(val) != 0)
         peer_addr, share_hash = random.choice(desired)
         
         if len(self.peers) == 0:
             yield deferral.sleep(1)
             continue
         peer = random.choice(self.peers.values())
         
         print 'Requesting parent share %s from %s' % (p2pool_data.format_hash(share_hash), '%s:%i' % peer.addr)
         try:
             shares = yield peer.get_shares(
                 hashes=[share_hash],
                 parents=random.randrange(500), # randomize parents so that we eventually get past a too large block of shares
                 stops=list(set(self.node.tracker.heads) | set(
                     self.node.tracker.get_nth_parent_hash(head, min(max(0, self.node.tracker.get_height_and_last(head)[0] - 1), 10)) for head in self.node.tracker.heads
                 ))[:100],
             )
         except defer.TimeoutError:
             print 'Share request timed out!'
             continue
         except:
             log.err(None, 'in download_shares:')
             continue
         
         if not shares:
             yield deferral.sleep(1) # sleep so we don't keep rerequesting the same share nobody has
             continue
         self.handle_shares([(share, []) for share in shares], peer)
 def test_expiring_dict1(self):
     e = expiring_dict.ExpiringDict(3, get_touches=True)
     e[1] = 2
     yield deferral.sleep(1.5)
     assert 1 in e
     yield deferral.sleep(3)
     assert 1 not in e
예제 #5
0
 def test_expiring_dict3(self):
     e = expiring_dict.ExpiringDict(3, get_touches=False)
     e[1] = 2
     yield deferral.sleep(2.25)
     e[1]
     yield deferral.sleep(2.25)
     assert 1 not in e
 def test_expiring_dict3(self):
     e = expiring_dict.ExpiringDict(3, get_touches=False)
     e[1] = 2
     yield deferral.sleep(2.25)
     e[1]
     yield deferral.sleep(2.25)
     assert 1 not in e
예제 #7
0
    def test_nodes(self):
        N = 3
        SHARES = 600

        bitd = bitcoind()

        nodes = []
        for i in xrange(N):
            nodes.append((yield MiniNode.start(mynet, bitd, bitd, [mn.n.p2p_node.serverfactory.listen_port.getHost().port for mn in nodes], [])))

        yield deferral.sleep(3)

        for i in xrange(SHARES):
            proxy = jsonrpc.HTTPProxy('http://127.0.0.1:' + str(random.choice(nodes).web_port.getHost().port),
                headers=dict(Authorization='Basic ' + base64.b64encode('user/0:password')))
            blah = yield proxy.rpc_getwork()
            yield proxy.rpc_getwork(blah['data'])
            yield deferral.sleep(.05)
            print i
            print type(nodes[0].n.tracker.items[nodes[0].n.best_share_var.value])

        # crawl web pages
        from p2pool import web
        stop_event = variable.Event()
        web2_root = web.get_web_root(nodes[0].wb, tempfile.mkdtemp(), variable.Variable({'errors': '', 'version': 100000}), stop_event)
        web2_port = reactor.listenTCP(0, server.Site(web2_root))
        for name in web2_root.listNames() + ['web/' + x for x in web2_root.getChildWithDefault('web', None).listNames()]:
            if name in ['web/graph_data', 'web/share', 'web/share_data', 'web/payout_address']: continue
            print
            print name
            try:
                res = yield client.getPage('http://127.0.0.1:%i/%s' % (web2_port.getHost().port, name))
            except:
                import traceback
                traceback.print_exc()
            else:
                print repr(res)[:100]
            print
        yield web2_port.stopListening()
        stop_event.happened()
        del web2_root

        yield deferral.sleep(3)

        for i, n in enumerate(nodes):
            assert len(n.n.tracker.items) == SHARES, (i, len(n.n.tracker.items))
            assert n.n.tracker.verified.get_height(n.n.best_share_var.value) == SHARES, (i, n.n.tracker.verified.get_height(n.n.best_share_var.value))
            assert type(n.n.tracker.items[nodes[0].n.best_share_var.value]) is (data.Share.SUCCESSOR if data.Share.SUCCESSOR is not None else data.Share)
            assert type(n.n.tracker.items[n.n.tracker.get_nth_parent_hash(nodes[0].n.best_share_var.value, SHARES - 5)]) is data.Share

        for n in nodes:
            yield n.stop()

        del nodes, n
        import gc
        gc.collect()
        gc.collect()
        gc.collect()

        yield deferral.sleep(20) # waiting for work_poller to exit
예제 #8
0
 def test_expiring_dict2(self):
     e = expiring_dict.ExpiringDict(3, get_touches=True)
     e[1] = 2
     yield deferral.sleep(2.25)
     e[1]
     yield deferral.sleep(2.25)
     assert 1 in e
예제 #9
0
 def test_nodes(self):
     N = 3
     SHARES = 600
     
     bitd = mued()
     
     nodes = []
     for i in xrange(N):
         nodes.append((yield MiniNode.start(mynet, bitd, bitd, [mn.n.p2p_node.serverfactory.listen_port.getHost().port for mn in nodes], [])))
     
     yield deferral.sleep(3)
     
     for i in xrange(SHARES):
         proxy = jsonrpc.HTTPProxy('http://127.0.0.1:' + str(random.choice(nodes).web_port.getHost().port),
             headers=dict(Authorization='Basic ' + base64.b64encode('user/0:password')))
         blah = yield proxy.rpc_getwork()
         yield proxy.rpc_getwork(blah['data'])
         yield deferral.sleep(.05)
         print i
         print type(nodes[0].n.tracker.items[nodes[0].n.best_share_var.value])
     
     # crawl web pages
     from p2pool import web
     stop_event = variable.Event()
     web2_root = web.get_web_root(nodes[0].wb, tempfile.mkdtemp(), variable.Variable(None), stop_event)
     web2_port = reactor.listenTCP(0, server.Site(web2_root))
     for name in web2_root.listNames() + ['web/' + x for x in web2_root.getChildWithDefault('web', None).listNames()]:
         if name in ['web/graph_data', 'web/share', 'web/share_data']: continue
         print
         print name
         try:
             res = yield client.getPage('http://127.0.0.1:%i/%s' % (web2_port.getHost().port, name))
         except:
             import traceback
             traceback.print_exc()
         else:
             print repr(res)[:100]
         print
     yield web2_port.stopListening()
     stop_event.happened()
     del web2_root
     
     yield deferral.sleep(3)
     
     for i, n in enumerate(nodes):
         assert len(n.n.tracker.items) == SHARES, (i, len(n.n.tracker.items))
         assert n.n.tracker.verified.get_height(n.n.best_share_var.value) == SHARES, (i, n.n.tracker.verified.get_height(n.n.best_share_var.value))
         assert type(n.n.tracker.items[nodes[0].n.best_share_var.value]) is (data.Share.SUCCESSOR if data.Share.SUCCESSOR is not None else data.Share)
         assert type(n.n.tracker.items[n.n.tracker.get_nth_parent_hash(nodes[0].n.best_share_var.value, SHARES - 5)]) is data.Share
     
     for n in nodes:
         yield n.stop()
     
     del nodes, n
     import gc
     gc.collect()
     gc.collect()
     gc.collect()
     
     yield deferral.sleep(20) # waiting for work_poller to exit
예제 #10
0
        def download_shares():
            while True:
                desired = yield self.node.desired_var.get_when_satisfies(
                    lambda val: len(val) != 0)
                peer2, share_hash = random.choice(desired)

                if len(self.peers) == 0:
                    yield deferral.sleep(1)
                    continue
                peer = random.choice(self.peers.values())

                print 'Requesting parent share %s from %s' % (
                    p2pool_data.format_hash(share_hash), '%s:%i' % peer.addr)
                try:
                    shares = yield peer.get_shares(
                        hashes=[share_hash],
                        parents=500,
                        stops=[],
                    )
                except:
                    log.err(None, 'in download_shares:')
                    continue

                if not shares:
                    yield deferral.sleep(
                        1
                    )  # sleep so we don't keep rerequesting the same share nobody has
                    continue
                self.handle_shares(shares, peer)
예제 #11
0
파일: node.py 프로젝트: tmagik/catoshi
 def download_shares():
     while True:
         desired = yield self.node.desired_var.get_when_satisfies(lambda val: len(val) != 0)
         peer_addr, share_hash = random.choice(desired)
         
         if len(self.peers) == 0:
             yield deferral.sleep(1)
             continue
         peer = random.choice(self.peers.values())
         
         print 'Requesting parent share %s from %s' % (p2pool_data.format_hash(share_hash), '%s:%i' % peer.addr)
         try:
             shares = yield peer.get_shares(
                 hashes=[share_hash],
                 parents=random.randrange(500), # randomize parents so that we eventually get past a too large block of shares
                 stops=list(set(self.node.tracker.heads) | set(
                     self.node.tracker.get_nth_parent_hash(head, min(max(0, self.node.tracker.get_height_and_last(head)[0] - 1), 10)) for head in self.node.tracker.heads
                 ))[:100],
             )
         except defer.TimeoutError:
             print 'Share request timed out!'
             continue
         except:
             log.err(None, 'in download_shares:')
             continue
         
         if not shares:
             yield deferral.sleep(1) # sleep so we don't keep rerequesting the same share nobody has
             continue
         self.handle_shares([(share, []) for share in shares], peer)
예제 #12
0
    def test_node(self):
        bitd = dcrd()

        mm_root = resource.Resource()
        mm_root.putChild('', jsonrpc.HTTPServer(mm_provider))
        mm_port = reactor.listenTCP(0, server.Site(mm_root))

        n = node.Node(bitd, bitd, [], [], mynet)
        yield n.start()

        wb = work.WorkerBridge(node=n,
                               my_pubkey_hash=42,
                               donation_percentage=2,
                               merged_urls=[('http://127.0.0.1:%i' %
                                             (mm_port.getHost().port, ), '')],
                               worker_fee=3,
                               args=math.Object(donation_percentage=2,
                                                address='foo',
                                                worker_fee=3,
                                                timeaddresses=1000),
                               pubkeys=main.keypool(),
                               dcrd=bitd)
        web_root = resource.Resource()
        worker_interface.WorkerInterface(wb).attach_to(web_root)
        port = reactor.listenTCP(0, server.Site(web_root))

        proxy = jsonrpc.HTTPProxy(
            'http://127.0.0.1:' + str(port.getHost().port),
            headers=dict(Authorization='Basic ' +
                         base64.b64encode('user/0:password')))

        yield deferral.sleep(3)

        for i in xrange(100):
            blah = yield proxy.rpc_getwork()
            yield proxy.rpc_getwork(blah['data'])

        yield deferral.sleep(3)

        assert len(n.tracker.items) == 100
        assert n.tracker.verified.get_height(n.best_share_var.value) == 100

        wb.stop()
        n.stop()

        yield port.stopListening()
        del n, wb, web_root, port, proxy
        import gc
        gc.collect()
        gc.collect()
        gc.collect()

        yield deferral.sleep(20)  # waiting for work_poller to exit
        yield mm_port.stopListening()
예제 #13
0
    def test_node(self):
        bitd = dashd()

        mm_root = resource.Resource()
        mm_root.putChild("", jsonrpc.HTTPServer(mm_provider))
        mm_port = reactor.listenTCP(0, server.Site(mm_root))

        n = node.Node(bitd, bitd, [], [], mynet)
        yield n.start()

        wb = work.WorkerBridge(
            node=n,
            my_pubkey_hash=42,
            donation_percentage=2,
            merged_urls=[("http://127.0.0.1:%i" % (mm_port.getHost().port,), "")],
            worker_fee=3,
        )
        web_root = resource.Resource()
        worker_interface.WorkerInterface(wb).attach_to(web_root)
        port = reactor.listenTCP(0, server.Site(web_root))

        proxy = jsonrpc.HTTPProxy(
            "http://127.0.0.1:" + str(port.getHost().port),
            headers=dict(Authorization="Basic " + base64.b64encode("user/0:password")),
        )

        yield deferral.sleep(3)

        for i in xrange(100):
            blah = yield proxy.rpc_getwork()
            yield proxy.rpc_getwork(blah["data"])

        yield deferral.sleep(3)

        assert len(n.tracker.items) == 100
        assert n.tracker.verified.get_height(n.best_share_var.value) == 100

        wb.stop()
        n.stop()

        yield port.stopListening()
        del n, wb, web_root, port, proxy
        import gc

        gc.collect()
        gc.collect()
        gc.collect()

        yield deferral.sleep(20)  # waiting for work_poller to exit
        yield mm_port.stopListening()
예제 #14
0
파일: test_node.py 프로젝트: hua002/p2pool
    def test_nodes(self):
        N = 3
        SHARES = 600

        nodes = []
        for i in xrange(N):
            nodes.append((yield MiniNode.start(mynet, factory, bitcoind, [
                mn.n.p2p_node.serverfactory.listen_port.getHost().port
                for mn in nodes
            ], [])))

        yield deferral.sleep(3)

        for i in xrange(SHARES):
            proxy = jsonrpc.Proxy(
                'http://127.0.0.1:' +
                str(random.choice(nodes).web_port.getHost().port))
            blah = yield proxy.rpc_getwork()
            yield proxy.rpc_getwork(blah['data'])
            yield deferral.sleep(random.expovariate(1 / .1))
            print i
            print type(
                nodes[0].n.tracker.items[nodes[0].n.best_share_var.value])

        yield deferral.sleep(3)

        for i, n in enumerate(nodes):
            assert len(n.n.tracker.items) == SHARES, (i,
                                                      len(n.n.tracker.items))
            assert n.n.tracker.verified.get_height(
                n.n.best_share_var.value) == SHARES, (
                    i,
                    n.n.tracker.verified.get_height(n.n.best_share_var.value))
            assert type(n.n.tracker.items[
                nodes[0].n.best_share_var.value]) is data.Share
            assert type(n.n.tracker.items[n.n.tracker.get_nth_parent_hash(
                nodes[0].n.best_share_var.value, SHARES - 5)]) is data.Share

        for n in nodes:
            yield n.stop()

        del nodes, n
        import gc
        gc.collect()
        gc.collect()
        gc.collect()

        yield deferral.sleep(20)  # waiting for work_poller to exit
예제 #15
0
 def test_sleep(self):
     for i in xrange(10):
         length = random.expovariate(1 / 0.1)
         start = time.time()
         yield deferral.sleep(length)
         end = time.time()
         assert length <= end - start <= length + 0.1
예제 #16
0
 def test_sleep(self):
     for i in xrange(10):
         length = random.expovariate(1/0.1)
         start = time.time()
         yield deferral.sleep(length)
         end = time.time()
         assert length <= end - start <= length + 0.1
예제 #17
0
파일: test_p2p.py 프로젝트: GTRsdk/p2pool
 def test_sharereq(self):
     n = MyNode(lambda: None, 29333, networks.nets['bitcoin'], {}, set([('127.0.0.1', 9333)]), 0, 0, 0, 0)
     n.start()
     try:
         yield deferral.sleep(10)
     finally:
         n.stop()
예제 #18
0
파일: node.py 프로젝트: tmagik/catoshi
 def work_poller():
     while stop_signal.times == 0:
         flag = self.factory.new_block.get_deferred()
         try:
             self.bitcoind_work.set((yield helper.getwork(self.bitcoind, self.bitcoind_work.value['use_getblocktemplate'])))
         except:
             log.err()
         yield defer.DeferredList([flag, deferral.sleep(15)], fireOnOneCallback=True)
예제 #19
0
 def work_poller():
     while stop_signal.times == 0:
         flag = self.factory.new_block.get_deferred()
         try:
             self.bitcoind_work.set((yield helper.getwork(self.bitcoind, self.bitcoind_work.value['use_getblocktemplate'])))
         except:
             log.err()
         yield defer.DeferredList([flag, deferral.sleep(5)], fireOnOneCallback=True)
예제 #20
0
파일: node.py 프로젝트: nformant1/p2pool
 def work_poller():
     while stop_signal.times == 0:
         flag = self.factory.new_block.get_deferred()
         try:
             self.bitcoind_work.set((yield helper.getwork(self.bitcoind, self.bitcoind_work.value['use_getblocktemplate'], self.txidcache, self.feecache, self.feefifo, self.known_txs_var.value)))
             self.check_and_purge_txs()
         except:
             log.err()
         yield defer.DeferredList([flag, deferral.sleep(15)], fireOnOneCallback=True)
예제 #21
0
파일: p2p.py 프로젝트: GTRsdk/p2pool
 def _think2(self):
     while self.running:
         try:
             if len(self.addr_store) < self.preferred_storage and self.peers:
                 random.choice(self.peers.values()).send_getaddrs(count=8)
         except:
             log.err()
         
         yield deferral.sleep(random.expovariate(1/20))
예제 #22
0
파일: p2p.py 프로젝트: finway-china/p2pool
    def _think2(self):
        while self.running:
            try:
                if len(self.addr_store
                       ) < self.preferred_storage and self.peers:
                    random.choice(self.peers.values()).send_getaddrs(count=8)
            except:
                log.err()

            yield deferral.sleep(random.expovariate(1 / 20))
예제 #23
0
파일: test_node.py 프로젝트: hua002/p2pool
    def test_node(self):
        mm_root = resource.Resource()
        mm_root.putChild('', jsonrpc.Server(mm_provider))
        mm_port = reactor.listenTCP(0, server.Site(mm_root))

        n = node.Node(factory, bitcoind, [], [], mynet)
        yield n.start()

        wb = work.WorkerBridge(node=n,
                               my_pubkey_hash=42,
                               donation_percentage=2,
                               merged_urls=[('http://127.0.0.1:%i' %
                                             (mm_port.getHost().port, ), '')],
                               worker_fee=3)
        web_root = resource.Resource()
        worker_interface.WorkerInterface(wb).attach_to(web_root)
        port = reactor.listenTCP(0, server.Site(web_root))

        proxy = jsonrpc.Proxy('http://127.0.0.1:' + str(port.getHost().port))

        yield deferral.sleep(3)

        for i in xrange(100):
            blah = yield proxy.rpc_getwork()
            yield proxy.rpc_getwork(blah['data'])

        yield deferral.sleep(3)

        assert len(n.tracker.items) == 100
        assert n.tracker.verified.get_height(n.best_share_var.value) == 100

        wb.stop()
        n.stop()

        yield port.stopListening()
        del n, wb, web_root, port, proxy
        import gc
        gc.collect()
        gc.collect()
        gc.collect()

        yield deferral.sleep(20)  # waiting for work_poller to exit
        yield mm_port.stopListening()
예제 #24
0
    def test_node(self):
        bitd = bitcoind()

        mm_root = resource.Resource()
        mm_root.putChild('', jsonrpc.HTTPServer(mm_provider))
        mm_port = reactor.listenTCP(0, server.Site(mm_root))

        n = node.Node(bitd, bitd, [], [], mynet)
        yield n.start()

        wb = work.WorkerBridge(node=n, my_pubkey_hash=42, donation_percentage=2, merged_urls=[('http://127.0.0.1:%i' % (mm_port.getHost().port,), '')], worker_fee=3, args=math.Object(donation_percentage=2, address='foo', worker_fee=3, timeaddresses=1000), pubkeys=main.keypool(), bitcoind=bitd)
        web_root = resource.Resource()
        worker_interface.WorkerInterface(wb).attach_to(web_root)
        port = reactor.listenTCP(0, server.Site(web_root))

        proxy = jsonrpc.HTTPProxy('http://127.0.0.1:' + str(port.getHost().port),
            headers=dict(Authorization='Basic ' + base64.b64encode('user/0:password')))

        yield deferral.sleep(3)

        for i in xrange(100):
            blah = yield proxy.rpc_getwork()
            yield proxy.rpc_getwork(blah['data'])


        yield deferral.sleep(3)

        assert len(n.tracker.items) == 100
        assert n.tracker.verified.get_height(n.best_share_var.value) == 100

        wb.stop()
        n.stop()

        yield port.stopListening()
        del n, wb, web_root, port, proxy
        import gc
        gc.collect()
        gc.collect()
        gc.collect()

        yield deferral.sleep(20) # waiting for work_poller to exit
        yield mm_port.stopListening()
예제 #25
0
            def got_conn(self, conn):
                p2p.Node.got_conn(self, conn)

                yield deferral.sleep(0.5)

                new_mining_txs = dict(self.mining_txs_var.value)
                for i in xrange(3):
                    huge_tx = dict(version=0, tx_ins=[], tx_outs=[dict(value=0, script="x" * 900000)], lock_time=i)
                    new_mining_txs[bitcoin_data.hash256(bitcoin_data.tx_type.pack(huge_tx))] = huge_tx
                self.mining_txs_var.set(new_mining_txs)

                self.sent_time = reactor.seconds()
예제 #26
0
파일: p2p.py 프로젝트: smurfix/p2pool
 def _think(self):
     while self.running:
         try:
             if len(self.conns) < self.desired_conns and len(self.attempts) < self.max_attempts and self.node.addr_store:
                 (host, port), = self.node.get_good_peers(1)
                 
                 if (host, port) not in self.attempts:
                     #print 'Trying to connect to', host, port
                     reactor.connectTCP(host, port, self, timeout=5)
         except:
             log.err()
         
         yield deferral.sleep(random.expovariate(1/1))
예제 #27
0
파일: test_node.py 프로젝트: hua002/p2pool
 def test_node(self):
     mm_root = resource.Resource()
     mm_root.putChild('', jsonrpc.Server(mm_provider))
     mm_port = reactor.listenTCP(0, server.Site(mm_root))
     
     n = node.Node(factory, bitcoind, [], [], mynet)
     yield n.start()
     
     wb = work.WorkerBridge(node=n, my_pubkey_hash=42, donation_percentage=2, merged_urls=[('http://127.0.0.1:%i' % (mm_port.getHost().port,), '')], worker_fee=3)
     web_root = resource.Resource()
     worker_interface.WorkerInterface(wb).attach_to(web_root)
     port = reactor.listenTCP(0, server.Site(web_root))
     
     proxy = jsonrpc.Proxy('http://127.0.0.1:' + str(port.getHost().port))
     
     yield deferral.sleep(3)
     
     for i in xrange(100):
         blah = yield proxy.rpc_getwork()
         yield proxy.rpc_getwork(blah['data'])
     
     yield deferral.sleep(3)
     
     assert len(n.tracker.items) == 100
     assert n.tracker.verified.get_height(n.best_share_var.value) == 100
     
     wb.stop()
     n.stop()
     
     yield port.stopListening()
     del n, wb, web_root, port, proxy
     import gc
     gc.collect()
     gc.collect()
     gc.collect()
     
     yield deferral.sleep(20) # waiting for work_poller to exit
     yield mm_port.stopListening()
예제 #28
0
파일: test_node.py 프로젝트: hua002/p2pool
 def test_nodes(self):
     N = 3
     SHARES = 600
     
     nodes = []
     for i in xrange(N):
         nodes.append((yield MiniNode.start(mynet, factory, bitcoind, [mn.n.p2p_node.serverfactory.listen_port.getHost().port for mn in nodes], [])))
     
     yield deferral.sleep(3)
     
     for i in xrange(SHARES):
         proxy = jsonrpc.Proxy('http://127.0.0.1:' + str(random.choice(nodes).web_port.getHost().port))
         blah = yield proxy.rpc_getwork()
         yield proxy.rpc_getwork(blah['data'])
         yield deferral.sleep(random.expovariate(1/.1))
         print i
         print type(nodes[0].n.tracker.items[nodes[0].n.best_share_var.value])
 
     yield deferral.sleep(3)
     
     for i, n in enumerate(nodes):
         assert len(n.n.tracker.items) == SHARES, (i, len(n.n.tracker.items))
         assert n.n.tracker.verified.get_height(n.n.best_share_var.value) == SHARES, (i, n.n.tracker.verified.get_height(n.n.best_share_var.value))
         assert type(n.n.tracker.items[nodes[0].n.best_share_var.value]) is data.Share
         assert type(n.n.tracker.items[n.n.tracker.get_nth_parent_hash(nodes[0].n.best_share_var.value, SHARES - 5)]) is data.Share
     
     for n in nodes:
         yield n.stop()
     
     del nodes, n
     import gc
     gc.collect()
     gc.collect()
     gc.collect()
     
     yield deferral.sleep(20) # waiting for work_poller to exit
예제 #29
0
파일: p2p.py 프로젝트: gyver/p2pool
 def _think(self):
     while self.running:
         try:
             if len(self.peers) < self.desired_peers and len(self.attempts) < self.max_attempts and (len(self.preferred_addrs) or len(self.addr_store)):
                 if (random.randrange(2) and len(self.preferred_addrs)) or not len(self.addr_store):
                     host, port = random.choice(list(self.preferred_addrs))
                 else:
                     host, port = random.choice(self.addr_store.keys())
                 
                 if (host, port) not in self.attempts:
                     #print 'Trying to connect to', host, port
                     reactor.connectTCP(host, port, ClientFactory(self), timeout=10)
         except:
             log.err()
         
         yield deferral.sleep(random.expovariate(1/5))
예제 #30
0
 def got_conn(self, conn):
     p2p.Node.got_conn(self, conn)
     
     yield deferral.sleep(.5)
     
     new_mining_txs = dict(self.mining_txs_var.value)
     for i in xrange(3):
         huge_tx = dict(
             version=0,
             tx_ins=[],
             tx_outs=[dict(
                 value=0,
                 script='x'*900000,
             )],
             lock_time=i,
         )
         new_mining_txs[bitcoin_data.get_txid(huge_tx)] = huge_tx
     self.mining_txs_var.set(new_mining_txs)
     
     self.sent_time = reactor.seconds()
예제 #31
0
 def got_conn(self, conn):
     p2p.Node.got_conn(self, conn)
     
     yield deferral.sleep(.5)
     
     new_mining_txs = dict(self.mining_txs_var.value)
     for i in xrange(3):
         huge_tx = dict(
             version=0,
             tx_ins=[],
             tx_outs=[dict(
                 value=0,
                 script='x'*900000,
             )],
             lock_time=i,
         )
         new_mining_txs[starwels_data.get_txid(huge_tx)] = huge_tx
     self.mining_txs_var.set(new_mining_txs)
     
     self.sent_time = reactor.seconds()
예제 #32
0
 def got_conn(self, conn):
     p2p.Node.got_conn(self, conn)
     
     yield deferral.sleep(.5)
     
     new_mining_txs = dict(self.mining_txs_var.value)
     for i in xrange(3):
         huge_tx = dict(
             version=0,
             tx_ins=[],
             tx_outs=[dict(
                 value=0,
                 script='x'*900000,
             )],
             lock_time=i,
         )
         new_mining_txs[eternity_data.hash256(eternity_data.tx_type.pack(huge_tx))] = huge_tx
     self.mining_txs_var.set(new_mining_txs)
     
     self.sent_time = reactor.seconds()
예제 #33
0
파일: p2p.py 프로젝트: finway-china/p2pool
    def _think(self):
        while self.running:
            try:
                if len(self.peers) < self.desired_peers and len(
                        self.attempts) < self.max_attempts and (len(
                            self.preferred_addrs) or len(self.addr_store)):
                    if (random.randrange(2) and len(
                            self.preferred_addrs)) or not len(self.addr_store):
                        host, port = random.choice(list(self.preferred_addrs))
                    else:
                        (host, port), = self.get_good_peers(1)

                    if (host, port) not in self.attempts:
                        #print 'Trying to connect to', host, port
                        reactor.connectTCP(host,
                                           port,
                                           ClientFactory(self),
                                           timeout=5)
            except:
                log.err()

            yield deferral.sleep(random.expovariate(1 / 1))
예제 #34
0
 def got_conn(self, conn):
     p2p.Node.got_conn(self, conn)
     
     yield deferral.sleep(.5)
     
     new_mining_txs = dict(self.mining_txs_var.value)
     for i in xrange(3):
         huge_tx = dict(
             version=0,
             type=0,
             tx_ins=[],
             tx_outs=[dict(
                 value=0,
                 script='x'*900000,
             )],
             lock_time=i,
             extra_payload=None,
         )
         new_mining_txs[dash_data.hash256(dash_data.tx_type.pack(huge_tx))] = huge_tx
     self.mining_txs_var.set(new_mining_txs)
     
     self.sent_time = reactor.seconds()
예제 #35
0
 def _(before, after):
     yield deferral.sleep(random.expovariate(1/1))
     if self.factory.conn.value is None:
         return
     for tx_hash in set(after) - set(before):
         self.factory.conn.value.send_tx(tx=after[tx_hash])
예제 #36
0
파일: p2p.py 프로젝트: finway-china/p2pool
 def _think(self):
     while self.connected2:
         self.send_ping()
         yield deferral.sleep(random.expovariate(1 / 100))
예제 #37
0
파일: p2p.py 프로젝트: finway-china/p2pool
 def _think2(self):
     while self.connected2:
         self.send_addrme(port=self.node.port)
         #print 'sending addrme'
         yield deferral.sleep(
             random.expovariate(1 / (100 * len(self.node.peers) + 1)))
예제 #38
0
 def _(before, after):
     yield deferral.sleep(random.expovariate(1 / 1))
     if self.factory.conn.value is None:
         return
     for tx_hash in set(after) - set(before):
         self.factory.conn.value.send_tx(tx=after[tx_hash])
예제 #39
0
 def think():
     while True:
         yield deferral.sleep(1)
         print h.get_min_height(
             0xa285c3cb2a90ac7194cca034512748289e2526d9d7ae6ee7523)
예제 #40
0
파일: p2p.py 프로젝트: finway-china/p2pool
 def think():
     while True:
         yield deferral.sleep(1)
         print h.get_min_height(0xa285c3cb2a90ac7194cca034512748289e2526d9d7ae6ee7523)
예제 #41
0
파일: p2p.py 프로젝트: GTRsdk/p2pool
 def _think(self):
     while self.connected2:
         self.send_ping()
         yield deferral.sleep(random.expovariate(1/100))
예제 #42
0
파일: p2p.py 프로젝트: GTRsdk/p2pool
 def _think2(self):
     while self.connected2:
         self.send_addrme(port=self.node.port)
         #print 'sending addrme'
         yield deferral.sleep(random.expovariate(1/(100*len(self.node.peers) + 1)))