Giter Club home page Giter Club logo

blocksci's People

Contributors

bsamseth avatar darwin avatar hkalodner avatar maltemoeser avatar mplattner avatar nelsontodd avatar randomwalker avatar tloriato avatar yashbhutwala avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blocksci's Issues

Make vector operations return numpy arrays

Our interface for vectorized operations currently returns python lists. It would be more efficient to return numpy arrays which would avoid instantiating each returned object in python.

Segwit Support

Currently BlockSci does not have segwit support and segfaults when attempting to process a block which includes segwit transactions.

Adding Segwit support to BlockSci involves a number of changes to both the parser and analysis library.

Adding support to the parser to handle the Segwit serialization format is trivial and has already been completed on a private branch. The more complex issue is how to internally handle Segwit scripts.

A solution which has been mapped out, but is still being implemented is to codify in the codebase a distinction between address type and script type. Output scripts can be viewed at two levels of abstraction:

  • At one level we have all the standard scripts types, P2PK, P2PKH, P2SH, Multsig, OP_RETURN, P2WPKH, and P2WSH. P2SH-P2WSH and P2SH-P2WPKH will are currently not planned to be considered distinct types and instead will be viewed as standard P2SH scripts.
  • At the other level we have the abstracted notion of authentication method (shorter name tbd). These many categories of script type can be divided into a shorter list of general authentication types. P2PK, P2PKH, and P2WPKH are all based on using a single public key, which could be used interchangeably to create an scriptPubKey of any of those types (Assuming that it's in compressed form). Similarly P2SH and P2WSH have the same form.

Splitting up the current Address and Script modules to operate explicitly under one or the other of these two models will allow BlockSci to easily expand to handle the new Segwit addresses while maintaining clean layers of abstraction.

Permissioned/private blockchain support

Hi everyone,

I just read about BlockSci on Freedom To Tinker.
The BlockSci paper primarily concerns cryptocurrencies (if I'm not mistaken) and I was wondering whether or not I could use BlockSci to analyse Hyperledger Burrow and Hyperledger Fabric chains.

I'm currently setting up both chains for use in my graduate project. Both Burrow and Fabric expose an RPC API which could possibly be parsed by BlockSci. Or, if adjusting the RPC parser would be simple, in which case I would gladly do a PR with the extended functionality.

If I misunderstood anything please correct.

Greetings, Robert.

Unable to convert value to a Python type when accessing wrapped_script in P2SH

Whenever I try to access the wrapped_script of a P2SH input I obtain this error:

TypeError: Unable to convert function return value to a Python type! The signature was
(arg0: blocksci.blocksci_interface.PayToScriptHashScript) -> Optional[blocksci::AnyScript]

I'm not sure if I am doing something wrong or this is a bug in Blocksci's code.

For instance, this code generates the abovementioned error:

tx0 = blocksci.Tx("e5779b9e78f9650debc2893fd9636d827b26b4ddfa6a8172fe8708c924f5c39d")
for txin in tx0.ins:
    print(txin.address_type)
    print(txin.address.script)
    print(txin.address.script.wrapped_script)

The result of executing the code is:

Pay to script hash
P2SHAddress(address=37paP4uTjmA4Pi85LG6CF9huift3Dw1kFT, wrappedAddress=NonStandardScript())
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-115-1d098e8f187e> in <module>()
      5     print(txin.address.script)
----> 6     print(txin.address.script.wrapped_script)

TypeError: Unable to convert function return value to a Python type! The signature was
	(arg0: blocksci.blocksci_interface.PayToScriptHashScript) -> Optional[blocksci::AnyScript]

So it correctly prints the address_type and script, but fails to show the wrapped script. This also happens with multisig scripts encapsulated in P2SH (not only with non standard ones).

The input of transaction e5779... is spending a P2SH output (the second output of this transaction). The redeem script used to spent the output is PUSHDATA(2)[5357], which is what I am trying to recover.

BTW, the tool is great to explore blockchain data, thanks for making it publicly available!

blocksci_parser can't interpret zcash blocks

I tried

./BlockSci/release/bin/blocksci_parser --output-directory chain-data update disk --coin-directory .zcash

but it ends up showing

Starting with chain of 0 blocks
Removing 0 blocks
Adding 0 blocks
Updating hash index
...

It's like blocksci is not recognizing the zcash blockchain on my computer. I tried replacing .zcash folder with .litecoin and it works perfectly well. I read the page saying blocksci is supporting zcash, am I misunderstanding something?

Thank you

Great Package

I'm interested in having a time series of transactions for each address. Something like a block by address matrix that keeps a running total of number of bitcoins each address has. However, it's very slow running a loop over all transactions within a block. Do you have any suggestions to speed this computation up?

Aborted (core dumped)

I have been able to compile against python3 (.5) and python 3.6

Either way I get an exception after the 'ok' message:

import blocksci
print('ok')
$ python3 test.py
ok
*** Error in `python3': munmap_chunk(): invalid pointer: 0x00007fbafc6ec3b0 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fbafd8657e5]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x1a8)[0x7fbafd872698]
/home/user/BlockSci/blocksci_interface.cpython-35m-x86_64-linux-gnu.so(+0x9cfef)[0x7fbafc6ddfef]
/home/user/BlockSci/blocksci_interface.cpython-35m-x86_64-linux-gnu.so(+0x9b792)[0x7fbafc6dc792]
/home/user/BlockSci/blocksci_interface.cpython-35m-x86_64-linux-gnu.so(+0x9b7b1)[0x7fbafc6dc7b1]
/home/user/BlockSci/blocksci_interface.cpython-35m-x86_64-linux-gnu.so(+0x943da)[0x7fbafc6d53da]
/home/user/BlockSci/blocksci_interface.cpython-35m-x86_64-linux-gnu.so(+0x943f9)[0x7fbafc6d53f9]
python3[0x4ab8e9]
python3[0x4e9898]
python3[0x4e8365]
python3(PyDict_Clear+0xd6)[0x59b3b6]
python3[0x580796]
python3[0x51860d]
python3(_PyGC_CollectNoFail+0x27)[0x60a9b7]
python3(PyImport_Cleanup+0x24f)[0x523b3f]
python3(Py_Finalize+0x5e)[0x60da0e]
python3(Py_Main+0x646)[0x63fd16]
python3(main+0xe1)[0x4cfeb1]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fbafd80e830]
python3(_start+0x29)[0x5d6049]
======= Memory map: ========
00400000-007a9000 r-xp 00000000 fc:00 2355321                            /usr/bin/python3.5
009a9000-009ab000 r--p 003a9000 fc:00 2355321                            /usr/bin/python3.5
009ab000-00a42000 rw-p 003ab000 fc:00 2355321                            /usr/bin/python3.5
00a42000-00a73000 rw-p 00000000 00:00 0
00c7e000-01bf4000 rw-p 00000000 00:00 0                                  [heap]
7fbadda6c000-7fbaddaac000 rw-p 00000000 00:00 0
7fbaddaac000-7fbaddaaf000 r-xp 00000000 fc:00 2373788                    /usr/local/lib/python3.5/dist-packages/psutil/_psutil_posix.cpython-35m-x86_64-linux-gnu.so
7fbaddaaf000-7fbaddcae000 ---p 00003000 fc:00 2373788                    /usr/local/lib/python3.5/dist-packages/psutil/_psutil_posix.cpython-35m-x86_64-linux-gnu.so
7fbaddcae000-7fbaddcaf000 r--p 00002000 fc:00 2373788                    /usr/local/lib/python3.5/dist-packages/psutil/_psutil_posix.cpython-35m-x86_64-linux-gnu.so
7fbaddcaf000-7fbaddcb0000 rw-p 00003000 fc:00 2373788                    /usr/local/lib/python3.5/dist-packages/psutil/_psutil_posix.cpython-35m-x86_64-linux-gnu.so
7fbaddcb0000-7fbaddcb5000 r-xp 00000000 fc:00 2373790                    /usr/local/lib/python3.5/dist-packages/psutil/_psutil_linux.cpython-35m-x86_64-linux-gnu.so
7fbaddcb5000-7fbaddeb4000 ---p 00005000 fc:00 2373790                    /usr/local/lib/python3.5/dist-packages/psutil/_psutil_linux.cpython-35m-x86_64-linux-gnu.so
7fbaddeb4000-7fbaddeb5000 r--p 00004000 fc:00 2373790                    /usr/local/lib/python3.5/dist-packages/psutil/_psutil_linux.cpython-35m-x86_64-linux-gnu.so
7fbaddeb5000-7fbaddeb6000 rw-p 00005000 fc:00 2373790                    /usr/local/lib/python3.5/dist-packages/psutil/_psutil_linux.cpython-35m-x86_64-linux-gnu.so
7fbaddeb6000-7fbade0b6000 rw-p 00000000 00:00 0
7fbade0b6000-7fbade100000 r-xp 00000000 fc:00 2375585                    /usr/local/lib/python3.5/dist-packages/_ruamel_yaml.cpython-35m-x86_64-linux-gnu.so
7fbade100000-7fbade2ff000 ---p 0004a000 fc:00 2375585                    /usr/local/lib/python3.5/dist-packages/_ruamel_yaml.cpython-35m-x86_64-linux-gnu.so
7fbade2ff000-7fbade303000 rw-p 00049000 fc:00 2375585                    /usr/local/lib/python3.5/dist-packages/_ruamel_yaml.cpython-35m-x86_64-linux-gnu.so
7fbade303000-7fbade444000 rw-p 00000000 00:00 0
7fbade444000-7fbade4ad000 r-xp 00000000 fc:00 2375697                    /usr/local/lib/python3.5/dist-packages/_regex.cpython-35m-x86_64-linux-gnu.so
7fbade4ad000-7fbade6ac000 ---p 00069000 fc:00 2375697                    /usr/local/lib/python3.5/dist-packages/_regex.cpython-35m-x86_64-linux-gnu.so
7fbade6ac000-7fbade6ad000 r--p 00068000 fc:00 2375697                    /usr/local/lib/python3.5/dist-packages/_regex.cpython-35m-x86_64-linux-gnu.so
7fbade6ad000-7fbade6b7000 rw-p 00069000 fc:00 2375697                    /usr/local/lib/python3.5/dist-packages/_regex.cpython-35m-x86_64-linux-gnu.so
7fbade6b7000-7fbade737000 rw-p 00000000 00:00 0
7fbade737000-7fbade73a000 r-xp 00000000 fc:00 529375                     /usr/local/lib/python3.5/dist-packages/Crypto/Cipher/_ARC4.cpython-35m-x86_64-linux-gnu.so
7fbade73a000-7fbade939000 ---p 00003000 fc:00 529375                     /usr/local/lib/python3.5/dist-packages/Crypto/Cipher/_ARC4.cpython-35m-x86_64-linux-gnu.so
7fbade939000-7fbade93a000 r--p 00002000 fc:00 529375                     /usr/local/lib/python3.5/dist-packages/Crypto/Cipher/_ARC4.cpython-35m-x86_64-linux-gnu.so
7fbade93a000-7fbade93b000 rw-p 00003000 fc:00 529375                     /usr/local/lib/python3.5/dist-packages/Crypto/Cipher/_ARC4.cpython-35m-x86_64-linux-gnu.so
7fbade93b000-7fbade94d000 r-xp 00000000 fc:00 529760                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/testing.cpython-35m-x86_64-linux-gnu.so
7fbade94d000-7fbadeb4d000 ---p 00012000 fc:00 529760                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/testing.cpython-35m-x86_64-linux-gnu.so
7fbadeb4d000-7fbadeb4f000 rw-p 00012000 fc:00 529760                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/testing.cpython-35m-x86_64-linux-gnu.so
7fbadeb4f000-7fbadeb8f000 rw-p 00000000 00:00 0
7fbadeb8f000-7fbadeb90000 r-xp 00000000 fc:00 406361                     /usr/local/lib/python3.5/dist-packages/pandas/util/_move.cpython-35m-x86_64-linux-gnu.so
7fbadeb90000-7fbaded90000 ---p 00001000 fc:00 406361                     /usr/local/lib/python3.5/dist-packages/pandas/util/_move.cpython-35m-x86_64-linux-gnu.so
7fbaded90000-7fbaded91000 rw-p 00001000 fc:00 406361                     /usr/local/lib/python3.5/dist-packages/pandas/util/_move.cpython-35m-x86_64-linux-gnu.so
7fbaded91000-7fbadeda7000 r-xp 00000000 fc:00 530815                     /usr/local/lib/python3.5/dist-packages/pandas/io/msgpack/_unpacker.cpython-35m-x86_64-linux-gnu.so
7fbadeda7000-7fbadefa7000 ---p 00016000 fc:00 530815                     /usr/local/lib/python3.5/dist-packages/pandas/io/msgpack/_unpacker.cpython-35m-x86_64-linux-gnu.so
7fbadefa7000-7fbadefaa000 rw-p 00016000 fc:00 530815                     /usr/local/lib/python3.5/dist-packages/pandas/io/msgpack/_unpacker.cpython-35m-x86_64-linux-gnu.so
7fbadefaa000-7fbadefbb000 r-xp 00000000 fc:00 530818                     /usr/local/lib/python3.5/dist-packages/pandas/io/msgpack/_packer.cpython-35m-x86_64-linux-gnu.so
7fbadefbb000-7fbadf1ba000 ---p 00011000 fc:00 530818                     /usr/local/lib/python3.5/dist-packages/pandas/io/msgpack/_packer.cpython-35m-x86_64-linux-gnu.so
7fbadf1ba000-7fbadf1bc000 rw-p 00010000 fc:00 530818                     /usr/local/lib/python3.5/dist-packages/pandas/io/msgpack/_packer.cpython-35m-x86_64-linux-gnu.so
7fbadf1bc000-7fbadf2bc000 rw-p 00000000 00:00 0
7fbadf2bc000-7fbadf2d2000 r-xp 00000000 fc:00 529769                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/json.cpython-35m-x86_64-linux-gnu.so
7fbadf2d2000-7fbadf4d2000 ---p 00016000 fc:00 529769                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/json.cpython-35m-x86_64-linux-gnu.so
7fbadf4d2000-7fbadf4d3000 rw-p 00016000 fc:00 529769                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/json.cpython-35m-x86_64-linux-gnu.so
7fbadf4d3000-7fbadf559000 r-xp 00000000 fc:00 529756                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/parsers.cpython-35m-x86_64-linux-gnu.so
7fbadf559000-7fbadf758000 ---p 00086000 fc:00 529756                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/parsers.cpython-35m-x86_64-linux-gnu.so
7fbadf758000-7fbadf75f000 rw-p 00085000 fc:00 529756                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/parsers.cpython-35m-x86_64-linux-gnu.so
7fbadf75f000-7fbadf7e1000 rw-p 00000000 00:00 0
7fbadf7e1000-7fbadf7f8000 r-xp 00000000 fc:00 529763                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/reshape.cpython-35m-x86_64-linux-gnu.so
7fbadf7f8000-7fbadf9f8000 ---p 00017000 fc:00 529763                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/reshape.cpython-35m-x86_64-linux-gnu.so
7fbadf9f8000-7fbadf9fb000 rw-p 00017000 fc:00 529763                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/reshape.cpython-35m-x86_64-linux-gnu.so
7fbadf9fb000-7fbadfa3b000 rw-p 00000000 00:00 0
7fbadfa3b000-7fbadfad5000 r-xp 00000000 fc:00 529752                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/groupby.cpython-35m-x86_64-linux-gnu.so
7fbadfad5000-7fbadfcd4000 ---p 0009a000 fc:00 529752                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/groupby.cpython-35m-x86_64-linux-gnu.so
7fbadfcd4000-7fbadfcdb000 rw-p 00099000 fc:00 529752                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/groupby.cpython-35m-x86_64-linux-gnu.so
7fbadfcdb000-7fbadfd5c000 rw-p 00000000 00:00 0
7fbadfd5c000-7fbadfe03000 r-xp 00000000 fc:00 529761                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/window.cpython-35m-x86_64-linux-gnu.so
7fbadfe03000-7fbae0002000 ---p 000a7000 fc:00 529761                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/window.cpython-35m-x86_64-linux-gnu.so
7fbae0002000-7fbae000a000 rw-p 000a6000 fc:00 529761                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/window.cpython-35m-x86_64-linux-gnu.so
7fbae000a000-7fbae008c000 rw-p 00000000 00:00 0
7fbae008c000-7fbae0091000 r-xp 00000000 fc:00 2356601                    /usr/lib/python3.5/lib-dynload/mmap.cpython-35m-x86_64-linux-gnu.so
7fbae0091000-7fbae0291000 ---p 00005000 fc:00 2356601                    /usr/lib/python3.5/lib-dynload/mmap.cpython-35m-x86_64-linux-gnu.so
7fbae0291000-7fbae0292000 r--p 00005000 fc:00 2356601                    /usr/lib/python3.5/lib-dynload/mmap.cpython-35m-x86_64-linux-gnu.so
7fbae0292000-7fbae0293000 rw-p 00006000 fc:00 2356601                    /usr/lib/python3.5/lib-dynload/mmap.cpython-35m-x86_64-linux-gnu.so
7fbae0293000-7fbae029a000 r-xp 00000000 fc:00 2356621                    /usr/lib/python3.5/lib-dynload/_csv.cpython-35m-x86_64-linux-gnu.so
7fbae029a000-7fbae049a000 ---p 00007000 fc:00 2356621                    /usr/lib/python3.5/lib-dynload/_csv.cpython-35m-x86_64-linux-gnu.so
7fbae049a000-7fbae049b000 r--p 00007000 fc:00 2356621                    /usr/lib/python3.5/lib-dynload/_csv.cpython-35m-x86_64-linux-gnu.so
7fbae049b000-7fbae049d000 rw-p 00008000 fc:00 2356621                    /usr/lib/python3.5/lib-dynload/_csv.cpython-35m-x86_64-linux-gnu.so
7fbae049d000-7fbae04dd000 rw-p 00000000 00:00 0
7fbae04dd000-7fbae05c5000 r-xp 00000000 fc:00 529766                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/sparse.cpython-35m-x86_64-linux-gnu.so
7fbae05c5000-7fbae07c5000 ---p 000e8000 fc:00 529766                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/sparse.cpython-35m-x86_64-linux-gnu.so
7fbae07c5000-7fbae07ca000 rw-p 000e8000 fc:00 529766                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/sparse.cpython-35m-x86_64-linux-gnu.so
7fbae07ca000-7fbae09cc000 rw-p 00000000 00:00 0
7fbae09cc000-7fbae0a2e000 r-xp 00000000 fc:00 529753                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/period.cpython-35m-x86_64-linux-gnu.so
7fbae0a2e000-7fbae0c2e000 ---p 00062000 fc:00 529753                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/period.cpython-35m-x86_64-linux-gnu.so
7fbae0c2e000-7fbae0c35000 rw-p 00062000 fc:00 529753                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/period.cpython-35m-x86_64-linux-gnu.so
7fbae0c35000-7fbae0c36000 rw-p 00000000 00:00 0
7fbae0c36000-7fbae0c45000 r-xp 00000000 fc:00 529776                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/frequencies.cpython-35m-x86_64-linux-gnu.so
7fbae0c45000-7fbae0e44000 ---p 0000f000 fc:00 529776                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/frequencies.cpython-35m-x86_64-linux-gnu.so
7fbae0e44000-7fbae0e46000 rw-p 0000e000 fc:00 529776                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/frequencies.cpython-35m-x86_64-linux-gnu.so
7fbae0e46000-7fbae0e87000 rw-p 00000000 00:00 0
7fbae0e87000-7fbae0ecb000 r-xp 00000000 fc:00 529771                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/strptime.cpython-35m-x86_64-linux-gnu.so
7fbae0ecb000-7fbae10cb000 ---p 00044000 fc:00 529771                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/strptime.cpython-35m-x86_64-linux-gnu.so
7fbae10cb000-7fbae10d0000 rw-p 00044000 fc:00 529771                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/strptime.cpython-35m-x86_64-linux-gnu.so
7fbae10d0000-7fbae11d2000 rw-p 00000000 00:00 0
7fbae11d2000-7fbae13e9000 r-xp 00000000 fc:00 529754                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/join.cpython-35m-x86_64-linux-gnu.so
7fbae13e9000-7fbae15e9000 ---p 00217000 fc:00 529754                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/join.cpython-35m-x86_64-linux-gnu.so
7fbae15e9000-7fbae15f2000 rw-p 00217000 fc:00 529754                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/join.cpython-35m-x86_64-linux-gnu.so
7fbae15f2000-7fbae15f4000 rw-p 00000000 00:00 0
7fbae15f4000-7fbae1668000 r-xp 00000000 fc:00 529767                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/index.cpython-35m-x86_64-linux-gnu.so
7fbae1668000-7fbae1867000 ---p 00074000 fc:00 529767                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/index.cpython-35m-x86_64-linux-gnu.so
7fbae1867000-7fbae186d000 rw-p 00073000 fc:00 529767                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/index.cpython-35m-x86_64-linux-gnu.so
7fbae186d000-7fbae192f000 rw-p 00000000 00:00 0
7fbae192f000-7fbae193c000 r-xp 00000000 fc:00 529768                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/hashing.cpython-35m-x86_64-linux-gnu.so
7fbae193c000-7fbae1b3b000 ---p 0000d000 fc:00 529768                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/hashing.cpython-35m-x86_64-linux-gnu.so
7fbae1b3b000-7fbae1b3d000 rw-p 0000c000 fc:00 529768                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/hashing.cpython-35m-x86_64-linux-gnu.so
7fbae1b3d000-7fbae1b4b000 r-xp 00000000 fc:00 529758                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/properties.cpython-35m-x86_64-linux-gnu.so
7fbae1b4b000-7fbae1d4a000 ---p 0000e000 fc:00 529758                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/properties.cpython-35m-x86_64-linux-gnu.so
7fbae1d4a000-7fbae1d4c000 rw-p 0000d000 fc:00 529758                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/properties.cpython-35m-x86_64-linux-gnu.so
7fbae1d4c000-7fbae1dcc000 rw-p 00000000 00:00 0
7fbae1dcc000-7fbae1f23000 r-xp 00000000 fc:00 529755                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/algos.cpython-35m-x86_64-linux-gnu.so
7fbae1f23000-7fbae2123000 ---p 00157000 fc:00 529755                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/algos.cpython-35m-x86_64-linux-gnu.so
7fbae2123000-7fbae212f000 rw-p 00157000 fc:00 529755                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/algos.cpython-35m-x86_64-linux-gnu.so
7fbae212f000-7fbae2173000 rw-p 00000000 00:00 0
7fbae2173000-7fbae21aa000 r-xp 00000000 fc:00 2357061                    /usr/lib/x86_64-linux-gnu/libmpdec.so.2.4.2
7fbae21aa000-7fbae23a9000 ---p 00037000 fc:00 2357061                    /usr/lib/x86_64-linux-gnu/libmpdec.so.2.4.2
7fbae23a9000-7fbae23aa000 r--p 00036000 fc:00 2357061                    /usr/lib/x86_64-linux-gnu/libmpdec.so.2.4.2
7fbae23aa000-7fbae23ab000 rw-p 00037000 fc:00 2357061                    /usr/lib/x86_64-linux-gnu/libmpdec.so.2.4.2
7fbae23ab000-7fbae23cf000 r-xp 00000000 fc:00 2356636                    /usr/lib/python3.5/lib-dynload/_decimal.cpython-35m-x86_64-linux-gnu.so
7fbae23cf000-7fbae25ce000 ---p 00024000 fc:00 2356636                    /usr/lib/python3.5/lib-dynload/_decimal.cpython-35m-x86_64-linux-gnu.so
7fbae25ce000-7fbae25cf000 r--p 00023000 fc:00 2356636                    /usr/lib/python3.5/lib-dynload/_decimal.cpython-35m-x86_64-linux-gnu.so
7fbae25cf000-7fbae25d8000 rw-p 00024000 fc:00 2356636                    /usr/lib/python3.5/lib-dynload/_decimal.cpython-35m-x86_64-linux-gnu.so
7fbae25d8000-7fbae2618000 rw-p 00000000 00:00 0
7fbae2618000-7fbae27b6000 r-xp 00000000 fc:00 529764                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/interval.cpython-35m-x86_64-linux-gnu.so
7fbae27b6000-7fbae29b6000 ---p 0019e000 fc:00 529764                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/interval.cpython-35m-x86_64-linux-gnu.so
7fbae29b6000-7fbae29c3000 rw-p 0019e000 fc:00 529764                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/interval.cpython-35m-x86_64-linux-gnu.so
7fbae29c3000-7fbae29c5000 rw-p 00000000 00:00 0
7fbae29c5000-7fbae2ac9000 r-xp 00000000 fc:00 529757                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/lib.cpython-35m-x86_64-linux-gnu.so
7fbae2ac9000-7fbae2cc9000 ---p 00104000 fc:00 529757                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/lib.cpython-35m-x86_64-linux-gnu.so
7fbae2cc9000-7fbae2cd9000 rw-p 00104000 fc:00 529757                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/lib.cpython-35m-x86_64-linux-gnu.so
7fbae2cd9000-7fbae2cdd000 rw-p 00000000 00:00 0
7fbae2cdd000-7fbae2d6c000 r-xp 00000000 fc:00 529759                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/hashtable.cpython-35m-x86_64-linux-gnu.so
7fbae2d6c000-7fbae2f6b000 ---p 0008f000 fc:00 529759                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/hashtable.cpython-35m-x86_64-linux-gnu.so
7fbae2f6b000-7fbae2f73000 rw-p 0008e000 fc:00 529759                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/hashtable.cpython-35m-x86_64-linux-gnu.so
7fbae2f73000-7fbae2f75000 rw-p 00000000 00:00 0
7fbae2f75000-7fbae2f96000 r-xp 00000000 fc:00 529777                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/fields.cpython-35m-x86_64-linux-gnu.so
7fbae2f96000-7fbae3196000 ---p 00021000 fc:00 529777                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/fields.cpython-35m-x86_64-linux-gnu.so
7fbae3196000-7fbae3198000 rw-p 00021000 fc:00 529777                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/fields.cpython-35m-x86_64-linux-gnu.so
7fbae3198000-7fbae3199000 rw-p 00000000 00:00 0
7fbae3199000-7fbae31db000 r-xp 00000000 fc:00 529774                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/parsing.cpython-35m-x86_64-linux-gnu.so
7fbae31db000-7fbae33da000 ---p 00042000 fc:00 529774                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/parsing.cpython-35m-x86_64-linux-gnu.so
7fbae33da000-7fbae33e0000 rw-p 00041000 fc:00 529774                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/parsing.cpython-35m-x86_64-linux-gnu.so
7fbae33e0000-7fbae33e1000 rw-p 00000000 00:00 0
7fbae33e1000-7fbae33fc000 r-xp 00000000 fc:00 529772                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/timezones.cpython-35m-x86_64-linux-gnu.so
7fbae33fc000-7fbae35fb000 ---p 0001b000 fc:00 529772                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/timezones.cpython-35m-x86_64-linux-gnu.so
7fbae35fb000-7fbae35fe000 rw-p 0001a000 fc:00 529772                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/timezones.cpython-35m-x86_64-linux-gnu.so
7fbae35fe000-7fbae360e000 r-xp 00000000 fc:00 529773                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/timedeltas.cpython-35m-x86_64-linux-gnu.so
7fbae360e000-7fbae380e000 ---p 00010000 fc:00 529773                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/timedeltas.cpython-35m-x86_64-linux-gnu.so
7fbae380e000-7fbae3810000 rw-p 00010000 fc:00 529773                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslibs/timedeltas.cpython-35m-x86_64-linux-gnu.so
7fbae3810000-7fbae3850000 rw-p 00000000 00:00 0
7fbae3850000-7fbae3972000 r-xp 00000000 fc:00 529765                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslib.cpython-35m-x86_64-linux-gnu.so
7fbae3972000-7fbae3b72000 ---p 00122000 fc:00 529765                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslib.cpython-35m-x86_64-linux-gnu.so
7fbae3b72000-7fbae3b81000 rw-p 00122000 fc:00 529765                     /usr/local/lib/python3.5/dist-packages/pandas/_libs/tslib.cpython-35m-x86_64-linux-gnu.so
7fbae3b81000-7fbae3bc6000 rw-p 00000000 00:00 0
7fbae3bc6000-7fbae3bc7000 r-xp 00000000 fc:00 2355290                    /usr/lib/python3.5/lib-dynload/_opcode.cpython-35m-x86_64-linux-gnu.so
7fbae3bc7000-7fbae3dc6000 ---p 00001000 fc:00 2355290                    /usr/lib/python3.5/lib-dynload/_opcode.cpython-35m-x86_64-linux-gnu.so
7fbae3dc6000-7fbae3dc7000 r--p 00000000 fc:00 2355290                    /usr/lib/python3.5/lib-dynload/_opcode.cpython-35m-x86_64-linux-gnu.so
7fbae3dc7000-7fbae3dc8000 rw-p 00001000 fc:00 2355290                    /usr/lib/python3.5/lib-dynload/_opcode.cpython-35m-x86_64-linux-gnu.so
7fbae3dc8000-7fbae3ec8000 rw-p 00000000 00:00 0
7fbae3ec8000-7fbae3f82000 r-xp 00000000 fc:00 2510570                    /usr/local/lib/python3.5/dist-packages/numpy/random/mtrand.cpython-35m-x86_64-linux-gnu.so
7fbae3f82000-7fbae4181000 ---p 000ba000 fc:00 2510570                    /usr/local/lib/python3.5/dist-packages/numpy/random/mtrand.cpython-35m-x86_64-linux-gnu.so
7fbae4181000-7fbae41a6000 rw-p 000b9000 fc:00 2510570                    /usr/local/lib/python3.5/dist-packages/numpy/random/mtrand.cpython-35m-x86_64-linux-gnu.so
7fbae41a6000-7fbae41e8000 rw-p 00000000 00:00 0
7fbae41e8000-7fbae41f1000 r-xp 00000000 fc:00 2510531                    /usr/local/lib/python3.5/dist-packages/numpy/fft/fftpack_lite.cpython-35m-x86_64-linux-gnu.so
7fbae41f1000-7fbae43f0000 ---p 00009000 fc:00 2510531                    /usr/local/lib/python3.5/dist-packages/numpy/fft/fftpack_lite.cpython-35m-x86_64-linux-gnu.so
7fbae43f0000-7fbae43f1000 rw-p 00008000 fc:00 2510531                    /usr/local/lib/python3.5/dist-packages/numpy/fft/fftpack_lite.cpython-35m-x86_64-linux-gnu.so
7fbae43f1000-7fbae4431000 rw-p 00000000 00:00 0
7fbae4431000-7fbae445a000 r-xp 00000000 fc:00 2636449                    /usr/local/lib/python3.5/dist-packages/numpy/linalg/_umath_linalg.cpython-35m-x86_64-linux-gnu.so
7fbae445a000-7fbae4659000 ---p 00029000 fc:00 2636449                    /usr/local/lib/python3.5/dist-packages/numpy/linalg/_umath_linalg.cpython-35m-x86_64-linux-gnu.so
7fbae4659000-7fbae465b000 rw-p 00028000 fc:00 2636449                    /usr/local/lib/python3.5/dist-packages/numpy/linalg/_umath_linalg.cpython-35m-x86_64-linux-gnu.so
7fbae465b000-7fbae465e000 rw-p 000c6000 fc:00 2636449                    /usr/local/lib/python3.5/dist-packages/numpy/linalg/_umath_linalg.cpython-35m-x86_64-linux-gnu.so
7fbae465e000-7fbae4662000 r-xp 00000000 fc:00 2636445                    /usr/local/lib/python3.5/dist-packages/numpy/linalg/lapack_lite.cpython-35m-x86_64-linux-gnu.so
7fbae4662000-7fbae4862000 ---p 00004000 fc:00 2636445                    /usr/local/lib/python3.5/dist-packages/numpy/linalg/lapack_lite.cpython-35m-x86_64-linux-gnu.so
7fbae4862000-7fbae4863000 rw-p 00004000 fc:00 2636445                    /usr/local/lib/python3.5/dist-packages/numpy/linalg/lapack_lite.cpython-35m-x86_64-linux-gnu.so
7fbae4863000-7fbae4865000 rw-p 00019000 fc:00 2636445                    /usr/local/lib/python3.5/dist-packages/numpy/linalg/lapack_lite.cpython-35m-x86_64-linux-gnu.so
7fbae4865000-7fbae49a5000 rw-p 00000000 00:00 0
7fbae49a5000-7fbae89a5000 rw-p 00000000 00:00 0
7fbae89a5000-7fbae8a65000 rw-p 00000000 00:00 0
7fbae8a65000-7fbaeca65000 rw-p 00000000 00:00 0
7fbaeca65000-7fbaecaa5000 rw-p 00000000 00:00 0
7fbaecaa5000-7fbaecc37000 r-xp 00000000 fc:00 2375345                    /usr/local/lib/python3.5/dist-packages/numpy/core/umath.cpython-35m-x86_64-linux-gnu.so
7fbaecc37000-7fbaece36000 ---p 00192000 fc:00 2375345                    /usr/local/lib/python3.5/dist-packages/numpy/core/umath.cpython-35m-x86_64-linux-gnu.so
7fbaece36000-7fbaece3c000 rw-p 00191000 fc:00 2375345                    /usr/local/lib/python3.5/dist-packages/numpy/core/umath.cpython-35m-x86_64-linux-gnu.so
7fbaece3c000-7fbaece3e000 rw-p 00000000 00:00 0
7fbaece3e000-7fbaece3f000 ---p 00000000 00:00 0
7fbaece3f000-7fbaed63f000 rw-p 00000000 00:00 0
7fbaed63f000-7fbaed640000 ---p 00000000 00:00 0
7fbaed640000-7fbaede40000 rw-p 00000000 00:00 0
7fbaede40000-7fbaede41000 ---p 00000000 00:00 0
7fbaede41000-7fbaee641000 rw-p 00000000 00:00 0
7fbaee641000-7fbaf0641000 rw-p 00000000 00:00 0
7fbaf0641000-7fbaf2641000 rw-p 00000000 00:00 0
7fbaf2641000-7fbaf4641000 rw-p 00000000 00:00 0
7fbaf4641000-7fbaf4642000 ---p 00000000 00:00 0
7fbaf4642000-7fbaf4e42000 rw-p 00000000 00:00 0
7fbaf4e42000-7fbaf4e43000 ---p 00000000 00:00 0
7fbaf4e43000-7fbaf5643000 rw-p 00000000 00:00 0
7fbaf5643000-7fbaf5644000 ---p 00000000 00:00 0
7fbaf5644000-7fbaf5e44000 rw-p 00000000 00:00 0
7fbaf5e44000-7fbaf5e45000 ---p 00000000 00:00 0
7fbaf5e45000-7fbaf6645000 rw-p 00000000 00:00 0
7fbaf6645000-7fbaf6735000 r-xp 00000000 fc:00 2510622                    /usr/local/lib/python3.5/dist-packages/numpy/.libs/libgfortran-ed201abd.so.3.0.0
7fbaf6735000-7fbaf6934000 ---p 000f0000 fc:00 2510622                    /usr/local/lib/python3.5/dist-packages/numpy/.libs/libgfortran-ed201abd.so.3.0.0
7fbaf6934000-7fbaf6936000 rw-p 000ef000 fc:00 2510622                    /usr/local/lib/python3.5/dist-packages/numpy/.libs/libgfortran-ed201abd.so.3.0.0
7fbaf6936000-7fbaf6937000 rw-p 00000000 00:00 0
7fbaf6937000-7fbaf693f000 rw-p 000f2000 fc:00 2510622                    /usr/local/lib/python3.5/dist-packages/numpy/.libs/libgfortran-ed201abd.so.3.0.0
7fbaf693f000-7fbaf8c53000 r-xp 00000000 fc:00 2510621                    /usr/local/lib/python3.5/dist-packages/numpy/.libs/libopenblasp-r0-39a31c03.2.18.so
7fbaf8c53000-7fbaf8e52000 ---p 02314000 fc:00 2510621                    /usr/local/lib/python3.5/dist-packages/numpy/.libs/libopenblasp-r0-39a31c03.2.18.so
7fbaf8e52000-7fbaf8e71000 rw-p 02313000 fc:00 2510621                    /usr/local/lib/python3.5/dist-packages/numpy/.libs/libopenblasp-r0-39a31c03.2.18.so
7fbaf8e71000-7fbaf8ed4000 rw-p 00000000 00:00 0
7fbaf8ed4000-7fbaf8f6a000 rw-p 02425000 fc:00 2510621                    /usr/local/lib/python3.5/dist-packages/numpy/.libs/libopenblasp-r0-39a31c03.2.18.so
7fbaf8f6a000-7fbaf9138000 r-xp 00000000 fc:00 2375338                    /usr/local/lib/python3.5/dist-packages/numpy/core/multiarray.cpython-35m-x86_64-linux-gnu.so
7fbaf9138000-7fbaf9338000 ---p 001ce000 fc:00 2375338                    /usr/local/lib/python3.5/dist-packages/numpy/core/multiarray.cpython-35m-x86_64-linux-gnu.so
7fbaf9338000-7fbaf9347000 rw-p 001ce000 fc:00 2375338                    /usr/local/lib/python3.5/dist-packages/numpy/core/multiarray.cpython-35m-x86_64-linux-gnu.so
7fbaf9347000-7fbaf935a000 rw-p 00000000 00:00 0
7fbaf935a000-7fbaf9360000 rw-p 0098a000 fc:00 2375338                    /usr/local/lib/python3.5/dist-packages/numpy/core/multiarray.cpython-35m-x86_64-linux-gnu.so
7fbaf9360000-7fbaf93e0000 rw-p 00000000 00:00 0
7fbaf93e1000-7fbaf94e1000 rw-p 00000000 00:00 0
7fbaf94e1000-7fbaf94f2000 r-xp 00000000 fc:00 2356631                    /usr/lib/python3.5/lib-dynload/_json.cpython-35m-x86_64-linux-gnu.so
7fbaf94f2000-7fbaf96f1000 ---p 00011000 fc:00 2356631                    /usr/lib/python3.5/lib-dynload/_json.cpython-35m-x86_64-linux-gnu.so
7fbaf96f1000-7fbaf96f2000 r--p 00010000 fc:00 2356631                    /usr/lib/python3.5/lib-dynload/_json.cpython-35m-x86_64-linux-gnu.so
7fbaf96f2000-7fbaf96f3000 rw-p 00011000 fc:00 2356631                    /usr/lib/python3.5/lib-dynload/_json.cpython-35m-x86_64-linux-gnu.so
7fbaf96f3000-7fbaf9773000 rw-p 00000000 00:00 0
7fbaf9773000-7fbaf9777000 r-xp 00000000 fc:00 130913                     /lib/x86_64-linux-gnu/libuuid.so.1.3.0
7fbaf9777000-7fbaf9976000 ---p 00004000 fc:00 130913                     /lib/x86_64-linux-gnu/libuuid.so.1.3.0
7fbaf9976000-7fbaf9977000 r--p 00003000 fc:00 130913                     /lib/x86_64-linux-gnu/libuuid.so.1.3.0
7fbaf9977000-7fbaf9978000 rw-p 00004000 fc:00 130913                     /lib/x86_64-linux-gnu/libuuid.so.1.3.0
7fbaf9978000-7fbaf9999000 r-xp 00000000 fc:00 131351                     /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7fbaf9999000-7fbaf9b98000 ---p 00021000 fc:00 131351                     /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7fbaf9b98000-7fbaf9b99000 r--p 00020000 fc:00 131351                     /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7fbaf9b99000-7fbaf9b9a000 rw-p 00021000 fc:00 131351                     /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7fbaf9b9a000-7fbaf9ba1000 r-xp 00000000 fc:00 2356633                    /usr/lib/python3.5/lib-dynload/_lzma.cpython-35m-x86_64-linux-gnu.so
7fbaf9ba1000-7fbaf9da0000 ---p 00007000 fc:00 2356633                    /usr/lib/python3.5/lib-dynload/_lzma.cpython-35m-x86_64-linux-gnu.so
7fbaf9da0000-7fbaf9da1000 r--p 00006000 fc:00 2356633                    /usr/lib/python3.5/lib-dynload/_lzma.cpython-35m-x86_64-linux-gnu.so
7fbaf9da1000-7fbaf9da3000 rw-p 00007000 fc:00 2356633                    /usr/lib/python3.5/lib-dynload/_lzma.cpython-35m-x86_64-linux-gnu.so
7fbaf9da3000-7fbaf9de3000 rw-p 00000000 00:00 0
7fbaf9de3000-7fbaf9de7000 r-xp 00000000 fc:00 2356618                    /usr/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so
7fbaf9de7000-7fbaf9fe6000 ---p 00004000 fc:00 2356618                    /usr/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so
7fbaf9fe6000-7fbaf9fe7000 r--p 00003000 fc:00 2356618                    /usr/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so
7fbaf9fe7000-7fbaf9fe8000 rw-p 00004000 fc:00 2356618                    /usr/lib/python3.5/lib-dynload/_bz2.cpython-35m-x86_64-linux-gnu.so
7fbaf9fe8000-7fbafa068000 rw-p 00000000 00:00 0
7fbafa068000-7fbafa08a000 r-xp 00000000 fc:00 2356634                    /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so
7fbafa08a000-7fbafa289000 ---p 00022000 fc:00 2356634                    /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so
7fbafa289000-7fbafa28a000 r--p 00021000 fc:00 2356634                    /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so
7fbafa28a000-7fbafa28e000 rw-p 00022000 fc:00 2356634                    /usr/lib/python3.5/lib-dynload/_ctypes.cpython-35m-x86_64-linux-gnu.so
7fbafa28e000-7fbafa30f000 rw-p 00000000 00:00 0
7fbafa30f000-7fbafa314000 r-xp 00000000 fc:00 2355286                    /usr/lib/python3.5/lib-dynload/_hashlib.cpython-35m-x86_64-linux-gnu.so
7fbafa314000-7fbafa514000 ---p 00005000 fc:00 2355286                    /usr/lib/python3.5/lib-dynload/_hashlib.cpython-35m-x86_64-linux-gnu.so
7fbafa514000-7fbafa515000 r--p 00005000 fc:00 2355286                    /usr/lib/python3.5/lib-dynload/_hashlib.cpython-35m-x86_64-linux-gnu.so
7fbafa515000-7fbafa516000 rw-p 00006000 fc:00 2355286                    /usr/lib/python3.5/lib-dynload/_hashlib.cpython-35m-x86_64-linux-gnu.so
7fbafa516000-7fbafa596000 rw-p 00000000 00:00 0
7fbafa596000-7fbafa5f4000 r-xp 00000000 fc:00 130935                     /lib/x86_64-linux-gnu/libssl.so.1.0.0
7fbafa5f4000-7fbafa7f4000 ---p 0005e000 fc:00 130935                     /lib/x86_64-linux-gnu/libssl.so.1.0.0
7fbafa7f4000-7fbafa7f8000 r--p 0005e000 fc:00 130935                     /lib/x86_64-linux-gnu/libssl.so.1.0.0
7fbafa7f8000-7fbafa7ff000 rw-p 00062000 fc:00 130935                     /lib/x86_64-linux-gnu/libssl.so.1.0.0
7fbafa7ff000-7fbafa816000 r-xp 00000000 fc:00 2355285                    /usr/lib/python3.5/lib-dynload/_ssl.cpython-35m-x86_64-linux-gnu.so
7fbafa816000-7fbafaa16000 ---p 00017000 fc:00 2355285                    /usr/lib/python3.5/lib-dynload/_ssl.cpython-35m-x86_64-linux-gnu.so
7fbafaa16000-7fbafaa17000 r--p 00017000 fc:00 2355285                    /usr/lib/python3.5/lib-dynload/_ssl.cpython-35m-x86_64-linux-gnu.so
7fbafaa17000-7fbafaa1c000 rw-p 00018000 fc:00 2355285                    /usr/lib/python3.5/lib-dynload/_ssl.cpython-35m-x86_64-linux-gnu.so
7fbafaa1c000-7fbafaa9c000 rw-p 00000000 00:00 0
7fbafaabd000-7fbafab7d000 rw-p 00000000 00:00 0
7fbafab7d000-7fbafab8c000 r-xp 00000000 fc:00 131310                     /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7fbafab8c000-7fbafad8b000 ---p 0000f000 fc:00 131310                     /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7fbafad8b000-7fbafad8c000 r--p 0000e000 fc:00 131310                     /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7fbafad8c000-7fbafad8d000 rw-p 0000f000 fc:00 131310                     /lib/x86_64-linux-gnu/libbz2.so.1.0.4
7fbafad8d000-7fbafafa7000 r-xp 00000000 fc:00 130936                     /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7fbafafa7000-7fbafb1a6000 ---p 0021a000 fc:00 130936                     /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7fbafb1a6000-7fbafb1c2000 r--p 00219000 fc:00 130936                     /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7fbafb1c2000-7fbafb1ce000 rw-p 00235000 fc:00 130936                     /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
7fbafb1ce000-7fbafb1d1000 rw-p 00000000 00:00 0
7fbafb1d1000-7fbafb1e8000 r-xp 00000000 fc:00 2372866                    /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.58.0
7fbafb1e8000-7fbafb3e8000 ---p 00017000 fc:00 2372866                    /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.58.0
7fbafb3e8000-7fbafb3e9000 r--p 00017000 fc:00 2372866                    /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.58.0
7fbafb3e9000-7fbafb3ea000 rw-p 00018000 fc:00 2372866                    /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.58.0
7fbafb3ea000-7fbafb401000 r-xp 00000000 fc:00 2372471                    /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
7fbafb401000-7fbafb600000 ---p 00017000 fc:00 2372471                    /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
7fbafb600000-7fbafb601000 r--p 00016000 fc:00 2372471                    /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
7fbafb601000-7fbafb602000 rw-p 00017000 fc:00 2372471                    /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
7fbafb602000-7fbafb6d1000 r-xp 00000000 fc:00 2357075                    /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7fbafb6d1000-7fbafb8d1000 ---p 000cf000 fc:00 2357075                    /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7fbafb8d1000-7fbafb8d4000 r--p 000cf000 fc:00 2357075                    /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7fbafb8d4000-7fbafb8d6000 rw-p 000d2000 fc:00 2357075                    /usr/lib/x86_64-linux-gnu/libsqlite3.so.0.8.6
7fbafb8d6000-7fbafb8d7000 rw-p 00000000 00:00 0
7fbafb8d7000-7fbafb8fa000 r-xp 00000000 fc:00 2363292                    /usr/local/lib/libsecp256k1.so.0.0.0
7fbafb8fa000-7fbafbaf9000 ---p 00023000 fc:00 2363292                    /usr/local/lib/libsecp256k1.so.0.0.0
7fbafbaf9000-7fbafbafa000 r--p 00022000 fc:00 2363292                    /usr/local/lib/libsecp256k1.so.0.0.0
7fbafbafa000-7fbafbafb000 rw-p 00023000 fc:00 2363292                    /usr/local/lib/libsecp256k1.so.0.0.0
7fbafbafb000-7fbafbb11000 r-xp 00000000 fc:00 131332                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbafbb11000-7fbafbd10000 ---p 00016000 fc:00 131332                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbafbd10000-7fbafbd11000 r--p 00015000 fc:00 131332                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbafbd11000-7fbafbd12000 rw-p 00016000 fc:00 131332                     /lib/x86_64-linux-gnu/libgcc_s.so.1
7fbafbd12000-7fbafbe8c000 r-xp 00000000 fc:00 2359084                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.24
7fbafbe8c000-7fbafc08b000 ---p 0017a000 fc:00 2359084                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.24
7fbafc08b000-7fbafc095000 r--p 00179000 fc:00 2359084                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.24
7fbafc095000-7fbafc097000 rw-p 00183000 fc:00 2359084                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.24
7fbafc097000-7fbafc09a000 rw-p 00000000 00:00 0
7fbafc09a000-7fbafc09d000 r-xp 00000000 fc:00 2372450                    /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0
7fbafc09d000-7fbafc29c000 ---p 00003000 fc:00 2372450                    /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0
7fbafc29c000-7fbafc29d000 r--p 00002000 fc:00 2372450                    /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0
7fbafc29d000-7fbafc29e000 rw-p 00003000 fc:00 2372450                    /usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0
7fbafc29e000-7fbafc435000 r-xp 00000000 fc:00 804106                     /home/mribbons/secp256k1/BlockSci/release/src/blocksci/libblocksci.so
7fbafc435000-7fbafc634000 ---p 00197000 fc:00 804106                     /home/mribbons/secp256k1/BlockSci/release/src/blocksci/libblocksci.so
7fbafc634000-7fbafc636000 r--p 00196000 fc:00 804106                     /home/mribbons/secp256k1/BlockSci/release/src/blocksci/libblocksci.so
7fbafc636000-7fbafc640000 rw-p 00198000 fc:00 804106                     /home/mribbons/secp256k1/BlockSci/release/src/blocksci/libblocksci.so
7fbafc640000-7fbafc641000 rw-p 00000000 00:00 0
7fbafc641000-7fbafc740000 r-xp 00000000 fc:00 796292                     /home/user/BlockSci/blocksci_interface.cpython-35m-x86_64-linux-gnu.so
7fbafc740000-7fbafc940000 ---p 000ff000 fc:00 796292                     /home/user/BlockSci/blocksci_interface.cpython-35m-x86_64-linux-gnu.so
7fbafc940000-7fbafc942000 r--p 000ff000 fc:00 796292                     /home/user/BlockSci/blocksci_interface.cpython-35m-x86_64-linux-gnu.so
7fbafc942000-7fbafc943000 rw-p 00101000 fc:00 796292                     /home/user/BlockSci/blocksci_interface.cpython-35m-x86_64-linux-gnu.so
7fbafc943000-7fbafc9c3000 rw-p 00000000 00:00 0
7fbafc9c3000-7fbafcc9b000 r--p 00000000 fc:00 2356281                    /usr/lib/locale/locale-archive
7fbafcc9b000-7fbafcda3000 r-xp 00000000 fc:00 136047                     /lib/x86_64-linux-gnu/libm-2.23.so
7fbafcda3000-7fbafcfa2000 ---p 00108000 fc:00 136047                     /lib/x86_64-linux-gnu/libm-2.23.so
7fbafcfa2000-7fbafcfa3000 r--p 00107000 fc:00 136047                     /lib/x86_64-linux-gnu/libm-2.23.so
7fbafcfa3000-7fbafcfa4000 rw-p 00108000 fc:00 136047                     /lib/x86_64-linux-gnu/libm-2.23.so
7fbafcfa4000-7fbafcfbd000 r-xp 00000000 fc:00 131288                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbafcfbd000-7fbafd1bc000 ---p 00019000 fc:00 131288                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbafd1bc000-7fbafd1bd000 r--p 00018000 fc:00 131288                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbafd1bd000-7fbafd1be000 rw-p 00019000 fc:00 131288                     /lib/x86_64-linux-gnu/libz.so.1.2.8
7fbafd1be000-7fbafd1e4000 r-xp 00000000 fc:00 130932                     /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbafd1e4000-7fbafd3e4000 ---p 00026000 fc:00 130932                     /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbafd3e4000-7fbafd3e6000 r--p 00026000 fc:00 130932                     /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbafd3e6000-7fbafd3e7000 rw-p 00028000 fc:00 130932                     /lib/x86_64-linux-gnu/libexpat.so.1.6.0
7fbafd3e7000-7fbafd3e9000 r-xp 00000000 fc:00 136045                     /lib/x86_64-linux-gnu/libutil-2.23.so
7fbafd3e9000-7fbafd5e8000 ---p 00002000 fc:00 136045                     /lib/x86_64-linux-gnu/libutil-2.23.so
7fbafd5e8000-7fbafd5e9000 r--p 00001000 fc:00 136045                     /lib/x86_64-linux-gnu/libutil-2.23.so
7fbafd5e9000-7fbafd5ea000 rw-p 00002000 fc:00 136045                     /lib/x86_64-linux-gnu/libutil-2.23.so
7fbafd5ea000-7fbafd5ed000 r-xp 00000000 fc:00 135383                     /lib/x86_64-linux-gnu/libdl-2.23.so
7fbafd5ed000-7fbafd7ec000 ---p 00003000 fc:00 135383                     /lib/x86_64-linux-gnu/libdl-2.23.so
7fbafd7ec000-7fbafd7ed000 r--p 00002000 fc:00 135383                     /lib/x86_64-linux-gnu/libdl-2.23.so
7fbafd7ed000-7fbafd7ee000 rw-p 00003000 fc:00 135383                     /lib/x86_64-linux-gnu/libdl-2.23.so
7fbafd7ee000-7fbafd9ae000 r-xp 00000000 fc:00 136052                     /lib/x86_64-linux-gnu/libc-2.23.so
7fbafd9ae000-7fbafdbae000 ---p 001c0000 fc:00 136052                     /lib/x86_64-linux-gnu/libc-2.23.so
7fbafdbae000-7fbafdbb2000 r--p 001c0000 fc:00 136052                     /lib/x86_64-linux-gnu/libc-2.23.so
7fbafdbb2000-7fbafdbb4000 rw-p 001c4000 fc:00 136052                     /lib/x86_64-linux-gnu/libc-2.23.so
7fbafdbb4000-7fbafdbb8000 rw-p 00000000 00:00 0
7fbafdbb8000-7fbafdbd0000 r-xp 00000000 fc:00 135370                     /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbafdbd0000-7fbafddcf000 ---p 00018000 fc:00 135370                     /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbafddcf000-7fbafddd0000 r--p 00017000 fc:00 135370                     /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbafddd0000-7fbafddd1000 rw-p 00018000 fc:00 135370                     /lib/x86_64-linux-gnu/libpthread-2.23.so
7fbafddd1000-7fbafddd5000 rw-p 00000000 00:00 0
7fbafddd5000-7fbafddfb000 r-xp 00000000 fc:00 135358                     /lib/x86_64-linux-gnu/ld-2.23.so
7fbafde27000-7fbafdfec000 rw-p 00000000 00:00 0
7fbafdfef000-7fbafdff0000 rw-p 00000000 00:00 0
7fbafdff0000-7fbafdff1000 rwxp 00000000 00:00 0
7fbafdff1000-7fbafdff8000 r--s 00000000 fc:00 2357334                    /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7fbafdff8000-7fbafdffa000 rw-p 00000000 00:00 0
7fbafdffa000-7fbafdffb000 r--p 00025000 fc:00 135358                     /lib/x86_64-linux-gnu/ld-2.23.so
7fbafdffb000-7fbafdffc000 rw-p 00026000 fc:00 135358                     /lib/x86_64-linux-gnu/ld-2.23.so
7fbafdffc000-7fbafdffd000 rw-p 00000000 00:00 0
7ffde2d09000-7ffde2d2a000 rw-p 00000000 00:00 0                          [stack]
7ffde2dc8000-7ffde2dca000 r--p 00000000 00:00 0                          [vvar]
7ffde2dca000-7ffde2dcc000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
Aborted (core dumped)
$ uname -a
Linux TOASTNAME 4.4.0-62-generic #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial

Build Issues using gcc-6

Hi,
Thanks for uploading the huge number of commits, I am getting a couple of issues:

~/BlockSci2/release$ make

[ 57%] Built target blocksci
[ 58%] Building CXX object src/parser/CMakeFiles/blocksci_parser.dir/address_writer.cpp.o
/home/mribbons/BlockSci2/src/parser/address_writer.cpp: In instantiation of ‘AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> [with auto:16 = const ScriptOutput<(blocksci::AddressType::Enum)0u>]’:
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11:   required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; As = {const ScriptOutput<(blocksci::AddressType::Enum)0u>&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:260:57:   required from ‘struct mpark::detail::visitation::variant::visit_exhaustive_visitor_check<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>, const ScriptOutput<(blocksci::AddressType::Enum)0u>&>’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:663:13:   required from ‘constexpr decltype(auto) mpark::detail::visitation::variant::value_visitor<Visitor>::operator()(Alts&& ...) const [with Alts = {const mpark::detail::alt<0ul, ScriptOutput<(blocksci::AddressType::Enum)0u> >&}; Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11:   required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; As = {const mpark::detail::alt<0ul, ScriptOutput<(blocksci::AddressType::Enum)0u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:529:15:   required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::dispatcher<Is>::impl<F, Vs>::dispatch(F, Vs ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}; long unsigned int ...Is = {0ul}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:537:11:   [ skipping 3 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:580:45:   required from ‘static constexpr auto mpark::detail::visitation::base::make_fmatrix() [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:629:11:   required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::visit_alt(Visitor&&, Vs&& ...) [with Visitor = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; Vs = {const mpark::detail::impl<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:688:11:   required from ‘static constexpr decltype(auto) mpark::detail::visitation::variant::visit_alt(Visitor&&, Vs&& ...) [with Visitor = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:703:11:   required from ‘static constexpr decltype(auto) mpark::detail::visitation::variant::visit_value(Visitor&&, Vs&& ...) [with Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:1738:52:   required from ‘constexpr decltype(auto) mpark::visit(Visitor&&, Vs&& ...) [with Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/src/parser/address_writer.cpp:20:107:   required from here
/home/mribbons/BlockSci2/src/parser/address_writer.cpp:20:90: error: cannot call member function ‘size_t AddressWriter::serialize(const ScriptOutput<type>&, uint32_t) [with blocksci::AddressType::Enum type = (blocksci::AddressType::Enum)0u; size_t = long unsigned int; uint32_t = unsigned int]’ without object
     return mpark::visit([&](auto &scriptOutput) { return serialize(scriptOutput, txNum); }, output.wrapped);
                                                                                          ^
/home/mribbons/BlockSci2/src/parser/address_writer.cpp: In instantiation of ‘AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> [with auto:16 = const ScriptOutput<(blocksci::AddressType::Enum)1u>]’:
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11:   required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; As = {const ScriptOutput<(blocksci::AddressType::Enum)1u>&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:260:57:   required from ‘struct mpark::detail::visitation::variant::visit_exhaustive_visitor_check<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>, const ScriptOutput<(blocksci::AddressType::Enum)1u>&>’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:663:13:   required from ‘constexpr decltype(auto) mpark::detail::visitation::variant::value_visitor<Visitor>::operator()(Alts&& ...) const [with Alts = {const mpark::detail::alt<1ul, ScriptOutput<(blocksci::AddressType::Enum)1u> >&}; Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11:   required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; As = {const mpark::detail::alt<1ul, ScriptOutput<(blocksci::AddressType::Enum)1u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:529:15:   required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::dispatcher<Is>::impl<F, Vs>::dispatch(F, Vs ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}; long unsigned int ...Is = {1ul}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:537:11:   [ skipping 3 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:580:45:   required from ‘static constexpr auto mpark::detail::visitation::base::make_fmatrix() [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:629:11:   required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::visit_alt(Visitor&&, Vs&& ...) [with Visitor = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; Vs = {const mpark::detail::impl<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:688:11:   required from ‘static constexpr decltype(auto) mpark::detail::visitation::variant::visit_alt(Visitor&&, Vs&& ...) [with Visitor = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:703:11:   required from ‘static constexpr decltype(auto) mpark::detail::visitation::variant::visit_value(Visitor&&, Vs&& ...) [with Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:1738:52:   required from ‘constexpr decltype(auto) mpark::visit(Visitor&&, Vs&& ...) [with Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; Vs = {const mpark::variant<ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}]’
/home/mribbons/BlockSci2/src/parser/address_writer.cpp:20:107:   required from here
/home/mribbons/BlockSci2/src/parser/address_writer.cpp:20:90: error: cannot call member function ‘size_t AddressWriter::serialize(const ScriptOutput<type>&, uint32_t) [with blocksci::AddressType::Enum type = (blocksci::AddressType::Enum)1u; size_t = long unsigned int; uint32_t = unsigned int]’ without object
/home/mribbons/BlockSci2/src/parser/address_writer.cpp: In instantiation of ‘AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> [with auto:16 = const ScriptOutput<(blocksci::AddressType::Enum)2u>]’:
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11:   required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>; As = {const ScriptOutput<(blocksci::AddressType::Enum)2u>&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:260:57:   required from ‘struct mpark::detail::visitation::variant::visit_exhaustive_visitor_check<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>, const ScriptOutput<(blocksci::AddressType::Enum)2u>&>’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:663:13:   required from ‘constexpr decltype(auto) mpark::detail::visitation::variant::value_visitor<Visitor>::operator()(Alts&& ...) const [with Alts = {const mpark::detail::alt<2ul, ScriptOutput<(blocksci::AddressType::Enum)2u> >&}; Visitor = AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)>]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/lib.hpp:233:11:   required by substitution of ‘template<class F, class ... As> constexpr decltype (forward<F>(f)((forward<As>)(mpark::lib::cpp17::invoke::as)...)) mpark::lib::cpp17::invoke(F&&, As&& ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >; As = {const mpark::detail::alt<2ul, ScriptOutput<(blocksci::AddressType::Enum)2u> >&}]’
/home/mribbons/BlockSci2/libs/variant/include/mpark/variant.hpp:529:15:   required from ‘static constexpr decltype(auto) mpark::detail::visitation::base::dispatcher<Is>::impl<F, Vs>::dispatch(F, Vs ...) [with F = mpark::detail::visitation::variant::value_visitor<AddressWriter::serialize(const AnyScriptOutput&, uint32_t)::<lambda(auto:16&)> >&&; Vs = {const mpark::detail::base<(mpark::detail::Trait)1, ScriptOutput<(blocksci::AddressType::Enum)0u>, ScriptOutput<(blocksci::AddressType::Enum)1u>, ScriptOutput<(blocksci::AddressType::Enum)2u>, ScriptOutput<(blocksci::AddressType::Enum)3u>, ScriptOutput<(blocksci::AddressType::Enum)4u>, ScriptOutput<(blocksci::AddressType::Enum)5u>, ScriptOutput<(blocksci::AddressType::Enum)6u>, ScriptOutput<(blocksci::AddressType::Enum)7u> >&}; long unsigned int ...Is = {2ul}]’

// plus more erros

Full log here:

make.txt

Also it looks like src/blocksci/heuristics/blockchain_heuristics.hpp was missing #include <stdio.h>

Thanks again for the big code dump, I look forward to testing it out and hopefully contributing!

Python3 compatibility?

Assuming BlockSci was tested under latest Python 2.x. Just wanted to ask about Python3 status.

I'm on a macOS 10.13. I tried to follow the readme to get to the point when I would be able to exercise BlockSci Demo jupyter notebook. I'm a Python noob and new to Jupyter so maybe I'm missing something here, but I struggled to get it fully working.

  1. Installed latest Anaconda for macOS (conda 4.3.25).
  2. I installed C++ dependencies through homebrew and compiled blocksci_interface.so

But it wasn't compatible with Python2. I wasn't able to import it in Python 2.7.13 interactive shell, got:

ImportError: dlopen(blocksci/blocksci_interface.so, 2): Symbol not found: _PyInstanceMethod_Type
  Referenced from: blocksci/blocksci_interface.so
  Expected in: flat namespace
 in blocksci/blocksci_interface.so

It turned out that importing it in Python 3.6.1 |Anaconda custom (x86_64)| works, but the blocksci glue python code itself might not be Python3-ready. I had to change from multiprocess import Pool to from multiprocessing import Pool. This allowed me to run the demo notebook except for the mapreduce_block_ranges-related cells which failed with Can't pickle local object 'map_blocks.<locals>.mapFunc'

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-4-27df13946b17> in <module>()
----> 1 get_ipython().magic('time net_coins_per_block = chain.map_blocks(lambda block: block.net_address_type_value())')

/Users/darwin/anaconda/lib/python3.6/site-packages/IPython/core/interactiveshell.py in magic(self, arg_s)
   2156         magic_name, _, magic_arg_s = arg_s.partition(' ')
   2157         magic_name = magic_name.lstrip(prefilter.ESC_MAGIC)
-> 2158         return self.run_line_magic(magic_name, magic_arg_s)
   2159 
   2160     #-------------------------------------------------------------------------

/Users/darwin/anaconda/lib/python3.6/site-packages/IPython/core/interactiveshell.py in run_line_magic(self, magic_name, line)
   2077                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2078             with self.builtin_trap:
-> 2079                 result = fn(*args,**kwargs)
   2080             return result
   2081 

<decorator-gen-59> in time(self, line, cell, local_ns)

/Users/darwin/anaconda/lib/python3.6/site-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
    186     # but it's overkill for just that one bit of state.
    187     def magic_deco(arg):
--> 188         call = lambda f, *a, **k: f(*a, **k)
    189 
    190         if callable(arg):

/Users/darwin/anaconda/lib/python3.6/site-packages/IPython/core/magics/execution.py in time(self, line, cell, local_ns)
   1183         else:
   1184             st = clock2()
-> 1185             exec(code, glob, local_ns)
   1186             end = clock2()
   1187             out = None

<timed exec> in <module>()

/Users/darwin/code/bitcoin-research/BlockSci/Notebooks/blocksci/__init__.py in map_blocks(self, blockFunc, start, end, cpu_count)
     65         return [blockFunc(block) for block in blocks]
     66 
---> 67     return mapreduce_block_ranges(self, mapFunc, operator.concat, list(), start, end, cpu_count)
     68 
     69 def filter_blocks(self, filterFunc, start = None, end = None, cpu_count=psutil.cpu_count()):

/Users/darwin/code/bitcoin-research/BlockSci/Notebooks/blocksci/__init__.py in mapreduce_block_ranges(chain, mapFunc, reduceFunc, init, start, end, cpu_count)
     39         results_future = p.map_async(mapFunc, segments[1:])
     40         last = mapFunc(segments[0])
---> 41         results = results_future.get()
     42         results.insert(0, last)
     43     return reduce(reduceFunc, results, init)

/Users/darwin/anaconda/lib/python3.6/multiprocessing/pool.py in get(self, timeout)
    606             return self._value
    607         else:
--> 608             raise self._value
    609 
    610     def _set(self, i, obj):

/Users/darwin/anaconda/lib/python3.6/multiprocessing/pool.py in _handle_tasks(taskqueue, put, outqueue, pool, cache)
    383                         break
    384                     try:
--> 385                         put(task)
    386                     except Exception as e:
    387                         job, ind = task[:2]

/Users/darwin/anaconda/lib/python3.6/multiprocessing/connection.py in send(self, obj)
    204         self._check_closed()
    205         self._check_writable()
--> 206         self._send_bytes(_ForkingPickler.dumps(obj))
    207 
    208     def recv_bytes(self, maxlength=None):

/Users/darwin/anaconda/lib/python3.6/multiprocessing/reduction.py in dumps(cls, obj, protocol)
     49     def dumps(cls, obj, protocol=None):
     50         buf = io.BytesIO()
---> 51         cls(buf, protocol).dump(obj)
     52         return buf.getbuffer()
     53 

AttributeError: Can't pickle local object 'map_blocks.<locals>.mapFunc'

So the question is: Should I dig deeper into this Python3 case or should I somehow figure out how to compile blocksci_interface.so against Python2 libraries and switch Anaconda to Python2 instead?

Please support bootstrap.dat File

Please support the bootstrap.dat File format.

This would speed up a lot ... This 150GB bootstrap-files can be downloaded and importet to bitcoin core but import takes a looong time. It would be extremly helpful when BlockSci directly could use bootstrap-files.

blocksci_parser segmentation fault

Hello!

I am trying to get things going with blocksci (I am running a full bitcoin core node). When running blocksci_parser as indicated in the guide the following happened:

$ blocksci_parser --output-directory bitcoin-data update disk --coin-directory .bitcoin
100.0% done fetching block headers
Starting with chain of 0 blocks
Removing 0 blocks
Adding 501332 blocks
1.41% done, Block 184396/501332
3.49% done, Block 212576/501332
Back linking transactions
99.96% done
3.94% done, Block 216881/501332Segmentation fault (core dumped)

If I now try to re-run the program, I get an exception

$ blocksci_parser --output-directory bitcoin-data update disk --coin-directory .bitcoin
100.0% done fetching block headers
Starting with chain of 217054 blocks
Removing 0 blocks
Adding 284318 blocks
0.00% done, Block 217055/501372terminate called after throwing an instance of 'NextQueueFinishedEarlyException'
  what():  Next queue finished early
Aborted (core dumped)

The whole issue is very much reproducible. I've tried to re-sync the BTC node, re-run blocksci_parser and the same thing happens.

Can someone explain to me what is happening here? Is there any workaround for this issue?

CurrencyConverter tool failing (502 Server Error)

blocksci_parser - stuck

I ran the following command with correct coin data directory,

blocksci_parser --coin-directory .bitcoin --output-directory bitcoin-data

But the parser is not giving any output or indications of processing. Also size of bitcoin-data folder is not increasing? How long does the parsing take - and why is it not giving any processing indication?

Also, does blocksci_parser only work if we have complete chain data?

Installation issue: 'lmdb.h' file not found

I'm installing on osx but I don't think it's an OS issue. Following the installation instructions, I managed to get pretty far until the 'make' command here:

cd ../../..
mkdir release
cd release
cmake -DCMAKE_BUILD_TYPE=Release ..
make

Which resulted in the following error:

[  0%] Building CXX object src/blocksci/CMakeFiles/blocksci_static.dir/address/address.cpp.o
In file included from /Users/timothylim/repos/BlockSci/src/blocksci/address/address.cpp:19:
In file included from /Users/timothylim/repos/BlockSci/src/blocksci/index/address_index.hpp:17:
/Users/timothylim/repos/BlockSci/libs/lmdbxx/lmdb++.h:25:10: fatal error: 'lmdb.h' file not found
#include <lmdb.h>      /* for MDB_*, mdb_*() */
         ^
1 error generated.

Unfortunately, I'm not proficient in c++ and am having trouble debugging this.

Unable to run chain.cpp.filter_tx

Hi, I'm seeing the following error message when running cpp.filter_tx function in the example notebook...

In file included from /tmp/tmphd7l1hcp/dynamicCode0.cpp:2:0:
/home/ubuntu/BlockSci/libs/pybind11/include/pybind11/pybind11.h:1338:2: warning: extra ‘;’ [-Wpedantic]
};
^

CPU times: user 1min 33s, sys: 28 ms, total: 1min 33s
Wall time: 20.4 s
In [13]:

image

Use virtual size instead of raw size

Since segwit was activated at block 494,784, the limiting resource on block space is 'weight', which is defined in BIP 141 as:

Block weight is defined as Base size * 3 + Total size. (rationale[3])

Base size is the block size in bytes with the original transaction serialization without any witness-related data, as seen by a non-upgraded node.

Total size is the block size in bytes with transactions serialized as described in BIP144, including base data and witness data.

For fee market analysis, the relevant metric is transaction weight (Base transaction size * 3 + Total transaction size), which can be normalized to virtual size (Transaction weight / 4). This is because miners will order transactions by fee/virtual byte to maximize the fee yield from a block.

For transactions without any segwit inputs, virtual size is the same as size.

BlockSci should therefore store the tx virtual size instead of tx size. Virtual size is exposed in the getrawtransaction and getblock (with verbosity=2) RPC methods as vsize.

compile error

Thanks a lot for creating BlockSci. I'm following the local setup on a new ubuntu 16.04 and I got the error below. Do you have any advice?
Thanks,
Daniel

ubuntu@ip-172-31-24-144:~/BlockSci/release$ sudo make install [ 36%] Built target blocksci_static [ 72%] Built target blocksci [ 89%] Built target blocksci_parser [ 91%] Built target mempool_recorder [ 92%] Building CXX object src/python-interface/CMakeFiles/blocksci_interface.dir/output_py.cpp.o In file included from /home/ubuntu/BlockSci/libs/range-v3/include/range/v3/view_facade.hpp:21:0, from /home/ubuntu/BlockSci/src/blocksci/util/file_mapper.hpp:17, from /home/ubuntu/BlockSci/src/blocksci/chain/chain_access.hpp:16, from /home/ubuntu/BlockSci/src/blocksci/chain/output.hpp:14, from /home/ubuntu/BlockSci/src/blocksci/chain/transaction.hpp:13, from /home/ubuntu/BlockSci/src/blocksci/chain/block.hpp:13, from /home/ubuntu/BlockSci/src/python-interface/ranges_py.hpp:11, from /home/ubuntu/BlockSci/src/python-interface/output_py.cpp:9: /home/ubuntu/BlockSci/libs/range-v3/include/range/v3/view_interface.hpp: In substitution of 'template<class Container, class D, class, int _concept_requires_341, typename std::enable_if<((_concept_requires_341 == 43) || std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Range, T>::type:: value, typename std::integral_constant<bool, (! typename ranges::v3::concepts::models<ranges::v3::concepts::View, T>::type:: value)>::type:: value, typename ranges::v3::concepts::models<ranges::v3::concepts::MoveConstructible, T>::type:: value, typename ranges::v3::concepts::models<ranges::v3::concepts::ConvertibleTo, typename ranges::v3::value_type<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>()))>::type, typename ranges::v3::value_type<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<T&>()))>::type>::type:: value, typename ranges::v3::concepts::models<ranges::v3::concepts::Constructible, Container, typename meta::v1::detail::_if_<meta::v1::list<std::is_same<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))>, decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), ranges::v3::_common_iterator_::common_iterator<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))> >, std::integral_constant<bool, true> >::type, typename meta::v1::detail::_if_<meta::v1::list<std::is_same<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))>, decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), ranges::v3::_common_iterator_::common_iterator<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))> >, std::integral_constant<bool, true> >::type>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Range, T>::type:: value || true), (typename std::integral_constant<bool, (! typename ranges::v3::concepts::models<ranges::v3::concepts::View, T>::type:: value)>::type:: value || true), (typename ranges::v3::concepts::models<ranges::v3::concepts::MoveConstructible, T>::type:: value || true), (typename ranges::v3::concepts::models<ranges::v3::concepts::ConvertibleTo, typename ranges::v3::value_type<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>()))>::type, typename ranges::v3::value_type<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<T&>()))>::type>::type:: value || true), (typename ranges::v3::concepts::models<ranges::v3::concepts::Constructible, Container, typename meta::v1::detail::_if_<meta::v1::list<std::is_same<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))>, decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), ranges::v3::_common_iterator_::common_iterator<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))> >, std::integral_constant<bool, true> >::type, typename meta::v1::detail::_if_<meta::v1::list<std::is_same<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))>, decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), ranges::v3::_common_iterator_::common_iterator<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))> >, std::integral_constant<bool, true> >::type>::type:: value || true)> >()), int>::type <anonymous> > ranges::v3::view_interface<Derived, <anonymous> >::operator Container() const [with Container = auto:3; D = ranges::v3::any_view<blocksci::Output>; <template-parameter-1-3> = <missing>; int _concept_requires_341 = <missing>; typename std::enable_if<((_concept_requires_341 == 43) || std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Range, T>::type:: value, typename std::integral_constant<bool, (! typename ranges::v3::concepts::models<ranges::v3::concepts::View, T>::type:: value)>::type:: value, typename ranges::v3::concepts::models<ranges::v3::concepts::MoveConstructible, T>::type:: value, typename ranges::v3::concepts::models<ranges::v3::concepts::ConvertibleTo, typename ranges::v3::value_type<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>()))>::type, typename ranges::v3::value_type<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<T&>()))>::type>::type:: value, typename ranges::v3::concepts::models<ranges::v3::concepts::Constructible, Container, typename meta::v1::detail::_if_<meta::v1::list<std::is_same<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))>, decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), ranges::v3::_common_iterator_::common_iterator<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))> >, std::integral_constant<bool, true> >::type, typename meta::v1::detail::_if_<meta::v1::list<std::is_same<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))>, decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), ranges::v3::_common_iterator_::common_iterator<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))> >, std::integral_constant<bool, true> >::type>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Range, T>::type:: value || true), (typename std::integral_constant<bool, (! typename ranges::v3::concepts::models<ranges::v3::concepts::View, T>::type:: value)>::type:: value || true), (typename ranges::v3::concepts::models<ranges::v3::concepts::MoveConstructible, T>::type:: value || true), (typename ranges::v3::concepts::models<ranges::v3::concepts::ConvertibleTo, typename ranges::v3::value_type<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>()))>::type, typename ranges::v3::value_type<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<T&>()))>::type>::type:: value || true), (typename ranges::v3::concepts::models<ranges::v3::concepts::Constructible, Container, typename meta::v1::detail::_if_<meta::v1::list<std::is_same<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))>, decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), ranges::v3::_common_iterator_::common_iterator<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))> >, std::integral_constant<bool, true> >::type, typename meta::v1::detail::_if_<meta::v1::list<std::is_same<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))>, decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), ranges::v3::_common_iterator_::common_iterator<decltype (ranges::v3::function_objects::{anonymous}::begin(declval<const D&>())), decltype (ranges::v3::function_objects::{anonymous}::end(declval<const D&>()))> >, std::integral_constant<bool, true> >::type>::type:: value || true)> >()), int>::type <anonymous> = <missing>]': /home/ubuntu/BlockSci/src/python-interface/output_py.cpp:141:20: required from 'init_output(pybind11::module&)::<lambda(auto:13&&, auto:14)> [with auto:13 = ranges::v3::any_view<blocksci::Output>&; auto:14 = addOutputRangeMethods(Class&, FuncApplication)::<lambda(Range&)> [with Class = pybind11::class_<ranges::v3::any_view<blocksci::Output> >; FuncApplication = init_output(pybind11::module&)::<lambda(auto:13&&, auto:14)>; Range = ranges::v3::any_view<blocksci::Output>]::<lambda(auto:3&&)>]' /home/ubuntu/BlockSci/src/python-interface/output_py.cpp:63:20: required from 'addOutputRangeMethods(Class&, FuncApplication)::<lambda(Range&)> [with Class = pybind11::class_<ranges::v3::any_view<blocksci::Output> >; FuncApplication = init_output(pybind11::module&)::<lambda(auto:13&&, auto:14)>; Range = ranges::v3::any_view<blocksci::Output>]' /home/ubuntu/BlockSci/src/python-interface/output_py.cpp:63:16: required from 'struct addOutputRangeMethods(Class&, FuncApplication) [with Class = pybind11::class_<ranges::v3::any_view<blocksci::Output> >; FuncApplication = init_output(pybind11::module&)::<lambda(auto:13&&, auto:14)>]::<lambda(using Range = using type = struct ranges::v3::any_view<blocksci::Output>&)>' /home/ubuntu/BlockSci/src/python-interface/output_py.cpp:61:5: required from 'void addOutputRangeMethods(Class&, FuncApplication) [with Class = pybind11::class_<ranges::v3::any_view<blocksci::Output> >; FuncApplication = init_output(pybind11::module&)::<lambda(auto:13&&, auto:14)>]' /home/ubuntu/BlockSci/src/python-interface/output_py.cpp:142:6: required from here /home/ubuntu/BlockSci/libs/range-v3/include/range/v3/view_interface.hpp:340:17: internal compiler error: in dependent_type_p, at cp/pt.c:21233 typename = typename Container::allocator_type, // HACKHACK ^ Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions. src/python-interface/CMakeFiles/blocksci_interface.dir/build.make:206: recipe for target 'src/python-interface/CMakeFiles/blocksci_interface.dir/output_py.cpp.o' failed make[2]: *** [src/python-interface/CMakeFiles/blocksci_interface.dir/output_py.cpp.o] Error 1 CMakeFiles/Makefile2:393: recipe for target 'src/python-interface/CMakeFiles/blocksci_interface.dir/all' failed make[1]: *** [src/python-interface/CMakeFiles/blocksci_interface.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: *** [all] Error 2 ubuntu@ip-172-31-24-144:~/BlockSci/release$

std::bad_alloc error when running blocksci_parser

When I run blocksci_parser to update it throws error msg without much context, I'm wondering if there's any way to solve it?

I kept running the command to make sure that blockSci is up to date, and the first few times everything is fine, it's only after running it several times that the error starts to occur. The machine has 60GB RAM and is no where near full capacity when I run the erring command.

# blocksci_parser --output-directory /home/ubuntu/bitcoin update --max-block 502264 disk --coin-directory /home/ubuntu/.bitcoin
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

And it looks like it's bitcoin/parser/blockList.dat causing the problem. Once I remove this file blocksci_parser will work again

Obtain list of transactions

Hello,
I was trying to figure out how BlockSci works, but I was not able to obtain list of transaction for a given address num.

add_num = 10000
address = blocksci.Address(add_num, blocksci.address_type.pubkeyhash)

But:
address.txes()

keeps giving me an empty list.

Surfacing of Orphaned Block Data

Currently data regarding orphaned blocks is completely ignored by BlockSci. It would be nice to instead have the parser serialize this data somewhere and make it available through an interface in the analysis library.

Platform Independent Distribution of Data

Currently BlockSci data files consist of the direct serialization of BlockSci's data structures from memory onto disk in the exact layout which the compiler assigns. This allows data to be loaded with near 0 processing necessary, but also means that distribution of BlockSci's data files is difficult since it is dependent on the many factors that can effect memory layout of C++ classes.

Creating a platform independent intermediate data format would allow us to distribute our processed Blockchain data so that others could download it rather than requiring that people run BlockSci's parser themselves.

Further incremental data updates could be posted which would allow people to maintain fairly up to date copies of BlockSci blockchain data without running a full node.

segmentation fault when running clusterer

I am getting segmentation fault when running clusterer with the recently updated code. Can you please look into it?

$ clusterer /home/user/bitcoin-data
Segmentation fault (core dumped)

Lower RAM requirements with Dask

Dask provides a similar API to Pandas and supports datasets larger than can fit into RAM.

From https://dask.pydata.org/en/latest/dataframe.html :

A Dask DataFrame is a large parallel dataframe composed of many smaller Pandas dataframes, split along the index. These pandas dataframes may live on disk for larger-than-memory computing on a single machine, or on many different machines in a cluster.

Request for AMI image in other regions

I really want use BlockSci in ap-northeast region in AWS.
Is there any plan to enable AMI image in other regions?
I'm asking this because I couldn't make it work BlockSci on my own instance. And I want to compare with reference ami.

Tell me if there is no plan to do it. Thanks.

Building fails for gcc below version 5

~/Documents/BlockSci/release$ make
[  1%] Building CXX object src/blocksci/CMakeFiles/blocksci.dir/data_access.cpp.o
In file included from /home/rodomonte/Documents/BlockSci/src/blocksci/scripts/script_access.hpp:12:0,
                 from /home/rodomonte/Documents/BlockSci/src/blocksci/data_access.hpp:12,
                 from /home/rodomonte/Documents/BlockSci/src/blocksci/data_access.cpp:9:
/home/rodomonte/Documents/BlockSci/src/blocksci/address/address_info.hpp: In function ‘constexpr bool blocksci::isSpendable(blocksci::AddressType::Enum)’:
/home/rodomonte/Documents/BlockSci/src/blocksci/address/address_info.hpp:243:5: error: expression ‘<throw-expression>’ is not a constant-expression
     }
     ^
/home/rodomonte/Documents/BlockSci/src/blocksci/address/address_info.hpp: In function ‘constexpr blocksci::AddressType::Enum blocksci::addressAddressType(blocksci::AddressType::Enum)’:
/home/rodomonte/Documents/BlockSci/src/blocksci/address/address_info.hpp:253:5: error: expression ‘<throw-expression>’ is not a constant-expression
     }
     ^
/home/rodomonte/Documents/BlockSci/src/blocksci/address/address_info.hpp: In function ‘constexpr bool blocksci::hasNestedAddresses(blocksci::AddressType::Enum)’:
/home/rodomonte/Documents/BlockSci/src/blocksci/address/address_info.hpp:263:5: error: expression ‘<throw-expression>’ is not a constant-expression
     }
     ^
/home/rodomonte/Documents/BlockSci/src/blocksci/address/address_info.hpp: In function ‘constexpr int blocksci::getDBType(blocksci::AddressType::Enum)’:
/home/rodomonte/Documents/BlockSci/src/blocksci/address/address_info.hpp:273:5: error: expression ‘<throw-expression>’ is not a constant-expression
     }
     ^
src/blocksci/CMakeFiles/blocksci.dir/build.make:86: recipe for target 'src/blocksci/CMakeFiles/blocksci.dir/data_access.cpp.o' failed
make[2]: *** [src/blocksci/CMakeFiles/blocksci.dir/data_access.cpp.o] Error 1
CMakeFiles/Makefile2:103: recipe for target 'src/blocksci/CMakeFiles/blocksci.dir/all' failed
make[1]: *** [src/blocksci/CMakeFiles/blocksci.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

any idea why? (all precedent commands works perfectly.)

Segmentation fault after running clustering tool

I tried rebuilding the clusters and now I get a segmentation fault when I call the python cluster_with_address method.

This was working before rebuilding the clusters. Afterwards the following script:

import blocksci
from blocksci import *
import blocksci.cluster_python

chain = blocksci.Blockchain("/home/ubuntu/bitcoin/")
print(chain)
print("loading clusters\n")
cm = blocksci.cluster_python.ClusterManager("/home/ubuntu/bitcoin/clusters")
print(cm)

address = blocksci.Address.from_string("15rg7dmf9PS6dPdne3F816rKLmDsDNxex9")
print(address)
print(address.out_txes()[0].hash)
print("Loading cluster")
cluster = cm.cluster_with_address(address)

causes a segmentation fault:

<blocksci.blocksci_interface.Blockchain object at 0x7f1cde3fbeb8>
loading clusters

<blocksci.cluster_python.ClusterManager object at 0x7f1cfcd5d500>
Address(addressNum=52075814, type=pubkeyhash)
b35744527be738a9f2dc01e61d3e2268e7f76a4a770d725dce73635acbf524da
Loading cluster
Segmentation fault (core dumped)

I have also tried deleting the bitcoin data directory, along with a fresh checkout of BlockSci (master branch), rebuilding all tools and rebuilding the bitcoin data directory. Same result.

Copying the original *.dat files back in the bitcoin/clusters directory also crashes. So, it would seem reasonable that it's something else causing the issue.

Is this a known issue? What might I do to debug this?

include json lib

On my machine (Ubuntu 16.04) I had a missing librari when compiling bitcoin-api-cpp

json.h: File o directory non esistente
 #include <json/json.h>
                       ^
compilation terminated.

the problem is the position where the package is installed to solve the issue I brutally created a symlink

sudo ln -s /usr/include/jsoncpp/json .

Incremental Updates broken when processed blocks are orphaned

Currently we only have partial support for handling blockchain reorganizations so when running the parser after a block has been orphaned, data corruption or inconsistencies are possible. Therefore automatic blockchain updates are not enabled in the AMI for the current release.

Dockerfile for Reproducibility (and Binder)

A Dockerfile to build and host these notebooks would be helpful.

There are cookiecutter templates for creating git repos w/ .gitignore and a Makefile and ... for these types of projects:

There are also Docker containers which make it easy to launch a complete, consistent software environment:

Data Visualization w/ Jupyter Notebooks:

Python & Jupyter resources:

script.revealed_tx throws exception

This is a continuation of #56
I noticed that sometimes script.revealed_tx throws an index out of bounds exception. I looked through the code and I cannot say I fully understand it so I might be completely wrong, but I think this is normal because sometimes you just return new Transaction(MAX_INT) and that is why the error is thrown...

blocksci_parser complains about missing config.ini upon very first run

Hi, cloned the source yesterday, and trying to run the parser on my testnet3 directory, but blocksci_parser errors out with "Error, data directory does not contain config.ini. Are you sure "/data/blocksci/bitcoin-data" was the output directory of blocksci_parser?" This is the very first time I've run blocksci_parser. Creating an empty 'config.ini' doesn't help, I get "Error, parser data is not in the correct format. To fix you must delete the data file and rerun the parser" in that case.

Is there a base 'config.ini' I should try using, or should blocksci_parser create one for me?

Make the parser safely interuptable

The BlockSci parser takes quite a while to run and there is currently no way to interrupt it mid run without leading to data corruption. Adding SIGINT handling to allow clean shutdown would make it easier to work with the parser.

Is it possible to recover parsing after initial process was killed?

So, it's taking a long time to process the entire BTC blockchain. I had to reboot the machine I'm using.

When I try to run the parser again I get these errors. Should I perhaps delete some partially written block files in order to resume processing? I really don't want to start from scratch again.

I did start with a completely new parser data folder after the recent release, I have also just updated to edb6b46 and the issue still occurs.

Is this the same issue as #31?

mribbons@toastname:~$ blocksci_parser --coin-directory ~/.bitcoin --output-directory ~/blocksciparse2
0.00% done, Block 375436/498166terminate called after throwing an instance of 'NextQueueFinishedEarlyException'
  what():  Next queue finished early
Aborted (core dumped)
mribbons@toastname:~$ blocksci_parser --coin-directory ~/.bitcoin --output-directory ~/blocksciparse2
100.0% done fetching block headers
Starting with chain of 375466 blocks
Removing 0 blocks
Adding 122700 blocks
terminate called after throwing an instance of 'NextQueueFinishedEarlyException'
  what():  Next queue finished early
Aborted (core dumped)
mribbons@toastname:~$ blocksci_parser --coin-directory ~/.bitcoin --output-directory ~/blocksciparse2
100.0% done fetching block headers
Starting with chain of 375488 blocks
Removing 0 blocks
Adding 122678 blocks
0.00% done, Block 375489/498166terminate called after throwing an instance of 'NextQueueFinishedEarlyException'
  what():  Next queue finished early
Aborted (core dumped)

Compilation issues on macOS

Upon running make in libs/bitcoin-api-cpp, I get the following error:

[ 50%] Built target bitcoinapi_static
[ 75%] Linking CXX shared library libbitcoinapi.dylib
Undefined symbols for architecture x86_64:
  "Json::ValueIterator::ValueIterator(Json::ValueIterator const&)", referenced from:
      BitcoinAPI::getaddednodeinfo(bool) in bitcoinapi.cpp.o
      BitcoinAPI::getaddednodeinfo(bool, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in bitcoinapi.cpp.o
      BitcoinAPI::getpeerinfo() in bitcoinapi.cpp.o
      BitcoinAPI::listreceivedbyaccount(int, bool) in bitcoinapi.cpp.o
      BitcoinAPI::listreceivedbyaddress(int, bool) in bitcoinapi.cpp.o
      BitcoinAPI::gettransaction(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) in bitcoinapi.cpp.o
      BitcoinAPI::listtransactions() in bitcoinapi.cpp.o
      ...

__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) in bitcoinapi.cpp.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/bitcoinapi/libbitcoinapi.0.1.0.dylib] Error 1
make[1]: *** [src/bitcoinapi/CMakeFiles/bitcoinapi.dir/all] Error 2
make: *** [all] Error 2

This a great tool for research

The tool is great and useful for research in science.
But is it possible to make more ways to deploy it? Google Cloud? Or maybe Docker?

EC2 Blocksci running slow

I'm running the provided EC2 demo of BlockSci with the provided Jupyter notebook, but after a full day of usage (i.e. enough to fix the AWS performance issue), my queries are still very slow! I'm using the r4.2xlarge instance.

For example:

balances = utxo_addrs['addr_string'].map(lambda x: blocksci.Address.from_string(x).balance())
CPU times: user 328 ms, sys: 128 ms, total: 456 ms
Wall time: 5.02 s

I'm trying to get the balances of 10,000 addresses from their string representations, and it takes a whole 5 seconds!

Address balance doesn't include mining output

import blocksci
chain = blocksci.Blockchain("/home/ubuntu/bitcoin/")

// Genesis block's payout address
address = blocksci.Address.from_string("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
address.balance() /1e8
>>> 16.7041087 

Balance there should be 66.7041087

Cool project!

bad number of block parsed with blocksci_parser

Hi!
Your tools seems very great but i have a problem when i uses the standard blocksci_parser command
blocksci_parser --output-directory bitcoin-data update disk --coin-directory .bitcoin
It seems to parse only 499291 blocks but there is currently 504087 saved by bitcoind on my hdd.
bitcoin-cli getblockcount
504087
I tried to reforce the parse but the number of block didn't increase...
This is the message returned by the parser:

`blocksci_parser --output-directory bitcoin-data update disk --coin-directory .bitcoin
100.0% done fetching block headers
Starting with chain of 499291 blocks
Removing 0 blocks
Adding 0 blocks
Updating hash index
Updating index with scripts of type nonstandard_script

Updating index with scripts of type pubkey_script

Updating index with scripts of type scripthash_script

Updating index with scripts of type multisig_script

Updating index with scripts of type null_data_script

Updating address index
Updating index with scripts of type nonstandard_script

Updating index with scripts of type pubkey_script

Updating index with scripts of type scripthash_script

Updating index with scripts of type multisig_script

Updating index with scripts of type null_data_script`

Have an idea
Thanks in advance
Crunchy

File missing blocksci_interface on GIT

Hi there,

When I start with import blocksci I get the error message below:
Python 3.6.3 (default, Oct 3 2017, 21:45:48)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

import blocksci
Traceback (most recent call last):
File "", line 1, in
File "/home/nowhere/BlockSci/blocksci/init.py", line 1, in
from blocksci.blocksci_interface import *
ModuleNotFoundError: No module named 'blocksci.blocksci_interface'

I looked for the file in my system and on GIT and the file is missing. There is no blocksci_interface.so file.

Can you help?

Regards,
Miguel Piedade

Provide a REST API for BlockSci

I'm interested in running BlockSci as a web service where users can run queries against the python interface through a REST API. I have a few questions regarding this:

  1. How does the provided AMI keep in sync with the network? Would it be sufficient to run the AMI and spin up a flask server with BlockSci installed?

  2. If I were to install BlockSci alongside a Core Node, would I need 60GB worth of RAM to parse it whenever a new block comes in? Or is that just necessary to build the DB at the beginning?

Thank you!

Python library import version mismatch

Hi,

after following the build instruction I want to try the python interface:

BlockSci/Notebooks$ python3
Python 3.5.2 (default, Aug 18 2017, 17:48:00)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import blocksci
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/BlockSci/Notebooks/blocksci/__init__.py", line 1, in <module>
    from blocksci.blocksci_interface import *
ImportError: No module named 'blocksci.blocksci_interface'

in the directory blocksci I have a file blocksci_interface.cpython-36m-x86_64-linux-gnu.so which I think its supposed to satisfy the import but maybe something it's wrong

Speed up first parser pass using multithreading

Currently ChainIndex reads through the blk files in order to create a list of all of the blocks stored by the node before any further processing can begin. So far this process is single threaded, but it should be fairly trivial to make it multithreaded by reading each file in a separate thread since order does not matter.

BlockSci with Zcash

Hi!

I am trying to run the tool with Zcash, I ran the whole setup according to the readme, but after a lot of testing the RPC parser still says:

terminate called after throwing an instance of 'Json::LogicError'
what():  Value is not convertible to UInt.

Any idea of what can be the problem? Is there something else I have to specify to make the tool compatible with Zcash?

Error using filter_txes() method on the BlockSci AMI

Hello when I tried to use the filter_txes() method but ran into an error.
Do I have a bug in my code or is it a BlockSci issue?
Seems to me that the tx_with_index() method has been deleted in BlockSci version 0.3.

grafik

Slow execution times using AWS setup described in README

Just read the paper, thanks for this amazing tool! However I'm getting very slow execution times even though I'm using the same AWS setup as specified in the README:

  • ami-1f9b8364
  • r4.2xlarge instance
  • 8 vCPUs, 61GiB Memory
  • 500GiB General Purpose SSD Storage, 1500/3000 IOPS

For example the following line, taken from the example notebook, takes a total of 11 minutes to execute (vs. the 17.5 seconds in the demo notebook): %time txes = chain.script_type_txes(0, len(chain), blocksci.nulldata). It's a fresh instance and I haven't tweaked anything. Any idea what I might be doing wrong?

What does script.revealed_tx refer to?

Hi, I am trying to run some blockchain analysis to count how many bitcoins are in unspent outputs secured by public keys that are revealed in some transaction.
I am currently using out.address.script.revealed_tx to identify the outputs which have addresses which are revealed somewhere else. Can you please help me out and let me know if I am on the right path?

Here is my code:

# bitcoins in unspent outputs with addresses revealed in some input
s = []
c = []
for i in range(len(chain)):
    add = 0
    count = 0
    for out in chain[i].outputs.unspent.all:
        try:
            out.address.script.revealed_tx
            count += 1
            add += out.value
        except Exception as e:
            pass
    s.append(add)
    c.append(count)
ss = np.cumsum(s)
cc = np.cumsum(c)

blocksci_parser only parsing 478559 blocks

blocksci_parser only gets blocks up to 478559. We tried the amazon image with an instance as described in the docs. We also tried our own node with +60GB RAM and updated blockchain, but we are getting the same result.

fede@deic-satoshi:/home/bitcoin/BlockSci/release/bin$ sudo -u bitcoin blocksci_parser --output-dir                                                                                                       
ectory /home/bitcoin/blocksci_parsed_output/ update disk --coin-directory /home/bitcoin/.bitcoin/                                                                                                        
No block file "/home/bitcoin/.bitcoin/blocks/blk01135.dat"                                                                                                                                               
Starting with chain of 0 blocks                                                                                                                                                                          
Removing 0 blocks                                                                                                                                                                                        
Adding 478559 blocks                                                                                                                                                                                     
Beginning block processing                                                                                                                                                                               
99.9% done                                                                                                                                                                                               
Done processing txes                                                                                                                                                                                     
Back updating tx indexes                                                                                                                                                                                 
Beginning update                                                                                                                                                                                         
99.9% doneUpdating first seen index                                                                                                                                                                      
Updating address database                                                                                                                                                                                
fede@deic-satoshi:/home/bitcoin/BlockSci/release/bin$ 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.