From 45ad5f1f30df9d1d4eb154147cec70291e9753e8 Mon Sep 17 00:00:00 2001 From: koh-gt Date: Thu, 25 Jul 2024 03:59:55 +0800 Subject: [PATCH] ferrite init --- LICENSE | 10 +- README.md | 14 +- backend/README.md | 70 +++---- backend/mempool-config-testnet.sample.json | 10 +- backend/mempool-config.sample.json | 18 +- backend/package-lock.json | 4 +- backend/package.json | 6 +- backend/src/__tests__/config.test.ts | 14 +- backend/src/api/blocks.ts | 8 +- backend/src/api/difficulty-adjustment.ts | 9 +- backend/src/api/pools-parser.ts | 2 +- backend/src/config.ts | 16 +- backend/src/tasks/pools-updater.ts | 2 +- contributors/bosch-0.txt | 6 +- docker/README.md | 117 ++++++----- docker/backend/start.sh | 14 +- docker/docker-compose.yml | 10 +- frontend/README.md | 24 +-- frontend/frontend | 1 - frontend/mempool-frontend-config.sample.json | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 12 +- frontend/proxy.conf.js | 8 +- frontend/proxy.conf.mixed.js | 2 +- frontend/src/app/app.constants.ts | 187 +++++++++++++----- .../app/components/about/about.component.html | 16 +- .../components/address/address.component.html | 4 +- .../src/app/components/app/app.component.ts | 2 +- .../block/block-preview.component.ts | 2 +- .../app/components/block/block.component.ts | 2 +- .../difficulty-mining.component.ts | 4 +- .../difficulty-tooltip.component.ts | 2 +- .../difficulty/difficulty.component.ts | 14 +- .../preview-title.component.html | 2 +- .../privacy-policy.component.html | 16 +- .../search-form/search-form.component.html | 2 +- .../search-results.component.html | 10 +- .../terms-of-service.component.html | 18 +- .../trademark-policy.component.html | 8 +- .../transactions-list.component.html | 4 +- .../src/app/docs/api-docs/api-docs-data.ts | 6 +- .../app/docs/api-docs/api-docs.component.html | 78 ++++---- .../code-template/code-template.component.ts | 4 +- .../src/app/interfaces/node-api.interface.ts | 2 +- .../group/group-preview.component.ts | 8 +- .../app/lightning/group/group.component.html | 6 +- .../app/lightning/group/group.component.ts | 4 +- .../src/app/services/enterprise.service.ts | 4 +- .../src/app/services/opengraph.service.ts | 2 +- frontend/src/app/services/seo.service.ts | 6 +- frontend/src/app/services/state.service.ts | 2 +- frontend/src/app/services/storage.service.ts | 2 +- .../global-footer.component.html | 10 +- frontend/src/favicon.ico | Bin 836 -> 835 bytes frontend/src/index.mempool.html | 8 +- frontend/src/locale/messages.ar.xlf | 22 +-- frontend/src/locale/messages.ca.xlf | 8 +- frontend/src/locale/messages.cs.xlf | 16 +- frontend/src/locale/messages.da.xlf | 16 +- frontend/src/locale/messages.de.xlf | 36 ++-- frontend/src/locale/messages.en_US.xlf | 6 +- frontend/src/locale/messages.es.xlf | 36 ++-- frontend/src/locale/messages.fa.xlf | 24 +-- frontend/src/locale/messages.fi.xlf | 42 ++-- frontend/src/locale/messages.fi_FI.xlf | 20 +- frontend/src/locale/messages.fr.xlf | 44 ++--- frontend/src/locale/messages.he.xlf | 18 +- frontend/src/locale/messages.hi.xlf | 12 +- frontend/src/locale/messages.hr.xlf | 8 +- frontend/src/locale/messages.hu.xlf | 36 ++-- frontend/src/locale/messages.it.xlf | 44 ++--- frontend/src/locale/messages.ja.xlf | 22 +-- frontend/src/locale/messages.ka.xlf | 22 +-- frontend/src/locale/messages.ko.xlf | 24 +-- frontend/src/locale/messages.lt.xlf | 26 +-- frontend/src/locale/messages.mk.xlf | 40 ++-- frontend/src/locale/messages.nb.xlf | 42 ++-- frontend/src/locale/messages.ne.xlf | 14 +- frontend/src/locale/messages.nl.xlf | 42 ++-- frontend/src/locale/messages.pl.xlf | 16 +- frontend/src/locale/messages.pt.xlf | 42 ++-- frontend/src/locale/messages.pt_BR.xlf | 12 +- frontend/src/locale/messages.ro.xlf | 42 ++-- frontend/src/locale/messages.ru.xlf | 26 +-- frontend/src/locale/messages.sl.xlf | 12 +- frontend/src/locale/messages.sv.xlf | 42 ++-- frontend/src/locale/messages.th.xlf | 16 +- frontend/src/locale/messages.tr.xlf | 22 +-- frontend/src/locale/messages.uk.xlf | 42 ++-- frontend/src/locale/messages.vi.xlf | 42 ++-- frontend/src/locale/messages.xlf | 22 +-- frontend/src/locale/messages.zh.xlf | 12 +- frontend/src/resources/clock/gradient.png | Bin 38328 -> 38326 bytes .../favicons/android-chrome-192x192.png | Bin 28791 -> 28790 bytes .../favicons/android-chrome-512x512.png | Bin 135166 -> 135165 bytes .../resources/favicons/apple-touch-icon.png | Bin 25700 -> 25697 bytes .../src/resources/favicons/favicon-16x16.png | Bin 940 -> 939 bytes .../src/resources/favicons/favicon-32x32.png | Bin 2349 -> 2348 bytes frontend/src/resources/favicons/favicon.ico | Bin 4029 -> 4028 bytes .../src/resources/favicons/mstile-150x150.png | Bin 22030 -> 22027 bytes .../src/resources/mempool-logo-bigger.png | Bin 38877 -> 38876 bytes frontend/src/resources/mempool-preview.png | Bin 32773 -> 32772 bytes .../resources/mempool-space-logo-bigger.png | Bin 49331 -> 49330 bytes .../mempool-space-logo-horizontal.png | Bin 34551 -> 34549 bytes .../src/resources/mempool-space-preview.png | Bin 87482 -> 87481 bytes frontend/src/resources/mempool-tube.png | Bin 11938 -> 11936 bytes frontend/src/resources/previews/dashboard.png | Bin 742892 -> 742884 bytes frontend/src/resources/previews/lightning.png | Bin 1853805 -> 1853770 bytes frontend/src/resources/previews/mining.png | Bin 621216 -> 621208 bytes frontend/src/resources/profile/blixt.png | Bin 18370 -> 18369 bytes frontend/src/resources/profile/bluewallet.png | Bin 13886 -> 13885 bytes frontend/src/resources/profile/blw.png | Bin 9222 -> 9221 bytes frontend/src/resources/profile/copa.png | Bin 46349 -> 46348 bytes frontend/src/resources/profile/electrum.png | Bin 174386 -> 174383 bytes frontend/src/resources/profile/muun.png | Bin 2113 -> 2112 bytes frontend/src/resources/profile/mynodebtc.png | Bin 10559 -> 10558 bytes .../src/resources/profile/nix-bitcoin.png | Bin 18094 -> 18093 bytes frontend/src/resources/profile/ronindojo.png | Bin 29499 -> 29498 bytes frontend/src/resources/profile/sparrow.png | Bin 30532 -> 30531 bytes frontend/src/resources/profile/specter.png | Bin 32937 -> 32936 bytes frontend/src/resources/profile/start9.png | Bin 14008 -> 14006 bytes frontend/src/resources/profile/umbrel.png | Bin 7049 -> 7048 bytes frontend/src/resources/profile/wiz.png | Bin 20708 -> 20707 bytes frontend/src/resources/profile/zeus.png | Bin 19695 -> 19694 bytes .../screenshots/v2.1.0-dashboard.png | Bin 493878 -> 493870 bytes .../screenshots/v2.2.0-dashboard.png | Bin 360598 -> 360596 bytes .../screenshots/v2.2.1-dashboard.png | Bin 363314 -> 363309 bytes .../screenshots/v2.3.0-dashboard.png | Bin 373452 -> 373449 bytes .../screenshots/v2.4.0-dashboard.png | Bin 877099 -> 877089 bytes frontend/src/resources/sounds/cha-ching.mp3 | Bin 56910 -> 56907 bytes frontend/src/resources/sounds/magic.mp3 | Bin 56692 -> 56690 bytes .../src/resources/wallycore/wallycore.wasm | Bin 135961 -> 135959 bytes production/README.md | 16 +- production/mempool-build-all | 6 +- production/mempool-config.unfurl.json | 4 +- .../mempool-frontend-config.mainnet.json | 2 +- production/minfee.crontab | 2 +- production/nginx/nginx.conf | 12 +- production/nginx/server-common.conf | 8 +- production/sitemap-update | 14 +- production/test-nginx | 2 +- production/unfurler-config.mainnet.json | 2 +- unfurler/src/index.ts | 12 +- 143 files changed, 993 insertions(+), 873 deletions(-) diff --git a/LICENSE b/LICENSE index 7612bf9a6..fc738ffd2 100644 --- a/LICENSE +++ b/LICENSE @@ -1,23 +1,23 @@ LITE.SPACE Copyright (c) 2019-2023 The Mempool Open Source Project Developers -Copyright (c) 2023 Litecoin Foundation +Copyright (c) 2023 Ferrite Foundation This program is free software; you can redistribute it and/or modify it under the terms of (at your option) either: 1. the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License or any later version approved by a - proxy statement published on ; or + proxy statement published on ; or 2. the GNU General Public License as published by the Free Software Foundation, either version 3 of the License or any later version approved by a - proxy statement published on . + proxy statement published on . This website is not affiliated or endorsed by Mempool Space K.K. -The Litecoin Space explorer is a fork of the mempool.space™ repo, an open source Bitcoin +The Ferrite Space explorer is a fork of the mempool.space™ repo, an open source Bitcoin explorer, developed by Mempool Space K.K. In accordance with Section (III) of their -trademark policy, Litecoin Space does not include any usage of "Word Marks", "Logos", +trademark policy, Ferrite Space does not include any usage of "Word Marks", "Logos", or "Trade Dress", except where necessary to display licensing and original copyright authors. See Mempool Space K.K's full Trademark Policy and Guidelines for more details, published on . diff --git a/README.md b/README.md index 033bb81a7..d9193acdc 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ -# Litecoin Space +# Ferrite Space
-Litepool is the fully-featured mempool visualizer, explorer, and API service running at [litecoinspace.org](https://litecoinspace.org/). +Ferritepool is the fully-featured mempool visualizer, explorer, and API service running at [ferritecoin.com](https://ferritecoin.com/). -It is an open-source project developed and operated for the benefit of the Litecoin community, with a focus on the emerging transaction fee market that is evolving Litecoin into a multi-layer ecosystem. +It is an open-source project developed and operated for the benefit of the Ferrite community, with a focus on the emerging transaction fee market that is evolving Ferrite into a multi-layer ecosystem. # Installation Methods -litepool can be self-hosted on a wide variety of your own hardware, ranging from a simple one-click installation on a Raspberry Pi full-node distro all the way to a robust production instance on a powerful FreeBSD server. +ferritepool can be self-hosted on a wide variety of your own hardware, ranging from a simple one-click installation on a Raspberry Pi full-node distro all the way to a robust production instance on a powerful FreeBSD server. **Most people should use a one-click install method.** Other install methods are meant for developers and others with experience managing servers. @@ -28,8 +28,8 @@ Mempool can be conveniently installed on the following full-node distros: ## Advanced Installation Methods -Litepool can be installed in other ways too, but we only recommend doing so if you're a developer, have experience managing servers, or otherwise know what you're doing. +Ferritepool can be installed in other ways too, but we only recommend doing so if you're a developer, have experience managing servers, or otherwise know what you're doing. -- See the [`docker/`](./docker/) directory for instructions on deploying Litepool with Docker. +- See the [`docker/`](./docker/) directory for instructions on deploying Ferritepool with Docker. - See the [`backend/`](./backend/) and [`frontend/`](./frontend/) directories for manual install instructions oriented for developers. -- See the [`production/`](./production/) directory for guidance on setting up a more serious Litepool instance designed for high performance at scale. +- See the [`production/`](./production/) directory for guidance on setting up a more serious Ferritepool instance designed for high performance at scale. diff --git a/backend/README.md b/backend/README.md index ba5f8a9a4..1d8009347 100644 --- a/backend/README.md +++ b/backend/README.md @@ -1,10 +1,10 @@ -# Litepool Backend +# Ferritepool Backend These instructions are mostly intended for developers. -If you choose to use these instructions for a production setup, be aware that you will still probably need to do additional configuration for your specific OS, environment, use-case, etc. We do our best here to provide a good starting point, but only proceed if you know what you're doing. Litepool does not provide support for custom setups. +If you choose to use these instructions for a production setup, be aware that you will still probably need to do additional configuration for your specific OS, environment, use-case, etc. We do our best here to provide a good starting point, but only proceed if you know what you're doing. Ferritepool does not provide support for custom setups. -See other ways to set up Litepool on [the main README](/../../#installation-methods). +See other ways to set up Ferritepool on [the main README](/../../#installation-methods). Jump to a section in this doc: @@ -13,25 +13,25 @@ Jump to a section in this doc: ## Setup -### 1. Clone Litepool Repository +### 1. Clone Ferritepool Repository -Get the latest Litepool code: +Get the latest Ferritepool code: ``` -git clone https://github.com/litecoin-foundation/ltcspace -cd Litepool +git clone https://github.com/ferritecoin/fecspace +cd Ferritepool ``` Check out the latest release: ``` -latestrelease=$(curl -s https://api.github.com/repos/litecoin-foundation/litepool/releases/latest|grep tag_name|head -1|cut -d '"' -f4) +latestrelease=$(curl -s https://api.github.com/repos/ferritecoin/ferritepool/releases/latest|grep tag_name|head -1|cut -d '"' -f4) git checkout $latestrelease ``` -### 2. Configure Litecoin Core +### 2. Configure Ferrite Core -Turn on `txindex`, enable RPC, and set RPC credentials in `litecoin.conf`: +Turn on `txindex`, enable RPC, and set RPC credentials in `ferrite.conf`: ``` txindex=1 @@ -42,13 +42,13 @@ rpcpassword=mempool ### 3. Configure Electrum Server -[Pick an Electrum Server implementation](https://litecoinspace.org/docs/faq#address-lookup-issues), configure it, and make sure it's synced. +[Pick an Electrum Server implementation](https://ferritecoin.com/docs/faq#address-lookup-issues), configure it, and make sure it's synced. -**This step is optional.** You can run Litepool without configuring an Electrum Server for it, but address lookups will be disabled. +**This step is optional.** You can run Ferritepool without configuring an Electrum Server for it, but address lookups will be disabled. ### 4. Configure MariaDB -_Litepool needs MariaDB v10.5 or later. If you already have MySQL installed, make sure to migrate any existing databases **before** installing MariaDB._ +_Ferritepool needs MariaDB v10.5 or later. If you already have MySQL installed, make sure to migrate any existing databases **before** installing MariaDB._ Get MariaDB from your operating system's package manager: @@ -74,7 +74,7 @@ MariaDB [(none)]> grant all privileges on mempool.* to 'mempool'@'%' identified Query OK, 0 rows affected (0.00 sec) ``` -### 5. Prepare Litepool Backend +### 5. Prepare Ferritepool Backend #### Build @@ -100,15 +100,15 @@ Edit `mempool-config.json` as needed. In particular, make sure: -- the correct Litecoin Core RPC credentials are specified in `CORE_RPC` +- the correct Ferrite Core RPC credentials are specified in `CORE_RPC` - the correct `BACKEND` is specified in `MEMPOOL`: - - "electrum" if you're using [electrs-ltc](https://github.com/rust-litecoin/electrs-ltc/tree/master) or [cculianu/Fulcrum](https://github.com/cculianu/Fulcrum) - - "esplora" if you're using [electrs-ltc-esplora](https://github.com/rust-litecoin/electrs-ltc/tree/esplora) + - "electrum" if you're using [electrs-ltc](https://github.com/rust-ferrite/electrs-ltc/tree/master) or [cculianu/Fulcrum](https://github.com/cculianu/Fulcrum) + - "esplora" if you're using [electrs-ltc-esplora](https://github.com/rust-ferrite/electrs-ltc/tree/esplora) - "none" if you're not using any Electrum Server -### 6. Run Litepool Backend +### 6. Run Ferritepool Backend -Run the Litepool backend: +Run the Ferritepool backend: ``` npm run start @@ -144,15 +144,15 @@ Mempool updated in 0.243 seconds Updating mempool ``` -### 7. Set Up Litepool Frontend +### 7. Set Up Ferritepool Frontend -With the backend configured and running, proceed to set up the [Litepool frontend](../frontend#manual-setup). +With the backend configured and running, proceed to set up the [Ferritepool frontend](../frontend#manual-setup). ## Development Tips ### Set Up Backend Watchers -The litepool backend is static. TypeScript scripts are compiled into the `dist` folder and served through a Node.js web server. +The ferritepool backend is static. TypeScript scripts are compiled into the `dist` folder and served through a Node.js web server. As a result, for development purposes, you may find it helpful to set up backend watchers to avoid the manual shutdown/recompile/restart command-line cycle. @@ -174,61 +174,61 @@ nodemon src/index.ts --ignore cache/ Helpful link: https://gist.github.com/System-Glitch/cb4e87bf1ae3fec9925725bb3ebe223a -Run litecoind on regtest: +Run ferrited on regtest: ``` -litecoind -regtest +ferrited -regtest ``` Create a new wallet, if needed: ``` -litecoin-cli -regtest createwallet test +ferrite-cli -regtest createwallet test ``` Load wallet (this command may take a while if you have lot of UTXOs): ``` -litecoin-cli -regtest loadwallet test +ferrite-cli -regtest loadwallet test ``` Get a new address: ``` -address=$(litecoin-cli -regtest getnewaddress) +address=$(ferrite-cli -regtest getnewaddress) ``` Mine blocks to the previously generated address. You need at least 101 blocks before you can spend. This will take some time to execute (~1 min): ``` -litecoin-cli -regtest generatetoaddress 101 $address +ferrite-cli -regtest generatetoaddress 101 $address ``` Send 0.1 BTC at 5 lit/vB to another address: ``` -litecoin-cli -named -regtest sendtoaddress address=$(litecoin-cli -regtest getnewaddress) amount=0.1 fee_rate=5 +ferrite-cli -named -regtest sendtoaddress address=$(ferrite-cli -regtest getnewaddress) amount=0.1 fee_rate=5 ``` See more example of `sendtoaddress`: ``` -litecoin-cli sendtoaddress # will print the help +ferrite-cli sendtoaddress # will print the help ``` Mini script to generate random network activity (random TX count with random tx fee-rate). It's slow so don't expect to use this to test mempool spam, except if you let it run for a long time, or maybe with multiple regtest nodes connected to each other. ``` #!/bin/bash -address=$(litecoin-cli -regtest getnewaddress) -litecoin-cli -regtest generatetoaddress 101 $address +address=$(ferrite-cli -regtest getnewaddress) +ferrite-cli -regtest generatetoaddress 101 $address for i in {1..1000000} do for y in $(seq 1 "$(jot -r 1 1 1000)") do - litecoin-cli -regtest -named sendtoaddress address=$address amount=0.01 fee_rate=$(jot -r 1 1 100) + ferrite-cli -regtest -named sendtoaddress address=$address amount=0.01 fee_rate=$(jot -r 1 1 100) done - litecoin-cli -regtest generatetoaddress 1 $address + ferrite-cli -regtest generatetoaddress 1 $address sleep 5 done ``` @@ -236,7 +236,7 @@ done Generate block at regular interval (every 10 seconds in this example): ``` -watch -n 10 "litecoin-cli -regtest generatetoaddress 1 $address" +watch -n 10 "ferrite-cli -regtest generatetoaddress 1 $address" ``` ### Mining pools update diff --git a/backend/mempool-config-testnet.sample.json b/backend/mempool-config-testnet.sample.json index 57b3d6489..d4bcea8e8 100644 --- a/backend/mempool-config-testnet.sample.json +++ b/backend/mempool-config-testnet.sample.json @@ -16,13 +16,13 @@ }, "CORE_RPC": { "HOST": "127.0.0.1", - "PORT": 19332, - "USERNAME": "mempool", - "PASSWORD": "mempool", + "PORT": 19573, + "USERNAME": "user", + "PASSWORD": "password", "TIMEOUT": 60000 }, "ESPLORA": { - "REST_API_URL": "http://127.0.0.1:3002" + "REST_API_URL": "http://127.0.0.1:3011" }, "DATABASE": { "ENABLED": true, @@ -49,7 +49,7 @@ "PASSWORD": "" }, "EXTERNAL_DATA_SERVER": { - "MEMPOOL_API": "https://litecoinspace.org/api/v1", + "MEMPOOL_API": "https://ferritecoin.com/api/v1", "MEMPOOL_ONION": "http://REPLACEME.onion/api/v1" } } diff --git a/backend/mempool-config.sample.json b/backend/mempool-config.sample.json index 045347b34..8700ea568 100644 --- a/backend/mempool-config.sample.json +++ b/backend/mempool-config.sample.json @@ -19,11 +19,11 @@ "EXTERNAL_ASSETS": [], "EXTERNAL_MAX_RETRY": 1, "EXTERNAL_RETRY_INTERVAL": 0, - "USER_AGENT": "mempoollite", + "USER_AGENT": "mempoolfec", "STDOUT_LOG_MIN_PRIORITY": "debug", "AUTOMATIC_BLOCK_REINDEXING": true, - "POOLS_JSON_URL": "https://raw.githubusercontent.com/litecoin-foundation/mining-pools-ltc/master/pools.json", - "POOLS_JSON_TREE_URL": "https://api.github.com/repos/litecoin-foundation/mining-pools-ltc/git/trees/master", + "POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json", + "POOLS_JSON_TREE_URL": "https://api.github.com/repos/mempool/mining-pools/git/trees/master", "AUDIT": true, "ADVANCED_GBT_AUDIT": true, "ADVANCED_GBT_MEMPOOL": true, @@ -31,17 +31,17 @@ }, "CORE_RPC": { "HOST": "127.0.0.1", - "PORT": 9332, - "USERNAME": "poop", - "PASSWORD": "poop" + "PORT": 9573, + "USERNAME": "user", + "PASSWORD": "password" }, "ELECTRUM": { "HOST": "127.0.0.1", - "PORT": 50002, + "PORT": 50011, "TLS_ENABLED": true }, "ESPLORA": { - "REST_API_URL": "http://127.0.0.1:3000" + "REST_API_URL": "http://127.0.0.1:3010" }, "SECOND_CORE_RPC": { "HOST": "127.0.0.1", @@ -105,7 +105,7 @@ "CLEARNET_URL": "https://price.bisq.wiz.biz/getAllMarketPrices" }, "EXTERNAL_DATA_SERVER": { - "MEMPOOL_API": "https://litecoinspace.org/api/v1", + "MEMPOOL_API": "https://ferritecoin.com/api/v1", "MEMPOOL_ONION": "http://mempoolhqx4isw62xs7abwphsq7ldayuidyx2v2oethdhhj6mlo2r6ad.onion/api/v1" } } diff --git a/backend/package-lock.json b/backend/package-lock.json index ba59f4ff9..894fd33c2 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -1,11 +1,11 @@ { - "name": "mempool-ltc-backend", + "name": "mempool-fec-backend", "version": "2.6.0-dev", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "mempool-ltc-backend", + "name": "mempool-fec-backend", "version": "2.6.0-dev", "license": "GNU Affero General Public License v3.0", "dependencies": { diff --git a/backend/package.json b/backend/package.json index 2d2106a9f..f3b322203 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,9 +1,9 @@ { "name": "mempool-ltc-backend", "version": "2.6.0-dev", - "description": "Litecoin mempool visualizer and blockchain explorer backend", + "description": "Ferrite mempool visualizer and blockchain explorer backend", "license": "GNU Affero General Public License v3.0", - "homepage": "https://litecoinspace.org", + "homepage": "https://ferritecoin.com", "repository": { "type": "git", "url": "git+https://github.com/mempool/mempool" @@ -12,7 +12,7 @@ "url": "https://github.com/mempool/mempool/issues" }, "keywords": [ - "litecoin", + "ferrite", "mempool", "blockchain", "explorer", diff --git a/backend/src/__tests__/config.test.ts b/backend/src/__tests__/config.test.ts index 74717c370..fadbc341c 100644 --- a/backend/src/__tests__/config.test.ts +++ b/backend/src/__tests__/config.test.ts @@ -35,8 +35,8 @@ describe('Mempool Backend Config', () => { EXTERNAL_RETRY_INTERVAL: 0, USER_AGENT: 'mempool', STDOUT_LOG_MIN_PRIORITY: 'debug', - POOLS_JSON_TREE_URL: 'https://api.github.com/repos/litecoin-foundation/mining-pools-ltc/git/trees/master', - POOLS_JSON_URL: 'https://raw.githubusercontent.com/litecoin-foundation/mining-pools-ltc/master/pools.json', + POOLS_JSON_TREE_URL: '', + POOLS_JSON_URL: '', AUDIT: false, ADVANCED_GBT_AUDIT: false, ADVANCED_GBT_MEMPOOL: false, @@ -51,9 +51,9 @@ describe('Mempool Backend Config', () => { expect(config.CORE_RPC).toStrictEqual({ HOST: '127.0.0.1', - PORT: 9332, - USERNAME: 'mempool', - PASSWORD: 'mempool', + PORT: 9573, + USERNAME: 'user', + PASSWORD: 'password', TIMEOUT: 60000 }); @@ -96,8 +96,8 @@ describe('Mempool Backend Config', () => { }); expect(config.EXTERNAL_DATA_SERVER).toStrictEqual({ - MEMPOOL_API: 'https://litepool.space/api/v1', - MEMPOOL_ONION: 'http://TODO: litecoin.onion/api/v1', + MEMPOOL_API: 'https://ferritepool.space/api/v1', + MEMPOOL_ONION: 'http://TODO: ferrite.onion/api/v1', }); expect(config.MAXMIND).toStrictEqual({ diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index bce7983d3..04371694b 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -560,7 +560,7 @@ class Blocks { const blockchainInfo = await bitcoinClient.getBlockchainInfo(); this.updateTimerProgress(timer, 'got blockchain info for initial difficulty adjustment'); if (blockchainInfo.blocks === blockchainInfo.headers) { - const heightDiff = blockHeightTip % 2016; + const heightDiff = blockHeightTip % 10; const blockHash = await bitcoinApi.$getBlockHash(blockHeightTip - heightDiff); this.updateTimerProgress(timer, 'got block hash for initial difficulty adjustment'); const block: IEsploraApi.Block = await bitcoinCoreApi.$getBlock(blockHash); @@ -568,8 +568,8 @@ class Blocks { this.lastDifficultyAdjustmentTime = block.timestamp; this.currentDifficulty = block.difficulty; - if (blockHeightTip >= 2016) { - const previousPeriodBlockHash = await bitcoinApi.$getBlockHash(blockHeightTip - heightDiff - 2016); + if (blockHeightTip >= 10) { + const previousPeriodBlockHash = await bitcoinApi.$getBlockHash(blockHeightTip - heightDiff - 10); this.updateTimerProgress(timer, 'got previous block hash for initial difficulty adjustment'); const previousPeriodBlock: IEsploraApi.Block = await bitcoinCoreApi.$getBlock(previousPeriodBlockHash); this.updateTimerProgress(timer, 'got previous block for initial difficulty adjustment'); @@ -664,7 +664,7 @@ class Blocks { } } - if (block.height % 2016 === 0) { + if (block.height % 10 === 0) { if (Common.indexingEnabled()) { await DifficultyAdjustmentsRepository.$saveAdjustments({ time: block.timestamp, diff --git a/backend/src/api/difficulty-adjustment.ts b/backend/src/api/difficulty-adjustment.ts index 47a2c5b43..5b2009a56 100644 --- a/backend/src/api/difficulty-adjustment.ts +++ b/backend/src/api/difficulty-adjustment.ts @@ -24,9 +24,9 @@ export function calcDifficultyAdjustment( network: string, latestBlockTimestamp: number, ): DifficultyAdjustment { - const EPOCH_BLOCK_LENGTH = 2016; // Litecoin mainnet - const BLOCK_SECONDS_TARGET = 150; // Litecoin mainnet (2.5min * 60) - const TESTNET_MAX_BLOCK_SECONDS = 1200; // Litecoin testnet + const EPOCH_BLOCK_LENGTH = 10; // Ferrite mainnet + const BLOCK_SECONDS_TARGET = 60; // Ferrite mainnet (1min * 60) + const TESTNET_MAX_BLOCK_SECONDS = 1200; // Ferrite testnet const diffSeconds = Math.max(0, nowSeconds - DATime); const blocksInEpoch = (blockHeight >= 0) ? blockHeight % EPOCH_BLOCK_LENGTH : 0; @@ -34,11 +34,12 @@ export function calcDifficultyAdjustment( const remainingBlocks = EPOCH_BLOCK_LENGTH - blocksInEpoch; const nextRetargetHeight = (blockHeight >= 0) ? blockHeight + remainingBlocks : 0; const expectedBlocks = diffSeconds / BLOCK_SECONDS_TARGET; - const actualTimespan = (blocksInEpoch === 2015 ? latestBlockTimestamp : nowSeconds) - DATime; + const actualTimespan = (blocksInEpoch === 9 ? latestBlockTimestamp : nowSeconds) - DATime; let difficultyChange = 0; let timeAvgSecs = blocksInEpoch ? diffSeconds / blocksInEpoch : BLOCK_SECONDS_TARGET; + // pre DGWv3 as of now 20240724 height 166274 of 250000 difficultyChange = (BLOCK_SECONDS_TARGET / (actualTimespan / (blocksInEpoch + 1)) - 1) * 100; // Max increase is x4 (+300%) if (difficultyChange > 300) { diff --git a/backend/src/api/pools-parser.ts b/backend/src/api/pools-parser.ts index 98d971a87..77584a533 100644 --- a/backend/src/api/pools-parser.ts +++ b/backend/src/api/pools-parser.ts @@ -62,7 +62,7 @@ class PoolsParser { if (poolDB.name !== pool.name) { // Pool has been renamed const newSlug = pool.name.replace(/[^a-z0-9]/gi, '').toLowerCase(); - logger.warn(`Renaming ${poolDB.name} mining pool to ${pool.name}. Slug has been updated. Maybe you want to make a redirection from 'https://litecoinspace.org/mining/pool/${poolDB.slug}' to 'https://litecoinspace.org/mining/pool/${newSlug}`); + logger.warn(`Renaming ${poolDB.name} mining pool to ${pool.name}. Slug has been updated. Maybe you want to make a redirection from 'https://ferritecoin.com/mining/pool/${poolDB.slug}' to 'https://ferritecoin.com/mining/pool/${newSlug}`); await PoolsRepository.$renameMiningPool(poolDB.id, newSlug, pool.name); } if (poolDB.link !== pool.link) { diff --git a/backend/src/config.ts b/backend/src/config.ts index 9a2f29a4a..302bfe08e 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -143,8 +143,8 @@ const defaults: IConfig = { 'USER_AGENT': 'mempool', 'STDOUT_LOG_MIN_PRIORITY': 'debug', 'AUTOMATIC_BLOCK_REINDEXING': false, - 'POOLS_JSON_URL': 'https://raw.githubusercontent.com/litecoin-foundation/mining-pools-ltc/master/pools.json', - 'POOLS_JSON_TREE_URL': 'https://api.github.com/repos/litecoin-foundation/mining-pools-ltc/git/trees/master', + 'POOLS_JSON_URL': 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json', + 'POOLS_JSON_TREE_URL': 'https://api.github.com/repos/mempool/mining-pools/git/trees/master', 'AUDIT': false, 'ADVANCED_GBT_AUDIT': false, 'ADVANCED_GBT_MEMPOOL': false, @@ -153,7 +153,7 @@ const defaults: IConfig = { 'DISK_CACHE_BLOCK_INTERVAL': 6, }, 'ESPLORA': { - 'REST_API_URL': 'http://127.0.0.1:3000', + 'REST_API_URL': 'http://127.0.0.1:3010', 'UNIX_SOCKET_PATH': null, 'RETRY_UNIX_SOCKET_AFTER': 30000, }, @@ -164,9 +164,9 @@ const defaults: IConfig = { }, 'CORE_RPC': { 'HOST': '127.0.0.1', - 'PORT': 8332, - 'USERNAME': 'mempool', - 'PASSWORD': 'mempool', + 'PORT': 9573, + 'USERNAME': 'user', + 'PASSWORD': 'password', 'TIMEOUT': 60000, }, 'SECOND_CORE_RPC': { @@ -225,8 +225,8 @@ const defaults: IConfig = { 'PASSWORD': '' }, 'EXTERNAL_DATA_SERVER': { - 'MEMPOOL_API': 'https://litecoinspace.org/api/v1', - 'MEMPOOL_ONION': 'http://TODO: litecoin.onion/api/v1', + 'MEMPOOL_API': 'https://ferritecoin.com/api/v1', + 'MEMPOOL_ONION': 'http://TODO: ferrite.onion/api/v1', }, 'MAXMIND': { 'ENABLED': false, diff --git a/backend/src/tasks/pools-updater.ts b/backend/src/tasks/pools-updater.ts index 169991da6..6beb300a2 100644 --- a/backend/src/tasks/pools-updater.ts +++ b/backend/src/tasks/pools-updater.ts @@ -128,7 +128,7 @@ class PoolsUpdater { if (response !== undefined) { for (const file of response['tree']) { - if (file['path'] === 'pools.json') { + if (file['path'] === 'pools-v2.json') { return file['sha']; } } diff --git a/contributors/bosch-0.txt b/contributors/bosch-0.txt index 366abbd7b..8f0a113ca 100644 --- a/contributors/bosch-0.txt +++ b/contributors/bosch-0.txt @@ -1,3 +1,3 @@ -I hereby accept the terms of the Contributor License Agreement in the CONTRIBUTING.md file of the mempool/mempool git repository as of January 25, 2022. - -Signed: Bosch-0 +I hereby accept the terms of the Contributor License Agreement in the CONTRIBUTING.md file of the mempool/mempool git repository as of January 25, 2022. + +Signed: Bosch-0 diff --git a/docker/README.md b/docker/README.md index 1d4afe530..972005999 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,5 +1,30 @@ # Docker Installation +```bash +$ git clone https://github.com/ferritecoin/fecspace +$ cd fecspace/docker +``` + +### Install [Docker](https://docs.docker.com/desktop/install/ubuntu/) on Ubuntu +``` +# Add Docker's official GPG key: +sudo apt-get update +sudo apt-get install ca-certificates curl +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc +sudo chmod a+r /etc/apt/keyrings/docker.asc + +# Add the repository to Apt sources: +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin +sudo apt install docker-compose +``` + + This directory contains the Dockerfiles used to build and release the official images, as well as a `docker-compose.yml` to configure environment variables and other settings. If you are looking to use these Docker images to deploy your own instance of Mempool, note that they only containerize Mempool's frontend and backend. You will still need to deploy and configure Bitcoin Core and an Electrum Server separately, along with any other utilities specific to your use case (e.g., a reverse proxy, etc). Such configuration is mostly beyond the scope of the Mempool project, so please only proceed if you know what you're doing. @@ -7,76 +32,76 @@ If you are looking to use these Docker images to deploy your own instance of Mem See a video guide of this installation method by k3tan [on BitcoinTV.com](https://bitcointv.com/w/8fpAx6rf5CQ16mMhospwjg). Jump to a section in this doc: -- [Configure with Bitcoin Core Only](#configure-with-bitcoin-core-only) -- [Configure with Bitcoin Core + Electrum Server](#configure-with-bitcoin-core--electrum-server) +- [Configure with Ferrite Core + electrum-fec Server](#configure-with-ferrite-core--electrs-fec-server-default-setting) +- [Configure with Ferrite Core only](#configure-with-ferrite-core) - [Further Configuration](#further-configuration) -## Configure with Bitcoin Core Only - -_Note: address lookups require an Electrum Server and will not work with this configuration. [Add an Electrum Server](#configure-with-bitcoin-core--electrum-server) to your backend for full functionality._ - -The default Docker configuration assumes you have the following configuration in your `bitcoin.conf` file: +## Configure with Ferrite Core + electrs-fec Server (Default setting) -```ini -txindex=1 -server=1 -rpcuser=mempool -rpcpassword=mempool -``` +First, configure `ferrited` as specified above, and make sure your [Electrum Server](https://github.com/ferritecoin/electrs-fec) is running and synced. See [this FAQ](https://mempool.space/docs/faq#address-lookup-issues) if you need help picking an Electrum Server implementation. -If you want to use different credentials, specify them in the `docker-compose.yml` file: +Then, set the following variables in `docker-compose.yml` so Mempool can connect to your Electrum Server: ```yaml api: environment: - MEMPOOL_BACKEND: "none" - CORE_RPC_HOST: "172.27.0.1" - CORE_RPC_PORT: "8332" - CORE_RPC_USERNAME: "customuser" - CORE_RPC_PASSWORD: "custompassword" - CORE_RPC_TIMEOUT: "60000" + MEMPOOL_BACKEND: "esplora" + ELECTRUM_HOST: "127.0.0.1" + ELECTRUM_PORT: "50011" + ELECTRUM_TLS_ENABLED: "false" ``` -The IP address in the example above refers to Docker's default gateway IP address so that the container can hit the `bitcoind` instance running on the host machine. If your setup is different, update it accordingly. +Eligible values for `MEMPOOL_BACKEND`: + - "esplora" if you're using [ferritecoin/electrs-fec](https://github.com/Blockstream/electrs) + - ~"electrum" if you're using [romanz/electrs](https://github.com/romanz/electrs) or [cculianu/Fulcrum](https://github.com/cculianu/Fulcrum)~ + - "none" if you're not using any Electrum Server -> see [Configure with Ferrite Core](#configure-with-ferrite-core-only) -Make sure `bitcoind` is running and synced. +Of course, if your Docker host IP address is different, update accordingly. -Now, run: +With `ferrited` and Electrum Server set up, run Mempool with: ```bash -docker-compose up +sudo docker-compose up ``` -Your Mempool instance should be running at http://localhost. The graphs will be populated as new transactions are detected. +## Configure with Ferrite Core only -## Configure with Bitcoin Core + Electrum Server +_Note: address lookups require an Electrum Server and will not work with this configuration. [Add an Electrum Server](#configure-with-bitcoin-core--electrum-server) to your backend for full functionality._ -First, configure `bitcoind` as specified above, and make sure your Electrum Server is running and synced. See [this FAQ](https://mempool.space/docs/faq#address-lookup-issues) if you need help picking an Electrum Server implementation. +The default Docker configuration assumes you have the following configuration in your `ferrite.conf` file: -Then, set the following variables in `docker-compose.yml` so Mempool can connect to your Electrum Server: +```ini +txindex=1 +server=1 +rpcuser=user +rpcpassword=password +``` + +If you want to use different credentials, specify them in the `docker-compose.yml` file: ```yaml api: environment: - MEMPOOL_BACKEND: "electrum" - ELECTRUM_HOST: "172.27.0.1" - ELECTRUM_PORT: "50002" - ELECTRUM_TLS_ENABLED: "false" + MEMPOOL_BACKEND: "none" + CORE_RPC_HOST: "127.0.0.1" + CORE_RPC_PORT: "9573" + CORE_RPC_USERNAME: "user" + CORE_RPC_PASSWORD: "password" + CORE_RPC_TIMEOUT: "60000" ``` -Eligible values for `MEMPOOL_BACKEND`: - - "electrum" if you're using [romanz/electrs](https://github.com/romanz/electrs) or [cculianu/Fulcrum](https://github.com/cculianu/Fulcrum) - - "esplora" if you're using [Blockstream/electrs](https://github.com/Blockstream/electrs) - - "none" if you're not using any Electrum Server +The IP address in the example above refers to Docker's default gateway IP address so that the container can hit the `ferrited` instance running on the host machine. If your setup is different, update it accordingly. -Of course, if your Docker host IP address is different, update accordingly. +Make sure `ferrited` is running and synced. -With `bitcoind` and Electrum Server set up, run Mempool with: +Now, run: ```bash -docker-compose up +sudo docker-compose up ``` +Your Mempool instance should be running at http://localhost. The graphs will be populated as new transactions are detected. + ## Further Configuration Optionally, you can override any other backend settings from `mempool-config.json`. @@ -107,8 +132,8 @@ Below we list all settings from `mempool-config.json` and the corresponding over "STDOUT_LOG_MIN_PRIORITY": "info", "INDEXING_BLOCKS_AMOUNT": false, "AUTOMATIC_BLOCK_REINDEXING": false, - "POOLS_JSON_URL": "https://raw.githubusercontent.com/litecoin-foundation/mining-pools-ltc/master/pools.json", - "POOLS_JSON_TREE_URL": "https://api.github.com/repos/litecoin-foundation/mining-pools-ltc/git/trees/master", + "POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json", + "POOLS_JSON_TREE_URL": "https://api.github.com/repos/mempool/mining-pools/git/trees/master", "ADVANCED_GBT_AUDIT": false, "ADVANCED_GBT_MEMPOOL": false, "CPFP_INDEXING": false, @@ -159,9 +184,9 @@ Corresponding `docker-compose.yml` overrides: ```json "CORE_RPC": { "HOST": "127.0.0.1", - "PORT": 8332, - "USERNAME": "mempool", - "PASSWORD": "mempool", + "PORT": 9573, + "USERNAME": "user", + "PASSWORD": "password", "TIMEOUT": 60000 }, ``` @@ -184,7 +209,7 @@ Corresponding `docker-compose.yml` overrides: ```json "ELECTRUM": { "HOST": "127.0.0.1", - "PORT": 50002, + "PORT": 50011, "TLS_ENABLED": true }, ``` @@ -204,7 +229,7 @@ Corresponding `docker-compose.yml` overrides: `mempool-config.json`: ```json "ESPLORA": { - "REST_API_URL": "http://127.0.0.1:3000", + "REST_API_URL": "http://127.0.0.1:3010", "UNIX_SOCKET_PATH": "/tmp/esplora-socket", "RETRY_UNIX_SOCKET_AFTER": 30000 }, diff --git a/docker/backend/start.sh b/docker/backend/start.sh index 44f634682..c9566bf6e 100755 --- a/docker/backend/start.sh +++ b/docker/backend/start.sh @@ -23,8 +23,8 @@ __MEMPOOL_EXTERNAL_RETRY_INTERVAL__=${MEMPOOL_EXTERNAL_RETRY_INTERVAL:=0} __MEMPOOL_USER_AGENT__=${MEMPOOL_USER_AGENT:=mempool} __MEMPOOL_STDOUT_LOG_MIN_PRIORITY__=${MEMPOOL_STDOUT_LOG_MIN_PRIORITY:=info} __MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__=${MEMPOOL_AUTOMATIC_BLOCK_REINDEXING:=false} -__MEMPOOL_POOLS_JSON_URL__=${MEMPOOL_POOLS_JSON_URL:=https://raw.githubusercontent.com/litecoin-foundation/mining-pools-ltc/master/pools.json} -__MEMPOOL_POOLS_JSON_TREE_URL__=${MEMPOOL_POOLS_JSON_TREE_URL:=https://api.github.com/repos/litecoin-foundation/mining-pools-ltc/git/trees/master} +__MEMPOOL_POOLS_JSON_URL__=${MEMPOOL_POOLS_JSON_URL:=https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json} +__MEMPOOL_POOLS_JSON_TREE_URL__=${MEMPOOL_POOLS_JSON_TREE_URL:=https://api.github.com/repos/mempool/mining-pools/git/trees/master} __MEMPOOL_AUDIT__=${MEMPOOL_AUDIT:=false} __MEMPOOL_ADVANCED_GBT_AUDIT__=${MEMPOOL_ADVANCED_GBT_AUDIT:=false} __MEMPOOL_ADVANCED_GBT_MEMPOOL__=${MEMPOOL_ADVANCED_GBT_MEMPOOL:=false} @@ -34,18 +34,18 @@ __MEMPOOL_DISK_CACHE_BLOCK_INTERVAL__=${MEMPOOL_DISK_CACHE_BLOCK_INTERVAL:=6} # CORE_RPC __CORE_RPC_HOST__=${CORE_RPC_HOST:=127.0.0.1} -__CORE_RPC_PORT__=${CORE_RPC_PORT:=8332} -__CORE_RPC_USERNAME__=${CORE_RPC_USERNAME:=mempool} -__CORE_RPC_PASSWORD__=${CORE_RPC_PASSWORD:=mempool} +__CORE_RPC_PORT__=${CORE_RPC_PORT:=9573} +__CORE_RPC_USERNAME__=${CORE_RPC_USERNAME:=user} +__CORE_RPC_PASSWORD__=${CORE_RPC_PASSWORD:=password} __CORE_RPC_TIMEOUT__=${CORE_RPC_TIMEOUT:=60000} # ELECTRUM __ELECTRUM_HOST__=${ELECTRUM_HOST:=127.0.0.1} -__ELECTRUM_PORT__=${ELECTRUM_PORT:=50002} +__ELECTRUM_PORT__=${ELECTRUM_PORT:=50011} __ELECTRUM_TLS_ENABLED__=${ELECTRUM_TLS_ENABLED:=false} # ESPLORA -__ESPLORA_REST_API_URL__=${ESPLORA_REST_API_URL:=http://127.0.0.1:3000} +__ESPLORA_REST_API_URL__=${ESPLORA_REST_API_URL:=http://127.0.0.1:3010} __ESPLORA_UNIX_SOCKET_PATH__=${ESPLORA_UNIX_SOCKET_PATH:=null} __ESPLORA_RETRY_UNIX_SOCKET_AFTER__=${ESPLORA_RETRY_UNIX_SOCKET_AFTER:=30000} diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 68e73a1c8..7905daf50 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -14,11 +14,11 @@ services: - 80:8080 api: environment: - MEMPOOL_BACKEND: "none" - CORE_RPC_HOST: "172.27.0.1" - CORE_RPC_PORT: "8332" - CORE_RPC_USERNAME: "mempool" - CORE_RPC_PASSWORD: "mempool" + MEMPOOL_BACKEND: "esplora" + CORE_RPC_HOST: "127.0.0.1" + CORE_RPC_PORT: "9573" + CORE_RPC_USERNAME: "user" + CORE_RPC_PASSWORD: "password" DATABASE_ENABLED: "true" DATABASE_HOST: "db" DATABASE_DATABASE: "mempool" diff --git a/frontend/README.md b/frontend/README.md index 4a5ccede1..79aaa7eee 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,6 +1,6 @@ -# Litepool Frontend +# Ferritepool Frontend -You can build and run the Litepool frontend and proxy to the production Litepool backend (for easier frontend development), or you can connect it to your own backend for a full Litepool development instance, custom deployment, etc. +You can build and run the Ferritepool frontend and proxy to the production Ferritepool backend (for easier frontend development), or you can connect it to your own backend for a full Ferritepool development instance, custom deployment, etc. Jump to a section in this doc: @@ -10,20 +10,20 @@ Jump to a section in this doc: ## Quick Setup for Frontend Development -If you want to quickly improve the UI, fix typos, or make other updates that don't require any backend changes, you don't need to set up an entire backend—you can simply run the Litepool frontend locally and proxy to the litecoinspace.org backend. +If you want to quickly improve the UI, fix typos, or make other updates that don't require any backend changes, you don't need to set up an entire backend—you can simply run the Ferritepool frontend locally and proxy to the ferritecoin.com backend. -### 1. Clone Litepool Repository +### 1. Clone Ferritepool Repository -Get the latest Litepool code: +Get the latest Ferritepool code: ``` -git clone https://github.com/litecoin-foundation/ltcspace -cd litepool +git clone https://github.com/ferritecoin/fecspace +cd ferritepool ``` ### 2. Specify Website -The same frontend codebase is used for https://litecoinspace.org and https://explorer.litecoinspace.org. +The same frontend codebase is used for https://ferritecoin.com and https://explorer.ferritecoin.com. Configure the frontend for the site you want by running the corresponding command: @@ -42,7 +42,7 @@ $ npm install $ npm run serve:local-prod ``` -The frontend will be available at http://localhost:4200/ and all API requests will be proxied to the production server at https://litecoinspace.org. +The frontend will be available at http://localhost:4200/ and all API requests will be proxied to the production server at https://ferritecoin.com. ### 4. Test @@ -66,7 +66,7 @@ If all tests are green, submit your PR, and it will be reviewed by someone on th ## Manual Setup -Set up the [Litepool backend](../backend/) first, if you haven't already. +Set up the [Ferritepool backend](../backend/) first, if you haven't already. ### 1. Build the Frontend @@ -84,7 +84,7 @@ npm run build #### Development -To run your local Litepool frontend with your local Litepool backend: +To run your local Ferritepool frontend with your local Ferritepool backend: ``` npm run serve @@ -98,7 +98,7 @@ You will probably want to set up a reverse proxy, TLS, etc. There are sample ngi ## Translations: Transifex Project -Litepool merges translations from upstream, so please help through the link below. +Ferritepool merges translations from upstream, so please help through the link below. https://www.transifex.com/mempool/mempool/dashboard/ ### Translators diff --git a/frontend/frontend b/frontend/frontend index 945c9b46d..e69de29bb 120000 --- a/frontend/frontend +++ b/frontend/frontend @@ -1 +0,0 @@ -. \ No newline at end of file diff --git a/frontend/mempool-frontend-config.sample.json b/frontend/mempool-frontend-config.sample.json index 5e779b744..362badad3 100644 --- a/frontend/mempool-frontend-config.sample.json +++ b/frontend/mempool-frontend-config.sample.json @@ -8,7 +8,7 @@ "BLOCK_WEIGHT_UNITS": 4000000, "MEMPOOL_BLOCKS_AMOUNT": 8, "BASE_MODULE": "mempool", - "MEMPOOL_WEBSITE_URL": "https://litecoinspace.org", + "MEMPOOL_WEBSITE_URL": "https://ferritecoin.com", "MINING_DASHBOARD": true, "AUDIT": false, "MAINNET_BLOCK_AUDIT_START_HEIGHT": 0, diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f2da26d09..7e67daabc 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,11 +1,11 @@ { - "name": "litepool-frontend", + "name": "ferritepool-frontend", "version": "2.6.0-dev", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "litepool-frontend", + "name": "ferritepool-frontend", "version": "2.6.0-dev", "license": "GNU Affero General Public License v3.0", "dependencies": { diff --git a/frontend/package.json b/frontend/package.json index a2c65730c..4145e7508 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,18 +1,18 @@ { - "name": "litepool-frontend", + "name": "ferritepool-frontend", "version": "2.6.0-dev", - "description": "Litecoin mempool visualizer and blockchain explorer backend", + "description": "Ferrite mempool visualizer and blockchain explorer backend", "license": "GNU Affero General Public License v3.0", - "homepage": "https://litecoinspace.org", + "homepage": "https://ferritecoin.com", "repository": { "type": "git", - "url": "git+https://github.com/litecoin-foundation/ltcspace" + "url": "git+https://github.com/ferritecoin/fecspace" }, "bugs": { - "url": "https://github.com/litecoin-foundation/ltcspace/issues" + "url": "https://github.com/ferritecoin/fecspace/issues" }, "keywords": [ - "litecoin", + "ferrite", "mempool", "blockchain", "explorer" diff --git a/frontend/proxy.conf.js b/frontend/proxy.conf.js index f4a04807a..4844ff8f7 100644 --- a/frontend/proxy.conf.js +++ b/frontend/proxy.conf.js @@ -21,21 +21,21 @@ try { PROXY_CONFIG = [ { context: ["*", "/api/**", "!/api/v1/ws", "/testnet/api/**"], - target: "https://litecoinspace.org", + target: "https://ferritecoin.com", ws: true, secure: false, changeOrigin: true, }, { context: ["/api/v1/ws"], - target: "https://litecoinspace.org", + target: "https://ferritecoin.com", ws: true, secure: false, changeOrigin: true, }, { context: ["/resources/mining-pools/**"], - target: "https://litecoinspace.org", + target: "https://ferritecoin.com", secure: false, changeOrigin: true, }, @@ -45,7 +45,7 @@ PROXY_CONFIG = [ "/resources/assets.minimal.json", "/resources/worldmap.json", ], - target: "https://litecoinspace.org", + target: "https://ferritecoin.com", secure: false, changeOrigin: true, }, diff --git a/frontend/proxy.conf.mixed.js b/frontend/proxy.conf.mixed.js index 71563f3dc..98dae30c0 100644 --- a/frontend/proxy.conf.mixed.js +++ b/frontend/proxy.conf.mixed.js @@ -34,7 +34,7 @@ PROXY_CONFIG.push( }, { context: ["/api/**"], - target: `https://litecoinspace.org`, + target: `https://ferritecoin.com`, secure: false, changeOrigin: true, proxyTimeout: 30000, diff --git a/frontend/src/app/app.constants.ts b/frontend/src/app/app.constants.ts index 3c0f541f1..e0f7c4a7e 100644 --- a/frontend/src/app/app.constants.ts +++ b/frontend/src/app/app.constants.ts @@ -147,82 +147,177 @@ export const languages: Language[] = [ export const specialBlocks = { '0': { labelEvent: 'Genesis', - labelEventCompleted: 'The Genesis of Litecoin', + labelEventCompleted: 'The Genesis of Ferrite', networks: ['mainnet', 'testnet'], }, - '840000': { - labelEvent: 'Litecoin\'s 1st Halving', - labelEventCompleted: 'Block Subsidy has halved to 25 LTC per block', + '301107': { + labelEvent: 'Ferrite\'s 1st Halving', + labelEventCompleted: 'Block Subsidy has halved to 50 FEC per block', networks: ['mainnet', 'testnet'], }, - '1680000': { - labelEvent: 'Litecoin\'s 2nd Halving', - labelEventCompleted: 'Block Subsidy has halved to 12.5 LTC per block', + '602214': { + labelEvent: 'Ferrite\'s 2nd Halving', + labelEventCompleted: 'Block Subsidy has halved to 25 FEC per block', networks: ['mainnet', 'testnet'], }, - '2520000': { - labelEvent: 'Litecoin\'s 3rd Halving', - labelEventCompleted: 'Block Subsidy has halved to 6.25 LTC per block', + '903321': { + labelEvent: 'Ferrite\'s 3rd Halving', + labelEventCompleted: 'Block Subsidy has halved to 12.5 FEC per block', networks: ['mainnet', 'testnet'], }, - '3360000': { - labelEvent: 'Litecoin\'s 4th Halving', - labelEventCompleted: 'Block Subsidy has halved to 3.125 LTC per block', + '1204428': { + labelEvent: 'Ferrite\'s 4th Halving', + labelEventCompleted: 'Block Subsidy has halved to 6.25 FEC per block', networks: ['mainnet', 'testnet'], }, - '4200000': { - labelEvent: 'Litecoin\'s 5th Halving', - labelEventCompleted: 'Block Subsidy has halved to 1.5625 LTC per block', + '1505535': { + labelEvent: 'Ferrite\'s 5th Halving', + labelEventCompleted: 'Block Subsidy has halved to 3.125 FEC per block', networks: ['mainnet', 'testnet'], }, - '5040000': { - labelEvent: 'Litecoin\'s 6th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.78125 LTC per block', + '1806642': { + labelEvent: 'Ferrite\'s 6th Halving', + labelEventCompleted: 'Block Subsidy has halved to 1.5625 FEC per block', networks: ['mainnet', 'testnet'], }, - '5880000': { - labelEvent: 'Litecoin\'s 7th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.390625 LTC per block', + '2107749': { + labelEvent: 'Ferrite\'s 7th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.78125 FEC per block', networks: ['mainnet', 'testnet'], }, - '6720000': { - labelEvent: 'Litecoin\'s 8th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.1953125 LTC per block', + '2408856': { + labelEvent: 'Ferrite\'s 8th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.390625 FEC per block', networks: ['mainnet', 'testnet'], }, - '7560000': { - labelEvent: 'Litecoin\'s 9th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.09765625 LTC per block', + '2709963': { + labelEvent: 'Ferrite\'s 9th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.1953125 FEC per block', networks: ['mainnet', 'testnet'], }, - '8400000': { - labelEvent: 'Litecoin\'s 10th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.04882812 LTC per block', + '3011070': { + labelEvent: 'Ferrite\'s 10th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.09765625 FEC per block', networks: ['mainnet', 'testnet'], }, - '9240000': { - labelEvent: 'Litecoin\'s 11th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.02441406 LTC per block', + '3312177': { + labelEvent: 'Ferrite\'s 11th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.04882812 FEC per block', networks: ['mainnet', 'testnet'], }, - '10080000': { - labelEvent: 'Litecoin\'s 12th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.01220703 LTC per block', + '3613284': { + labelEvent: 'Ferrite\'s 12th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.02441406 FEC per block', networks: ['mainnet', 'testnet'], }, - '10920000': { - labelEvent: 'Litecoin\'s 13th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.00610351 LTC per block', + '3914391': { + labelEvent: 'Ferrite\'s 13th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.01220703 FEC per block', networks: ['mainnet', 'testnet'], }, - '11760000': { - labelEvent: 'Litecoin\'s 14th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.00305175 LTC per block', + '4215498': { + labelEvent: 'Ferrite\'s 14th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00610351 FEC per block', networks: ['mainnet', 'testnet'], }, - '12600000': { - labelEvent: 'Litecoin\'s 15th Halving', - labelEventCompleted: 'Block Subsidy has halved to 0.00152587 LTC per block', + '4516605': { + labelEvent: 'Ferrite\'s 15th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00305175 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '4817712': { + labelEvent: 'Ferrite\'s 16th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00152587 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '5118819': { + labelEvent: 'Ferrite\'s 17th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00076293 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '5419926': { + labelEvent: 'Ferrite\'s 18th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00038146 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '5721033': { + labelEvent: 'Ferrite\'s 19th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00019073 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '6022140': { + labelEvent: 'Ferrite\'s 20th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00009536 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '6323247': { + labelEvent: 'Ferrite\'s 21st Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00004768 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '6624354': { + labelEvent: 'Ferrite\'s 22nd Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00002384 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '6925461': { + labelEvent: 'Ferrite\'s 23rd Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00001192 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '7226568': { + labelEvent: 'Ferrite\'s 24th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000596 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '7527675': { + labelEvent: 'Ferrite\'s 25th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000298 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '7828782': { + labelEvent: 'Ferrite\'s 26th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000149 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '8129889': { + labelEvent: 'Ferrite\'s 27th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000074 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '8430996': { + labelEvent: 'Ferrite\'s 28th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000037 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '8732103': { + labelEvent: 'Ferrite\'s 29th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000018 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '9033210': { + labelEvent: 'Ferrite\'s 30th Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000009 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '9334317': { + labelEvent: 'Ferrite\'s 31st Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000004 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '9635424': { + labelEvent: 'Ferrite\'s 32nd Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000002 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '9936531': { + labelEvent: 'Ferrite\'s 33rd Halving', + labelEventCompleted: 'Block Subsidy has halved to 0.00000001 FEC per block', + networks: ['mainnet', 'testnet'], + }, + '10237638': { + labelEvent: 'Ferrite\'s Final Halving', + labelEventCompleted: 'Block Subsidy has ended', networks: ['mainnet', 'testnet'], } }; diff --git a/frontend/src/app/components/about/about.component.html b/frontend/src/app/components/about/about.component.html index 5fec17058..432743636 100644 --- a/frontend/src/app/components/about/about.component.html +++ b/frontend/src/app/components/about/about.component.html @@ -5,20 +5,20 @@
-
Your Gateway to explore Litecoin's +
Your Gateway to explore Ferrite's Blockchain
-

Our mempool and blockchain explorer for the Litecoin community, focusing on the transaction fee market and +

Our mempool and blockchain explorer for the Ferrite community, focusing on the transaction fee market and multi-layer ecosystem. Based on mempool.space™.

This website is not affiliated or endorsed by Mempool Space K.K.

-

The Litecoin Space explorer is a fork of the mempool.space™ repo, an open source +

The Ferrite Space explorer is a fork of the mempool.space™ repo, an open source Bitcoin explorer, developed by Mempool Space K.K. In accordance with Section (III) of their trademark policy, this website does not include any usage of "Word Marks", "Logos", or "Trade Dress", except where necessary to display licensing and original copyright authors. @@ -37,22 +37,22 @@

Your Gateway to explore Litecoi
Copyright © 2023
- Litecoin Foundation + Ferrite Foundation

- Litecoin Space is free software; you can + Ferrite Space is free software; you can redistribute it and/or modify it under the terms of (at your option) either:

  • 1) the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License or any later version approved by a - proxy statement published on <https://litecoinspace.org/about>; or
    + proxy statement published on <https://ferritecoin.com/about>; or
  • 2) the GNU General Public License as published by the Free Software Foundation, either version 3 of the License or any later version approved by a - proxy statement published on <https://litecoinspace.org/about>.
    + proxy statement published on <https://ferritecoin.com/about>.

