From 4e35fdec4ba9e1f79bec5cd21d45ab2eb742eb16 Mon Sep 17 00:00:00 2001 From: Jude Nelson Date: Wed, 14 Nov 2018 13:47:53 -0500 Subject: [PATCH] Goodbye Python --- .gitignore | 13 +- README.md | 341 +----------------- Dockerfile => legacy/Dockerfile | 0 Jenkinsfile => legacy/Jenkinsfile | 0 OWNERS => legacy/OWNERS | 0 OWNERS_ALIASES => legacy/OWNERS_ALIASES | 0 legacy/README.md | 339 +++++++++++++++++ __init__.py => legacy/__init__.py | 0 {api => legacy/api}/Dockerfile | 0 {api => legacy/api}/README.md | 0 {api => legacy/api}/__init__.py | 0 {api => legacy/api}/auth/__init__.py | 0 {api => legacy/api}/auth/authentication.py | 0 {api => legacy/api}/auth/models.py | 0 {api => legacy/api}/auth/registration.py | 0 {api => legacy/api}/auth/utils.py | 0 {api => legacy/api}/auth/views.py | 0 {api => legacy/api}/config.py | 0 .../api}/deployment/blockstack-server.ini | 0 .../api}/deployment/blockstack_api.ini | 0 {api => legacy/api}/deployment/boot-docker.sh | 0 {api => legacy/api}/deployment/crontab | 0 {api => legacy/api}/deployment/nginx.cfg | 0 {api => legacy/api}/dkim.py | 0 {api => legacy/api}/docker-compose.yaml | 0 {api => legacy/api}/errors.py | 0 {api => legacy/api}/nginx/blockstack_api.ini | 0 .../nginx_sites-available/blockstack_api | 0 .../systemd_system/blockstack_api.service | 0 {api => legacy/api}/nginx/wsgi.py | 0 {api => legacy/api}/parameters.py | 0 {api => legacy/api}/requirements-search.txt | 0 {api => legacy/api}/requirements.txt | 0 {api => legacy/api}/resolver.py | 0 {api => legacy/api}/search/Dockerfile | 0 {api => legacy/api}/search/__init__.py | 0 .../api}/search/attributes_index.py | 0 {api => legacy/api}/search/basic_index.py | 0 {api => legacy/api}/search/config.py | 0 {api => legacy/api}/search/db.py | 0 {api => legacy/api}/search/fetch_data.py | 0 .../api}/search/fixtures/blockchain_data.json | 0 .../search/fixtures/profile_data.slice.json | 0 .../api}/search/scripts/search_reindex.sh | 0 .../api}/search/scripts/search_update.sh | 0 {api => legacy/api}/search/server.py | 0 .../api}/search/substring_search.py | 0 {api => legacy/api}/search/utils.py | 0 {api => legacy/api}/server.py | 0 .../static/css/bootstrap/bootstrap-theme.css | 0 .../css/bootstrap/bootstrap-theme.css.map | 0 .../css/bootstrap/bootstrap-theme.min.css | 0 .../api}/static/css/bootstrap/bootstrap.css | 0 .../static/css/bootstrap/bootstrap.css.map | 0 .../static/css/bootstrap/bootstrap.min.css | 0 .../api}/static/css/bootstrap/docs.min.css | 0 .../static/css/bootstrap4/bootstrap-grid.css | 0 .../css/bootstrap4/bootstrap-grid.css.map | 0 .../css/bootstrap4/bootstrap-grid.min.css | 0 .../css/bootstrap4/bootstrap-grid.min.css.map | 0 .../css/bootstrap4/bootstrap-reboot.css | 0 .../css/bootstrap4/bootstrap-reboot.css.map | 0 .../css/bootstrap4/bootstrap-reboot.min.css | 0 .../bootstrap4/bootstrap-reboot.min.css.map | 0 .../api}/static/css/bootstrap4/bootstrap.css | 0 .../static/css/bootstrap4/bootstrap.css.map | 0 .../static/css/bootstrap4/bootstrap.min.css | 0 .../css/bootstrap4/bootstrap.min.css.map | 0 .../api}/static/css/highlight-sunburst.css | 0 {api => legacy/api}/static/css/main.css | 0 .../static/css/proximanova/proximanova.css | 0 .../css/proximanova/proximanova_unhinted.css | 0 .../css/proximanova/webfonts/2E2AC5_0_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_0_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_0_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_0_0.woff2 | Bin .../webfonts/2E2AC5_0_unhinted_0.ttf | Bin .../webfonts/2E2AC5_0_unhinted_0.woff | Bin .../webfonts/2E2AC5_0_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_1_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_1_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_1_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_1_0.woff2 | Bin .../webfonts/2E2AC5_1_unhinted_0.ttf | Bin .../webfonts/2E2AC5_1_unhinted_0.woff | Bin .../webfonts/2E2AC5_1_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_2_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_2_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_2_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_2_0.woff2 | Bin .../webfonts/2E2AC5_2_unhinted_0.ttf | Bin .../webfonts/2E2AC5_2_unhinted_0.woff | Bin .../webfonts/2E2AC5_2_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_3_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_3_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_3_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_3_0.woff2 | Bin .../webfonts/2E2AC5_3_unhinted_0.ttf | Bin .../webfonts/2E2AC5_3_unhinted_0.woff | Bin .../webfonts/2E2AC5_3_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_4_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_4_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_4_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_4_0.woff2 | Bin .../webfonts/2E2AC5_4_unhinted_0.ttf | Bin .../webfonts/2E2AC5_4_unhinted_0.woff | Bin .../webfonts/2E2AC5_4_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_5_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_5_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_5_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_5_0.woff2 | Bin .../webfonts/2E2AC5_5_unhinted_0.ttf | Bin .../webfonts/2E2AC5_5_unhinted_0.woff | Bin .../webfonts/2E2AC5_5_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_6_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_6_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_6_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_6_0.woff2 | Bin .../webfonts/2E2AC5_6_unhinted_0.ttf | Bin .../webfonts/2E2AC5_6_unhinted_0.woff | Bin .../webfonts/2E2AC5_6_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_7_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_7_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_7_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_7_0.woff2 | Bin .../webfonts/2E2AC5_7_unhinted_0.ttf | Bin .../webfonts/2E2AC5_7_unhinted_0.woff | Bin .../webfonts/2E2AC5_7_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_8_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_8_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_8_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_8_0.woff2 | Bin .../webfonts/2E2AC5_8_unhinted_0.ttf | Bin .../webfonts/2E2AC5_8_unhinted_0.woff | Bin .../webfonts/2E2AC5_8_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_9_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_9_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_9_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_9_0.woff2 | Bin .../webfonts/2E2AC5_9_unhinted_0.ttf | Bin .../webfonts/2E2AC5_9_unhinted_0.woff | Bin .../webfonts/2E2AC5_9_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_A_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_A_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_A_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_A_0.woff2 | Bin .../webfonts/2E2AC5_A_unhinted_0.ttf | Bin .../webfonts/2E2AC5_A_unhinted_0.woff | Bin .../webfonts/2E2AC5_A_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_B_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_B_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_B_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_B_0.woff2 | Bin .../webfonts/2E2AC5_B_unhinted_0.ttf | Bin .../webfonts/2E2AC5_B_unhinted_0.woff | Bin .../webfonts/2E2AC5_B_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_C_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_C_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_C_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_C_0.woff2 | Bin .../webfonts/2E2AC5_C_unhinted_0.ttf | Bin .../webfonts/2E2AC5_C_unhinted_0.woff | Bin .../webfonts/2E2AC5_C_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_D_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_D_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_D_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_D_0.woff2 | Bin .../webfonts/2E2AC5_D_unhinted_0.ttf | Bin .../webfonts/2E2AC5_D_unhinted_0.woff | Bin .../webfonts/2E2AC5_D_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_E_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_E_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_E_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_E_0.woff2 | Bin .../webfonts/2E2AC5_E_unhinted_0.ttf | Bin .../webfonts/2E2AC5_E_unhinted_0.woff | Bin .../webfonts/2E2AC5_E_unhinted_0.woff2 | Bin .../css/proximanova/webfonts/2E2AC5_F_0.eot | Bin .../css/proximanova/webfonts/2E2AC5_F_0.ttf | Bin .../css/proximanova/webfonts/2E2AC5_F_0.woff | Bin .../css/proximanova/webfonts/2E2AC5_F_0.woff2 | Bin .../webfonts/2E2AC5_F_unhinted_0.ttf | Bin .../webfonts/2E2AC5_F_unhinted_0.woff | Bin .../webfonts/2E2AC5_F_unhinted_0.woff2 | Bin {api => legacy/api}/static/css/styles-old.css | 0 {api => legacy/api}/static/favicon.ico | Bin .../api}/static/img/logo-onename-bl.png | Bin .../api}/static/img/logo-onename-wh.png | Bin .../api}/static/img/logo-onenameapi-bl.png | Bin .../api}/static/img/logo-onenameapi-wh.png | Bin {api => legacy/api}/static/img/onename-bw.svg | 0 {api => legacy/api}/static/img/onename.svg | 0 .../api}/static/js/bootstrap/bootstrap.js | 0 .../api}/static/js/bootstrap/bootstrap.min.js | 0 .../api}/static/js/bootstrap4/bootstrap.js | 0 .../static/js/bootstrap4/bootstrap.min.js | 0 .../api}/static/js/jquery/jquery.js | 0 .../api}/static/js/jquery/jquery.min.js | 0 {api => legacy/api}/templates/403.html | 0 .../api}/templates/_docsection.html | 0 {api => legacy/api}/templates/_logo-rev.html | 0 {api => legacy/api}/templates/_logo.html | 0 .../api}/templates/base-navbar.html | 0 {api => legacy/api}/templates/base.html | 0 .../api}/templates/email/registration.html | 0 {api => legacy/api}/templates/emailtaken.html | 0 {api => legacy/api}/templates/error.html | 0 {api => legacy/api}/templates/registered.html | 0 {api => legacy/api}/templates/search.html | 0 {api => legacy/api}/templates/signup.html | 0 {api => legacy/api}/tests/__init__.py | 0 {api => legacy/api}/tests/api_tests.py | 0 .../api}/tests/releases/api_calls_18.txt | 0 .../api}/tests/releases/benchmark.py | 0 {api => legacy/api}/tests/releases/compare.py | 0 {api => legacy/api}/tests/resolver_tests.py | 0 {api => legacy/api}/tests/run_tests.sh | 0 {api => legacy/api}/tests/search_tests.py | 0 {api => legacy/api}/tests/uwsgi_test.sh | 0 {api => legacy/api}/tools/config_heroku.py | 0 {api => legacy/api}/tools/refresh_resolver.py | 0 {api => legacy/api}/tools/refresh_resolver.sh | 0 .../api}/tools/refresh_search_index.py | 0 {api => legacy/api}/tools/reset_cache | 0 {api => legacy/api}/utils.py | 0 {bin => legacy/bin}/README.md | 0 {bin => legacy/bin}/blockstack-api | 0 {bin => legacy/bin}/blockstack-core | 0 {bin => legacy/bin}/blockstack-genesis-block | 0 {bin => legacy/bin}/blockstack-server | 0 {bin => legacy/bin}/blockstack-snapshots | 0 .../blockstack-genesis-block-expand | 0 .../blockstack-genesis-block-history-extract | 0 .../blockstack-genesis-block-history-verify | 0 {blockstack => legacy/blockstack}/__init__.py | 0 .../blockstack}/blockstackd.py | 0 .../blockstack}/lib/README.md | 0 .../blockstack}/lib/__init__.py | 0 .../blockstack}/lib/atlas.py | 0 .../blockstack}/lib/audit.py | 0 {blockstack => legacy/blockstack}/lib/b40.py | 0 {blockstack => legacy/blockstack}/lib/c32.py | 0 .../blockstack}/lib/client.py | 0 .../blockstack}/lib/config.py | 0 .../blockstack}/lib/fast_sync.py | 0 .../blockstack}/lib/genesis_block.py | 0 .../blockstack}/lib/hashing.py | 0 .../blockstack}/lib/nameset/__init__.py | 0 .../blockstack}/lib/nameset/db.py | 0 .../blockstack}/lib/nameset/namedb.py | 0 .../lib/nameset/virtualchain_hooks.py | 0 .../blockstack}/lib/operations/__init__.py | 0 .../blockstack}/lib/operations/announce.py | 0 .../blockstack}/lib/operations/nameimport.py | 0 .../lib/operations/namespacepreorder.py | 0 .../lib/operations/namespaceready.py | 0 .../lib/operations/namespacereveal.py | 0 .../blockstack}/lib/operations/preorder.py | 0 .../blockstack}/lib/operations/register.py | 0 .../blockstack}/lib/operations/revoke.py | 0 .../lib/operations/tokentransfer.py | 0 .../blockstack}/lib/operations/transfer.py | 0 .../blockstack}/lib/operations/update.py | 0 .../blockstack}/lib/queue.py | 0 {blockstack => legacy/blockstack}/lib/rpc.py | 0 .../blockstack}/lib/schemas.py | 0 .../blockstack}/lib/scripts.py | 0 {blockstack => legacy/blockstack}/lib/snv.py | 0 .../blockstack}/lib/storage/__init__.py | 0 .../blockstack}/lib/storage/auth.py | 0 .../blockstack}/lib/storage/crawl.py | 0 .../blockstack}/lib/subdomains.py | 0 {blockstack => legacy/blockstack}/lib/util.py | 0 {blockstack => legacy/blockstack}/version.py | 0 build_docs.sh => legacy/build_docs.sh | 0 .../charts}/blockstack-core/.helmignore | 0 .../charts}/blockstack-core/Chart.yaml | 0 .../charts}/blockstack-core/Makefile | 0 .../blockstack-core/templates/NOTES.txt | 0 .../blockstack-core/templates/_helpers.tpl | 0 .../blockstack-core/templates/deployment.yaml | 0 .../blockstack-core/templates/ingress.yaml | 0 .../blockstack-core/templates/service.yaml | 0 .../charts}/blockstack-core/values.yaml | 0 {charts => legacy/charts}/preview/Chart.yaml | 0 {charts => legacy/charts}/preview/Makefile | 0 .../charts}/preview/requirements.yaml | 0 {charts => legacy/charts}/preview/values.yaml | 0 circle.yml => legacy/circle.yml | 0 detect => legacy/detect | 0 {docs => legacy/docs}/README.md | 0 {docs => legacy/docs}/advanced_usage.md | 0 .../docs}/aglio_templates/core.jade | 0 .../docs}/aglio_templates/mixins.jade | 0 .../docs}/aglio_templates/public.jade | 0 .../docs}/aglio_templates/scripts.js | 0 {docs => legacy/docs}/api-specs.md | 0 {docs => legacy/docs}/atlas/howitworks.md | 0 {docs => legacy/docs}/atlas/howtouse.md | 0 {docs => legacy/docs}/atlas/overview.md | 0 {docs => legacy/docs}/atlas_network.md | 0 {docs => legacy/docs}/attic/README.md | 0 {docs => legacy/docs}/attic/advanced_usage.md | 0 .../attic/figures/gaia-authentication.png | Bin .../docs}/attic/figures/gaia-connect.png | Bin .../docs}/attic/figures/gaia-getfile.png | Bin .../docs}/attic/figures/gaia-listdir.png | Bin .../docs}/attic/figures/gaia-putfile.png | Bin {docs => legacy/docs}/attic/gaia.md | 0 {docs => legacy/docs}/attic/openbazaar.md | 0 {docs => legacy/docs}/attic/resolver.md | 0 .../docs}/attic/tutorial_creation.md | 0 {docs => legacy/docs}/basic_usage.md | 0 {docs => legacy/docs}/best-practices.md | 0 {docs => legacy/docs}/blockstack-did-spec.md | 0 .../docs}/blockstack_naming_service.md | 0 {docs => legacy/docs}/cli.md | 0 {docs => legacy/docs}/faq_developer.md | 0 {docs => legacy/docs}/faq_evaluators.md | 0 {docs => legacy/docs}/faq_technical.md | 0 {docs => legacy/docs}/figures/test-screen.png | Bin {docs => legacy/docs}/gaia.md | 0 {docs => legacy/docs}/glossary.md | 0 {docs => legacy/docs}/install-api.md | 0 .../docs}/interactive_regtest_macros.md | 0 {docs => legacy/docs}/memcached.md | 0 {docs => legacy/docs}/namespace_creation.md | 0 {docs => legacy/docs}/naming/architecture.md | 0 {docs => legacy/docs}/naming/comparison.md | 0 {docs => legacy/docs}/naming/creationhowto.md | 0 {docs => legacy/docs}/naming/did.md | 0 {docs => legacy/docs}/naming/forks.md | 0 {docs => legacy/docs}/naming/introduction.md | 0 {docs => legacy/docs}/naming/manage.md | 0 {docs => legacy/docs}/naming/namespaces.md | 0 {docs => legacy/docs}/naming/pickname.md | 0 {docs => legacy/docs}/naming/register.md | 0 {docs => legacy/docs}/naming/resolving.md | 0 {docs => legacy/docs}/naming/search.md | 0 {docs => legacy/docs}/naming/subdomains.md | 0 .../docs}/naming/tutorial_subdomains.md | 0 {docs => legacy/docs}/openbazaar.md | 0 {docs => legacy/docs}/resolver.md | 0 {docs => legacy/docs}/search.md | 0 {docs => legacy/docs}/setup_core_portal.md | 0 {docs => legacy/docs}/subdomain.md | 0 {docs => legacy/docs}/subdomains.md | 0 {docs => legacy/docs}/wire-format.md | 0 {images => legacy/images}/README.md | 0 {images => legacy/images}/aws/README.md | 0 .../images}/community/snap/README.md | 0 .../images}/community/snap/snapcraft.yaml | 0 {images => legacy/images}/docker/README.md | 0 .../images}/docker/api-ssl/Dockerfile | 0 .../images}/docker/api/Dockerfile | 0 .../images}/docker/core/Dockerfile | 0 .../images}/docker/testmode/Dockerfile | 0 setup.py => legacy/setup.py | 0 skaffold.yaml => legacy/skaffold.yaml | 0 {testnet => legacy/testnet}/Makefile | 0 {testnet => legacy/testnet}/README.md | 0 .../testnet}/blockstack-public-testnet.sh | 0 {testnet => legacy/testnet}/bootstrap.min.css | 0 {testnet => legacy/testnet}/bootstrap.min.js | 0 {testnet => legacy/testnet}/index.html.py | 0 {testnet => legacy/testnet}/jquery.min.js | 0 {testnet => legacy/testnet}/nginx/testnet | 0 .../testnet}/register_namespace.sh | 0 .../testnet}/test/testServer.py | 0 {testnet => legacy/testnet}/testnet.css | 0 {testnet => legacy/testnet}/testnet.js | 0 {testnet => legacy/testnet}/testnet_simple.sh | 0 .../tools}/docker/blockstack-server.ini | 0 .../tools}/docker/docker-compose.yaml | 0 .../tools}/docker/docker-tools.sh | 0 .../tools}/fast-sync/gcp_upload.py | 0 .../tools}/fast-sync/replicate.sh | 0 {tools => legacy/tools}/linux_synflood.sh | 0 .../unittests}/subdomains/zonefiles.py | 0 379 files changed, 353 insertions(+), 340 deletions(-) rename Dockerfile => legacy/Dockerfile (100%) rename Jenkinsfile => legacy/Jenkinsfile (100%) rename OWNERS => legacy/OWNERS (100%) rename OWNERS_ALIASES => legacy/OWNERS_ALIASES (100%) create mode 100644 legacy/README.md rename __init__.py => legacy/__init__.py (100%) rename {api => legacy/api}/Dockerfile (100%) rename {api => legacy/api}/README.md (100%) rename {api => legacy/api}/__init__.py (100%) rename {api => legacy/api}/auth/__init__.py (100%) rename {api => legacy/api}/auth/authentication.py (100%) rename {api => legacy/api}/auth/models.py (100%) rename {api => legacy/api}/auth/registration.py (100%) rename {api => legacy/api}/auth/utils.py (100%) rename {api => legacy/api}/auth/views.py (100%) rename {api => legacy/api}/config.py (100%) rename {api => legacy/api}/deployment/blockstack-server.ini (100%) rename {api => legacy/api}/deployment/blockstack_api.ini (100%) rename {api => legacy/api}/deployment/boot-docker.sh (100%) rename {api => legacy/api}/deployment/crontab (100%) rename {api => legacy/api}/deployment/nginx.cfg (100%) rename {api => legacy/api}/dkim.py (100%) rename {api => legacy/api}/docker-compose.yaml (100%) rename {api => legacy/api}/errors.py (100%) rename {api => legacy/api}/nginx/blockstack_api.ini (100%) rename {api => legacy/api}/nginx/config/nginx_sites-available/blockstack_api (100%) rename {api => legacy/api}/nginx/config/systemd_system/blockstack_api.service (100%) rename {api => legacy/api}/nginx/wsgi.py (100%) rename {api => legacy/api}/parameters.py (100%) rename {api => legacy/api}/requirements-search.txt (100%) rename {api => legacy/api}/requirements.txt (100%) rename {api => legacy/api}/resolver.py (100%) rename {api => legacy/api}/search/Dockerfile (100%) rename {api => legacy/api}/search/__init__.py (100%) rename {api => legacy/api}/search/attributes_index.py (100%) rename {api => legacy/api}/search/basic_index.py (100%) rename {api => legacy/api}/search/config.py (100%) rename {api => legacy/api}/search/db.py (100%) rename {api => legacy/api}/search/fetch_data.py (100%) rename {api => legacy/api}/search/fixtures/blockchain_data.json (100%) rename {api => legacy/api}/search/fixtures/profile_data.slice.json (100%) rename {api => legacy/api}/search/scripts/search_reindex.sh (100%) rename {api => legacy/api}/search/scripts/search_update.sh (100%) rename {api => legacy/api}/search/server.py (100%) rename {api => legacy/api}/search/substring_search.py (100%) rename {api => legacy/api}/search/utils.py (100%) rename {api => legacy/api}/server.py (100%) rename {api => legacy/api}/static/css/bootstrap/bootstrap-theme.css (100%) rename {api => legacy/api}/static/css/bootstrap/bootstrap-theme.css.map (100%) rename {api => legacy/api}/static/css/bootstrap/bootstrap-theme.min.css (100%) rename {api => legacy/api}/static/css/bootstrap/bootstrap.css (100%) rename {api => legacy/api}/static/css/bootstrap/bootstrap.css.map (100%) rename {api => legacy/api}/static/css/bootstrap/bootstrap.min.css (100%) rename {api => legacy/api}/static/css/bootstrap/docs.min.css (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap-grid.css (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap-grid.css.map (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap-grid.min.css (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap-grid.min.css.map (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap-reboot.css (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap-reboot.css.map (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap-reboot.min.css (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap-reboot.min.css.map (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap.css (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap.css.map (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap.min.css (100%) rename {api => legacy/api}/static/css/bootstrap4/bootstrap.min.css.map (100%) rename {api => legacy/api}/static/css/highlight-sunburst.css (100%) rename {api => legacy/api}/static/css/main.css (100%) rename {api => legacy/api}/static/css/proximanova/proximanova.css (100%) rename {api => legacy/api}/static/css/proximanova/proximanova_unhinted.css (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_0_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_0_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_0_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_0_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_1_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_1_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_1_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_1_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_2_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_2_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_2_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_2_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_3_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_3_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_3_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_3_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_4_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_4_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_4_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_4_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_5_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_5_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_5_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_5_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_6_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_6_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_6_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_6_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_7_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_7_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_7_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_7_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_8_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_8_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_8_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_8_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_9_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_9_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_9_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_9_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_A_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_A_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_A_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_A_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_B_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_B_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_B_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_B_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_C_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_C_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_C_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_C_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_D_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_D_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_D_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_D_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_E_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_E_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_E_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_E_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_F_0.eot (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_F_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_F_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_F_0.woff2 (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.ttf (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff (100%) rename {api => legacy/api}/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff2 (100%) rename {api => legacy/api}/static/css/styles-old.css (100%) rename {api => legacy/api}/static/favicon.ico (100%) rename {api => legacy/api}/static/img/logo-onename-bl.png (100%) rename {api => legacy/api}/static/img/logo-onename-wh.png (100%) rename {api => legacy/api}/static/img/logo-onenameapi-bl.png (100%) rename {api => legacy/api}/static/img/logo-onenameapi-wh.png (100%) rename {api => legacy/api}/static/img/onename-bw.svg (100%) rename {api => legacy/api}/static/img/onename.svg (100%) rename {api => legacy/api}/static/js/bootstrap/bootstrap.js (100%) rename {api => legacy/api}/static/js/bootstrap/bootstrap.min.js (100%) rename {api => legacy/api}/static/js/bootstrap4/bootstrap.js (100%) rename {api => legacy/api}/static/js/bootstrap4/bootstrap.min.js (100%) rename {api => legacy/api}/static/js/jquery/jquery.js (100%) rename {api => legacy/api}/static/js/jquery/jquery.min.js (100%) rename {api => legacy/api}/templates/403.html (100%) rename {api => legacy/api}/templates/_docsection.html (100%) rename {api => legacy/api}/templates/_logo-rev.html (100%) rename {api => legacy/api}/templates/_logo.html (100%) rename {api => legacy/api}/templates/base-navbar.html (100%) rename {api => legacy/api}/templates/base.html (100%) rename {api => legacy/api}/templates/email/registration.html (100%) rename {api => legacy/api}/templates/emailtaken.html (100%) rename {api => legacy/api}/templates/error.html (100%) rename {api => legacy/api}/templates/registered.html (100%) rename {api => legacy/api}/templates/search.html (100%) rename {api => legacy/api}/templates/signup.html (100%) rename {api => legacy/api}/tests/__init__.py (100%) rename {api => legacy/api}/tests/api_tests.py (100%) rename {api => legacy/api}/tests/releases/api_calls_18.txt (100%) rename {api => legacy/api}/tests/releases/benchmark.py (100%) rename {api => legacy/api}/tests/releases/compare.py (100%) rename {api => legacy/api}/tests/resolver_tests.py (100%) rename {api => legacy/api}/tests/run_tests.sh (100%) rename {api => legacy/api}/tests/search_tests.py (100%) rename {api => legacy/api}/tests/uwsgi_test.sh (100%) rename {api => legacy/api}/tools/config_heroku.py (100%) rename {api => legacy/api}/tools/refresh_resolver.py (100%) rename {api => legacy/api}/tools/refresh_resolver.sh (100%) rename {api => legacy/api}/tools/refresh_search_index.py (100%) rename {api => legacy/api}/tools/reset_cache (100%) rename {api => legacy/api}/utils.py (100%) rename {bin => legacy/bin}/README.md (100%) rename {bin => legacy/bin}/blockstack-api (100%) rename {bin => legacy/bin}/blockstack-core (100%) rename {bin => legacy/bin}/blockstack-genesis-block (100%) rename {bin => legacy/bin}/blockstack-server (100%) rename {bin => legacy/bin}/blockstack-snapshots (100%) rename {bin => legacy/bin}/genesis-block/blockstack-genesis-block-expand (100%) rename {bin => legacy/bin}/genesis-block/blockstack-genesis-block-history-extract (100%) rename {bin => legacy/bin}/genesis-block/blockstack-genesis-block-history-verify (100%) rename {blockstack => legacy/blockstack}/__init__.py (100%) rename {blockstack => legacy/blockstack}/blockstackd.py (100%) rename {blockstack => legacy/blockstack}/lib/README.md (100%) rename {blockstack => legacy/blockstack}/lib/__init__.py (100%) rename {blockstack => legacy/blockstack}/lib/atlas.py (100%) rename {blockstack => legacy/blockstack}/lib/audit.py (100%) rename {blockstack => legacy/blockstack}/lib/b40.py (100%) rename {blockstack => legacy/blockstack}/lib/c32.py (100%) rename {blockstack => legacy/blockstack}/lib/client.py (100%) rename {blockstack => legacy/blockstack}/lib/config.py (100%) rename {blockstack => legacy/blockstack}/lib/fast_sync.py (100%) rename {blockstack => legacy/blockstack}/lib/genesis_block.py (100%) rename {blockstack => legacy/blockstack}/lib/hashing.py (100%) rename {blockstack => legacy/blockstack}/lib/nameset/__init__.py (100%) rename {blockstack => legacy/blockstack}/lib/nameset/db.py (100%) rename {blockstack => legacy/blockstack}/lib/nameset/namedb.py (100%) rename {blockstack => legacy/blockstack}/lib/nameset/virtualchain_hooks.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/__init__.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/announce.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/nameimport.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/namespacepreorder.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/namespaceready.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/namespacereveal.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/preorder.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/register.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/revoke.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/tokentransfer.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/transfer.py (100%) rename {blockstack => legacy/blockstack}/lib/operations/update.py (100%) rename {blockstack => legacy/blockstack}/lib/queue.py (100%) rename {blockstack => legacy/blockstack}/lib/rpc.py (100%) rename {blockstack => legacy/blockstack}/lib/schemas.py (100%) rename {blockstack => legacy/blockstack}/lib/scripts.py (100%) rename {blockstack => legacy/blockstack}/lib/snv.py (100%) rename {blockstack => legacy/blockstack}/lib/storage/__init__.py (100%) rename {blockstack => legacy/blockstack}/lib/storage/auth.py (100%) rename {blockstack => legacy/blockstack}/lib/storage/crawl.py (100%) rename {blockstack => legacy/blockstack}/lib/subdomains.py (100%) rename {blockstack => legacy/blockstack}/lib/util.py (100%) rename {blockstack => legacy/blockstack}/version.py (100%) rename build_docs.sh => legacy/build_docs.sh (100%) rename {charts => legacy/charts}/blockstack-core/.helmignore (100%) rename {charts => legacy/charts}/blockstack-core/Chart.yaml (100%) rename {charts => legacy/charts}/blockstack-core/Makefile (100%) rename {charts => legacy/charts}/blockstack-core/templates/NOTES.txt (100%) rename {charts => legacy/charts}/blockstack-core/templates/_helpers.tpl (100%) rename {charts => legacy/charts}/blockstack-core/templates/deployment.yaml (100%) rename {charts => legacy/charts}/blockstack-core/templates/ingress.yaml (100%) rename {charts => legacy/charts}/blockstack-core/templates/service.yaml (100%) rename {charts => legacy/charts}/blockstack-core/values.yaml (100%) rename {charts => legacy/charts}/preview/Chart.yaml (100%) rename {charts => legacy/charts}/preview/Makefile (100%) rename {charts => legacy/charts}/preview/requirements.yaml (100%) rename {charts => legacy/charts}/preview/values.yaml (100%) rename circle.yml => legacy/circle.yml (100%) rename detect => legacy/detect (100%) rename {docs => legacy/docs}/README.md (100%) rename {docs => legacy/docs}/advanced_usage.md (100%) rename {docs => legacy/docs}/aglio_templates/core.jade (100%) rename {docs => legacy/docs}/aglio_templates/mixins.jade (100%) rename {docs => legacy/docs}/aglio_templates/public.jade (100%) rename {docs => legacy/docs}/aglio_templates/scripts.js (100%) rename {docs => legacy/docs}/api-specs.md (100%) rename {docs => legacy/docs}/atlas/howitworks.md (100%) rename {docs => legacy/docs}/atlas/howtouse.md (100%) rename {docs => legacy/docs}/atlas/overview.md (100%) rename {docs => legacy/docs}/atlas_network.md (100%) rename {docs => legacy/docs}/attic/README.md (100%) rename {docs => legacy/docs}/attic/advanced_usage.md (100%) rename {docs => legacy/docs}/attic/figures/gaia-authentication.png (100%) rename {docs => legacy/docs}/attic/figures/gaia-connect.png (100%) rename {docs => legacy/docs}/attic/figures/gaia-getfile.png (100%) rename {docs => legacy/docs}/attic/figures/gaia-listdir.png (100%) rename {docs => legacy/docs}/attic/figures/gaia-putfile.png (100%) rename {docs => legacy/docs}/attic/gaia.md (100%) rename {docs => legacy/docs}/attic/openbazaar.md (100%) rename {docs => legacy/docs}/attic/resolver.md (100%) rename {docs => legacy/docs}/attic/tutorial_creation.md (100%) rename {docs => legacy/docs}/basic_usage.md (100%) rename {docs => legacy/docs}/best-practices.md (100%) rename {docs => legacy/docs}/blockstack-did-spec.md (100%) rename {docs => legacy/docs}/blockstack_naming_service.md (100%) rename {docs => legacy/docs}/cli.md (100%) rename {docs => legacy/docs}/faq_developer.md (100%) rename {docs => legacy/docs}/faq_evaluators.md (100%) rename {docs => legacy/docs}/faq_technical.md (100%) rename {docs => legacy/docs}/figures/test-screen.png (100%) rename {docs => legacy/docs}/gaia.md (100%) rename {docs => legacy/docs}/glossary.md (100%) rename {docs => legacy/docs}/install-api.md (100%) rename {docs => legacy/docs}/interactive_regtest_macros.md (100%) rename {docs => legacy/docs}/memcached.md (100%) rename {docs => legacy/docs}/namespace_creation.md (100%) rename {docs => legacy/docs}/naming/architecture.md (100%) rename {docs => legacy/docs}/naming/comparison.md (100%) rename {docs => legacy/docs}/naming/creationhowto.md (100%) rename {docs => legacy/docs}/naming/did.md (100%) rename {docs => legacy/docs}/naming/forks.md (100%) rename {docs => legacy/docs}/naming/introduction.md (100%) rename {docs => legacy/docs}/naming/manage.md (100%) rename {docs => legacy/docs}/naming/namespaces.md (100%) rename {docs => legacy/docs}/naming/pickname.md (100%) rename {docs => legacy/docs}/naming/register.md (100%) rename {docs => legacy/docs}/naming/resolving.md (100%) rename {docs => legacy/docs}/naming/search.md (100%) rename {docs => legacy/docs}/naming/subdomains.md (100%) rename {docs => legacy/docs}/naming/tutorial_subdomains.md (100%) rename {docs => legacy/docs}/openbazaar.md (100%) rename {docs => legacy/docs}/resolver.md (100%) rename {docs => legacy/docs}/search.md (100%) rename {docs => legacy/docs}/setup_core_portal.md (100%) rename {docs => legacy/docs}/subdomain.md (100%) rename {docs => legacy/docs}/subdomains.md (100%) rename {docs => legacy/docs}/wire-format.md (100%) rename {images => legacy/images}/README.md (100%) rename {images => legacy/images}/aws/README.md (100%) rename {images => legacy/images}/community/snap/README.md (100%) rename {images => legacy/images}/community/snap/snapcraft.yaml (100%) rename {images => legacy/images}/docker/README.md (100%) rename {images => legacy/images}/docker/api-ssl/Dockerfile (100%) rename {images => legacy/images}/docker/api/Dockerfile (100%) rename {images => legacy/images}/docker/core/Dockerfile (100%) rename {images => legacy/images}/docker/testmode/Dockerfile (100%) rename setup.py => legacy/setup.py (100%) rename skaffold.yaml => legacy/skaffold.yaml (100%) rename {testnet => legacy/testnet}/Makefile (100%) rename {testnet => legacy/testnet}/README.md (100%) rename {testnet => legacy/testnet}/blockstack-public-testnet.sh (100%) rename {testnet => legacy/testnet}/bootstrap.min.css (100%) rename {testnet => legacy/testnet}/bootstrap.min.js (100%) rename {testnet => legacy/testnet}/index.html.py (100%) rename {testnet => legacy/testnet}/jquery.min.js (100%) rename {testnet => legacy/testnet}/nginx/testnet (100%) rename {testnet => legacy/testnet}/register_namespace.sh (100%) rename {testnet => legacy/testnet}/test/testServer.py (100%) rename {testnet => legacy/testnet}/testnet.css (100%) rename {testnet => legacy/testnet}/testnet.js (100%) rename {testnet => legacy/testnet}/testnet_simple.sh (100%) rename {tools => legacy/tools}/docker/blockstack-server.ini (100%) rename {tools => legacy/tools}/docker/docker-compose.yaml (100%) rename {tools => legacy/tools}/docker/docker-tools.sh (100%) rename {tools => legacy/tools}/fast-sync/gcp_upload.py (100%) rename {tools => legacy/tools}/fast-sync/replicate.sh (100%) rename {tools => legacy/tools}/linux_synflood.sh (100%) rename {unittests => legacy/unittests}/subdomains/zonefiles.py (100%) diff --git a/.gitignore b/.gitignore index 724d1f6d5..2968c7ffc 100644 --- a/.gitignore +++ b/.gitignore @@ -55,4 +55,15 @@ testnet.log testnet/index.html # virtualenvs -.venv \ No newline at end of file +.venv + +# will have compiled files and executables +/target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + diff --git a/README.md b/README.md index 282e2e3e5..e3d1f2105 100644 --- a/README.md +++ b/README.md @@ -1,339 +1,2 @@ -# Blockstack Core - -[![PyPI](https://img.shields.io/pypi/v/blockstack.svg)](https://pypi.python.org/pypi/blockstack/) -[![Slack](https://img.shields.io/badge/join-slack-e32072.svg?style=flat)](http://slack.blockstack.org/) - -This package provides the reference implementation of a [Blockstack](https://blockstack.org) node, as well -as tools and scripts for deploying it. - -If you are looking to get started with Blockstack applications, we recommend you start with the [Blockstack Browser](https://github.com/blockstack/blockstack-browser) first. - -## Table of Contents - -- [What is the Blockstack project?](#what-is-blockstack) -- [What is Blockstack Core?](#what-is-blockstack-core) -- [Installing Blockstack Core](#installing-blockstack-core) -- [Running a Blockstack Core Node](#running-a-blockstack-core-node) -- [Using Blockstack Core](#using-blockstack-core) -- [Troubleshooting](#troubleshooting) -- [Developer Resources](#developer-resources) -- [Community](#community) -- [Further Information](#further-reading) -- [Copyright and License](#copyright-and-license) - -## What is Blockstack? - -Blockstack is a network for decentralized apps where users own their data. - -Blockstack applications follow a **can't-be-evil** design -philosophy. They *cannot* alter, transfer, or revoke the user's identity, and -they *cannot* read or write the user's data without permission. Blockstack provides the -platform, network, and SDKs for building can't-be-evil -applications using existing Web tools. -If you are Web developer, all of your skills are -immediately transferrable to Blockstack. - -Blockstack applications look and feel like traditional Web applications. -Under the hood they use Blockstack APIs for user authentication and storage. -Blockstack handles user authentication using the [Blockstack Naming -Service](docs/blockstack_naming_service.md) -(BNS), a decentralized naming and public key infrastructure built on top of the Bitcoin -blockchain. It handles storage using [Gaia](https://github.com/blockstack/gaia), a scalable decentralized -key/value storage system that looks and feels like `localStorage`, -but lets users securely store and share application data -via existing storage systems like Dropbox or S3. - -Blockstack applications differ from traditional Web applications in two key -ways. First, **users own their identities**. -The [Blockstack Browser](https://github.com/blockstack/blockstack-browser) -gives users direct control over their private keys and profile data, -and fulfills the role of a SSO provider to Blockstack apps. -Blockstack Core provides BNS as a way for users to discover each other's public -keys. - -The second key difference is that **users own their data**. Users -choose *where* their app data gets hosted, and *who* is allowed to read it. -Gaia loads and stores data with the user's -chosen storage providers, and automatically signs and encrypts it with -their app-specific keys. Only the intended recipients can authenticate and read -the data; the storage providers are treated as untrusted middlemen. - -### Why use Blockstack? - -Blockstack is a win/win for users and developers. Users are not locked into -apps or services. Instead, users take their identities and data with them from app to app. -Apps can only read user data if the user chooses to allow it. If an app goes -offline, the user still keeps their data. If users find a better app, they -can seamlessly switch over to using it. Because data is end-to-end encrypted -and hosted separately from the app, data breaches are inconsequential to users -because there is nothing for hackers to steal. - -Developers benefit from Blockstack as well. Apps are simpler to build with -Blockstack and require less operational overhead, since they no longer have to -store user data. Many non-trivial applications can be implemented -as single-page Javascript applications using -[blockstack.js](https://github.com/blockstack/blockstack.js), and deployed as a -static Web page. The Blockstack API is small, simple, and straightforward to -integrate into existing Web apps. - -## What is Blockstack Core? - -Blockstack Core implements BNS and [Atlas](docs/atlas_network.md), the storage -routing system for Gaia. Blockstack Core -nodes form the backbone of the Blockstack network. Each node indexes the -Bitcoin blockchain and maintains a full replica of all names, -public keys, and storage routing information. This makes the Blockstack network -particularly resilient to node failure---applications only need to talk to a -single Blockstack Core node to work, and a new or recovering node -can quickly reconstruct all of its missing state from its peers. - -Power users are encouraged to run local Blockstack Core nodes on their laptops -or home/office networks in order to have reliable access to the Blockstack -network. Your local node maintains the same state as the rest of the Blockstack -Core nodes, so it will keep serving names, public keys, and storage routes even -if upstream nodes are unreachable or go offline. - -## Installing Blockstack Core - -There are three supported methods to install Blockstack Core: -- [`source`](#install-from-source) -- [`pip`](#install-with-pip) -- [`docker`](#install-with-docker) - -### Install from Source - -Before installing Blockstack Core from source, you will need to install -[`libffi-dev`](https://sourceware.org/libffi/) and -[`libssl-dev`](https://www.openssl.org/source/). Mac and Linux users can -usually grab these packages from their respective package managers. - -Once these dependencies are installed, you can install Blockstack Core -from source via the included `setup.py` script, as follows: - -```bash -$ git clone https://github.com/blockstack/blockstack-core -$ cd blockstack-core -$ python2 ./setup.py build -$ sudo python2 ./setup.py install -``` - -You can also use a [`virtualenv`](https://virtualenv.pypa.io/en/stable/) to -install Blockstack Core in a non-system directory. - -### Install with `pip` - -**NOTE:** Using `pip` is only supported for stable releases (i.e. `master`). - -Blockstack is built against Python 2.7. You should use `pip2` if you have it instead of `pip`. If you do not have `pip2`, you should verify that your `pip` is configured for Python 2. - -On Mac: - -```bash -# Install blockstack -$ pip install blockstack --upgrade -``` -On CentOS 7 & RHEL: - -``` -# Install dependencies -$ yum install epel-release -$ yum install python-pip python-devel openssl-devel libffi-devel rng-tools gmp-devel zlib-devel - -# Install blockstack -$ sudo pip install blockstack --upgrade -``` - -You will need to open ports TCP:6264 and TCP:6270. If you have trouble starting -`blockstack-core`, you can try disabling SELinux and/or `firewalld` as follows: - -```bash -# Disable SELinux -$ setenforce 0 -$ sed -i --follow-symlinks 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux && cat /etc/sysconfig/selinux - -# Stop firewalld -$ systemctl stop firewalld && systemctl disable firewalld -``` - -On Debian & Ubuntu: - -```bash -# Install dependancies -$ sudo apt-get update && sudo apt-get install -y python-pip python-dev libssl-dev libffi-dev rng-tools libgmp3-dev -$ sudo pip install pyparsing - -# Install blockstack -$ sudo pip install blockstack --upgrade -``` - -### Install with `docker` - -**NOTE:** Using `docker` is only supported for stable releases (i.e. `master`). - -Another way to run `blockstack-core` is through docker. We provide per-commit image builds of this repository that are [available on quay.io](https://quay.io/repository/blockstack/blockstack-core?tab=tags). - -```shell -$ git clone git@github.com:blockstack/blockstack-core.git -$ cd blockstack-core -$ docker build -t blockstack-core:master . - -# create directory to store Blockstack Core state -$ export BLOCKSTACK_DIR="/var/blockstack-core-data" -$ mkdir -p "$BLOCKSTACK_DIR" -$ docker run \ - -v $BLOCKSTACK_DIR:/root/.blockstack-server - -p 6264:6264 - -p 6270:6270 - blockstack-core:master -``` - -These commands will fast-sync and run a Blockstack Core node in about 10 -minutes. The state for the Blockstack Core node will be stored to -`$BLOCKSTACK_DIR`. You can see the node's logs with `docker logs -f` or with -`tail -f "$BLOCKSTACK_DIR/blockstack-server.log"`. - -Notes: -- This method is currently only fully supported on Linux. -- You will need `sudo` access to run the above scripts, and/or be a member of the `docker` group. -- You can run more than one instance of this setup per host. Allow at least 1 CPU core for each container -- To configure a different `bitcoind` node, you must edit your `blockstack-server.ini` file before running the `./docker-tools.sh init-*` commands. After `init-*` has been run you must edit the `data/core/server/blockstack-server.ini` to change those settings. - -## Running a Blockstack Core Node - -Before doing anything, you should configure your Blockstack Core node. - -```bash -$ blockstack-core configure -``` - -It is safe to accept all defaults. It will generate some configuration state in -`~/.blockstack-server/`. - -Because each Blockstack Core node maintains a full copy of the network state -locally, it will need to synchronize its state with the Bitcoin blockchain when -it starts for the first time. **This can take days.** To overcome this, -we run some "fast-sync" servers that will serve a new Blockstack Core node a -recent snapshot of the network state. Fast-sync only takes a few minutes. - -To start up a Blockstack Core node from a snapshot, you should run - -```bash -$ blockstack-core --debug fast_sync -``` - -By default, it will pull a snapshot from -`http://fast-sync.blockstack.org/snapshot.bsk` and use a built-in public key to -verify its authenticity. It will populate your `~/.blockstack-server/` -directory with a recent snapshot of the network state (less than 24 hours old). - -To start your Blockstack Core node, you should run - -```bash -$ blockstack-core --debug start -``` - -This will start a Blockstack Core node in the background. We recommend passing -the `--debug` flag so you will receive verbose output, which will help diagnose -any problems you may have. - -You can find the node's log in `~/.blockstack-server/blockstack-server.log`. - -## Using Blockstack Core - -The standard way to interact with Blockstack Core is through its RESTful interface. The full documentation for the API endpoints is available [here](https://core.blockstack.org). Below are some common examples. - -To check that your API endpoint is up, you can ping it with: - -``` -$ curl http://localhost:6270/v1/ping -{"status": "alive", "version": "20.0.0.0"} -``` - -You can confirm that your API endpoint can contact the `blockstack-core` daemon -by looking up a name as follows: - -``` -$ curl http://localhost:6270/v1/names/muneeb.id -{"status": "registered", "zonefile": "$ORIGIN muneeb.id\n$TTL 3600\n_http._tcp URI 10 1 \"https://gaia.blockstack.org/hub/1J3PUxY5uDShUnHRrMyU6yKtoHEUPhKULs/0/profile.json\"\n", "expire_block": 599266, "blockchain": "bitcoin", "last_txid": "7e16e8688ca0413a398bbaf16ad4b10d3c9439555fc140f58e5ab4e50793c476", "address": "1J3PUxY5uDShUnHRrMyU6yKtoHEUPhKULs", "zonefile_hash": "37aecf837c6ae9bdc9dbd98a268f263dacd00361"} -``` - -You can stop the Blockstack Core daemon with the following command: - -``` -$ blockstack-core stop -``` - -### Getting Verbose Debugging Output - -Blockstack Core does not log very much non-error information by default. To get -verbose output, you can pass `--debug` to both `blockstack-core` and `blockstack -api`, as follows: - -```bash -$ blockstack-core --debug start && tail -f ~/.blockstack-server/blockstack-server.log -``` - -In addition `blockstack-core` can run in the -foreground, without becoming daemons. To do so, run them as: - -```bash -$ blockstack-core --debug start --foreground -``` - -## Developer Resources - -**v20.0.0.0** is the current stable release of Blockstack Core. It available on the `master` branch. - -The next release is being built on the [develop](https://github.com/blockstack/blockstack-core/tree/develop). Please submit all -pull requests to the `develop` branch. - -In the list of [release notes](./release_notes) you can find what has changed in each release. - -Blockstack Core has an extensive integration test framework, which lets you -experiment with Blockstack in a sandboxed environment. The test framework gives your Blockstack -Core node a local, private Bitcoin blockchain that lets you safely experiment -with different name and namespace transactions without spending Bitcoin. -We use the integration test -framework to test everything from new API calls to new Blockstack Browser -features. Please see the relevant -[documentation](./integration_tests) to get started. - -We welcome any small or big contributions! Please take a moment to -[review the guidelines for contributing to open source](https://guides.github.com/activities/contributing-to-open-source/) in order to make the contribution process easy and effective for everyone involved. - -## Community - -Beyond this Github project, -Blockstack maintains a public [forum](https://forum.blockstack.org) and a -permissioned [Slack](https://blockstack.slack.com) channel. In addition, the project -maintains a [mailing list](https://blockstack.org/signup) which sends out -community announcements. - -The greater Blockstack community regularly hosts in-person -[meetups](https://www.meetup.com/topics/blockstack/). The project's -[YouTube channel](https://www.youtube.com/channel/UC3J2iHnyt2JtOvtGVf_jpHQ) includes -videos from some of these meetups, as well as video tutorials to help new -users get started and help developers wrap their heads around the system's -design. - -## Further Reading - -You can learn more by visiting [the Blockstack Website](https://blockstack.org) and checking out the in-depth articles and documentation: - -- [How Blockstack Works (white paper)](https://blockstack.org/docs/how-blockstack-works) -- [Blockstack General FAQ](https://blockstack.org/faq) -- [Blockstack Technical FAQ](docs/faq_technical.md) -- [Blockstack In-depth Documentation Repository](docs/README.md) - -You can also read peer-reviewed Blockstack papers: - -- ["Blockstack: A Global Naming and Storage System Secured by Blockchains"](https://blockstack.org/blockstack.pdf), Proc. USENIX Annual Technical Conference ([ATC '16](https://www.usenix.org/conference/atc16)), June 2016 -- ["Extending Existing Blockchains with Virtualchain"](https://blockstack.org/virtualchain_dccl2016.pdf), Distributed Cryptocurrencies and Consensus Ledgers ([DCCL '16](https://www.zurich.ibm.com/dccl/) workshop, at [ACM PODC 2016](https://www.podc.org/podc2016/)), July 2016 - -If you have high-level questions about Blockstack, try [searching our forum](https://forum.blockstack.org) and start a new question if your question is not answered there. - -## Copyright and License - -The code and documentation copyright are attributed to blockstack.org for the year of 2018. - -This code is released under [the GPL v3 license](http://www.gnu.org/licenses/quick-guide-gplv3.en.html), and the docs are released under [the Creative Commons license](http://creativecommons.org/). +# blockstack-ng +Reference implementation of the Stacks blockchain v2 diff --git a/Dockerfile b/legacy/Dockerfile similarity index 100% rename from Dockerfile rename to legacy/Dockerfile diff --git a/Jenkinsfile b/legacy/Jenkinsfile similarity index 100% rename from Jenkinsfile rename to legacy/Jenkinsfile diff --git a/OWNERS b/legacy/OWNERS similarity index 100% rename from OWNERS rename to legacy/OWNERS diff --git a/OWNERS_ALIASES b/legacy/OWNERS_ALIASES similarity index 100% rename from OWNERS_ALIASES rename to legacy/OWNERS_ALIASES diff --git a/legacy/README.md b/legacy/README.md new file mode 100644 index 000000000..282e2e3e5 --- /dev/null +++ b/legacy/README.md @@ -0,0 +1,339 @@ +# Blockstack Core + +[![PyPI](https://img.shields.io/pypi/v/blockstack.svg)](https://pypi.python.org/pypi/blockstack/) +[![Slack](https://img.shields.io/badge/join-slack-e32072.svg?style=flat)](http://slack.blockstack.org/) + +This package provides the reference implementation of a [Blockstack](https://blockstack.org) node, as well +as tools and scripts for deploying it. + +If you are looking to get started with Blockstack applications, we recommend you start with the [Blockstack Browser](https://github.com/blockstack/blockstack-browser) first. + +## Table of Contents + +- [What is the Blockstack project?](#what-is-blockstack) +- [What is Blockstack Core?](#what-is-blockstack-core) +- [Installing Blockstack Core](#installing-blockstack-core) +- [Running a Blockstack Core Node](#running-a-blockstack-core-node) +- [Using Blockstack Core](#using-blockstack-core) +- [Troubleshooting](#troubleshooting) +- [Developer Resources](#developer-resources) +- [Community](#community) +- [Further Information](#further-reading) +- [Copyright and License](#copyright-and-license) + +## What is Blockstack? + +Blockstack is a network for decentralized apps where users own their data. + +Blockstack applications follow a **can't-be-evil** design +philosophy. They *cannot* alter, transfer, or revoke the user's identity, and +they *cannot* read or write the user's data without permission. Blockstack provides the +platform, network, and SDKs for building can't-be-evil +applications using existing Web tools. +If you are Web developer, all of your skills are +immediately transferrable to Blockstack. + +Blockstack applications look and feel like traditional Web applications. +Under the hood they use Blockstack APIs for user authentication and storage. +Blockstack handles user authentication using the [Blockstack Naming +Service](docs/blockstack_naming_service.md) +(BNS), a decentralized naming and public key infrastructure built on top of the Bitcoin +blockchain. It handles storage using [Gaia](https://github.com/blockstack/gaia), a scalable decentralized +key/value storage system that looks and feels like `localStorage`, +but lets users securely store and share application data +via existing storage systems like Dropbox or S3. + +Blockstack applications differ from traditional Web applications in two key +ways. First, **users own their identities**. +The [Blockstack Browser](https://github.com/blockstack/blockstack-browser) +gives users direct control over their private keys and profile data, +and fulfills the role of a SSO provider to Blockstack apps. +Blockstack Core provides BNS as a way for users to discover each other's public +keys. + +The second key difference is that **users own their data**. Users +choose *where* their app data gets hosted, and *who* is allowed to read it. +Gaia loads and stores data with the user's +chosen storage providers, and automatically signs and encrypts it with +their app-specific keys. Only the intended recipients can authenticate and read +the data; the storage providers are treated as untrusted middlemen. + +### Why use Blockstack? + +Blockstack is a win/win for users and developers. Users are not locked into +apps or services. Instead, users take their identities and data with them from app to app. +Apps can only read user data if the user chooses to allow it. If an app goes +offline, the user still keeps their data. If users find a better app, they +can seamlessly switch over to using it. Because data is end-to-end encrypted +and hosted separately from the app, data breaches are inconsequential to users +because there is nothing for hackers to steal. + +Developers benefit from Blockstack as well. Apps are simpler to build with +Blockstack and require less operational overhead, since they no longer have to +store user data. Many non-trivial applications can be implemented +as single-page Javascript applications using +[blockstack.js](https://github.com/blockstack/blockstack.js), and deployed as a +static Web page. The Blockstack API is small, simple, and straightforward to +integrate into existing Web apps. + +## What is Blockstack Core? + +Blockstack Core implements BNS and [Atlas](docs/atlas_network.md), the storage +routing system for Gaia. Blockstack Core +nodes form the backbone of the Blockstack network. Each node indexes the +Bitcoin blockchain and maintains a full replica of all names, +public keys, and storage routing information. This makes the Blockstack network +particularly resilient to node failure---applications only need to talk to a +single Blockstack Core node to work, and a new or recovering node +can quickly reconstruct all of its missing state from its peers. + +Power users are encouraged to run local Blockstack Core nodes on their laptops +or home/office networks in order to have reliable access to the Blockstack +network. Your local node maintains the same state as the rest of the Blockstack +Core nodes, so it will keep serving names, public keys, and storage routes even +if upstream nodes are unreachable or go offline. + +## Installing Blockstack Core + +There are three supported methods to install Blockstack Core: +- [`source`](#install-from-source) +- [`pip`](#install-with-pip) +- [`docker`](#install-with-docker) + +### Install from Source + +Before installing Blockstack Core from source, you will need to install +[`libffi-dev`](https://sourceware.org/libffi/) and +[`libssl-dev`](https://www.openssl.org/source/). Mac and Linux users can +usually grab these packages from their respective package managers. + +Once these dependencies are installed, you can install Blockstack Core +from source via the included `setup.py` script, as follows: + +```bash +$ git clone https://github.com/blockstack/blockstack-core +$ cd blockstack-core +$ python2 ./setup.py build +$ sudo python2 ./setup.py install +``` + +You can also use a [`virtualenv`](https://virtualenv.pypa.io/en/stable/) to +install Blockstack Core in a non-system directory. + +### Install with `pip` + +**NOTE:** Using `pip` is only supported for stable releases (i.e. `master`). + +Blockstack is built against Python 2.7. You should use `pip2` if you have it instead of `pip`. If you do not have `pip2`, you should verify that your `pip` is configured for Python 2. + +On Mac: + +```bash +# Install blockstack +$ pip install blockstack --upgrade +``` +On CentOS 7 & RHEL: + +``` +# Install dependencies +$ yum install epel-release +$ yum install python-pip python-devel openssl-devel libffi-devel rng-tools gmp-devel zlib-devel + +# Install blockstack +$ sudo pip install blockstack --upgrade +``` + +You will need to open ports TCP:6264 and TCP:6270. If you have trouble starting +`blockstack-core`, you can try disabling SELinux and/or `firewalld` as follows: + +```bash +# Disable SELinux +$ setenforce 0 +$ sed -i --follow-symlinks 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux && cat /etc/sysconfig/selinux + +# Stop firewalld +$ systemctl stop firewalld && systemctl disable firewalld +``` + +On Debian & Ubuntu: + +```bash +# Install dependancies +$ sudo apt-get update && sudo apt-get install -y python-pip python-dev libssl-dev libffi-dev rng-tools libgmp3-dev +$ sudo pip install pyparsing + +# Install blockstack +$ sudo pip install blockstack --upgrade +``` + +### Install with `docker` + +**NOTE:** Using `docker` is only supported for stable releases (i.e. `master`). + +Another way to run `blockstack-core` is through docker. We provide per-commit image builds of this repository that are [available on quay.io](https://quay.io/repository/blockstack/blockstack-core?tab=tags). + +```shell +$ git clone git@github.com:blockstack/blockstack-core.git +$ cd blockstack-core +$ docker build -t blockstack-core:master . + +# create directory to store Blockstack Core state +$ export BLOCKSTACK_DIR="/var/blockstack-core-data" +$ mkdir -p "$BLOCKSTACK_DIR" +$ docker run \ + -v $BLOCKSTACK_DIR:/root/.blockstack-server + -p 6264:6264 + -p 6270:6270 + blockstack-core:master +``` + +These commands will fast-sync and run a Blockstack Core node in about 10 +minutes. The state for the Blockstack Core node will be stored to +`$BLOCKSTACK_DIR`. You can see the node's logs with `docker logs -f` or with +`tail -f "$BLOCKSTACK_DIR/blockstack-server.log"`. + +Notes: +- This method is currently only fully supported on Linux. +- You will need `sudo` access to run the above scripts, and/or be a member of the `docker` group. +- You can run more than one instance of this setup per host. Allow at least 1 CPU core for each container +- To configure a different `bitcoind` node, you must edit your `blockstack-server.ini` file before running the `./docker-tools.sh init-*` commands. After `init-*` has been run you must edit the `data/core/server/blockstack-server.ini` to change those settings. + +## Running a Blockstack Core Node + +Before doing anything, you should configure your Blockstack Core node. + +```bash +$ blockstack-core configure +``` + +It is safe to accept all defaults. It will generate some configuration state in +`~/.blockstack-server/`. + +Because each Blockstack Core node maintains a full copy of the network state +locally, it will need to synchronize its state with the Bitcoin blockchain when +it starts for the first time. **This can take days.** To overcome this, +we run some "fast-sync" servers that will serve a new Blockstack Core node a +recent snapshot of the network state. Fast-sync only takes a few minutes. + +To start up a Blockstack Core node from a snapshot, you should run + +```bash +$ blockstack-core --debug fast_sync +``` + +By default, it will pull a snapshot from +`http://fast-sync.blockstack.org/snapshot.bsk` and use a built-in public key to +verify its authenticity. It will populate your `~/.blockstack-server/` +directory with a recent snapshot of the network state (less than 24 hours old). + +To start your Blockstack Core node, you should run + +```bash +$ blockstack-core --debug start +``` + +This will start a Blockstack Core node in the background. We recommend passing +the `--debug` flag so you will receive verbose output, which will help diagnose +any problems you may have. + +You can find the node's log in `~/.blockstack-server/blockstack-server.log`. + +## Using Blockstack Core + +The standard way to interact with Blockstack Core is through its RESTful interface. The full documentation for the API endpoints is available [here](https://core.blockstack.org). Below are some common examples. + +To check that your API endpoint is up, you can ping it with: + +``` +$ curl http://localhost:6270/v1/ping +{"status": "alive", "version": "20.0.0.0"} +``` + +You can confirm that your API endpoint can contact the `blockstack-core` daemon +by looking up a name as follows: + +``` +$ curl http://localhost:6270/v1/names/muneeb.id +{"status": "registered", "zonefile": "$ORIGIN muneeb.id\n$TTL 3600\n_http._tcp URI 10 1 \"https://gaia.blockstack.org/hub/1J3PUxY5uDShUnHRrMyU6yKtoHEUPhKULs/0/profile.json\"\n", "expire_block": 599266, "blockchain": "bitcoin", "last_txid": "7e16e8688ca0413a398bbaf16ad4b10d3c9439555fc140f58e5ab4e50793c476", "address": "1J3PUxY5uDShUnHRrMyU6yKtoHEUPhKULs", "zonefile_hash": "37aecf837c6ae9bdc9dbd98a268f263dacd00361"} +``` + +You can stop the Blockstack Core daemon with the following command: + +``` +$ blockstack-core stop +``` + +### Getting Verbose Debugging Output + +Blockstack Core does not log very much non-error information by default. To get +verbose output, you can pass `--debug` to both `blockstack-core` and `blockstack +api`, as follows: + +```bash +$ blockstack-core --debug start && tail -f ~/.blockstack-server/blockstack-server.log +``` + +In addition `blockstack-core` can run in the +foreground, without becoming daemons. To do so, run them as: + +```bash +$ blockstack-core --debug start --foreground +``` + +## Developer Resources + +**v20.0.0.0** is the current stable release of Blockstack Core. It available on the `master` branch. + +The next release is being built on the [develop](https://github.com/blockstack/blockstack-core/tree/develop). Please submit all +pull requests to the `develop` branch. + +In the list of [release notes](./release_notes) you can find what has changed in each release. + +Blockstack Core has an extensive integration test framework, which lets you +experiment with Blockstack in a sandboxed environment. The test framework gives your Blockstack +Core node a local, private Bitcoin blockchain that lets you safely experiment +with different name and namespace transactions without spending Bitcoin. +We use the integration test +framework to test everything from new API calls to new Blockstack Browser +features. Please see the relevant +[documentation](./integration_tests) to get started. + +We welcome any small or big contributions! Please take a moment to +[review the guidelines for contributing to open source](https://guides.github.com/activities/contributing-to-open-source/) in order to make the contribution process easy and effective for everyone involved. + +## Community + +Beyond this Github project, +Blockstack maintains a public [forum](https://forum.blockstack.org) and a +permissioned [Slack](https://blockstack.slack.com) channel. In addition, the project +maintains a [mailing list](https://blockstack.org/signup) which sends out +community announcements. + +The greater Blockstack community regularly hosts in-person +[meetups](https://www.meetup.com/topics/blockstack/). The project's +[YouTube channel](https://www.youtube.com/channel/UC3J2iHnyt2JtOvtGVf_jpHQ) includes +videos from some of these meetups, as well as video tutorials to help new +users get started and help developers wrap their heads around the system's +design. + +## Further Reading + +You can learn more by visiting [the Blockstack Website](https://blockstack.org) and checking out the in-depth articles and documentation: + +- [How Blockstack Works (white paper)](https://blockstack.org/docs/how-blockstack-works) +- [Blockstack General FAQ](https://blockstack.org/faq) +- [Blockstack Technical FAQ](docs/faq_technical.md) +- [Blockstack In-depth Documentation Repository](docs/README.md) + +You can also read peer-reviewed Blockstack papers: + +- ["Blockstack: A Global Naming and Storage System Secured by Blockchains"](https://blockstack.org/blockstack.pdf), Proc. USENIX Annual Technical Conference ([ATC '16](https://www.usenix.org/conference/atc16)), June 2016 +- ["Extending Existing Blockchains with Virtualchain"](https://blockstack.org/virtualchain_dccl2016.pdf), Distributed Cryptocurrencies and Consensus Ledgers ([DCCL '16](https://www.zurich.ibm.com/dccl/) workshop, at [ACM PODC 2016](https://www.podc.org/podc2016/)), July 2016 + +If you have high-level questions about Blockstack, try [searching our forum](https://forum.blockstack.org) and start a new question if your question is not answered there. + +## Copyright and License + +The code and documentation copyright are attributed to blockstack.org for the year of 2018. + +This code is released under [the GPL v3 license](http://www.gnu.org/licenses/quick-guide-gplv3.en.html), and the docs are released under [the Creative Commons license](http://creativecommons.org/). diff --git a/__init__.py b/legacy/__init__.py similarity index 100% rename from __init__.py rename to legacy/__init__.py diff --git a/api/Dockerfile b/legacy/api/Dockerfile similarity index 100% rename from api/Dockerfile rename to legacy/api/Dockerfile diff --git a/api/README.md b/legacy/api/README.md similarity index 100% rename from api/README.md rename to legacy/api/README.md diff --git a/api/__init__.py b/legacy/api/__init__.py similarity index 100% rename from api/__init__.py rename to legacy/api/__init__.py diff --git a/api/auth/__init__.py b/legacy/api/auth/__init__.py similarity index 100% rename from api/auth/__init__.py rename to legacy/api/auth/__init__.py diff --git a/api/auth/authentication.py b/legacy/api/auth/authentication.py similarity index 100% rename from api/auth/authentication.py rename to legacy/api/auth/authentication.py diff --git a/api/auth/models.py b/legacy/api/auth/models.py similarity index 100% rename from api/auth/models.py rename to legacy/api/auth/models.py diff --git a/api/auth/registration.py b/legacy/api/auth/registration.py similarity index 100% rename from api/auth/registration.py rename to legacy/api/auth/registration.py diff --git a/api/auth/utils.py b/legacy/api/auth/utils.py similarity index 100% rename from api/auth/utils.py rename to legacy/api/auth/utils.py diff --git a/api/auth/views.py b/legacy/api/auth/views.py similarity index 100% rename from api/auth/views.py rename to legacy/api/auth/views.py diff --git a/api/config.py b/legacy/api/config.py similarity index 100% rename from api/config.py rename to legacy/api/config.py diff --git a/api/deployment/blockstack-server.ini b/legacy/api/deployment/blockstack-server.ini similarity index 100% rename from api/deployment/blockstack-server.ini rename to legacy/api/deployment/blockstack-server.ini diff --git a/api/deployment/blockstack_api.ini b/legacy/api/deployment/blockstack_api.ini similarity index 100% rename from api/deployment/blockstack_api.ini rename to legacy/api/deployment/blockstack_api.ini diff --git a/api/deployment/boot-docker.sh b/legacy/api/deployment/boot-docker.sh similarity index 100% rename from api/deployment/boot-docker.sh rename to legacy/api/deployment/boot-docker.sh diff --git a/api/deployment/crontab b/legacy/api/deployment/crontab similarity index 100% rename from api/deployment/crontab rename to legacy/api/deployment/crontab diff --git a/api/deployment/nginx.cfg b/legacy/api/deployment/nginx.cfg similarity index 100% rename from api/deployment/nginx.cfg rename to legacy/api/deployment/nginx.cfg diff --git a/api/dkim.py b/legacy/api/dkim.py similarity index 100% rename from api/dkim.py rename to legacy/api/dkim.py diff --git a/api/docker-compose.yaml b/legacy/api/docker-compose.yaml similarity index 100% rename from api/docker-compose.yaml rename to legacy/api/docker-compose.yaml diff --git a/api/errors.py b/legacy/api/errors.py similarity index 100% rename from api/errors.py rename to legacy/api/errors.py diff --git a/api/nginx/blockstack_api.ini b/legacy/api/nginx/blockstack_api.ini similarity index 100% rename from api/nginx/blockstack_api.ini rename to legacy/api/nginx/blockstack_api.ini diff --git a/api/nginx/config/nginx_sites-available/blockstack_api b/legacy/api/nginx/config/nginx_sites-available/blockstack_api similarity index 100% rename from api/nginx/config/nginx_sites-available/blockstack_api rename to legacy/api/nginx/config/nginx_sites-available/blockstack_api diff --git a/api/nginx/config/systemd_system/blockstack_api.service b/legacy/api/nginx/config/systemd_system/blockstack_api.service similarity index 100% rename from api/nginx/config/systemd_system/blockstack_api.service rename to legacy/api/nginx/config/systemd_system/blockstack_api.service diff --git a/api/nginx/wsgi.py b/legacy/api/nginx/wsgi.py similarity index 100% rename from api/nginx/wsgi.py rename to legacy/api/nginx/wsgi.py diff --git a/api/parameters.py b/legacy/api/parameters.py similarity index 100% rename from api/parameters.py rename to legacy/api/parameters.py diff --git a/api/requirements-search.txt b/legacy/api/requirements-search.txt similarity index 100% rename from api/requirements-search.txt rename to legacy/api/requirements-search.txt diff --git a/api/requirements.txt b/legacy/api/requirements.txt similarity index 100% rename from api/requirements.txt rename to legacy/api/requirements.txt diff --git a/api/resolver.py b/legacy/api/resolver.py similarity index 100% rename from api/resolver.py rename to legacy/api/resolver.py diff --git a/api/search/Dockerfile b/legacy/api/search/Dockerfile similarity index 100% rename from api/search/Dockerfile rename to legacy/api/search/Dockerfile diff --git a/api/search/__init__.py b/legacy/api/search/__init__.py similarity index 100% rename from api/search/__init__.py rename to legacy/api/search/__init__.py diff --git a/api/search/attributes_index.py b/legacy/api/search/attributes_index.py similarity index 100% rename from api/search/attributes_index.py rename to legacy/api/search/attributes_index.py diff --git a/api/search/basic_index.py b/legacy/api/search/basic_index.py similarity index 100% rename from api/search/basic_index.py rename to legacy/api/search/basic_index.py diff --git a/api/search/config.py b/legacy/api/search/config.py similarity index 100% rename from api/search/config.py rename to legacy/api/search/config.py diff --git a/api/search/db.py b/legacy/api/search/db.py similarity index 100% rename from api/search/db.py rename to legacy/api/search/db.py diff --git a/api/search/fetch_data.py b/legacy/api/search/fetch_data.py similarity index 100% rename from api/search/fetch_data.py rename to legacy/api/search/fetch_data.py diff --git a/api/search/fixtures/blockchain_data.json b/legacy/api/search/fixtures/blockchain_data.json similarity index 100% rename from api/search/fixtures/blockchain_data.json rename to legacy/api/search/fixtures/blockchain_data.json diff --git a/api/search/fixtures/profile_data.slice.json b/legacy/api/search/fixtures/profile_data.slice.json similarity index 100% rename from api/search/fixtures/profile_data.slice.json rename to legacy/api/search/fixtures/profile_data.slice.json diff --git a/api/search/scripts/search_reindex.sh b/legacy/api/search/scripts/search_reindex.sh similarity index 100% rename from api/search/scripts/search_reindex.sh rename to legacy/api/search/scripts/search_reindex.sh diff --git a/api/search/scripts/search_update.sh b/legacy/api/search/scripts/search_update.sh similarity index 100% rename from api/search/scripts/search_update.sh rename to legacy/api/search/scripts/search_update.sh diff --git a/api/search/server.py b/legacy/api/search/server.py similarity index 100% rename from api/search/server.py rename to legacy/api/search/server.py diff --git a/api/search/substring_search.py b/legacy/api/search/substring_search.py similarity index 100% rename from api/search/substring_search.py rename to legacy/api/search/substring_search.py diff --git a/api/search/utils.py b/legacy/api/search/utils.py similarity index 100% rename from api/search/utils.py rename to legacy/api/search/utils.py diff --git a/api/server.py b/legacy/api/server.py similarity index 100% rename from api/server.py rename to legacy/api/server.py diff --git a/api/static/css/bootstrap/bootstrap-theme.css b/legacy/api/static/css/bootstrap/bootstrap-theme.css similarity index 100% rename from api/static/css/bootstrap/bootstrap-theme.css rename to legacy/api/static/css/bootstrap/bootstrap-theme.css diff --git a/api/static/css/bootstrap/bootstrap-theme.css.map b/legacy/api/static/css/bootstrap/bootstrap-theme.css.map similarity index 100% rename from api/static/css/bootstrap/bootstrap-theme.css.map rename to legacy/api/static/css/bootstrap/bootstrap-theme.css.map diff --git a/api/static/css/bootstrap/bootstrap-theme.min.css b/legacy/api/static/css/bootstrap/bootstrap-theme.min.css similarity index 100% rename from api/static/css/bootstrap/bootstrap-theme.min.css rename to legacy/api/static/css/bootstrap/bootstrap-theme.min.css diff --git a/api/static/css/bootstrap/bootstrap.css b/legacy/api/static/css/bootstrap/bootstrap.css similarity index 100% rename from api/static/css/bootstrap/bootstrap.css rename to legacy/api/static/css/bootstrap/bootstrap.css diff --git a/api/static/css/bootstrap/bootstrap.css.map b/legacy/api/static/css/bootstrap/bootstrap.css.map similarity index 100% rename from api/static/css/bootstrap/bootstrap.css.map rename to legacy/api/static/css/bootstrap/bootstrap.css.map diff --git a/api/static/css/bootstrap/bootstrap.min.css b/legacy/api/static/css/bootstrap/bootstrap.min.css similarity index 100% rename from api/static/css/bootstrap/bootstrap.min.css rename to legacy/api/static/css/bootstrap/bootstrap.min.css diff --git a/api/static/css/bootstrap/docs.min.css b/legacy/api/static/css/bootstrap/docs.min.css similarity index 100% rename from api/static/css/bootstrap/docs.min.css rename to legacy/api/static/css/bootstrap/docs.min.css diff --git a/api/static/css/bootstrap4/bootstrap-grid.css b/legacy/api/static/css/bootstrap4/bootstrap-grid.css similarity index 100% rename from api/static/css/bootstrap4/bootstrap-grid.css rename to legacy/api/static/css/bootstrap4/bootstrap-grid.css diff --git a/api/static/css/bootstrap4/bootstrap-grid.css.map b/legacy/api/static/css/bootstrap4/bootstrap-grid.css.map similarity index 100% rename from api/static/css/bootstrap4/bootstrap-grid.css.map rename to legacy/api/static/css/bootstrap4/bootstrap-grid.css.map diff --git a/api/static/css/bootstrap4/bootstrap-grid.min.css b/legacy/api/static/css/bootstrap4/bootstrap-grid.min.css similarity index 100% rename from api/static/css/bootstrap4/bootstrap-grid.min.css rename to legacy/api/static/css/bootstrap4/bootstrap-grid.min.css diff --git a/api/static/css/bootstrap4/bootstrap-grid.min.css.map b/legacy/api/static/css/bootstrap4/bootstrap-grid.min.css.map similarity index 100% rename from api/static/css/bootstrap4/bootstrap-grid.min.css.map rename to legacy/api/static/css/bootstrap4/bootstrap-grid.min.css.map diff --git a/api/static/css/bootstrap4/bootstrap-reboot.css b/legacy/api/static/css/bootstrap4/bootstrap-reboot.css similarity index 100% rename from api/static/css/bootstrap4/bootstrap-reboot.css rename to legacy/api/static/css/bootstrap4/bootstrap-reboot.css diff --git a/api/static/css/bootstrap4/bootstrap-reboot.css.map b/legacy/api/static/css/bootstrap4/bootstrap-reboot.css.map similarity index 100% rename from api/static/css/bootstrap4/bootstrap-reboot.css.map rename to legacy/api/static/css/bootstrap4/bootstrap-reboot.css.map diff --git a/api/static/css/bootstrap4/bootstrap-reboot.min.css b/legacy/api/static/css/bootstrap4/bootstrap-reboot.min.css similarity index 100% rename from api/static/css/bootstrap4/bootstrap-reboot.min.css rename to legacy/api/static/css/bootstrap4/bootstrap-reboot.min.css diff --git a/api/static/css/bootstrap4/bootstrap-reboot.min.css.map b/legacy/api/static/css/bootstrap4/bootstrap-reboot.min.css.map similarity index 100% rename from api/static/css/bootstrap4/bootstrap-reboot.min.css.map rename to legacy/api/static/css/bootstrap4/bootstrap-reboot.min.css.map diff --git a/api/static/css/bootstrap4/bootstrap.css b/legacy/api/static/css/bootstrap4/bootstrap.css similarity index 100% rename from api/static/css/bootstrap4/bootstrap.css rename to legacy/api/static/css/bootstrap4/bootstrap.css diff --git a/api/static/css/bootstrap4/bootstrap.css.map b/legacy/api/static/css/bootstrap4/bootstrap.css.map similarity index 100% rename from api/static/css/bootstrap4/bootstrap.css.map rename to legacy/api/static/css/bootstrap4/bootstrap.css.map diff --git a/api/static/css/bootstrap4/bootstrap.min.css b/legacy/api/static/css/bootstrap4/bootstrap.min.css similarity index 100% rename from api/static/css/bootstrap4/bootstrap.min.css rename to legacy/api/static/css/bootstrap4/bootstrap.min.css diff --git a/api/static/css/bootstrap4/bootstrap.min.css.map b/legacy/api/static/css/bootstrap4/bootstrap.min.css.map similarity index 100% rename from api/static/css/bootstrap4/bootstrap.min.css.map rename to legacy/api/static/css/bootstrap4/bootstrap.min.css.map diff --git a/api/static/css/highlight-sunburst.css b/legacy/api/static/css/highlight-sunburst.css similarity index 100% rename from api/static/css/highlight-sunburst.css rename to legacy/api/static/css/highlight-sunburst.css diff --git a/api/static/css/main.css b/legacy/api/static/css/main.css similarity index 100% rename from api/static/css/main.css rename to legacy/api/static/css/main.css diff --git a/api/static/css/proximanova/proximanova.css b/legacy/api/static/css/proximanova/proximanova.css similarity index 100% rename from api/static/css/proximanova/proximanova.css rename to legacy/api/static/css/proximanova/proximanova.css diff --git a/api/static/css/proximanova/proximanova_unhinted.css b/legacy/api/static/css/proximanova/proximanova_unhinted.css similarity index 100% rename from api/static/css/proximanova/proximanova_unhinted.css rename to legacy/api/static/css/proximanova/proximanova_unhinted.css diff --git a/api/static/css/proximanova/webfonts/2E2AC5_0_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_0_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_0_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_0_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_0_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_0_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_0_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_0_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_0_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_0_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_0_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_0_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_0_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_0_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_0_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_0_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_0_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_1_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_1_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_1_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_1_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_1_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_1_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_1_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_1_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_1_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_1_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_1_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_1_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_1_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_1_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_1_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_1_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_1_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_2_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_2_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_2_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_2_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_2_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_2_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_2_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_2_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_2_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_2_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_2_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_2_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_2_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_2_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_2_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_2_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_2_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_3_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_3_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_3_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_3_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_3_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_3_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_3_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_3_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_3_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_3_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_3_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_3_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_3_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_3_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_3_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_3_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_3_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_4_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_4_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_4_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_4_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_4_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_4_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_4_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_4_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_4_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_4_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_4_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_4_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_4_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_4_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_4_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_4_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_4_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_5_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_5_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_5_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_5_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_5_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_5_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_5_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_5_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_5_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_5_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_5_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_5_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_5_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_5_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_5_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_5_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_5_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_6_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_6_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_6_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_6_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_6_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_6_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_6_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_6_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_6_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_6_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_6_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_6_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_6_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_6_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_6_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_6_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_6_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_7_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_7_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_7_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_7_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_7_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_7_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_7_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_7_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_7_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_7_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_7_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_7_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_7_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_7_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_7_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_7_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_7_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_8_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_8_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_8_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_8_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_8_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_8_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_8_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_8_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_8_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_8_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_8_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_8_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_8_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_8_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_8_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_8_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_8_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_9_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_9_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_9_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_9_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_9_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_9_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_9_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_9_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_9_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_9_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_9_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_9_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_9_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_9_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_9_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_9_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_9_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_A_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_A_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_A_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_A_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_A_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_A_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_A_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_A_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_A_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_A_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_A_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_A_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_A_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_A_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_A_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_A_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_A_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_B_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_B_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_B_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_B_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_B_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_B_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_B_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_B_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_B_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_B_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_B_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_B_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_B_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_B_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_B_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_B_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_B_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_C_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_C_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_C_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_C_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_C_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_C_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_C_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_C_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_C_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_C_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_C_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_C_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_C_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_C_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_C_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_C_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_C_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_D_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_D_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_D_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_D_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_D_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_D_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_D_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_D_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_D_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_D_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_D_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_D_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_D_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_D_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_D_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_D_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_D_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_E_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_E_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_E_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_E_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_E_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_E_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_E_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_E_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_E_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_E_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_E_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_E_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_E_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_E_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_E_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_E_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_E_unhinted_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_F_0.eot b/legacy/api/static/css/proximanova/webfonts/2E2AC5_F_0.eot similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_F_0.eot rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_F_0.eot diff --git a/api/static/css/proximanova/webfonts/2E2AC5_F_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_F_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_F_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_F_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_F_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_F_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_F_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_F_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_F_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_F_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_F_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_F_0.woff2 diff --git a/api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.ttf b/legacy/api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.ttf similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.ttf rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.ttf diff --git a/api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff b/legacy/api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff diff --git a/api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff2 b/legacy/api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff2 similarity index 100% rename from api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff2 rename to legacy/api/static/css/proximanova/webfonts/2E2AC5_F_unhinted_0.woff2 diff --git a/api/static/css/styles-old.css b/legacy/api/static/css/styles-old.css similarity index 100% rename from api/static/css/styles-old.css rename to legacy/api/static/css/styles-old.css diff --git a/api/static/favicon.ico b/legacy/api/static/favicon.ico similarity index 100% rename from api/static/favicon.ico rename to legacy/api/static/favicon.ico diff --git a/api/static/img/logo-onename-bl.png b/legacy/api/static/img/logo-onename-bl.png similarity index 100% rename from api/static/img/logo-onename-bl.png rename to legacy/api/static/img/logo-onename-bl.png diff --git a/api/static/img/logo-onename-wh.png b/legacy/api/static/img/logo-onename-wh.png similarity index 100% rename from api/static/img/logo-onename-wh.png rename to legacy/api/static/img/logo-onename-wh.png diff --git a/api/static/img/logo-onenameapi-bl.png b/legacy/api/static/img/logo-onenameapi-bl.png similarity index 100% rename from api/static/img/logo-onenameapi-bl.png rename to legacy/api/static/img/logo-onenameapi-bl.png diff --git a/api/static/img/logo-onenameapi-wh.png b/legacy/api/static/img/logo-onenameapi-wh.png similarity index 100% rename from api/static/img/logo-onenameapi-wh.png rename to legacy/api/static/img/logo-onenameapi-wh.png diff --git a/api/static/img/onename-bw.svg b/legacy/api/static/img/onename-bw.svg similarity index 100% rename from api/static/img/onename-bw.svg rename to legacy/api/static/img/onename-bw.svg diff --git a/api/static/img/onename.svg b/legacy/api/static/img/onename.svg similarity index 100% rename from api/static/img/onename.svg rename to legacy/api/static/img/onename.svg diff --git a/api/static/js/bootstrap/bootstrap.js b/legacy/api/static/js/bootstrap/bootstrap.js similarity index 100% rename from api/static/js/bootstrap/bootstrap.js rename to legacy/api/static/js/bootstrap/bootstrap.js diff --git a/api/static/js/bootstrap/bootstrap.min.js b/legacy/api/static/js/bootstrap/bootstrap.min.js similarity index 100% rename from api/static/js/bootstrap/bootstrap.min.js rename to legacy/api/static/js/bootstrap/bootstrap.min.js diff --git a/api/static/js/bootstrap4/bootstrap.js b/legacy/api/static/js/bootstrap4/bootstrap.js similarity index 100% rename from api/static/js/bootstrap4/bootstrap.js rename to legacy/api/static/js/bootstrap4/bootstrap.js diff --git a/api/static/js/bootstrap4/bootstrap.min.js b/legacy/api/static/js/bootstrap4/bootstrap.min.js similarity index 100% rename from api/static/js/bootstrap4/bootstrap.min.js rename to legacy/api/static/js/bootstrap4/bootstrap.min.js diff --git a/api/static/js/jquery/jquery.js b/legacy/api/static/js/jquery/jquery.js similarity index 100% rename from api/static/js/jquery/jquery.js rename to legacy/api/static/js/jquery/jquery.js diff --git a/api/static/js/jquery/jquery.min.js b/legacy/api/static/js/jquery/jquery.min.js similarity index 100% rename from api/static/js/jquery/jquery.min.js rename to legacy/api/static/js/jquery/jquery.min.js diff --git a/api/templates/403.html b/legacy/api/templates/403.html similarity index 100% rename from api/templates/403.html rename to legacy/api/templates/403.html diff --git a/api/templates/_docsection.html b/legacy/api/templates/_docsection.html similarity index 100% rename from api/templates/_docsection.html rename to legacy/api/templates/_docsection.html diff --git a/api/templates/_logo-rev.html b/legacy/api/templates/_logo-rev.html similarity index 100% rename from api/templates/_logo-rev.html rename to legacy/api/templates/_logo-rev.html diff --git a/api/templates/_logo.html b/legacy/api/templates/_logo.html similarity index 100% rename from api/templates/_logo.html rename to legacy/api/templates/_logo.html diff --git a/api/templates/base-navbar.html b/legacy/api/templates/base-navbar.html similarity index 100% rename from api/templates/base-navbar.html rename to legacy/api/templates/base-navbar.html diff --git a/api/templates/base.html b/legacy/api/templates/base.html similarity index 100% rename from api/templates/base.html rename to legacy/api/templates/base.html diff --git a/api/templates/email/registration.html b/legacy/api/templates/email/registration.html similarity index 100% rename from api/templates/email/registration.html rename to legacy/api/templates/email/registration.html diff --git a/api/templates/emailtaken.html b/legacy/api/templates/emailtaken.html similarity index 100% rename from api/templates/emailtaken.html rename to legacy/api/templates/emailtaken.html diff --git a/api/templates/error.html b/legacy/api/templates/error.html similarity index 100% rename from api/templates/error.html rename to legacy/api/templates/error.html diff --git a/api/templates/registered.html b/legacy/api/templates/registered.html similarity index 100% rename from api/templates/registered.html rename to legacy/api/templates/registered.html diff --git a/api/templates/search.html b/legacy/api/templates/search.html similarity index 100% rename from api/templates/search.html rename to legacy/api/templates/search.html diff --git a/api/templates/signup.html b/legacy/api/templates/signup.html similarity index 100% rename from api/templates/signup.html rename to legacy/api/templates/signup.html diff --git a/api/tests/__init__.py b/legacy/api/tests/__init__.py similarity index 100% rename from api/tests/__init__.py rename to legacy/api/tests/__init__.py diff --git a/api/tests/api_tests.py b/legacy/api/tests/api_tests.py similarity index 100% rename from api/tests/api_tests.py rename to legacy/api/tests/api_tests.py diff --git a/api/tests/releases/api_calls_18.txt b/legacy/api/tests/releases/api_calls_18.txt similarity index 100% rename from api/tests/releases/api_calls_18.txt rename to legacy/api/tests/releases/api_calls_18.txt diff --git a/api/tests/releases/benchmark.py b/legacy/api/tests/releases/benchmark.py similarity index 100% rename from api/tests/releases/benchmark.py rename to legacy/api/tests/releases/benchmark.py diff --git a/api/tests/releases/compare.py b/legacy/api/tests/releases/compare.py similarity index 100% rename from api/tests/releases/compare.py rename to legacy/api/tests/releases/compare.py diff --git a/api/tests/resolver_tests.py b/legacy/api/tests/resolver_tests.py similarity index 100% rename from api/tests/resolver_tests.py rename to legacy/api/tests/resolver_tests.py diff --git a/api/tests/run_tests.sh b/legacy/api/tests/run_tests.sh similarity index 100% rename from api/tests/run_tests.sh rename to legacy/api/tests/run_tests.sh diff --git a/api/tests/search_tests.py b/legacy/api/tests/search_tests.py similarity index 100% rename from api/tests/search_tests.py rename to legacy/api/tests/search_tests.py diff --git a/api/tests/uwsgi_test.sh b/legacy/api/tests/uwsgi_test.sh similarity index 100% rename from api/tests/uwsgi_test.sh rename to legacy/api/tests/uwsgi_test.sh diff --git a/api/tools/config_heroku.py b/legacy/api/tools/config_heroku.py similarity index 100% rename from api/tools/config_heroku.py rename to legacy/api/tools/config_heroku.py diff --git a/api/tools/refresh_resolver.py b/legacy/api/tools/refresh_resolver.py similarity index 100% rename from api/tools/refresh_resolver.py rename to legacy/api/tools/refresh_resolver.py diff --git a/api/tools/refresh_resolver.sh b/legacy/api/tools/refresh_resolver.sh similarity index 100% rename from api/tools/refresh_resolver.sh rename to legacy/api/tools/refresh_resolver.sh diff --git a/api/tools/refresh_search_index.py b/legacy/api/tools/refresh_search_index.py similarity index 100% rename from api/tools/refresh_search_index.py rename to legacy/api/tools/refresh_search_index.py diff --git a/api/tools/reset_cache b/legacy/api/tools/reset_cache similarity index 100% rename from api/tools/reset_cache rename to legacy/api/tools/reset_cache diff --git a/api/utils.py b/legacy/api/utils.py similarity index 100% rename from api/utils.py rename to legacy/api/utils.py diff --git a/bin/README.md b/legacy/bin/README.md similarity index 100% rename from bin/README.md rename to legacy/bin/README.md diff --git a/bin/blockstack-api b/legacy/bin/blockstack-api similarity index 100% rename from bin/blockstack-api rename to legacy/bin/blockstack-api diff --git a/bin/blockstack-core b/legacy/bin/blockstack-core similarity index 100% rename from bin/blockstack-core rename to legacy/bin/blockstack-core diff --git a/bin/blockstack-genesis-block b/legacy/bin/blockstack-genesis-block similarity index 100% rename from bin/blockstack-genesis-block rename to legacy/bin/blockstack-genesis-block diff --git a/bin/blockstack-server b/legacy/bin/blockstack-server similarity index 100% rename from bin/blockstack-server rename to legacy/bin/blockstack-server diff --git a/bin/blockstack-snapshots b/legacy/bin/blockstack-snapshots similarity index 100% rename from bin/blockstack-snapshots rename to legacy/bin/blockstack-snapshots diff --git a/bin/genesis-block/blockstack-genesis-block-expand b/legacy/bin/genesis-block/blockstack-genesis-block-expand similarity index 100% rename from bin/genesis-block/blockstack-genesis-block-expand rename to legacy/bin/genesis-block/blockstack-genesis-block-expand diff --git a/bin/genesis-block/blockstack-genesis-block-history-extract b/legacy/bin/genesis-block/blockstack-genesis-block-history-extract similarity index 100% rename from bin/genesis-block/blockstack-genesis-block-history-extract rename to legacy/bin/genesis-block/blockstack-genesis-block-history-extract diff --git a/bin/genesis-block/blockstack-genesis-block-history-verify b/legacy/bin/genesis-block/blockstack-genesis-block-history-verify similarity index 100% rename from bin/genesis-block/blockstack-genesis-block-history-verify rename to legacy/bin/genesis-block/blockstack-genesis-block-history-verify diff --git a/blockstack/__init__.py b/legacy/blockstack/__init__.py similarity index 100% rename from blockstack/__init__.py rename to legacy/blockstack/__init__.py diff --git a/blockstack/blockstackd.py b/legacy/blockstack/blockstackd.py similarity index 100% rename from blockstack/blockstackd.py rename to legacy/blockstack/blockstackd.py diff --git a/blockstack/lib/README.md b/legacy/blockstack/lib/README.md similarity index 100% rename from blockstack/lib/README.md rename to legacy/blockstack/lib/README.md diff --git a/blockstack/lib/__init__.py b/legacy/blockstack/lib/__init__.py similarity index 100% rename from blockstack/lib/__init__.py rename to legacy/blockstack/lib/__init__.py diff --git a/blockstack/lib/atlas.py b/legacy/blockstack/lib/atlas.py similarity index 100% rename from blockstack/lib/atlas.py rename to legacy/blockstack/lib/atlas.py diff --git a/blockstack/lib/audit.py b/legacy/blockstack/lib/audit.py similarity index 100% rename from blockstack/lib/audit.py rename to legacy/blockstack/lib/audit.py diff --git a/blockstack/lib/b40.py b/legacy/blockstack/lib/b40.py similarity index 100% rename from blockstack/lib/b40.py rename to legacy/blockstack/lib/b40.py diff --git a/blockstack/lib/c32.py b/legacy/blockstack/lib/c32.py similarity index 100% rename from blockstack/lib/c32.py rename to legacy/blockstack/lib/c32.py diff --git a/blockstack/lib/client.py b/legacy/blockstack/lib/client.py similarity index 100% rename from blockstack/lib/client.py rename to legacy/blockstack/lib/client.py diff --git a/blockstack/lib/config.py b/legacy/blockstack/lib/config.py similarity index 100% rename from blockstack/lib/config.py rename to legacy/blockstack/lib/config.py diff --git a/blockstack/lib/fast_sync.py b/legacy/blockstack/lib/fast_sync.py similarity index 100% rename from blockstack/lib/fast_sync.py rename to legacy/blockstack/lib/fast_sync.py diff --git a/blockstack/lib/genesis_block.py b/legacy/blockstack/lib/genesis_block.py similarity index 100% rename from blockstack/lib/genesis_block.py rename to legacy/blockstack/lib/genesis_block.py diff --git a/blockstack/lib/hashing.py b/legacy/blockstack/lib/hashing.py similarity index 100% rename from blockstack/lib/hashing.py rename to legacy/blockstack/lib/hashing.py diff --git a/blockstack/lib/nameset/__init__.py b/legacy/blockstack/lib/nameset/__init__.py similarity index 100% rename from blockstack/lib/nameset/__init__.py rename to legacy/blockstack/lib/nameset/__init__.py diff --git a/blockstack/lib/nameset/db.py b/legacy/blockstack/lib/nameset/db.py similarity index 100% rename from blockstack/lib/nameset/db.py rename to legacy/blockstack/lib/nameset/db.py diff --git a/blockstack/lib/nameset/namedb.py b/legacy/blockstack/lib/nameset/namedb.py similarity index 100% rename from blockstack/lib/nameset/namedb.py rename to legacy/blockstack/lib/nameset/namedb.py diff --git a/blockstack/lib/nameset/virtualchain_hooks.py b/legacy/blockstack/lib/nameset/virtualchain_hooks.py similarity index 100% rename from blockstack/lib/nameset/virtualchain_hooks.py rename to legacy/blockstack/lib/nameset/virtualchain_hooks.py diff --git a/blockstack/lib/operations/__init__.py b/legacy/blockstack/lib/operations/__init__.py similarity index 100% rename from blockstack/lib/operations/__init__.py rename to legacy/blockstack/lib/operations/__init__.py diff --git a/blockstack/lib/operations/announce.py b/legacy/blockstack/lib/operations/announce.py similarity index 100% rename from blockstack/lib/operations/announce.py rename to legacy/blockstack/lib/operations/announce.py diff --git a/blockstack/lib/operations/nameimport.py b/legacy/blockstack/lib/operations/nameimport.py similarity index 100% rename from blockstack/lib/operations/nameimport.py rename to legacy/blockstack/lib/operations/nameimport.py diff --git a/blockstack/lib/operations/namespacepreorder.py b/legacy/blockstack/lib/operations/namespacepreorder.py similarity index 100% rename from blockstack/lib/operations/namespacepreorder.py rename to legacy/blockstack/lib/operations/namespacepreorder.py diff --git a/blockstack/lib/operations/namespaceready.py b/legacy/blockstack/lib/operations/namespaceready.py similarity index 100% rename from blockstack/lib/operations/namespaceready.py rename to legacy/blockstack/lib/operations/namespaceready.py diff --git a/blockstack/lib/operations/namespacereveal.py b/legacy/blockstack/lib/operations/namespacereveal.py similarity index 100% rename from blockstack/lib/operations/namespacereveal.py rename to legacy/blockstack/lib/operations/namespacereveal.py diff --git a/blockstack/lib/operations/preorder.py b/legacy/blockstack/lib/operations/preorder.py similarity index 100% rename from blockstack/lib/operations/preorder.py rename to legacy/blockstack/lib/operations/preorder.py diff --git a/blockstack/lib/operations/register.py b/legacy/blockstack/lib/operations/register.py similarity index 100% rename from blockstack/lib/operations/register.py rename to legacy/blockstack/lib/operations/register.py diff --git a/blockstack/lib/operations/revoke.py b/legacy/blockstack/lib/operations/revoke.py similarity index 100% rename from blockstack/lib/operations/revoke.py rename to legacy/blockstack/lib/operations/revoke.py diff --git a/blockstack/lib/operations/tokentransfer.py b/legacy/blockstack/lib/operations/tokentransfer.py similarity index 100% rename from blockstack/lib/operations/tokentransfer.py rename to legacy/blockstack/lib/operations/tokentransfer.py diff --git a/blockstack/lib/operations/transfer.py b/legacy/blockstack/lib/operations/transfer.py similarity index 100% rename from blockstack/lib/operations/transfer.py rename to legacy/blockstack/lib/operations/transfer.py diff --git a/blockstack/lib/operations/update.py b/legacy/blockstack/lib/operations/update.py similarity index 100% rename from blockstack/lib/operations/update.py rename to legacy/blockstack/lib/operations/update.py diff --git a/blockstack/lib/queue.py b/legacy/blockstack/lib/queue.py similarity index 100% rename from blockstack/lib/queue.py rename to legacy/blockstack/lib/queue.py diff --git a/blockstack/lib/rpc.py b/legacy/blockstack/lib/rpc.py similarity index 100% rename from blockstack/lib/rpc.py rename to legacy/blockstack/lib/rpc.py diff --git a/blockstack/lib/schemas.py b/legacy/blockstack/lib/schemas.py similarity index 100% rename from blockstack/lib/schemas.py rename to legacy/blockstack/lib/schemas.py diff --git a/blockstack/lib/scripts.py b/legacy/blockstack/lib/scripts.py similarity index 100% rename from blockstack/lib/scripts.py rename to legacy/blockstack/lib/scripts.py diff --git a/blockstack/lib/snv.py b/legacy/blockstack/lib/snv.py similarity index 100% rename from blockstack/lib/snv.py rename to legacy/blockstack/lib/snv.py diff --git a/blockstack/lib/storage/__init__.py b/legacy/blockstack/lib/storage/__init__.py similarity index 100% rename from blockstack/lib/storage/__init__.py rename to legacy/blockstack/lib/storage/__init__.py diff --git a/blockstack/lib/storage/auth.py b/legacy/blockstack/lib/storage/auth.py similarity index 100% rename from blockstack/lib/storage/auth.py rename to legacy/blockstack/lib/storage/auth.py diff --git a/blockstack/lib/storage/crawl.py b/legacy/blockstack/lib/storage/crawl.py similarity index 100% rename from blockstack/lib/storage/crawl.py rename to legacy/blockstack/lib/storage/crawl.py diff --git a/blockstack/lib/subdomains.py b/legacy/blockstack/lib/subdomains.py similarity index 100% rename from blockstack/lib/subdomains.py rename to legacy/blockstack/lib/subdomains.py diff --git a/blockstack/lib/util.py b/legacy/blockstack/lib/util.py similarity index 100% rename from blockstack/lib/util.py rename to legacy/blockstack/lib/util.py diff --git a/blockstack/version.py b/legacy/blockstack/version.py similarity index 100% rename from blockstack/version.py rename to legacy/blockstack/version.py diff --git a/build_docs.sh b/legacy/build_docs.sh similarity index 100% rename from build_docs.sh rename to legacy/build_docs.sh diff --git a/charts/blockstack-core/.helmignore b/legacy/charts/blockstack-core/.helmignore similarity index 100% rename from charts/blockstack-core/.helmignore rename to legacy/charts/blockstack-core/.helmignore diff --git a/charts/blockstack-core/Chart.yaml b/legacy/charts/blockstack-core/Chart.yaml similarity index 100% rename from charts/blockstack-core/Chart.yaml rename to legacy/charts/blockstack-core/Chart.yaml diff --git a/charts/blockstack-core/Makefile b/legacy/charts/blockstack-core/Makefile similarity index 100% rename from charts/blockstack-core/Makefile rename to legacy/charts/blockstack-core/Makefile diff --git a/charts/blockstack-core/templates/NOTES.txt b/legacy/charts/blockstack-core/templates/NOTES.txt similarity index 100% rename from charts/blockstack-core/templates/NOTES.txt rename to legacy/charts/blockstack-core/templates/NOTES.txt diff --git a/charts/blockstack-core/templates/_helpers.tpl b/legacy/charts/blockstack-core/templates/_helpers.tpl similarity index 100% rename from charts/blockstack-core/templates/_helpers.tpl rename to legacy/charts/blockstack-core/templates/_helpers.tpl diff --git a/charts/blockstack-core/templates/deployment.yaml b/legacy/charts/blockstack-core/templates/deployment.yaml similarity index 100% rename from charts/blockstack-core/templates/deployment.yaml rename to legacy/charts/blockstack-core/templates/deployment.yaml diff --git a/charts/blockstack-core/templates/ingress.yaml b/legacy/charts/blockstack-core/templates/ingress.yaml similarity index 100% rename from charts/blockstack-core/templates/ingress.yaml rename to legacy/charts/blockstack-core/templates/ingress.yaml diff --git a/charts/blockstack-core/templates/service.yaml b/legacy/charts/blockstack-core/templates/service.yaml similarity index 100% rename from charts/blockstack-core/templates/service.yaml rename to legacy/charts/blockstack-core/templates/service.yaml diff --git a/charts/blockstack-core/values.yaml b/legacy/charts/blockstack-core/values.yaml similarity index 100% rename from charts/blockstack-core/values.yaml rename to legacy/charts/blockstack-core/values.yaml diff --git a/charts/preview/Chart.yaml b/legacy/charts/preview/Chart.yaml similarity index 100% rename from charts/preview/Chart.yaml rename to legacy/charts/preview/Chart.yaml diff --git a/charts/preview/Makefile b/legacy/charts/preview/Makefile similarity index 100% rename from charts/preview/Makefile rename to legacy/charts/preview/Makefile diff --git a/charts/preview/requirements.yaml b/legacy/charts/preview/requirements.yaml similarity index 100% rename from charts/preview/requirements.yaml rename to legacy/charts/preview/requirements.yaml diff --git a/charts/preview/values.yaml b/legacy/charts/preview/values.yaml similarity index 100% rename from charts/preview/values.yaml rename to legacy/charts/preview/values.yaml diff --git a/circle.yml b/legacy/circle.yml similarity index 100% rename from circle.yml rename to legacy/circle.yml diff --git a/detect b/legacy/detect similarity index 100% rename from detect rename to legacy/detect diff --git a/docs/README.md b/legacy/docs/README.md similarity index 100% rename from docs/README.md rename to legacy/docs/README.md diff --git a/docs/advanced_usage.md b/legacy/docs/advanced_usage.md similarity index 100% rename from docs/advanced_usage.md rename to legacy/docs/advanced_usage.md diff --git a/docs/aglio_templates/core.jade b/legacy/docs/aglio_templates/core.jade similarity index 100% rename from docs/aglio_templates/core.jade rename to legacy/docs/aglio_templates/core.jade diff --git a/docs/aglio_templates/mixins.jade b/legacy/docs/aglio_templates/mixins.jade similarity index 100% rename from docs/aglio_templates/mixins.jade rename to legacy/docs/aglio_templates/mixins.jade diff --git a/docs/aglio_templates/public.jade b/legacy/docs/aglio_templates/public.jade similarity index 100% rename from docs/aglio_templates/public.jade rename to legacy/docs/aglio_templates/public.jade diff --git a/docs/aglio_templates/scripts.js b/legacy/docs/aglio_templates/scripts.js similarity index 100% rename from docs/aglio_templates/scripts.js rename to legacy/docs/aglio_templates/scripts.js diff --git a/docs/api-specs.md b/legacy/docs/api-specs.md similarity index 100% rename from docs/api-specs.md rename to legacy/docs/api-specs.md diff --git a/docs/atlas/howitworks.md b/legacy/docs/atlas/howitworks.md similarity index 100% rename from docs/atlas/howitworks.md rename to legacy/docs/atlas/howitworks.md diff --git a/docs/atlas/howtouse.md b/legacy/docs/atlas/howtouse.md similarity index 100% rename from docs/atlas/howtouse.md rename to legacy/docs/atlas/howtouse.md diff --git a/docs/atlas/overview.md b/legacy/docs/atlas/overview.md similarity index 100% rename from docs/atlas/overview.md rename to legacy/docs/atlas/overview.md diff --git a/docs/atlas_network.md b/legacy/docs/atlas_network.md similarity index 100% rename from docs/atlas_network.md rename to legacy/docs/atlas_network.md diff --git a/docs/attic/README.md b/legacy/docs/attic/README.md similarity index 100% rename from docs/attic/README.md rename to legacy/docs/attic/README.md diff --git a/docs/attic/advanced_usage.md b/legacy/docs/attic/advanced_usage.md similarity index 100% rename from docs/attic/advanced_usage.md rename to legacy/docs/attic/advanced_usage.md diff --git a/docs/attic/figures/gaia-authentication.png b/legacy/docs/attic/figures/gaia-authentication.png similarity index 100% rename from docs/attic/figures/gaia-authentication.png rename to legacy/docs/attic/figures/gaia-authentication.png diff --git a/docs/attic/figures/gaia-connect.png b/legacy/docs/attic/figures/gaia-connect.png similarity index 100% rename from docs/attic/figures/gaia-connect.png rename to legacy/docs/attic/figures/gaia-connect.png diff --git a/docs/attic/figures/gaia-getfile.png b/legacy/docs/attic/figures/gaia-getfile.png similarity index 100% rename from docs/attic/figures/gaia-getfile.png rename to legacy/docs/attic/figures/gaia-getfile.png diff --git a/docs/attic/figures/gaia-listdir.png b/legacy/docs/attic/figures/gaia-listdir.png similarity index 100% rename from docs/attic/figures/gaia-listdir.png rename to legacy/docs/attic/figures/gaia-listdir.png diff --git a/docs/attic/figures/gaia-putfile.png b/legacy/docs/attic/figures/gaia-putfile.png similarity index 100% rename from docs/attic/figures/gaia-putfile.png rename to legacy/docs/attic/figures/gaia-putfile.png diff --git a/docs/attic/gaia.md b/legacy/docs/attic/gaia.md similarity index 100% rename from docs/attic/gaia.md rename to legacy/docs/attic/gaia.md diff --git a/docs/attic/openbazaar.md b/legacy/docs/attic/openbazaar.md similarity index 100% rename from docs/attic/openbazaar.md rename to legacy/docs/attic/openbazaar.md diff --git a/docs/attic/resolver.md b/legacy/docs/attic/resolver.md similarity index 100% rename from docs/attic/resolver.md rename to legacy/docs/attic/resolver.md diff --git a/docs/attic/tutorial_creation.md b/legacy/docs/attic/tutorial_creation.md similarity index 100% rename from docs/attic/tutorial_creation.md rename to legacy/docs/attic/tutorial_creation.md diff --git a/docs/basic_usage.md b/legacy/docs/basic_usage.md similarity index 100% rename from docs/basic_usage.md rename to legacy/docs/basic_usage.md diff --git a/docs/best-practices.md b/legacy/docs/best-practices.md similarity index 100% rename from docs/best-practices.md rename to legacy/docs/best-practices.md diff --git a/docs/blockstack-did-spec.md b/legacy/docs/blockstack-did-spec.md similarity index 100% rename from docs/blockstack-did-spec.md rename to legacy/docs/blockstack-did-spec.md diff --git a/docs/blockstack_naming_service.md b/legacy/docs/blockstack_naming_service.md similarity index 100% rename from docs/blockstack_naming_service.md rename to legacy/docs/blockstack_naming_service.md diff --git a/docs/cli.md b/legacy/docs/cli.md similarity index 100% rename from docs/cli.md rename to legacy/docs/cli.md diff --git a/docs/faq_developer.md b/legacy/docs/faq_developer.md similarity index 100% rename from docs/faq_developer.md rename to legacy/docs/faq_developer.md diff --git a/docs/faq_evaluators.md b/legacy/docs/faq_evaluators.md similarity index 100% rename from docs/faq_evaluators.md rename to legacy/docs/faq_evaluators.md diff --git a/docs/faq_technical.md b/legacy/docs/faq_technical.md similarity index 100% rename from docs/faq_technical.md rename to legacy/docs/faq_technical.md diff --git a/docs/figures/test-screen.png b/legacy/docs/figures/test-screen.png similarity index 100% rename from docs/figures/test-screen.png rename to legacy/docs/figures/test-screen.png diff --git a/docs/gaia.md b/legacy/docs/gaia.md similarity index 100% rename from docs/gaia.md rename to legacy/docs/gaia.md diff --git a/docs/glossary.md b/legacy/docs/glossary.md similarity index 100% rename from docs/glossary.md rename to legacy/docs/glossary.md diff --git a/docs/install-api.md b/legacy/docs/install-api.md similarity index 100% rename from docs/install-api.md rename to legacy/docs/install-api.md diff --git a/docs/interactive_regtest_macros.md b/legacy/docs/interactive_regtest_macros.md similarity index 100% rename from docs/interactive_regtest_macros.md rename to legacy/docs/interactive_regtest_macros.md diff --git a/docs/memcached.md b/legacy/docs/memcached.md similarity index 100% rename from docs/memcached.md rename to legacy/docs/memcached.md diff --git a/docs/namespace_creation.md b/legacy/docs/namespace_creation.md similarity index 100% rename from docs/namespace_creation.md rename to legacy/docs/namespace_creation.md diff --git a/docs/naming/architecture.md b/legacy/docs/naming/architecture.md similarity index 100% rename from docs/naming/architecture.md rename to legacy/docs/naming/architecture.md diff --git a/docs/naming/comparison.md b/legacy/docs/naming/comparison.md similarity index 100% rename from docs/naming/comparison.md rename to legacy/docs/naming/comparison.md diff --git a/docs/naming/creationhowto.md b/legacy/docs/naming/creationhowto.md similarity index 100% rename from docs/naming/creationhowto.md rename to legacy/docs/naming/creationhowto.md diff --git a/docs/naming/did.md b/legacy/docs/naming/did.md similarity index 100% rename from docs/naming/did.md rename to legacy/docs/naming/did.md diff --git a/docs/naming/forks.md b/legacy/docs/naming/forks.md similarity index 100% rename from docs/naming/forks.md rename to legacy/docs/naming/forks.md diff --git a/docs/naming/introduction.md b/legacy/docs/naming/introduction.md similarity index 100% rename from docs/naming/introduction.md rename to legacy/docs/naming/introduction.md diff --git a/docs/naming/manage.md b/legacy/docs/naming/manage.md similarity index 100% rename from docs/naming/manage.md rename to legacy/docs/naming/manage.md diff --git a/docs/naming/namespaces.md b/legacy/docs/naming/namespaces.md similarity index 100% rename from docs/naming/namespaces.md rename to legacy/docs/naming/namespaces.md diff --git a/docs/naming/pickname.md b/legacy/docs/naming/pickname.md similarity index 100% rename from docs/naming/pickname.md rename to legacy/docs/naming/pickname.md diff --git a/docs/naming/register.md b/legacy/docs/naming/register.md similarity index 100% rename from docs/naming/register.md rename to legacy/docs/naming/register.md diff --git a/docs/naming/resolving.md b/legacy/docs/naming/resolving.md similarity index 100% rename from docs/naming/resolving.md rename to legacy/docs/naming/resolving.md diff --git a/docs/naming/search.md b/legacy/docs/naming/search.md similarity index 100% rename from docs/naming/search.md rename to legacy/docs/naming/search.md diff --git a/docs/naming/subdomains.md b/legacy/docs/naming/subdomains.md similarity index 100% rename from docs/naming/subdomains.md rename to legacy/docs/naming/subdomains.md diff --git a/docs/naming/tutorial_subdomains.md b/legacy/docs/naming/tutorial_subdomains.md similarity index 100% rename from docs/naming/tutorial_subdomains.md rename to legacy/docs/naming/tutorial_subdomains.md diff --git a/docs/openbazaar.md b/legacy/docs/openbazaar.md similarity index 100% rename from docs/openbazaar.md rename to legacy/docs/openbazaar.md diff --git a/docs/resolver.md b/legacy/docs/resolver.md similarity index 100% rename from docs/resolver.md rename to legacy/docs/resolver.md diff --git a/docs/search.md b/legacy/docs/search.md similarity index 100% rename from docs/search.md rename to legacy/docs/search.md diff --git a/docs/setup_core_portal.md b/legacy/docs/setup_core_portal.md similarity index 100% rename from docs/setup_core_portal.md rename to legacy/docs/setup_core_portal.md diff --git a/docs/subdomain.md b/legacy/docs/subdomain.md similarity index 100% rename from docs/subdomain.md rename to legacy/docs/subdomain.md diff --git a/docs/subdomains.md b/legacy/docs/subdomains.md similarity index 100% rename from docs/subdomains.md rename to legacy/docs/subdomains.md diff --git a/docs/wire-format.md b/legacy/docs/wire-format.md similarity index 100% rename from docs/wire-format.md rename to legacy/docs/wire-format.md diff --git a/images/README.md b/legacy/images/README.md similarity index 100% rename from images/README.md rename to legacy/images/README.md diff --git a/images/aws/README.md b/legacy/images/aws/README.md similarity index 100% rename from images/aws/README.md rename to legacy/images/aws/README.md diff --git a/images/community/snap/README.md b/legacy/images/community/snap/README.md similarity index 100% rename from images/community/snap/README.md rename to legacy/images/community/snap/README.md diff --git a/images/community/snap/snapcraft.yaml b/legacy/images/community/snap/snapcraft.yaml similarity index 100% rename from images/community/snap/snapcraft.yaml rename to legacy/images/community/snap/snapcraft.yaml diff --git a/images/docker/README.md b/legacy/images/docker/README.md similarity index 100% rename from images/docker/README.md rename to legacy/images/docker/README.md diff --git a/images/docker/api-ssl/Dockerfile b/legacy/images/docker/api-ssl/Dockerfile similarity index 100% rename from images/docker/api-ssl/Dockerfile rename to legacy/images/docker/api-ssl/Dockerfile diff --git a/images/docker/api/Dockerfile b/legacy/images/docker/api/Dockerfile similarity index 100% rename from images/docker/api/Dockerfile rename to legacy/images/docker/api/Dockerfile diff --git a/images/docker/core/Dockerfile b/legacy/images/docker/core/Dockerfile similarity index 100% rename from images/docker/core/Dockerfile rename to legacy/images/docker/core/Dockerfile diff --git a/images/docker/testmode/Dockerfile b/legacy/images/docker/testmode/Dockerfile similarity index 100% rename from images/docker/testmode/Dockerfile rename to legacy/images/docker/testmode/Dockerfile diff --git a/setup.py b/legacy/setup.py similarity index 100% rename from setup.py rename to legacy/setup.py diff --git a/skaffold.yaml b/legacy/skaffold.yaml similarity index 100% rename from skaffold.yaml rename to legacy/skaffold.yaml diff --git a/testnet/Makefile b/legacy/testnet/Makefile similarity index 100% rename from testnet/Makefile rename to legacy/testnet/Makefile diff --git a/testnet/README.md b/legacy/testnet/README.md similarity index 100% rename from testnet/README.md rename to legacy/testnet/README.md diff --git a/testnet/blockstack-public-testnet.sh b/legacy/testnet/blockstack-public-testnet.sh similarity index 100% rename from testnet/blockstack-public-testnet.sh rename to legacy/testnet/blockstack-public-testnet.sh diff --git a/testnet/bootstrap.min.css b/legacy/testnet/bootstrap.min.css similarity index 100% rename from testnet/bootstrap.min.css rename to legacy/testnet/bootstrap.min.css diff --git a/testnet/bootstrap.min.js b/legacy/testnet/bootstrap.min.js similarity index 100% rename from testnet/bootstrap.min.js rename to legacy/testnet/bootstrap.min.js diff --git a/testnet/index.html.py b/legacy/testnet/index.html.py similarity index 100% rename from testnet/index.html.py rename to legacy/testnet/index.html.py diff --git a/testnet/jquery.min.js b/legacy/testnet/jquery.min.js similarity index 100% rename from testnet/jquery.min.js rename to legacy/testnet/jquery.min.js diff --git a/testnet/nginx/testnet b/legacy/testnet/nginx/testnet similarity index 100% rename from testnet/nginx/testnet rename to legacy/testnet/nginx/testnet diff --git a/testnet/register_namespace.sh b/legacy/testnet/register_namespace.sh similarity index 100% rename from testnet/register_namespace.sh rename to legacy/testnet/register_namespace.sh diff --git a/testnet/test/testServer.py b/legacy/testnet/test/testServer.py similarity index 100% rename from testnet/test/testServer.py rename to legacy/testnet/test/testServer.py diff --git a/testnet/testnet.css b/legacy/testnet/testnet.css similarity index 100% rename from testnet/testnet.css rename to legacy/testnet/testnet.css diff --git a/testnet/testnet.js b/legacy/testnet/testnet.js similarity index 100% rename from testnet/testnet.js rename to legacy/testnet/testnet.js diff --git a/testnet/testnet_simple.sh b/legacy/testnet/testnet_simple.sh similarity index 100% rename from testnet/testnet_simple.sh rename to legacy/testnet/testnet_simple.sh diff --git a/tools/docker/blockstack-server.ini b/legacy/tools/docker/blockstack-server.ini similarity index 100% rename from tools/docker/blockstack-server.ini rename to legacy/tools/docker/blockstack-server.ini diff --git a/tools/docker/docker-compose.yaml b/legacy/tools/docker/docker-compose.yaml similarity index 100% rename from tools/docker/docker-compose.yaml rename to legacy/tools/docker/docker-compose.yaml diff --git a/tools/docker/docker-tools.sh b/legacy/tools/docker/docker-tools.sh similarity index 100% rename from tools/docker/docker-tools.sh rename to legacy/tools/docker/docker-tools.sh diff --git a/tools/fast-sync/gcp_upload.py b/legacy/tools/fast-sync/gcp_upload.py similarity index 100% rename from tools/fast-sync/gcp_upload.py rename to legacy/tools/fast-sync/gcp_upload.py diff --git a/tools/fast-sync/replicate.sh b/legacy/tools/fast-sync/replicate.sh similarity index 100% rename from tools/fast-sync/replicate.sh rename to legacy/tools/fast-sync/replicate.sh diff --git a/tools/linux_synflood.sh b/legacy/tools/linux_synflood.sh similarity index 100% rename from tools/linux_synflood.sh rename to legacy/tools/linux_synflood.sh diff --git a/unittests/subdomains/zonefiles.py b/legacy/unittests/subdomains/zonefiles.py similarity index 100% rename from unittests/subdomains/zonefiles.py rename to legacy/unittests/subdomains/zonefiles.py