├── .env.example
├── public
├── dist
│ └── .gitignore
├── favicon.ico
├── img
│ ├── bch-logo.png
│ ├── coinex.png
│ ├── coinflex.png
│ ├── social.png
│ ├── honkfaucet.png
│ ├── screenshot.jpg
│ ├── language-icon.png
│ ├── sideshift-ai.png
│ ├── verified-empty.png
│ ├── bg-header-infobox.png
│ ├── screenshot_large.jpg
│ ├── verified-checkmark.png
│ ├── simple-ledger-protocol-logo.png
│ ├── copy.svg
│ ├── hamburger_icon.svg
│ ├── cashaccount-avatars
│ │ ├── emoji_u2666.svg
│ │ ├── emoji_u1f95a.svg
│ │ ├── emoji_u2709.svg
│ │ ├── emoji_u2665.svg
│ │ ├── emoji_u2b50.svg
│ │ ├── emoji_u1f512.svg
│ │ ├── emoji_u1f3b5.svg
│ │ ├── emoji_u2660.svg
│ │ ├── emoji_u1f511.svg
│ │ ├── emoji_u1f388.svg
│ │ ├── emoji_u262f.svg
│ │ ├── emoji_u2663.svg
│ │ ├── emoji_u1f4cb.svg
│ │ ├── emoji_u1f4e6.svg
│ │ ├── emoji_u1f36d.svg
│ │ ├── emoji_u1f514.svg
│ │ ├── emoji_u231a.svg
│ │ ├── emoji_u1f4bc.svg
│ │ ├── emoji_u26f5.svg
│ │ ├── emoji_u26bd.svg
│ │ ├── emoji_u2600.svg
│ │ ├── emoji_u26bd (1).svg
│ │ ├── emoji_u26bd (2).svg
│ │ ├── emoji_u26bd (3).svg
│ │ ├── emoji_u1f3a9.svg
│ │ ├── emoji_u1f308_2.svg
│ │ ├── emoji_u1f336.svg
│ │ ├── emoji_u1f349.svg
│ │ ├── emoji_u1f697.svg
│ │ ├── emoji_u2708.svg
│ │ ├── emoji_u1f334.svg
│ │ ├── emoji_u270f.svg
│ │ ├── emoji_u1f34b.svg
│ │ ├── emoji_u1f50d.svg
│ │ ├── emoji_u2602.svg
│ │ ├── emoji_u1f6a9.svg
│ │ ├── emoji_u1f308.svg
│ │ ├── emoji_u1f344.svg
│ │ ├── emoji_u1f56f.svg
│ │ ├── emoji_u1f332.svg
│ │ ├── emoji_u1f9c0.svg
│ │ ├── emoji_u1f3a7.svg
│ │ ├── emoji_u1f577.svg
│ │ └── emoji_u1f380.svg
│ ├── search_icon.svg
│ ├── loading_blue.svg
│ ├── loading_green.svg
│ ├── top.svg
│ ├── bottom.svg
│ ├── slp-logo-white.svg
│ └── slp-logo.svg
├── favicon-16x16.png
├── favicon-32x32.png
├── mstile-150x150.png
├── apple-touch-icon.png
├── android-chrome-48x48.png
├── browserconfig.xml
├── site.webmanifest
└── safari-pinned-tab.svg
├── .gitignore
├── .DS_Store
├── views
├── address_cashaccount.ejs
├── search_cashaccount_result.ejs
├── error_404_page.ejs
├── token_address.ejs
├── search_token_result.ejs
├── error_notx_page.ejs
├── error_badaddress_page.ejs
├── error_processing_tx_page.ejs
├── token_burn_tx.ejs
├── token_mint_tx.ejs
├── token_tx.ejs
├── address_token.ejs
├── all_tokens_page.ejs
├── all_tokens_token.ejs
├── block_tx.ejs
├── address_burn_tx.ejs
├── index_token.ejs
├── token_child_nft.ejs
├── index_burn_tx.ejs
├── dividend_page.ejs
├── latest_transactions_tx.ejs
├── block_page.ejs
└── address_transactions_tx.ejs
├── .eslintrc.js
├── package.json
├── babel.config.json
├── TRANSLATIONS.md
├── README.md
├── src
├── lib
│ └── jquery.nice-select.min.js
└── css
│ └── nice-select.css
├── Makefile
└── lang
└── zh.json
/.env.example:
--------------------------------------------------------------------------------
1 | port=8000
2 | host="localhost"
3 |
--------------------------------------------------------------------------------
/public/dist/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | archive
2 | node_modules
3 | tmp
4 | .env
5 |
--------------------------------------------------------------------------------
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/.DS_Store
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/public/img/bch-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/bch-logo.png
--------------------------------------------------------------------------------
/public/img/coinex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/coinex.png
--------------------------------------------------------------------------------
/public/img/coinflex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/coinflex.png
--------------------------------------------------------------------------------
/public/img/social.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/social.png
--------------------------------------------------------------------------------
/public/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/favicon-16x16.png
--------------------------------------------------------------------------------
/public/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/favicon-32x32.png
--------------------------------------------------------------------------------
/public/img/honkfaucet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/honkfaucet.png
--------------------------------------------------------------------------------
/public/img/screenshot.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/screenshot.jpg
--------------------------------------------------------------------------------
/public/mstile-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/mstile-150x150.png
--------------------------------------------------------------------------------
/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/apple-touch-icon.png
--------------------------------------------------------------------------------
/public/img/language-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/language-icon.png
--------------------------------------------------------------------------------
/public/img/sideshift-ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/sideshift-ai.png
--------------------------------------------------------------------------------
/public/img/verified-empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/verified-empty.png
--------------------------------------------------------------------------------
/public/android-chrome-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/android-chrome-48x48.png
--------------------------------------------------------------------------------
/public/img/bg-header-infobox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/bg-header-infobox.png
--------------------------------------------------------------------------------
/public/img/screenshot_large.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/screenshot_large.jpg
--------------------------------------------------------------------------------
/public/img/verified-checkmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/verified-checkmark.png
--------------------------------------------------------------------------------
/public/img/simple-ledger-protocol-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/blockparty-sh/slp-explorer/HEAD/public/img/simple-ledger-protocol-logo.png
--------------------------------------------------------------------------------
/views/address_cashaccount.ejs:
--------------------------------------------------------------------------------
1 | <%= name %>#<%= blockheight %>.<%= bits %>
2 |
--------------------------------------------------------------------------------
/views/search_cashaccount_result.ejs:
--------------------------------------------------------------------------------
1 |
2 |
<%= name %>#<%= blockheight %>.
<%= bits %>
3 |
4 |
--------------------------------------------------------------------------------
/public/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #2b5797
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/views/error_404_page.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/views/token_address.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= address.address %>
4 |
5 |
6 | <%= app.util.format_bignum_str(address.token_balance, decimals) %>
7 |
8 |
--------------------------------------------------------------------------------
/public/img/copy.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/views/search_token_result.ejs:
--------------------------------------------------------------------------------
1 |
2 | <% if (verified) { %>
3 |
4 | <% } else { %>
5 |
6 | <% } %>
7 |
8 |
9 | <%= token.tokenDetails.name %> $<%= token.tokenDetails.symbol %>
10 |
11 |
--------------------------------------------------------------------------------
/public/site.webmanifest:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Simpleledger.info Token Explorer",
3 | "short_name": "SLP Explorer",
4 | "description": "Browse and explore tokens built on top of Bitcoin Cash",
5 | "start_url": "/?homescreen=1",
6 | "icons": [
7 | {
8 | "src": "/img/slp-logo.svg",
9 | "sizes": "257x257"
10 | }
11 | ],
12 | "theme_color": "#60bd6c",
13 | "background_color": "#07212b",
14 | "display": "standalone"
15 | }
16 |
--------------------------------------------------------------------------------
/views/error_notx_page.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
<%= txid %>
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/views/error_badaddress_page.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
<%= address %>
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/views/error_processing_tx_page.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
<%= tx.tx.h %>
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | 'env': {
3 | 'browser': true,
4 | 'es6': true,
5 | },
6 | 'extends': [
7 | 'google',
8 | ],
9 | 'globals': {
10 | 'Atomics': 'readonly',
11 | 'SharedArrayBuffer': 'readonly',
12 | },
13 | 'parserOptions': {
14 | 'ecmaVersion': 2018,
15 | },
16 | 'rules': {
17 | 'indent': 'off',
18 | 'camelcase': 'off',
19 | 'max-len': 'off',
20 | 'no-invalid-this': 'off',
21 | 'key-spacing': 'off',
22 | 'no-multi-spaces': 'off',
23 | 'object-curly-spacing': 'off',
24 | },
25 | };
26 |
--------------------------------------------------------------------------------
/public/img/hamburger_icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/token_burn_tx.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= app.util.compress_txid(tx.graphTxn.txid) %>
4 |
5 |
6 |
7 | <%= app.util.format_bignum_str(total_burnt) %>
8 |
9 |
10 | <% if (tx.tx && tx.tx.blk) { %>
11 | <%= tx.tx.blk.i %>
12 | <% } else { %>
13 |
14 | <% } %>
15 |
16 |
17 | <% if (tx.tx && tx.tx.blk) { %>
18 | <%= new Date(tx.tx.blk.t*1000).toLocaleString() %>
19 | <% } else { %>
20 |
21 | <% } %>
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/views/token_mint_tx.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= app.util.compress_txid(tx.tx.h) %>
4 |
5 |
6 | <%= tx.slp.detail.transactionType %>
7 | <%= app.util.format_bignum_str(tx.slp.detail.outputs[0].amount, tx.slp.detail.decimals) %>
8 |
9 | <% if (tx.blk) { %>
10 | <%= tx.blk.i %>
11 | <% } else { %>
12 |
13 | <% } %>
14 |
15 |
16 | <% if (tx.blk) { %>
17 | <%= new Date(tx.blk.t*1000).toLocaleString() %>
18 | <% } else { %>
19 |
20 | <% } %>
21 |
22 |
23 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "start": "node server.js"
5 | },
6 | "dependencies": {
7 | "@babel/cli": "^7.8.4",
8 | "@babel/core": "^7.9.0",
9 | "@babel/plugin-transform-arrow-functions": "^7.8.3",
10 | "@babel/plugin-transform-block-scoping": "^7.8.3",
11 | "@babel/plugin-transform-destructuring": "^7.9.5",
12 | "@babel/plugin-transform-exponentiation-operator": "^7.8.3",
13 | "@babel/polyfill": "^7.8.7",
14 | "@babel/preset-env": "^7.9.5",
15 | "babel-plugin-inline-import": "^3.0.0",
16 | "btoa": "^1.2.1",
17 | "dotenv": "^8.2.0",
18 | "eslint": "^6.8.0",
19 | "eslint-config-google": "^0.14.0",
20 | "express": "^4.17.1",
21 | "isbot": "^2.5.7",
22 | "node-fetch": "^2.6.1",
23 | "puppeteer": "^5.0.0"
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/views/token_tx.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= app.util.compress_txid(tx.tx.h) %>
4 |
5 |
6 | <%= app.util.transaction_type_trans(tx.slp.detail.transactionType) %>
7 |
8 | <%= app.extract_sent_amount_from_tx(tx); %>
9 |
10 |
11 | <% if (tx.blk) { %>
12 | <%= tx.blk.i %>
13 | <% } else { %>
14 |
15 | <% } %>
16 |
17 |
18 | <% if (tx.blk) { %>
19 | <%= new Date(tx.blk.t*1000).toLocaleString() %>
20 | <% } else { %>
21 |
22 | <% } %>
23 |
24 |
25 |
--------------------------------------------------------------------------------
/babel.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | [
4 | "@babel/env", {
5 | "targets": {
6 | "edge": "17",
7 | "firefox": "60",
8 | "chrome": "67",
9 | "safari": "11.1"
10 | }
11 | }
12 | ]
13 | ],
14 | "plugins": [
15 | "@babel/plugin-transform-arrow-functions",
16 | "@babel/plugin-transform-block-scoped-functions",
17 | "@babel/plugin-transform-for-of",
18 | "@babel/plugin-transform-spread",
19 | "@babel/plugin-transform-destructuring",
20 | ["@babel/plugin-transform-block-scoping", {
21 | "throwIfClosureRequired": false
22 | }],
23 | "@babel/plugin-transform-exponentiation-operator",
24 | ["babel-plugin-inline-import", {
25 | "extensions": [
26 | ".json",
27 | ".ejs"
28 | ]
29 | }]
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/views/address_token.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
12 |
13 | <%= token.token[0].tokenDetails.name %>
14 |
15 |
16 | <%= token.token[0].tokenDetails.symbol %>
17 | <%= app.util.format_bignum_str(token.slpAmount, token.token[0].tokenDetails.decimals) %>
18 |
19 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u2666.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/TRANSLATIONS.md:
--------------------------------------------------------------------------------
1 | # Translations
2 |
3 | It is very important people can learn about SLP in their native language. We have used i18next to be able to provide translations on the site for users.
4 |
5 |
6 | ## Translating Site
7 |
8 | If you would like to contribute to translating this site:
9 |
10 | * Copy `lang/en.json` to a new file.
11 | * Translate the values in the file after the ":" symbol
12 | * Open a PR or issue here, or contact `@Blockparty_Sh` on Telegram
13 |
14 | ## Fixing Error
15 |
16 | If you noticed something that could be worded better:
17 |
18 | * Look inside the `lang` folder for the corresponding [language code](https://www.andiamo.co.uk/resources/iso-language-codes/)
19 | * Search for the phrase that has error
20 | * Open a PR or issue here, or contact `@Blockparty_Sh` on Telegram with the fixed line.
21 |
22 |
23 | # Thank you to translators
24 |
25 | * Bangla -- @NajmusSakib
26 | * Filipino -- @Sjbch
27 | * Hindi -- NajmusSakib
28 | * Spanish -- @kriker007
29 | * Yoruba -- @Osunbiyi
30 | * Portuguese -- @criptoph
31 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f95a.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/views/all_tokens_page.ejs:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/public/img/search_icon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/all_tokens_token.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= app.util.compress_tokenid(token.tokenDetails.tokenIdHex) %>
4 |
5 |
6 |
7 |
8 |
9 | <%= token.tokenDetails.symbol %>
10 |
11 |
12 | <%= app.util.compress_string(token.tokenDetails.name) %>
13 | <%= Number(token.tokenStats.approx_txns_since_genesis).toLocaleString() %>
14 |
15 | <% if (token.tokenDetails.documentUri) { %>
16 | <% const url = app.util.document_link(token.tokenDetails.documentUri); %>
17 | <% if (url.length) { %>
18 | <%= app.util.compress_string(token.tokenDetails.documentUri) %>
19 | <% } else { %>
20 | <%= app.util.compress_string(token.tokenDetails.documentUri) %>
21 | <% } %>
22 | <% } %>
23 |
24 |
25 |
--------------------------------------------------------------------------------
/views/block_tx.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= app.util.compress_txid(tx.tx.h) %>
4 |
5 |
6 | <%= app.util.transaction_type_trans(tx.slp.detail.transactionType) %>
7 |
8 | <% if (tx.slp.detail.transactionType === 'SEND') { %>
9 | <%= app.extract_sent_amount_from_tx(tx); %>
10 | <% } %>
11 | <% if (tx.slp.detail.transactionType === 'GENESIS'
12 | || tx.slp.detail.transactionType === 'MINT') { %>
13 | <%= tx.slp.detail.outputs[0].amount %>
14 | <% } %>
15 |
16 |
17 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/public/img/loading_blue.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/loading_green.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/address_burn_tx.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= app.util.compress_txid(tx.graphTxn.txid) %>
4 |
5 |
6 |
7 | <%= app.util.format_bignum_str(total_burnt) %>
8 |
9 |
10 |
18 |
19 |
20 | <% if (tx.tx && tx.tx.blk) { %>
21 | <%= tx.tx.blk.i %>
22 | <% } else { %>
23 |
24 | <% } %>
25 |
26 |
27 | <% if (tx.tx && tx.tx.blk) { %>
28 | <%= new Date(tx.tx.blk.t*1000).toLocaleString() %>
29 | <% } else { %>
30 |
31 | <% } %>
32 |
33 |
34 |
--------------------------------------------------------------------------------
/public/img/top.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Group 6
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u2709.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/views/index_token.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
21 |
22 |
23 | <% if (tx.blk) { %>
24 | <%= tx.blk.i %>
25 | <% } else { %>
26 |
27 | <% } %>
28 |
29 |
30 | <% if (tx.blk) { %>
31 | <%= new Date(tx.blk.t*1000).toLocaleString() %>
32 | <% } else { %>
33 |
34 | <% } %>
35 |
36 |
37 |
--------------------------------------------------------------------------------
/views/token_child_nft.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
11 |
21 |
22 |
23 |
32 |
33 |
34 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u2665.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/views/index_burn_tx.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 | <%= app.util.compress_txid(tx.graphTxn.txid) %>
4 |
5 |
6 |
7 |
17 |
18 |
19 | <%= app.util.format_bignum_str(total_burnt) %>
20 |
21 |
22 | <% if (tx.tx && tx.tx.blk) { %>
23 | <%= tx.tx.blk.i %>
24 | <% } else { %>
25 |
26 | <% } %>
27 |
28 |
29 | <% if (tx.tx && tx.tx.blk) { %>
30 | <%= new Date(tx.tx.blk.t*1000).toLocaleString() %>
31 | <% } else { %>
32 |
33 | <% } %>
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u2b50.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/safari-pinned-tab.svg:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 | Created by potrace 1.11, written by Peter Selinger 2001-2013
9 |
10 |
12 |
18 |
24 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f512.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f3b5.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SLP Token Explorer
2 |
3 | A open source block explorer for Bitcoin Cash tokens based on the Simple Ledger Protocol (SLP).
4 |
5 | 
6 |
7 | ## Translations
8 |
9 | Please see [TRANSLATIONS.md](TRANSLATIONS.md).
10 |
11 | ## How to add Token Icon?
12 |
13 | Open a PR at https://github.com/kosinusbch/slp-token-icons
14 |
15 | ## Token Verification
16 |
17 | The explorer has a list of "verified" tokens in `public/verified_tokens.json`. This is to help reduce the chance of someone namesquatting to perform a con. You should always verify the token id yourself to be sure, but since most people are too lazy to do that there is a checkmark that will appear next to tokens in the search dropdown which shows if they are in the verified list.
18 |
19 | If you would like your token to be considered verified open a PR adding the token id to the list and provide some proof you are the owner of the token.
20 |
21 | ## Building
22 |
23 | You need `Make`, `curl`, `npm` installed.
24 |
25 | For running puppeteer you need additional libraries:
26 |
27 | ```
28 | sudo apt install libx11-xcb-dev libxcb-dri3-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxi-dev libxtst-dev libnss3-dev libcups2-dev libxss-dev libxrandr-dev libgbm-devlibasound2-dev libatk1.0-dev libatk-bridge2.0-dev libpangocairo-1.0-0 libgtk-3-dev
29 | ```
30 |
31 | To actually build and start perform the following:
32 |
33 | ```
34 | cp .env.example .env
35 | npm i
36 | make
37 | npm start
38 | ```
39 |
40 | ## Credits
41 |
42 | [blockparty-sh](https://github.com/blockparty-sh) for all the dev work, [James Cramer](https://github.com/jcramer) ([simpleledger](https://github.com/simpleledger)), [kosinusbch](https://github.com/kosinusbch) for stylesheet, and [Evan](https://twitter.com/evanluza) from bitcoin.com for original design files
43 |
--------------------------------------------------------------------------------
/public/img/bottom.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Group 7@2x
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/views/dividend_page.ejs:
--------------------------------------------------------------------------------
1 |
50 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u2660.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/views/latest_transactions_tx.ejs:
--------------------------------------------------------------------------------
1 | <% const sent_amount = app.extract_sent_amount_from_tx(tx); %>
2 |
3 |
4 |
8 |
9 |
10 |
22 |
23 |
24 | <%= sent_amount %>
25 |
26 |
27 |
28 | <% if(tx.token[0].tokenDetails.versionType === 1) { %>
<% } %>
29 | <% if(tx.token[0].tokenDetails.versionType === 129) { %>
<% } %>
30 | <% if(tx.token[0].tokenDetails.versionType === 65) { %>
31 |
32 | <% } %>
33 |
34 |
35 |
36 |
37 | <% if (tx.blk) { %>
38 |
<%= tx.blk.i %>
39 | <% } else { %>
40 |
41 | <% } %>
42 |
43 |
44 |
45 |
46 | <% if (tx.blk) { %>
47 | <%= new Date(tx.blk.t*1000).toLocaleString() %>
48 | <% } else { %>
49 |
50 | <% } %>
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f511.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f388.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u262f.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u2663.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f4cb.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f4e6.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
16 |
17 |
19 |
20 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/views/block_page.ejs:
--------------------------------------------------------------------------------
1 |
2 |
33 |
34 |
35 |
36 |
(... )
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f36d.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f514.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u231a.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/lib/jquery.nice-select.min.js:
--------------------------------------------------------------------------------
1 | /* jQuery Nice Select - v1.0
2 | https://github.com/hernansartorio/jquery-nice-select
3 | Made by Hernán Sartorio */
4 | !function(e){e.fn.niceSelect=function(t){function s(t){t.after(e("
").addClass("nice-select").addClass(t.attr("class")||"").addClass(t.attr("disabled")?"disabled":"").attr("tabindex",t.attr("disabled")?null:"0").html(' '));var s=t.next(),n=t.find("option"),i=t.find("option:selected");s.find(".current").html(i.data("display")||i.text()),n.each(function(t){var n=e(this),i=n.data("display");s.find("ul").append(e(" ").attr("data-value",n.val()).attr("data-display",i||null).addClass("option"+(n.is(":selected")?" selected":"")+(n.is(":disabled")?" disabled":"")).html(n.text()))})}if("string"==typeof t)return"update"==t?this.each(function(){var t=e(this),n=e(this).next(".nice-select"),i=n.hasClass("open");n.length&&(n.remove(),s(t),i&&t.next().trigger("click"))}):"destroy"==t?(this.each(function(){var t=e(this),s=e(this).next(".nice-select");s.length&&(s.remove(),t.css("display",""))}),0==e(".nice-select").length&&e(document).off(".nice_select")):console.log('Method "'+t+'" does not exist.'),this;this.hide(),this.each(function(){var t=e(this);t.next().hasClass("nice-select")||s(t)}),e(document).off(".nice_select"),e(document).on("click.nice_select",".nice-select",function(t){var s=e(this);e(".nice-select").not(s).removeClass("open"),s.toggleClass("open"),s.hasClass("open")?(s.find(".option"),s.find(".focus").removeClass("focus"),s.find(".selected").addClass("focus")):s.focus()}),e(document).on("click.nice_select",function(t){0===e(t.target).closest(".nice-select").length&&e(".nice-select").removeClass("open").find(".option")}),e(document).on("click.nice_select",".nice-select .option:not(.disabled)",function(t){var s=e(this),n=s.closest(".nice-select");n.find(".selected").removeClass("selected"),s.addClass("selected");var i=s.data("display")||s.text();n.find(".current").text(i),n.prev("select").val(s.data("value")).trigger("change")}),e(document).on("keydown.nice_select",".nice-select",function(t){var s=e(this),n=e(s.find(".focus")||s.find(".list .option.selected"));if(32==t.keyCode||13==t.keyCode)return s.hasClass("open")?n.trigger("click"):s.trigger("click"),!1;if(40==t.keyCode){if(s.hasClass("open")){var i=n.nextAll(".option:not(.disabled)").first();i.length>0&&(s.find(".focus").removeClass("focus"),i.addClass("focus"))}else s.trigger("click");return!1}if(38==t.keyCode){if(s.hasClass("open")){var l=n.prevAll(".option:not(.disabled)").first();l.length>0&&(s.find(".focus").removeClass("focus"),l.addClass("focus"))}else s.trigger("click");return!1}if(27==t.keyCode)s.hasClass("open")&&s.trigger("click");else if(9==t.keyCode&&s.hasClass("open"))return!1});var n=document.createElement("a").style;return n.cssText="pointer-events:auto","auto"!==n.pointerEvents&&e("html").addClass("no-csspointerevents"),this}}(jQuery);
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f4bc.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/slp-logo-white.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
10 |
11 |
12 |
21 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/public/img/slp-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
10 |
11 |
12 |
21 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u26f5.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u26bd.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u2600.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u26bd (1).svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u26bd (2).svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u26bd (3).svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f3a9.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f308_2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f336.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/views/address_transactions_tx.ejs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 | <% if (tx.slp.detail.transactionType === 'SEND') { %>
11 | <% console.log(tx); %>
12 | <% if (tx.graph && tx.graph[0]) { %>
13 | <% if (tx.graph[0].graphTxn.inputs.filter((v) => v.address === address).length) {%>
14 |
15 | <% } else if (tx.graph[0].graphTxn.outputs.filter((v) => v.address === address).length) {%>
16 |
17 | <% } else { %>
18 |
19 | <% } %>
20 | <% } else { %>
21 | <% if (tx.in.filter((v) => v.e.a === address).length) {%>
22 |
23 | <% } else if (tx.out.filter((v) => v.e.a === address).length) {%>
24 |
25 | <% } else { %>
26 |
27 | <% } %>
28 | <% } %>
29 | <% } else { %>
30 | <%= tx.slp.detail.transactionType %>
31 | <% } %>
32 |
33 |
34 |
35 | <% if (tx.slp.detail.transactionType === 'SEND') { %>
36 | <% if (tx.graph && tx.graph[0]) { %>
37 | <% if (tx.graph[0].graphTxn.inputs.filter((v) => v.address === address).length) {%>
38 | <%= app.extract_sent_amount_from_tx(tx, address) %>
39 | <% } else if (tx.graph[0].graphTxn.outputs.filter((v) => v.address === address).length) {%>
40 | <%= app.extract_recv_amount_from_tx(tx, address) %>
41 | <% } else { %>
42 | <%= app.extract_sent_amount_from_tx(tx, address) %>
43 | <% } %>
44 | <% } else { %>
45 | <% if (tx.in.filter((v) => v.e.a === address).length) {%>
46 | <%= app.extract_sent_amount_from_tx(tx, address) %>
47 | <% } else if (tx.out.filter((v) => v.e.a === address).length) {%>
48 | <%= app.extract_recv_amount_from_tx(tx, address) %>
49 | <% } else { %>
50 | <%= app.extract_sent_amount_from_tx(tx, address) %>
51 | <% } %>
52 | <% } %>
53 | <% } %>
54 | <% if (tx.slp.detail.transactionType === 'GENESIS'
55 | || tx.slp.detail.transactionType === 'MINT') { %>
56 | <%= tx.slp.detail.outputs[0].amount %>
57 | <% } %>
58 |
59 |
60 |
70 |
71 |
72 |
73 | <% if (tx.blk) { %>
74 |
<%= tx.blk.i %>
75 | <% } else { %>
76 |
77 | <% } %>
78 |
79 |
80 |
81 | <% if (tx.blk) { %>
82 | <%= new Date(tx.blk.t*1000).toLocaleString() %>
83 | <% } else { %>
84 |
85 | <% } %>
86 |
87 |
88 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f349.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f697.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u2708.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | CURL := curl --create-dirs
2 | LINTER := npx eslint
3 | RM := rm -rf
4 | UNZIP := unzip
5 |
6 | LANGS := $(wildcard lang/*.json)
7 | VIEWS := $(wildcard views/*.ejs)
8 |
9 | all: public/dist/combined.js public/dist/app.js public/dist/combined.css
10 |
11 | public/dist/app.js: src/app.js babel.config.json public/verified_tokens.json public/group_icon_repos.json $(LANGS) $(VIEWS)
12 | npx babel $< > $@
13 |
14 | public/dist/combined.js: build/unpkg.com/core-js-bundle@3.6.5/minified.js \
15 | build/unpkg.com/jquery@3.3.1/dist/jquery.min.js \
16 | build/unpkg.com/@popperjs/core@2.2.2/dist/umd/popper.min.js \
17 | build/unpkg.com/tippy.js@6.1.1/dist/tippy-bundle.umd.min.js \
18 | build/unpkg.com/ejs@3.0.2/ejs.min.js \
19 | build/cdn.plot.ly/plotly-1.2.0.min.js \
20 | build/cdnjs.cloudflare.com/ajax/libs/jquery.devbridge-autocomplete/1.4.9/jquery.autocomplete.min.js \
21 | build/cdn.jsdelivr.net/npm/jdenticon@2.1.1 \
22 | build/cdnjs.cloudflare.com/ajax/libs/bignumber.js/9.0.0/bignumber.min.js \
23 | build/cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js \
24 | build/unpkg.com/bchaddrjs-slp@0.2.8/dist/bchaddrjs-slp-0.2.8.min.js \
25 | build/unpkg.com/cytoscape@3.14.1/dist/cytoscape.min.js \
26 | build/unpkg.com/klayjs@0.4.1/klay.js \
27 | build/unpkg.com/clipboard@2.0.1/dist/clipboard.min.js \
28 | build/unpkg.com/i18next@19.4.1/dist/umd/i18next.min.js \
29 | build/unpkg.com/i18next-browser-languagedetector@4.0.2/i18nextBrowserLanguageDetector.min.js \
30 | src/lib/cytoscape-klay.js \
31 | src/lib/buffer.min.js \
32 | src/lib/qrcode.min.js \
33 | src/lib/EventSource.js \
34 | src/lib/jquery.nice-select.min.js
35 | cat $^ > $@
36 |
37 | build/unpkg.com/core-js-bundle@3.6.5/minified.js:
38 | $(CURL) https://unpkg.com/core-js-bundle@3.6.5/minified.js -o $@
39 |
40 | build/unpkg.com/jquery@3.3.1/dist/jquery.min.js:
41 | $(CURL) https://unpkg.com/jquery@3.3.1/dist/jquery.min.js -o $@
42 |
43 | build/unpkg.com/@popperjs/core@2.2.2/dist/umd/popper.min.js:
44 | $(CURL) https://unpkg.com/@popperjs/core@2.2.2/dist/umd/popper.min.js -o $@
45 |
46 | build/unpkg.com/tippy.js@6.1.1/dist/tippy-bundle.umd.min.js:
47 | $(CURL) https://unpkg.com/tippy.js@6.1.1/dist/tippy-bundle.umd.min.js -o $@
48 |
49 | build/unpkg.com/ejs@3.0.2/ejs.min.js:
50 | $(CURL) https://unpkg.com/ejs@3.0.2/ejs.min.js -o $@
51 |
52 | build/cdn.plot.ly/plotly-1.2.0.min.js:
53 | $(CURL) https://cdn.plot.ly/plotly-1.2.0.min.js -o $@
54 |
55 | build/cdnjs.cloudflare.com/ajax/libs/jquery.devbridge-autocomplete/1.4.9/jquery.autocomplete.min.js:
56 | $(CURL) https://cdnjs.cloudflare.com/ajax/libs/jquery.devbridge-autocomplete/1.4.9/jquery.autocomplete.min.js -o $@
57 |
58 | build/cdn.jsdelivr.net/npm/jdenticon@2.1.1:
59 | $(CURL) https://cdn.jsdelivr.net/npm/jdenticon@2.1.1 -o $@
60 |
61 | build/cdnjs.cloudflare.com/ajax/libs/bignumber.js/9.0.0/bignumber.min.js:
62 | $(CURL) https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/9.0.0/bignumber.min.js -o $@
63 |
64 | build/cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js:
65 | $(CURL) https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js -o $@
66 |
67 | build/unpkg.com/bchaddrjs-slp@0.2.8/dist/bchaddrjs-slp-0.2.8.min.js:
68 | $(CURL) https://unpkg.com/bchaddrjs-slp@0.2.8/dist/bchaddrjs-slp-0.2.8.min.js -o $@
69 |
70 | build/unpkg.com/cytoscape@3.14.1/dist/cytoscape.min.js:
71 | $(CURL) https://unpkg.com/cytoscape@3.14.1/dist/cytoscape.min.js -o $@
72 |
73 | build/unpkg.com/klayjs@0.4.1/klay.js:
74 | $(CURL) https://unpkg.com/klayjs@0.4.1/klay.js -o $@
75 |
76 | build/unpkg.com/clipboard@2.0.1/dist/clipboard.min.js:
77 | $(CURL) https://unpkg.com/clipboard@2.0.1/dist/clipboard.min.js -o $@
78 |
79 | build/unpkg.com/i18next@19.4.1/dist/umd/i18next.min.js:
80 | $(CURL) https://unpkg.com/i18next@19.4.1/dist/umd/i18next.min.js -o $@
81 |
82 | build/unpkg.com/i18next-browser-languagedetector@4.0.2/i18nextBrowserLanguageDetector.min.js:
83 | $(CURL) https://unpkg.com/i18next-browser-languagedetector@4.0.2/i18nextBrowserLanguageDetector.min.js -o $@
84 |
85 | public/dist/combined.css: src/css/nice-select.css src/css/explorer.css
86 | cat $^ > $@
87 |
88 | .PHONY: clean lint
89 |
90 | clean:
91 | $(RM) build/* public/dist/*
92 |
93 | lint:
94 | $(LINTER) src/app.js
95 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f334.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u270f.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f34b.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f50d.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/css/nice-select.css:
--------------------------------------------------------------------------------
1 | .nice-select {
2 | -webkit-tap-highlight-color: transparent;
3 | background-color: #fff;
4 | border-radius: 5px;
5 | border: solid 1px #e8e8e8;
6 | box-sizing: border-box;
7 | clear: both;
8 | cursor: pointer;
9 | display: block;
10 | float: left;
11 | font-family: inherit;
12 | font-size: 14px;
13 | font-weight: normal;
14 | height: 42px;
15 | line-height: 40px;
16 | outline: none;
17 | padding-left: 18px;
18 | padding-right: 30px;
19 | position: relative;
20 | text-align: left !important;
21 | -webkit-transition: all 0.2s ease-in-out;
22 | transition: all 0.2s ease-in-out;
23 | -webkit-user-select: none;
24 | -moz-user-select: none;
25 | -ms-user-select: none;
26 | user-select: none;
27 | white-space: nowrap;
28 | width: auto; }
29 | .nice-select:hover {
30 | border-color: #dbdbdb; }
31 | .nice-select:active, .nice-select.open, .nice-select:focus {
32 | border-color: #999; }
33 | .nice-select:after {
34 | border-bottom: 2px solid #999;
35 | border-right: 2px solid #999;
36 | content: '';
37 | display: block;
38 | height: 5px;
39 | margin-top: -4px;
40 | pointer-events: none;
41 | position: absolute;
42 | right: 12px;
43 | top: 50%;
44 | -webkit-transform-origin: 66% 66%;
45 | -ms-transform-origin: 66% 66%;
46 | transform-origin: 66% 66%;
47 | -webkit-transform: rotate(45deg);
48 | -ms-transform: rotate(45deg);
49 | transform: rotate(45deg);
50 | -webkit-transition: all 0.15s ease-in-out;
51 | transition: all 0.15s ease-in-out;
52 | width: 5px; }
53 | .nice-select.open:after {
54 | -webkit-transform: rotate(-135deg);
55 | -ms-transform: rotate(-135deg);
56 | transform: rotate(-135deg); }
57 | .nice-select.open .list {
58 | opacity: 1;
59 | pointer-events: auto;
60 | -webkit-transform: scale(1) translateY(0);
61 | -ms-transform: scale(1) translateY(0);
62 | transform: scale(1) translateY(0); }
63 | .nice-select.disabled {
64 | border-color: #ededed;
65 | color: #999;
66 | pointer-events: none; }
67 | .nice-select.disabled:after {
68 | border-color: #cccccc; }
69 | .nice-select.wide {
70 | width: 100%; }
71 | .nice-select.wide .list {
72 | left: 0 !important;
73 | right: 0 !important; }
74 | .nice-select.right {
75 | float: right; }
76 | .nice-select.right .list {
77 | left: auto;
78 | right: 0; }
79 | .nice-select.small {
80 | font-size: 12px;
81 | height: 36px;
82 | line-height: 34px; }
83 | .nice-select.small:after {
84 | height: 4px;
85 | width: 4px; }
86 | .nice-select.small .option {
87 | line-height: 34px;
88 | min-height: 34px; }
89 | .nice-select .list {
90 | background-color: #fff;
91 | border-radius: 5px;
92 | box-shadow: 0 0 0 1px rgba(68, 68, 68, 0.11);
93 | box-sizing: border-box;
94 | margin-top: 4px;
95 | opacity: 0;
96 | overflow: hidden;
97 | padding: 0;
98 | pointer-events: none;
99 | position: absolute;
100 | top: 100%;
101 | left: 0;
102 | -webkit-transform-origin: 50% 0;
103 | -ms-transform-origin: 50% 0;
104 | transform-origin: 50% 0;
105 | -webkit-transform: scale(0.75) translateY(-21px);
106 | -ms-transform: scale(0.75) translateY(-21px);
107 | transform: scale(0.75) translateY(-21px);
108 | -webkit-transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;
109 | transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out;
110 | z-index: 9; }
111 | .nice-select .list:hover .option:not(:hover) {
112 | background-color: transparent !important; }
113 | .nice-select .option {
114 | cursor: pointer;
115 | font-weight: 400;
116 | line-height: 40px;
117 | list-style: none;
118 | min-height: 40px;
119 | outline: none;
120 | padding-left: 18px;
121 | padding-right: 29px;
122 | text-align: left;
123 | -webkit-transition: all 0.2s;
124 | transition: all 0.2s; }
125 | .nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus {
126 | background-color: #f6f6f6; }
127 | .nice-select .option.selected {
128 | font-weight: bold; }
129 | .nice-select .option.disabled {
130 | background-color: transparent;
131 | color: #999;
132 | cursor: default; }
133 |
134 | .no-csspointerevents .nice-select .list {
135 | display: none; }
136 |
137 | .no-csspointerevents .nice-select.open .list {
138 | display: block; }
139 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u2602.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f6a9.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f308.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f344.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f56f.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f332.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f9c0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f3a7.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f577.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lang/zh.json:
--------------------------------------------------------------------------------
1 | {
2 | "maintenance": "当前正在维护的simpleledger.info,预计性能会下降。",
3 | "loading_dank_memes": "正在载入页面...",
4 |
5 | "homepage_btn_view_all_tokens": "查看所有代币",
6 | "homepage_btn_dividend_helper": "派息(空投)工具",
7 |
8 | "footer_source_code": "源代码",
9 | "footer_resources": "资源",
10 | "footer_connect": "友情链接",
11 |
12 | "error_modal_header": "抱歉,发生错误",
13 | "error_modal_subtext": "很抱歉给您带来不便,我们将尽快对此进行调查。 如果您愿意,您可以报告此错误 。 重新加载页面可能会有所帮助。",
14 |
15 | "mainmenu_explorer": "浏览器",
16 | "mainmenu_all_tokens": "所有代币",
17 |
18 | "index_page_header": "简单分类帐协议代币浏览器",
19 | "index_page_subheader": "查询基于比特币现金的代币",
20 | "index_page_subtext": "本站基于SLPDB构建,SLPDBSLPDB ,是BitDB FH 的分支 ,Github 。 在Github上查看代码并提交问题。Electron Cash SLP Edition .",
21 | "index_page_latest_transactions": "最新交易",
22 | "index_page_transaction_charts": "交易统计图表",
23 | "index_page_token_burns": "已毁灭代币",
24 | "index_page_exchanges": "交易所:",
25 |
26 | "address_page_sent_slp_transactions": "已发送SLP交易",
27 | "address_page_received_slp_transactions": "收到SLP交易",
28 | "address_page_token_balances": "代币余额",
29 | "address_page_transactions_chart": "交易统计图表",
30 |
31 | "bad_address_page_header": "错误地址",
32 | "bad_address_page_subtext": "抱歉,我们无法解码给定的地址。 仔细检查它是否拼写正确。",
33 |
34 | "processing_tx_page_header": "处理SLP交易",
35 | "processing_tx_page_subtext": "SLPDB当前正在处理此事务。 在高负载期间,处理交易可能需要更长的时间。 请稍后重试。",
36 |
37 | "no_tx_header": "找不到交易",
38 | "no_tx_subtext": "在SLPDB或BitDB中找不到此事务。 它可能已经很旧或拼写错误。",
39 |
40 | "404_page_header": "404找不到:(",
41 | "404_page_subtext1": "抱歉,找不到您想要的页面。",
42 | "404_page_subtext2": "请尝试其他搜索或返回浏览器,这可能是一个错误。 如果是这样,请报告 它!",
43 |
44 | "block_page_view_all_block": "查看已确认的所有交易",
45 | "block_page_view_all_mempool": "查看所有等待确认的交易",
46 |
47 | "dividend_helper_tokenid_subtext": "空投bch给哪些代币的持有者",
48 | "dividend_helper_bch_subtext": "总共给代币持有者空投多少比特币现金",
49 | "dividend_helper_ignore_addresses_subtext": "不给这些地址空投,请每输入一个地址换一行",
50 | "dividend_helper_calculate_subtext": "使用Electron cash钱包的“Pay to many”功能",
51 |
52 | "slp_explorer": "SLP资源管理器",
53 | "ignore_addresses": "排除地址",
54 | "dividend_helper": "派息(空投)工具",
55 | "bitcoin_cash_transaction": "比特币现金交易",
56 | "bch": "BCH",
57 | "calculate": "计算",
58 | "popular_tokens": "热门代币",
59 | "all_tokens": "所有代币",
60 | "transaction": "交易",
61 | "transactions": "交易次数",
62 | "transaction_hash": "交易哈希",
63 | "transactions_chart": "交易图表",
64 | "txid": "交易编号",
65 | "tx": "交易",
66 | "token_id": "代币标识符",
67 | "token_balance": "代币余额",
68 | "token": "代币",
69 | "tokens": "代币",
70 | "name": "名称",
71 | "symbol": "符号",
72 | "amount": "金额",
73 | "version": "版本",
74 | "address": "地址",
75 | "addresses": "地址",
76 | "block": "区块高度",
77 | "blocks": "积木",
78 | "block_height": "区块高度",
79 | "block_time": "锁定时间",
80 | "block_created": "块已创建",
81 | "loading": "载入中...",
82 | "year": "年",
83 | "month": "月",
84 | "week": "星期",
85 | "day": "日",
86 | "view_on_bch_explorer": "在比特币现金浏览器上查看",
87 | "copy_to_clipboard": "复制到剪贴板",
88 | "type1": "第一类",
89 | "nft1_group": "不可替代代币一族",
90 | "nft1_child": "不可替代代币一个孩子",
91 | "child_nfts": "儿童不可替代代币",
92 | "mint_history": "造币史",
93 | "burn_history": "毁灭历史",
94 | "pending": "待定",
95 | "none": "[没有]",
96 | "rich_list": "丰富列表",
97 | "stats": "统计",
98 | "details": "代币细节",
99 | "balance": "结余",
100 | "mint_baton": "薄荷棒",
101 | "minting_baton_status": "铸棒状态",
102 | "minting_baton_utxo": "铸币指挥棒未使用的交易输出",
103 | "send": "发送",
104 | "mint": "薄荷",
105 | "genesis": "建立",
106 | "genesis_description": "代币类型一生成交易没有任何SLP输入。 不可替代的代币子事务可以通过查看“代币详细信息”窗格中的“版本”行来看到输入。",
107 | "tokenstats_valid_token_transactions": "自创世以来的有效交易",
108 | "tokenstats_valid_token_utxos": "有效代币未花费的交易输出",
109 | "tokenstats_valid_token_addresses": "有效代币地址",
110 | "tokenstats_satoshis_locked_up": "聪锁定",
111 | "tokenstats_tokens_minted": "铸造币",
112 | "tokenstats_tokens_burned": "代币烧毁",
113 | "tokenstats_circulating_supply": "循环供应",
114 | "slpdb_address_error": "SLPDB地址错误",
115 | "no_inputs": "没有输入。",
116 | "type": "类型",
117 | "mempool": "内存池",
118 | "document": "文献",
119 | "document_uri": "文件网址",
120 | "document_checksum": "文件校验和",
121 | "creator": "创作者",
122 | "version": "版本",
123 | "verified": "已验证",
124 | "inputs": "输入项",
125 | "outputs": "产出",
126 | "vout": "输出向量",
127 | "timestamp": "时间戳记",
128 | "decimals": "小数点",
129 | "slp_address": "SLP地址",
130 | "cash_address": "收款地址",
131 | "legacy_address": "旧版地址",
132 | "cash_account": "现金账户",
133 | "cash_accounts": "现金账户",
134 | "go_back": "回后",
135 | "go_home": "回首页",
136 | "reload_page": "重新载入页面",
137 | "search_placeholder": "交易哈希,地址或代币名...",
138 | "nonslp_transaction": "非SLP交易",
139 | "slp_invalid_reason": "SLP无效原因",
140 | "this_is_not_a_slp_transaction": "这不是SLP事务。",
141 | "tokens_created": "已创建代币",
142 | "sent": "已发送",
143 | "received": "已收到",
144 | "tokenid_required": "代币标识符必填"
145 | }
146 |
147 |
--------------------------------------------------------------------------------
/public/img/cashaccount-avatars/emoji_u1f380.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------