diff --git a/frontend/src/app/components/address/address.component.html b/frontend/src/app/components/address/address.component.html index 0b0ef5995..11b75f2f1 100644 --- a/frontend/src/app/components/address/address.component.html +++ b/frontend/src/app/components/address/address.component.html @@ -148,8 +148,8 @@

Consider viewing this address on the official Mempool website instead:
- https://litecoinspace.org/address/{{ addressString }} + https://ferritecoin.com/address/{{ addressString }}


({{ error.error }}) diff --git a/frontend/src/app/components/app/app.component.ts b/frontend/src/app/components/app/app.component.ts index 4ad3b72f5..4f2cf4973 100644 --- a/frontend/src/app/components/app/app.component.ts +++ b/frontend/src/app/components/app/app.component.ts @@ -52,7 +52,7 @@ export class AppComponent implements OnInit { ngOnInit() { this.router.events.subscribe((val) => { if (val instanceof NavigationEnd) { - let domain = 'litecoinspace.org'; + let domain = 'ferritecoin.com'; this.link.setAttribute('href', 'https://' + domain + this.location.path()); } }); diff --git a/frontend/src/app/components/block/block-preview.component.ts b/frontend/src/app/components/block/block-preview.component.ts index 1eea6ec1b..4a516eaa3 100644 --- a/frontend/src/app/components/block/block-preview.component.ts +++ b/frontend/src/app/components/block/block-preview.component.ts @@ -159,7 +159,7 @@ export class BlockPreviewComponent implements OnInit, OnDestroy { } // TODO - Refactor this.fees/this.reward for liquid because it is not - // used anymore on Litecoin networks (we use block.extras directly) + // used anymore on Ferrite networks (we use block.extras directly) setBlockSubsidy() { this.blockSubsidy = 0; } diff --git a/frontend/src/app/components/block/block.component.ts b/frontend/src/app/components/block/block.component.ts index a225f94ed..e384bc6e6 100644 --- a/frontend/src/app/components/block/block.component.ts +++ b/frontend/src/app/components/block/block.component.ts @@ -491,7 +491,7 @@ export class BlockComponent implements OnInit, OnDestroy { } // TODO - Refactor this.fees/this.reward for liquid because it is not - // used anymore on Litecoin networks (we use block.extras directly) + // used anymore on Ferrite networks (we use block.extras directly) setBlockSubsidy() { this.blockSubsidy = 0; } diff --git a/frontend/src/app/components/difficulty-mining/difficulty-mining.component.ts b/frontend/src/app/components/difficulty-mining/difficulty-mining.component.ts index 118763c33..b1636edfb 100644 --- a/frontend/src/app/components/difficulty-mining/difficulty-mining.component.ts +++ b/frontend/src/app/components/difficulty-mining/difficulty-mining.component.ts @@ -63,8 +63,8 @@ export class DifficultyMiningComponent implements OnInit { colorPreviousAdjustments = '#ffffff66'; } - const blocksUntilHalving = 840000 - (block.height % 840000); - const timeUntilHalving = new Date().getTime() + (blocksUntilHalving * 150000); + const blocksUntilHalving = 301107 - (block.height % 301107); + const timeUntilHalving = new Date().getTime() + (blocksUntilHalving * 60000); const data = { base: `${da.progressPercent.toFixed(2)}%`, diff --git a/frontend/src/app/components/difficulty/difficulty-tooltip.component.ts b/frontend/src/app/components/difficulty/difficulty-tooltip.component.ts index c7d26f61a..45c9b42ca 100644 --- a/frontend/src/app/components/difficulty/difficulty-tooltip.component.ts +++ b/frontend/src/app/components/difficulty/difficulty-tooltip.component.ts @@ -16,7 +16,7 @@ interface EpochProgress { timeUntilHalving: number; } -const EPOCH_BLOCK_LENGTH = 2016; // Bitcoin mainnet +const EPOCH_BLOCK_LENGTH = 10; // Bitcoin mainnet @Component({ selector: 'app-difficulty-tooltip', diff --git a/frontend/src/app/components/difficulty/difficulty.component.ts b/frontend/src/app/components/difficulty/difficulty.component.ts index 843bd44fe..108027dae 100644 --- a/frontend/src/app/components/difficulty/difficulty.component.ts +++ b/frontend/src/app/components/difficulty/difficulty.component.ts @@ -32,7 +32,7 @@ interface DiffShape { expected: boolean; } -const EPOCH_BLOCK_LENGTH = 2016; // Bitcoin mainnet +const EPOCH_BLOCK_LENGTH = 10; // Bitcoin mainnet @Component({ selector: 'app-difficulty', @@ -92,8 +92,8 @@ export class DifficultyComponent implements OnInit { colorPreviousAdjustments = '#ffffff66'; } - const blocksUntilHalving = 840000 - (block.height % 840000); - const timeUntilHalving = new Date().getTime() + (blocksUntilHalving * 150000); + const blocksUntilHalving = 301107 - (block.height % 301107); + const timeUntilHalving = new Date().getTime() + (blocksUntilHalving * 60000); const newEpochStart = Math.floor(this.stateService.latestBlockHeight / EPOCH_BLOCK_LENGTH) * EPOCH_BLOCK_LENGTH; const newExpectedHeight = Math.floor(newEpochStart + da.expectedBlocks); @@ -102,7 +102,7 @@ export class DifficultyComponent implements OnInit { this.expectedHeight = newExpectedHeight; this.currentHeight = this.stateService.latestBlockHeight; this.currentIndex = this.currentHeight - this.epochStart; - this.expectedIndex = Math.min(this.expectedHeight - this.epochStart, 2016) - 1; + this.expectedIndex = Math.min(this.expectedHeight - this.epochStart, 10) - 1; this.difference = this.currentIndex - this.expectedIndex; this.shapes = []; @@ -115,20 +115,20 @@ export class DifficultyComponent implements OnInit { this.shapes = this.shapes.concat(this.blocksToShapes( this.expectedIndex + 1, this.currentIndex, 'ahead', false )); - if (this.currentIndex < 2015) { + if (this.currentIndex < 9) { this.shapes = this.shapes.concat(this.blocksToShapes( this.currentIndex + 1, this.currentIndex + 1, 'next', (this.expectedIndex > this.currentIndex) )); } this.shapes = this.shapes.concat(this.blocksToShapes( - Math.max(this.currentIndex + 2, this.expectedIndex + 1), 2105, 'remaining', false + Math.max(this.currentIndex + 2, this.expectedIndex + 1), 11, 'remaining', false )); } let retargetDateString; if (da.remainingBlocks > 1870) { - retargetDateString = (new Date(da.estimatedRetargetDate)).toLocaleDateString(this.locale, { month: 'long', day: 'numeric' }); + retargetDateString = (new Date(da.estimatedRetargetDate)).toLocaleDateString(this.locale, { month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' }); } else { retargetDateString = (new Date(da.estimatedRetargetDate)).toLocaleTimeString(this.locale, { month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' }); } diff --git a/frontend/src/app/components/master-page-preview/preview-title.component.html b/frontend/src/app/components/master-page-preview/preview-title.component.html index 49d54878e..f45052f43 100644 --- a/frontend/src/app/components/master-page-preview/preview-title.component.html +++ b/frontend/src/app/components/master-page-preview/preview-title.component.html @@ -1,7 +1,7 @@

- Litecoin + Ferrite diff --git a/frontend/src/app/components/privacy-policy/privacy-policy.component.html b/frontend/src/app/components/privacy-policy/privacy-policy.component.html index 20ef24423..3bf5d7bf8 100644 --- a/frontend/src/app/components/privacy-policy/privacy-policy.component.html +++ b/frontend/src/app/components/privacy-policy/privacy-policy.component.html @@ -13,13 +13,13 @@

Updated: June 09, 2023
-

The litecoinspace.org website, their +

The ferritecoin.com website, their associated API services, and related network and server infrastructure (collectively, the "Website") are operated by the - Litecoin Foundation Ltd. ("Litecoin Space", "We", or "Us").

+ Ferrite Foundation Ltd. ("Ferrite Space", "We", or "Us").

This website and its API service (collectively, the "Website") are operated by a - member of the Litecoin community ("We" or "Us"). Litecoin Foundation Ltd. ("Litecoin Space") has no affiliation + member of the Ferrite community ("We" or "Us"). Ferrite Foundation Ltd. ("Ferrite Space") has no affiliation with the operator of this Website, and does not sponsor or endorse the information provided herein.

@@ -29,7 +29,7 @@
By accessing this Website, you agree to the following Privacy Policy:

TRUSTED THIRD PARTIES ARE SECURITY HOLES

-

Out of respect for the Litecoin community, this website does not use any third-party analytics, third-party +

Out of respect for the Ferrite community, this website does not use any third-party analytics, third-party trackers, or third-party cookies, and we do not share any private user data with third-parties. Additionally, to mitigate the risk of surveillance by malicious third-parties, we self-host this website on our own hardware and network infrastructure, so there are no "hosting companies" or "cloud providers" involved with the operation of @@ -39,7 +39,7 @@

TRUSTED THIRD PARTIES ARE SECURITY HOLES

TRUSTED FIRST PARTIES ARE ALSO SECURITY HOLES

-

Out of respect for the Litecoin community, this website does not use any first-party cookies, except to store +

Out of respect for the Ferrite community, this website does not use any first-party cookies, except to store your preferred language setting (if any). However, we do use minimal first-party analytics and logging as needed for the operation of this website, as follows:

@@ -53,12 +53,12 @@

TRUSTED FIRST PARTIES ARE ALSO SECURITY HOLES


-

TRUST YOUR OWN SELF-HOSTED Litecoin Space EXPLORER

+

TRUST YOUR OWN SELF-HOSTED Ferrite Space EXPLORER

-

For maximum privacy, we recommend that you use your own self-hosted instance of the Litecoin Space explorer on +

For maximum privacy, we recommend that you use your own self-hosted instance of the Ferrite Space explorer on your own hardware. You can easily install your own self-hosted instance of this website on a Raspberry Pi using a - one-click installation method maintained by various Litecoin fullnode distributions such as Umbrel. See our + one-click installation method maintained by various Ferrite fullnode distributions such as Umbrel. See our project's GitHub page for more details about self-hosting this website.


diff --git a/frontend/src/app/components/search-form/search-form.component.html b/frontend/src/app/components/search-form/search-form.component.html index ab6c0e92c..4e8bca12d 100644 --- a/frontend/src/app/components/search-form/search-form.component.html +++ b/frontend/src/app/components/search-form/search-form.component.html @@ -3,7 +3,7 @@
+ i18n-placeholder="search-form.searchbar-placeholder" placeholder="Your Gateway to Explore Ferrite">
diff --git a/frontend/src/app/components/search-form/search-results/search-results.component.html b/frontend/src/app/components/search-form/search-results/search-results.component.html index 60a5911ec..54fc7a909 100644 --- a/frontend/src/app/components/search-form/search-results/search-results.component.html +++ b/frontend/src/app/components/search-form/search-results/search-results.component.html @@ -1,30 +1,30 @@