Merge branch 'query' into develop
This commit is contained in:
commit
db2e1d43d8
14
HOWTO.rst
14
HOWTO.rst
@ -137,10 +137,13 @@ wall-time::
|
|||||||
|
|
||||||
Machine A Machine B DB + Metadata
|
Machine A Machine B DB + Metadata
|
||||||
100,000 2m 30s 0 (unflushed)
|
100,000 2m 30s 0 (unflushed)
|
||||||
150,000 35m 4m 30s 0.2 GB
|
150,000 35m 4m 30s 0.2 GiB
|
||||||
180,000 1h 5m 9m 0.4 GB
|
180,000 1h 5m 9m 0.4 GiB
|
||||||
245,800 3h
|
245,800 3h 1h 30m 2.7 GiB
|
||||||
290,000 13h 15m 3.3 GB
|
290,000 13h 15m 3h 5m 3.3 GiB
|
||||||
|
307,000 17h 16m 3h 50m 4.1 GiB
|
||||||
|
343,000 6h 54m 6.0 GiB
|
||||||
|
386,600 17h 07m 7.0 GiB
|
||||||
|
|
||||||
Machine A: a low-spec 2011 1.6GHz AMD E-350 dual-core fanless CPU, 8GB
|
Machine A: a low-spec 2011 1.6GHz AMD E-350 dual-core fanless CPU, 8GB
|
||||||
RAM and a DragonFlyBSD HAMMER fileystem on an SSD. It requests blocks
|
RAM and a DragonFlyBSD HAMMER fileystem on an SSD. It requests blocks
|
||||||
@ -218,7 +221,6 @@ You can see the logs usefully like so::
|
|||||||
|
|
||||||
Here is typical log output on startup::
|
Here is typical log output on startup::
|
||||||
|
|
||||||
|
|
||||||
2016-10-08 14:46:48.088516500 Launching ElectrumX server...
|
2016-10-08 14:46:48.088516500 Launching ElectrumX server...
|
||||||
2016-10-08 14:46:49.145281500 INFO:root:ElectrumX server starting
|
2016-10-08 14:46:49.145281500 INFO:root:ElectrumX server starting
|
||||||
2016-10-08 14:46:49.147215500 INFO:root:switching current directory to /var/nohist/server-test
|
2016-10-08 14:46:49.147215500 INFO:root:switching current directory to /var/nohist/server-test
|
||||||
@ -257,7 +259,7 @@ After flush-to-disk you may see an aiohttp error; this is the daemon
|
|||||||
timing out the connection while the disk flush was in progress. This
|
timing out the connection while the disk flush was in progress. This
|
||||||
is harmless; I intend to fix this soon by yielding whilst flushing.
|
is harmless; I intend to fix this soon by yielding whilst flushing.
|
||||||
|
|
||||||
You may see one or two logs about ambiguous UTXOs or hash160s::
|
You may see one or two logs about UTXOs or hash160 key collisions::
|
||||||
|
|
||||||
2016-10-08 07:24:34.068609500 INFO:DB:UTXO compressed key collision at height 252943 utxo 115cc1408e5321636675a8fcecd204661a6f27b4b7482b1b7c4402ca4b94b72f / 1
|
2016-10-08 07:24:34.068609500 INFO:DB:UTXO compressed key collision at height 252943 utxo 115cc1408e5321636675a8fcecd204661a6f27b4b7482b1b7c4402ca4b94b72f / 1
|
||||||
|
|
||||||
|
|||||||
33
query.py
Normal file
33
query.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# See the file "LICENSE" for information about the copyright
|
||||||
|
# and warranty status of this software.
|
||||||
|
|
||||||
|
import asyncio
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from server.env import Env
|
||||||
|
from server.server import Server
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
env = Env()
|
||||||
|
os.chdir(env.db_dir)
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
|
server = Server(env, loop)
|
||||||
|
db = server.db
|
||||||
|
coin = db.coin
|
||||||
|
for addr in sys.argv[1:]:
|
||||||
|
print('Address: ', addr)
|
||||||
|
hash160 = coin.address_to_hash160(addr)
|
||||||
|
for n, (tx_hash, height) in enumerate(db.get_history(hash160)):
|
||||||
|
print('History #{:d}: hash: {} height: {:d}'
|
||||||
|
.format(n + 1, bytes(reversed(tx_hash)).hex(), height))
|
||||||
|
for n, utxo in enumerate(db.get_utxos(hash160)):
|
||||||
|
print('UTXOs #{:d}: hash: {} pos: {:d} height: {:d} value: {:d}'
|
||||||
|
.format(n, bytes(reversed(utxo.tx_hash)).hex(),
|
||||||
|
utxo.tx_pos, utxo.height, utxo.value))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
@ -201,32 +201,3 @@ class RPC(object):
|
|||||||
|
|
||||||
self.logger.info('sleeping 1 second and trying again...')
|
self.logger.info('sleeping 1 second and trying again...')
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
|
|
||||||
# for addr in [
|
|
||||||
# # '1dice8EMZmqKvrGE4Qc9bUFf9PX3xaYDp',
|
|
||||||
# # '1HYBcza9tVquCCvCN1hUZkYT9RcM6GfLot',
|
|
||||||
# # '1BNwxHGaFbeUBitpjy2AsKpJ29Ybxntqvb',
|
|
||||||
# # '1ARanTkswPiVM6tUEYvbskyqDsZpweiciu',
|
|
||||||
# # '1VayNert3x1KzbpzMGt2qdqrAThiRovi8',
|
|
||||||
# # '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa',
|
|
||||||
# # '1XPTgDRhN8RFnzniWCddobD9iKZatrvH4',
|
|
||||||
# # '153h6eE6xRhXuN3pE53gWVfXacAtfyBF8g',
|
|
||||||
# ]:
|
|
||||||
# print('Address: ', addr)
|
|
||||||
# hash160 = coin.address_to_hash160(addr)
|
|
||||||
# utxos = self.db.get_utxos(hash160)
|
|
||||||
# for n, utxo in enumerate(utxos):
|
|
||||||
# print('UTXOs #{:d}: hash: {} pos: {:d} height: {:d} value: {:d}'
|
|
||||||
# .format(n, bytes(reversed(utxo.tx_hash)).hex(),
|
|
||||||
# utxo.tx_pos, utxo.height, utxo.value))
|
|
||||||
|
|
||||||
# for addr in [
|
|
||||||
# '19k8nToWwMGuF4HkNpzgoVAYk4viBnEs5D',
|
|
||||||
# '1HaHTfmvoUW6i6nhJf8jJs6tU4cHNmBQHQ',
|
|
||||||
# '1XPTgDRhN8RFnzniWCddobD9iKZatrvH4',
|
|
||||||
# ]:
|
|
||||||
# print('Address: ', addr)
|
|
||||||
# hash160 = coin.address_to_hash160(addr)
|
|
||||||
# for n, (tx_hash, height) in enumerate(self.db.get_history(hash160)):
|
|
||||||
# print('History #{:d}: hash: {} height: {:d}'
|
|
||||||
# .format(n + 1, bytes(reversed(tx_hash)).hex(), height))
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user