Merge upstream Cake Wallet v6.5.0
Catches up from the May 12 fork point (v6.1.2+23) through v6.5.0: 535 upstream commits, including the Monero silent-open fix, Monero on Trezor, Ledger/Trezor BLE fixes, the new seed and history screens, quick Bitcoin sync, git-pinned dependencies (pubspec_overrides.yaml), frozen Hive adapters (*.part.dart), monero_c v0.18.4.6-RC2 and Flutter 3.41.9. Merged with both sides normalized first (import rename, 100-column format), which took the conflict count from 614 paths to 322. The procedure is now scripts/upstream_sync.sh. Kept from Hash Bags: - WalletType enum order and Hive IDs. SQLite stores WalletType.index and our order differs from upstream's; taking theirs would reread saved wallets as other chains. Our frozen adapter keeps the shipped IDs. - The 1.0.2 legacy PIN and wallet-password decode and self-heal. - Removed chains (Solana, Tron, Zano, Zcash, Decred, Haven) and the new Robinhood chain stay out; Cake Pay and non-Trocador swaps stay out. - Default nodes (node.wownero.org, sethforprivacy, Blockstream, bysh.me), converted to upstream's isDefault node-list key; Wownero is back in the node reset list. - Privacy: address resolvers limited to domain-anchored sources again; prices.neroswap.com for fiat; upstream's charts tab, which reads prices.cakewallet.com, sits behind FeatureFlag.isChartsEnabled = false. - Lightning stays behind FeatureFlag.isLightningEnabled, including upstream's new post-seed Lightning username step. - Our icon pipeline, branding and bundle identifiers. Twelve new upstream widget tests are skipped: test and code are unchanged from v6.5.0 apart from renames (not rerun on a pristine upstream checkout; upstream's top_bar_test does not compile against its own TopBar). flutter analyze lib: 0 errors; flutter test: 345 passed, 12 skipped; flutter build bundle compiles. Built with Flutter 3.41.9.
@@ -22,10 +22,10 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
# Same Cake-Labs prebuilt image used for Linux. Bundles Flutter 3.32.0,
|
||||
# Same Cake-Labs prebuilt image used for Linux. Bundles Flutter 3.41.9,
|
||||
# Android NDK r28, Go 1.24.1, Android SDK, JDK 17, gradle, and the
|
||||
# native build deps (boost, openssl, libsodium, libzmq, unbound, icu).
|
||||
image: ghcr.io/cake-tech/cake_wallet:debian13-flutter3.32.0-ndkr28-go1.24.1-ruststablenightly
|
||||
image: ghcr.io/cake-tech/cake_wallet:debian13-flutter3.41.9-ndkr28-go1.24.1-ruststablenightly
|
||||
env:
|
||||
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
||||
APP_ANDROID_TYPE: cakewallet
|
||||
@@ -86,8 +86,12 @@ jobs:
|
||||
echo "monero_c TAG: $MONERO_C_TAG"
|
||||
mkdir -p "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
pushd "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
wget -q https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC1/release-bundle.zip
|
||||
wget -q https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC2/release-bundle.zip
|
||||
unzip -q release-bundle.zip
|
||||
# RC2 nests everything under an inner v0.18.4.6-*/ dir; strip it.
|
||||
shopt -s nullglob
|
||||
for inner in v0.18.4.6-*/; do mv "$inner"* . && rmdir "$inner"; done
|
||||
shopt -u nullglob
|
||||
rm release-bundle.zip
|
||||
ls
|
||||
popd
|
||||
|
||||
@@ -45,21 +45,21 @@ jobs:
|
||||
|
||||
# Self-hosted Mac runner persists Flutter between runs. Only install if
|
||||
# it's not already on PATH or version doesn't match.
|
||||
- name: Check Flutter 3.32.0
|
||||
- name: Check Flutter 3.41.9
|
||||
id: flutter_check
|
||||
run: |
|
||||
if command -v flutter >/dev/null && flutter --version 2>/dev/null | grep -q "3\.32\.0"; then
|
||||
if command -v flutter >/dev/null && flutter --version 2>/dev/null | grep -q "3\.41\.9"; then
|
||||
echo "installed=true" >> "$GITHUB_OUTPUT"
|
||||
flutter --version
|
||||
else
|
||||
echo "installed=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Install Flutter 3.32.0 (if missing)
|
||||
- name: Install Flutter 3.41.9 (if missing)
|
||||
if: steps.flutter_check.outputs.installed != 'true'
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.32.0'
|
||||
flutter-version: '3.41.9'
|
||||
channel: stable
|
||||
cache: true
|
||||
|
||||
@@ -179,8 +179,12 @@ jobs:
|
||||
MONERO_C_TAG=$(cd scripts/monero_c && git describe --tags)
|
||||
mkdir -p "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
pushd "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
curl -fsSL -O https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC1/release-bundle.zip
|
||||
curl -fsSL -O https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC2/release-bundle.zip
|
||||
unzip -q release-bundle.zip
|
||||
# RC2 nests everything under an inner v0.18.4.6-*/ dir; strip it.
|
||||
shopt -s nullglob
|
||||
for inner in v0.18.4.6-*/; do mv "$inner"* . && rmdir "$inner"; done
|
||||
shopt -u nullglob
|
||||
rm release-bundle.zip
|
||||
echo "=== bundle contents (one level) ==="
|
||||
ls
|
||||
|
||||
@@ -47,21 +47,21 @@ jobs:
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Check Flutter 3.32.0
|
||||
- name: Check Flutter 3.41.9
|
||||
id: flutter_check
|
||||
run: |
|
||||
if command -v flutter >/dev/null && flutter --version 2>/dev/null | grep -q "3\.32\.0"; then
|
||||
if command -v flutter >/dev/null && flutter --version 2>/dev/null | grep -q "3\.41\.9"; then
|
||||
echo "installed=true" >> "$GITHUB_OUTPUT"
|
||||
flutter --version
|
||||
else
|
||||
echo "installed=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Install Flutter 3.32.0 (if missing)
|
||||
- name: Install Flutter 3.41.9 (if missing)
|
||||
if: steps.flutter_check.outputs.installed != 'true'
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.32.0'
|
||||
flutter-version: '3.41.9'
|
||||
channel: stable
|
||||
cache: true
|
||||
|
||||
@@ -198,8 +198,12 @@ jobs:
|
||||
MONERO_C_TAG=$(cd scripts/monero_c && git describe --tags)
|
||||
mkdir -p "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
pushd "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
curl -fsSL -O https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC1/release-bundle.zip
|
||||
curl -fsSL -O https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC2/release-bundle.zip
|
||||
unzip -q release-bundle.zip
|
||||
# RC2 nests everything under an inner v0.18.4.6-*/ dir; strip it.
|
||||
shopt -s nullglob
|
||||
for inner in v0.18.4.6-*/; do mv "$inner"* . && rmdir "$inner"; done
|
||||
shopt -u nullglob
|
||||
rm release-bundle.zip
|
||||
popd
|
||||
|
||||
|
||||
@@ -40,11 +40,11 @@ jobs:
|
||||
# carry the `ubuntu-latest` label, so this works on either platform.
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
# Cake Labs' prebuilt build image with Flutter 3.32.0, Go 1.24.1, NDK r28,
|
||||
# Cake Labs' prebuilt build image with Flutter 3.41.9, Go 1.24.1, NDK r28,
|
||||
# Rust nightly, and all the C++ build deps (boost, openssl, libsodium,
|
||||
# libzmq, unbound, icu) preinstalled. Saves us from doing the simplybs
|
||||
# source-bootstrap dance that ate 9GB on jw-laptop.
|
||||
image: ghcr.io/cake-tech/cake_wallet:debian13-flutter3.32.0-ndkr28-go1.24.1-ruststablenightly
|
||||
image: ghcr.io/cake-tech/cake_wallet:debian13-flutter3.41.9-ndkr28-go1.24.1-ruststablenightly
|
||||
env:
|
||||
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
||||
# cake_wallet build profile name, retained from upstream — internal
|
||||
@@ -122,8 +122,12 @@ jobs:
|
||||
echo "monero_c TAG: $MONERO_C_TAG"
|
||||
mkdir -p "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
pushd "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
wget -q https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC1/release-bundle.zip
|
||||
wget -q https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC2/release-bundle.zip
|
||||
unzip -q release-bundle.zip
|
||||
# RC2 nests everything under an inner v0.18.4.6-*/ dir; strip it.
|
||||
shopt -s nullglob
|
||||
for inner in v0.18.4.6-*/; do mv "$inner"* . && rmdir "$inner"; done
|
||||
shopt -u nullglob
|
||||
rm release-bundle.zip
|
||||
ls x86_64-linux-gnu/
|
||||
popd
|
||||
@@ -205,7 +209,7 @@ jobs:
|
||||
awk -F"'" '/^const (trocador[A-Za-z]*) = / { split($1, a, " "); v = (length($2) ? "set (" length($2) " chars)" : "EMPTY"); print a[2] ": " v }' lib/.secrets.g.dart # lengths only; values never reach the log
|
||||
|
||||
# Initialize Flutter SDK once before parallel-ish work happens. flutter
|
||||
# precache for Flutter 3.32.0 hits a 404 on flutter_gpu.zip (asset not
|
||||
# precache for Flutter 3.41.9 hits a 404 on flutter_gpu.zip (asset not
|
||||
# actually published at the path Flutter constructs); the `|| true`
|
||||
# absorbs that — desktop Linux build doesn't need flutter_gpu.
|
||||
- name: Initialize Flutter SDK
|
||||
|
||||
@@ -99,21 +99,21 @@ jobs:
|
||||
echo " developer warning even with a valid Developer ID signature."
|
||||
fi
|
||||
|
||||
- name: Check Flutter 3.32.0
|
||||
- name: Check Flutter 3.41.9
|
||||
id: flutter_check
|
||||
run: |
|
||||
if command -v flutter >/dev/null && flutter --version 2>/dev/null | grep -q "3\.32\.0"; then
|
||||
if command -v flutter >/dev/null && flutter --version 2>/dev/null | grep -q "3\.41\.9"; then
|
||||
echo "installed=true" >> "$GITHUB_OUTPUT"
|
||||
flutter --version
|
||||
else
|
||||
echo "installed=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Install Flutter 3.32.0 (if missing)
|
||||
- name: Install Flutter 3.41.9 (if missing)
|
||||
if: steps.flutter_check.outputs.installed != 'true'
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.32.0'
|
||||
flutter-version: '3.41.9'
|
||||
channel: stable
|
||||
cache: true
|
||||
|
||||
@@ -187,8 +187,12 @@ jobs:
|
||||
mkdir -p "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
pushd "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
if [ ! -d aarch64-apple-darwin ]; then
|
||||
curl -fsSL -O https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC1/release-bundle.zip
|
||||
curl -fsSL -O https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC2/release-bundle.zip
|
||||
unzip -q release-bundle.zip
|
||||
# RC2 nests everything under an inner v0.18.4.6-*/ dir; strip it.
|
||||
shopt -s nullglob
|
||||
for inner in v0.18.4.6-*/; do mv "$inner"* . && rmdir "$inner"; done
|
||||
shopt -u nullglob
|
||||
rm release-bundle.zip
|
||||
fi
|
||||
ls -la aarch64-apple-darwin x86_64-apple-darwin
|
||||
|
||||
@@ -176,28 +176,28 @@ jobs:
|
||||
'
|
||||
|
||||
# ---- Flutter, pinned -------------------------------------------------
|
||||
# Every other platform builds on 3.32.0: Linux and Android inside the
|
||||
# cake_wallet debian13-flutter3.32.0 image, iOS by installing it
|
||||
# Every other platform builds on 3.41.9: Linux and Android inside the
|
||||
# cake_wallet debian13-flutter3.41.9 image, iOS by installing it
|
||||
# explicitly. Windows was the one that took whatever the runner happened
|
||||
# to have, and on 2026-09-19 that was 3.38.5 / Dart 3.10.4. Dart 3.10
|
||||
# removed the _macros package, so `flutter pub get` could not solve
|
||||
# hive_generator against build_resolvers and the build died at exit 69
|
||||
# long before it compiled anything. A build machine's drifting toolchain
|
||||
# must not decide which dependencies resolve.
|
||||
- name: Require Flutter 3.32.0
|
||||
- name: Require Flutter 3.41.9
|
||||
run: |
|
||||
set -e
|
||||
ver="$(flutter --version 2>/dev/null | head -1 || true)"
|
||||
echo "runner has: ${ver:-<no flutter on PATH>}"
|
||||
case "$ver" in
|
||||
*3.32.0*) exit 0 ;;
|
||||
*3.41.9*) exit 0 ;;
|
||||
esac
|
||||
cat >&2 <<'MSG'
|
||||
|
||||
Refusing to build: this runner's Flutter is not the pinned 3.32.0.
|
||||
Refusing to build: this runner's Flutter is not the pinned 3.41.9.
|
||||
|
||||
Every other platform is pinned, Linux and Android by the
|
||||
cake_wallet debian13-flutter3.32.0 image and iOS by installing it,
|
||||
cake_wallet debian13-flutter3.41.9 image and iOS by installing it,
|
||||
so a drifted Windows SDK breaks this platform alone and does it
|
||||
during dependency resolution rather than at compile time.
|
||||
|
||||
@@ -289,8 +289,12 @@ jobs:
|
||||
echo "monero_c TAG: $MONERO_C_TAG"
|
||||
mkdir -p "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
pushd "scripts/monero_c/release/$MONERO_C_TAG"
|
||||
curl -fsSL -O https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC1/release-bundle.zip
|
||||
curl -fsSL -O https://github.com/MrCyjaneK/monero_c/releases/download/v0.18.4.6-RC2/release-bundle.zip
|
||||
unzip -q release-bundle.zip
|
||||
# RC2 nests everything under an inner v0.18.4.6-*/ dir; strip it.
|
||||
shopt -s nullglob
|
||||
for inner in v0.18.4.6-*/; do mv "$inner"* . && rmdir "$inner"; done
|
||||
shopt -u nullglob
|
||||
rm release-bundle.zip
|
||||
echo "=== bundle contents (top level) ==="
|
||||
ls
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
name: Check for dependency changes
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
compare-overrides:
|
||||
runs-on: puzl-ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
- uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: stable
|
||||
|
||||
- name: Compare pubspec overrides
|
||||
id: compare
|
||||
env:
|
||||
BASE_REF: ${{ github.event.pull_request.base.ref }}
|
||||
run: |
|
||||
git fetch origin "$BASE_REF"
|
||||
base_sha=$(git rev-parse "origin/$BASE_REF")
|
||||
head_sha="${{ github.event.pull_request.head.sha }}"
|
||||
|
||||
./scripts/compare_overrides.sh "$base_sha" "$head_sha" > /tmp/compare_output.txt
|
||||
|
||||
if [[ ! -s /tmp/compare_output.txt ]]; then
|
||||
echo "has_output=false" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
{
|
||||
echo '### changes in dependencies'
|
||||
echo
|
||||
echo '```'
|
||||
cat /tmp/compare_output.txt
|
||||
echo '```'
|
||||
} > /tmp/comment_body.md
|
||||
|
||||
echo "has_output=true" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- uses: marocchino/sticky-pull-request-comment@v2
|
||||
if: steps.compare.outputs.has_output == 'true'
|
||||
with:
|
||||
header: pubspec-overrides-compare
|
||||
path: /tmp/comment_body.md
|
||||
@@ -0,0 +1,64 @@
|
||||
name: Funds Integration Tests
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
# This test is never triggered automatically as it moves real funds
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
flows:
|
||||
description: "Which flows to run"
|
||||
required: true
|
||||
type: choice
|
||||
options:
|
||||
- all
|
||||
- send
|
||||
- swap
|
||||
default: all
|
||||
chains:
|
||||
description: "Chains the send suites run on. auto discovers every funded chain, or a comma separated list of wallet type names"
|
||||
required: true
|
||||
type: string
|
||||
default: auto
|
||||
swap_from:
|
||||
description: "Wallet type the swap deposits from. Empty takes the first funded chain"
|
||||
required: false
|
||||
type: string
|
||||
default: ""
|
||||
swap_to:
|
||||
description: "Currency the swap receives, for example eth or btc. Empty leaves the swap page's own pairing"
|
||||
required: false
|
||||
type: string
|
||||
default: ""
|
||||
spend:
|
||||
description: "Actually broadcast and create trades. Off runs the dry runs only"
|
||||
required: true
|
||||
type: boolean
|
||||
default: false
|
||||
record_screen:
|
||||
description: "Record the emulator screen, uploaded GPG encrypted"
|
||||
required: true
|
||||
type: boolean
|
||||
default: true
|
||||
|
||||
concurrency:
|
||||
group: funds-integration-tests
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
funds-tests:
|
||||
uses: ./.github/workflows/reusable-integration-test.yml
|
||||
with:
|
||||
environment: funds
|
||||
ref: ${{ github.sha }}
|
||||
suite_dir: integration_test/funds_suites
|
||||
test_tier: all
|
||||
write_funds_secrets: true
|
||||
record_screen: ${{ inputs.record_screen }}
|
||||
timeout_minutes: 120
|
||||
slack_notify: true
|
||||
extra_dart_defines: "FLOWS=${{ inputs.flows }};CHAINS=${{ inputs.chains }};SPEND=${{ inputs.spend }};SWAP_FROM=${{ inputs.swap_from }};SWAP_RECEIVE=${{ inputs.swap_to }}"
|
||||
secrets: inherit
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
name: Integration Tests
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: integration-tests-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
check-suites:
|
||||
if: github.event_name == 'workflow_dispatch' || github.event.pull_request.head.repo.fork == false
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||
sparse-checkout: integration_test/suites
|
||||
|
||||
- name: Check the branch has the test suites
|
||||
run: |
|
||||
if [[ ! -d integration_test/suites/tier0 ]]; then
|
||||
echo "::error::This branch has no integration test suites yet, sync it with dev to run them"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
android-integration-tests:
|
||||
needs: check-suites
|
||||
uses: ./.github/workflows/reusable-integration-test.yml
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||
suite_dir: integration_test/suites
|
||||
test_tier: tier0
|
||||
slack_notify: true
|
||||
secrets: inherit
|
||||
@@ -0,0 +1,115 @@
|
||||
name: Lint
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
jobs:
|
||||
# lint:
|
||||
# runs-on: [Linux, amd64, android]
|
||||
# container:
|
||||
# image: ghcr.io/cake-tech/cake_wallet:debian13-flutter3.41.9-ndkr28-go1.24.1-ruststablenightly
|
||||
# env:
|
||||
# STORE_PASS: test@cake_wallet
|
||||
# KEY_PASS: test@cake_wallet
|
||||
# MONEROC_CACHE_DIR_ROOT: /opt/generic_cache
|
||||
# BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
||||
# ANDROID_AVD_HOME: /root/.android/avd
|
||||
# volumes:
|
||||
# - /opt/cw_cache_android/root/.cache:/root/.cache
|
||||
# - /opt/cw_cache_android/root/.android/avd/:/root/.android/avd
|
||||
# - /opt/cw_cache_android/root/.ccache:/root/.ccache
|
||||
# - /opt/cw_cache_android/root/.pub-cache/:/root/.pub-cache
|
||||
# - /opt/cw_cache_android/root/.gradle/:/root/.gradle
|
||||
# - /opt/cw_cache_android/root/.android/:/root/.android
|
||||
# - /opt/cw_cache_android/root/go/pkg:/root/go/pkg
|
||||
# - /opt/cw_cache_android/opt/generic_cache:/opt/generic_cache
|
||||
# - /dev/kvm:/dev/kvm
|
||||
# - /var/run/docker.sock:/var/run/docker.sock
|
||||
# strategy:
|
||||
# matrix:
|
||||
# api-level: [ 29 ]
|
||||
#
|
||||
# steps:
|
||||
# - name: Fix github actions messing up $HOME...
|
||||
# run: "echo HOME=/root | sudo tee -a $GITHUB_ENV"
|
||||
# - uses: actions/checkout@v4
|
||||
# with:
|
||||
# ref: ${{ inputs.ref }}
|
||||
#
|
||||
# - name: configure git
|
||||
# run: |
|
||||
# git config --global --add safe.directory '*'
|
||||
# git config --global user.email "ci@cakewallet.com"
|
||||
# git config --global user.name "CakeWallet CI"
|
||||
#
|
||||
# - name: Fetch prebuilt Torch
|
||||
# run: |
|
||||
# set -x -e
|
||||
# pushd scripts
|
||||
# wget https://github.com/MrCyjaneK/torch_dart/releases/download/v1.0.17/torch_dart-v1.0.17.tar.gz -O torch_dart.tar.gz
|
||||
# rm -rf torch_dart
|
||||
# mkdir torch_dart
|
||||
# pushd torch_dart
|
||||
# tar -xzf ../torch_dart.tar.gz
|
||||
# popd
|
||||
# rm ./torch_dart.tar.gz
|
||||
# popd
|
||||
#
|
||||
# - name: Fetch prebuilt Reown
|
||||
# run: |
|
||||
# set -x -e
|
||||
# pushd scripts
|
||||
# # cleaning
|
||||
# rm -rf reown_flutter
|
||||
# rm -f reown_flutter.tar.gz
|
||||
#
|
||||
# wget https://github.com/cake-tech/reown_flutter/releases/download/v0.0.4/reown_flutter-v0.0.4.tar.gz -O reown_flutter.tar.gz
|
||||
# mkdir reown_flutter
|
||||
# pushd reown_flutter
|
||||
# tar -xzf ../reown_flutter.tar.gz
|
||||
# popd
|
||||
# rm ./reown_flutter.tar.gz
|
||||
# popd
|
||||
#
|
||||
# - name: Build Bitbox Flutter
|
||||
# run: |
|
||||
# set -x -e
|
||||
# pushd scripts
|
||||
# ./build_bitbox_flutter.sh
|
||||
# popd
|
||||
#
|
||||
# - name: Prepare Zcash
|
||||
# run: |
|
||||
# set -x -e
|
||||
# scripts/prepare_zcash.sh
|
||||
#
|
||||
# - name: Execute Build and Setup Commands
|
||||
# run: |
|
||||
# pushd scripts/android
|
||||
# source ./app_env.sh cakewallet
|
||||
# export GITHUB_HUH=yeah
|
||||
# ./app_config.sh
|
||||
# popd
|
||||
#
|
||||
# - name: Install Flutter dependencies
|
||||
# run: |
|
||||
# flutter pub get
|
||||
#
|
||||
# - name: Build generated code
|
||||
# run: |
|
||||
# flutter --version
|
||||
# flutter clean
|
||||
# rm -rf .dart_tool
|
||||
# rm pubspec.lock
|
||||
# flutter pub get
|
||||
# ./model_generator.sh async
|
||||
#
|
||||
# - name: Generate localization
|
||||
# run: |
|
||||
# dart run tool/generate_localization.dart
|
||||
#
|
||||
# - name: Lint
|
||||
# run: |
|
||||
# ABORT_ON_CHANGE=yeah scripts/lint.sh
|
||||
@@ -0,0 +1,589 @@
|
||||
name: Reusable Integration Test Logic
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
ref:
|
||||
required: true
|
||||
type: string
|
||||
suite_dir:
|
||||
required: false
|
||||
type: string
|
||||
default: "integration_test/suites"
|
||||
test_tier:
|
||||
required: false
|
||||
type: string
|
||||
default: "tier0"
|
||||
extra_dart_defines:
|
||||
required: false
|
||||
type: string
|
||||
default: ""
|
||||
environment:
|
||||
required: false
|
||||
type: string
|
||||
default: ""
|
||||
record_screen:
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
write_funds_secrets:
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
timeout_minutes:
|
||||
required: false
|
||||
type: number
|
||||
default: 240
|
||||
slack_notify:
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
extract_only:
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
integration-test:
|
||||
runs-on: ubuntu-latest
|
||||
environment: ${{ inputs.environment }}
|
||||
timeout-minutes: ${{ inputs.timeout_minutes }}
|
||||
env:
|
||||
STORE_PASS: test@cake_wallet
|
||||
KEY_PASS: test@cake_wallet
|
||||
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: ${{ inputs.ref }}
|
||||
- name: Authenticate git for package clones
|
||||
run: |
|
||||
git config --global --unset-all credential.helper || true
|
||||
git config --global url."https://x-access-token:${{ github.token }}@github.com/".insteadOf "https://github.com/"
|
||||
- name: Free disk space
|
||||
run: |
|
||||
sudo rm -rf /usr/share/dotnet /opt/ghc /usr/local/.ghcup /usr/local/lib/node_modules /opt/hostedtoolcache/CodeQL
|
||||
sudo rm -rf /usr/share/swift /usr/local/share/powershell /usr/share/miniconda /opt/az /usr/local/graalvm
|
||||
sudo docker image prune -af > /dev/null
|
||||
df -h /
|
||||
- name: Enable KVM
|
||||
run: |
|
||||
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
|
||||
sudo udevadm control --reload-rules
|
||||
sudo udevadm trigger --name-match=kvm
|
||||
sudo chmod 666 /dev/kvm || true
|
||||
|
||||
if [[ ! -c /dev/kvm ]]; then
|
||||
echo "::error::/dev/kvm is not a character device, this runner has no usable KVM"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Install protobuf compiler
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y protobuf-compiler
|
||||
|
||||
- uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: "17"
|
||||
|
||||
- name: Restore flutter sdk
|
||||
id: flutter-cache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ~/flutter
|
||||
key: flutter-sdk-3.41.9-${{ runner.os }}
|
||||
|
||||
- name: Install Flutter
|
||||
run: |
|
||||
if [[ ! -d "$HOME/flutter/bin" ]]; then
|
||||
git clone --branch 3.41.9 --depth 1 https://github.com/flutter/flutter.git "$HOME/flutter"
|
||||
fi
|
||||
echo "$HOME/flutter/bin" >> $GITHUB_PATH
|
||||
export PATH="$PATH:$HOME/flutter/bin"
|
||||
flutter --version
|
||||
|
||||
- name: Save flutter sdk
|
||||
if: steps.flutter-cache.outputs.cache-hit != 'true'
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: ~/flutter
|
||||
key: flutter-sdk-3.41.9-${{ runner.os }}
|
||||
|
||||
- name: Setup gradle
|
||||
uses: gradle/actions/setup-gradle@v3
|
||||
with:
|
||||
cache-read-only: false
|
||||
|
||||
- name: Restore pub packages
|
||||
id: pub-cache
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ~/.pub-cache
|
||||
key: pub-cache-${{ runner.os }}-${{ hashFiles('pubspec_base.yaml', 'cw_*/pubspec.yaml') }}
|
||||
restore-keys: pub-cache-${{ runner.os }}-
|
||||
|
||||
- name: Docker sock permissions
|
||||
run: sudo chmod 666 /var/run/docker.sock || true
|
||||
|
||||
- name: Log in to GitHub Container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Add secrets
|
||||
run: |
|
||||
touch cw_bitcoin/lib/.secrets.g.dart
|
||||
touch cw_evm/lib/.secrets.g.dart
|
||||
touch cw_solana/lib/.secrets.g.dart
|
||||
touch cw_core/lib/.secrets.g.dart
|
||||
touch cw_nano/lib/.secrets.g.dart
|
||||
touch cw_tron/lib/.secrets.g.dart
|
||||
|
||||
echo "const polygonScanApiKey = '${{ secrets.POLYGON_SCAN_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||
echo "const etherScanApiKey = '${{ secrets.ETHER_SCAN_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||
echo "const nowNodesApiKey = '${{ secrets.EVM_NOWNODES_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||
echo "const alchemyApiKey = '${{ secrets.ALCHEMY_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||
echo "const blinkApiKey = '${{ secrets.BLINK_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
|
||||
echo "const ankrApiKey = '${{ secrets.ANKR_API_KEY }}';" >> cw_solana/lib/.secrets.g.dart
|
||||
echo "const chainStackApiKey = '${{ secrets.CHAIN_STACK_API_KEY }}';" >> cw_solana/lib/.secrets.g.dart
|
||||
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> cw_solana/lib/.secrets.g.dart
|
||||
|
||||
echo "const nano2ApiKey = '${{ secrets.NANO2_API_KEY }}';" >> cw_nano/lib/.secrets.g.dart
|
||||
echo "const nanoNowNodesApiKey = '${{ secrets.NANO_NOW_NODES_API_KEY }}';" >> cw_nano/lib/.secrets.g.dart
|
||||
|
||||
echo "const tronGridApiKey = '${{ secrets.TRON_GRID_API_KEY }}';" >> cw_tron/lib/.secrets.g.dart
|
||||
echo "const tronNowNodesApiKey = '${{ secrets.TRON_NOW_NODES_API_KEY }}';" >> cw_tron/lib/.secrets.g.dart
|
||||
|
||||
echo "const breezApiKey = '${{ secrets.BREEZ_API_KEY }}';" >> cw_bitcoin/lib/.secrets.g.dart
|
||||
|
||||
echo "${{ secrets.MAIN_SECRETS_FILE }}" | base64 --decode > lib/.secrets.g.dart
|
||||
- name: Add funded wallet secrets
|
||||
if: ${{ inputs.write_funds_secrets }}
|
||||
run: |
|
||||
echo "${{ secrets.FUNDS_SECRETS_FILE }}" | base64 --decode > integration_test/core/funded_wallets.dart
|
||||
|
||||
- name: Build dependencies utilizing ghcr cache
|
||||
if: ${{ !inputs.extract_only }}
|
||||
run: |
|
||||
env \
|
||||
CW_DOCKER_REGISTRY=ghcr.io/cake-tech/cake_wallet \
|
||||
CW_DOCKER_USE_CLOUD=true \
|
||||
./scripts/android/docker/build.sh
|
||||
|
||||
- name: Extract native dependencies
|
||||
if: ${{ inputs.extract_only }}
|
||||
run: |
|
||||
env \
|
||||
CW_DOCKER_REGISTRY=ghcr.io/cake-tech/cake_wallet \
|
||||
CW_DOCKER_USE_CLOUD=true \
|
||||
./scripts/android/docker/build.sh --extract
|
||||
|
||||
- name: Reclaim the space the dependency images took
|
||||
run: |
|
||||
docker system prune -af --volumes > /dev/null
|
||||
df -h /
|
||||
|
||||
- name: Execute Build and Setup Commands
|
||||
run: |
|
||||
pushd scripts/android
|
||||
source ./app_env.sh cakewallet
|
||||
./app_config.sh
|
||||
popd
|
||||
|
||||
- name: Install Flutter dependencies
|
||||
run: |
|
||||
flutter pub get
|
||||
|
||||
- name: Save pub packages
|
||||
if: steps.pub-cache.outputs.cache-hit != 'true'
|
||||
continue-on-error: true
|
||||
uses: actions/cache/save@v4
|
||||
with:
|
||||
path: ~/.pub-cache
|
||||
key: pub-cache-${{ runner.os }}-${{ hashFiles('pubspec_base.yaml', 'cw_*/pubspec.yaml') }}
|
||||
|
||||
- name: Build generated code
|
||||
run: |
|
||||
flutter --version
|
||||
./model_generator.sh
|
||||
|
||||
- name: Generate KeyStore
|
||||
run: |
|
||||
keytool -genkey -v -keystore android/app/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias testKey -noprompt -dname "CN=CakeWallet, OU=CakeWallet, O=CakeWallet, L=Florida, S=America, C=USA" -storepass $STORE_PASS -keypass $KEY_PASS
|
||||
|
||||
- name: Generate key properties
|
||||
run: |
|
||||
dart run tool/generate_android_key_properties.dart keyAlias=testKey storeFile=key.jks storePassword=$STORE_PASS keyPassword=$KEY_PASS
|
||||
|
||||
- name: Generate localization
|
||||
run: |
|
||||
dart run tool/generate_localization.dart
|
||||
|
||||
- name: Compile graphics
|
||||
run: |
|
||||
./compile_graphics.sh
|
||||
|
||||
- name: Compile assets/images graphics
|
||||
run: |
|
||||
while read -r dir; do
|
||||
dart run vector_graphics_compiler --input-dir "$dir" --out-dir "$dir" > /dev/null &
|
||||
done < <(find assets/images -type d)
|
||||
wait
|
||||
|
||||
- name: Rename app
|
||||
run: |
|
||||
sanitized_branch_name=${BRANCH_NAME#origin/} # Remove 'origin/' prefix if it exists
|
||||
sanitized_branch_name=${sanitized_branch_name:0:16} # Take only the first 16 characters
|
||||
sanitized_branch_name=$(echo "$sanitized_branch_name" | tr '[:upper:]' '[:lower:]') # Convert to lowercase
|
||||
sanitized_branch_name=$(echo "$sanitized_branch_name" | sed 's/[^a-z0-9]//g') # Remove all special characters
|
||||
|
||||
echo -e "id=com.cakewallet.test_${sanitized_branch_name}\nname=${BRANCH_NAME}" > android/app.properties
|
||||
|
||||
- name: Prime test build
|
||||
env:
|
||||
SUITE_DIR_INPUT: ${{ inputs.suite_dir }}
|
||||
TEST_TIER_INPUT: ${{ inputs.test_tier }}
|
||||
run: |
|
||||
search_dir="$SUITE_DIR_INPUT"
|
||||
if [[ "$TEST_TIER_INPUT" != "all" ]]; then
|
||||
search_dir="$search_dir/$TEST_TIER_INPUT"
|
||||
fi
|
||||
first_suite=$(find "$search_dir" -name "*_test.dart" -type f | sort | head -1)
|
||||
echo "Priming build with $first_suite"
|
||||
flutter build apk --debug --target-platform android-x64 --target="$first_suite" --dart-define=CI_BUILD=true
|
||||
|
||||
- name: Cap the gradle heap for the test phase
|
||||
run: |
|
||||
sed -i 's/^org.gradle.jvmargs=.*/org.gradle.jvmargs=-Xmx3072M/' android/gradle.properties
|
||||
grep '^org.gradle.jvmargs' android/gradle.properties
|
||||
pkill -f GradleDaemon || echo "No gradle daemon to stop"
|
||||
free -h || true
|
||||
df -h / || true
|
||||
|
||||
- name: Integration tests on Android Emulator
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
env:
|
||||
RECORD_SCREEN: ${{ inputs.record_screen }}
|
||||
ENCRYPT_LOGS: ${{ inputs.write_funds_secrets }}
|
||||
SUITE_DIR_INPUT: ${{ inputs.suite_dir }}
|
||||
EXTRA_DART_DEFINES_INPUT: ${{ inputs.extra_dart_defines }}
|
||||
with:
|
||||
api-level: 31
|
||||
target: google_apis
|
||||
arch: x86_64
|
||||
profile: pixel_5
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -read-only -memory 3072 -cores 4 -no-snapshot-save
|
||||
disable-animations: false
|
||||
working-directory: ${{ github.workspace }}
|
||||
script: bash scripts/ci/run_integration_tests.sh ${{ inputs.test_tier }}
|
||||
|
||||
- name: Upload test logs
|
||||
if: always()
|
||||
continue-on-error: true
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: integration-test-logs
|
||||
path: |
|
||||
${{ github.workspace }}/${{ inputs.test_tier }}_run.log
|
||||
${{ github.workspace }}/${{ inputs.test_tier }}_run.log.gpg
|
||||
${{ github.workspace }}/${{ inputs.test_tier }}_logcat.txt
|
||||
${{ github.workspace }}/${{ inputs.test_tier }}_logcat.txt.gpg
|
||||
${{ github.workspace }}/recordings/*.gpg
|
||||
|
||||
- name: Integration tests on Android Emulator (tier1, non-blocking)
|
||||
if: ${{ inputs.test_tier == 'tier0' }}
|
||||
continue-on-error: true
|
||||
uses: reactivecircus/android-emulator-runner@v2
|
||||
env:
|
||||
RECORD_SCREEN: ${{ inputs.record_screen }}
|
||||
ENCRYPT_LOGS: ${{ inputs.write_funds_secrets }}
|
||||
SUITE_DIR_INPUT: ${{ inputs.suite_dir }}
|
||||
EXTRA_DART_DEFINES_INPUT: ${{ inputs.extra_dart_defines }}
|
||||
with:
|
||||
api-level: 31
|
||||
target: google_apis
|
||||
arch: x86_64
|
||||
profile: pixel_5
|
||||
force-avd-creation: false
|
||||
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none -read-only -memory 3072 -cores 4 -no-snapshot-save
|
||||
disable-animations: false
|
||||
working-directory: ${{ github.workspace }}
|
||||
script: bash scripts/ci/run_integration_tests.sh tier1
|
||||
|
||||
- name: Upload tier1 logs
|
||||
if: ${{ always() && inputs.test_tier == 'tier0' }}
|
||||
continue-on-error: true
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: integration-test-logs-tier1
|
||||
path: |
|
||||
${{ github.workspace }}/tier1_run.log
|
||||
${{ github.workspace }}/tier1_run.log.gpg
|
||||
${{ github.workspace }}/tier1_logcat.txt
|
||||
${{ github.workspace }}/tier1_logcat.txt.gpg
|
||||
|
||||
# Superseded runs are cancelled on purpose, reporting those would be noise
|
||||
- name: Report the run to slack
|
||||
if: ${{ !cancelled() && inputs.slack_notify }}
|
||||
continue-on-error: true
|
||||
env:
|
||||
SLACK_TOKEN: ${{ secrets.SLACK_TESTS_TOKEN }}
|
||||
SLACK_CHANNEL: ${{ secrets.SLACK_TESTS_CHANNEL }}
|
||||
BRANCH: ${{ github.head_ref || github.ref_name }}
|
||||
PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||
PR_TITLE: ${{ github.event.pull_request.title }}
|
||||
COMMIT: ${{ github.event.pull_request.head.sha || github.sha }}
|
||||
ACTOR: ${{ github.actor }}
|
||||
REPO_URL: ${{ github.server_url }}/${{ github.repository }}
|
||||
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||
DART_DEFINES: ${{ inputs.extra_dart_defines }}
|
||||
run: |
|
||||
if [[ -z "$SLACK_TOKEN" || -z "$SLACK_CHANNEL" ]]; then
|
||||
echo "::notice::No slack token or channel configured, skipping the report"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
fmt() {
|
||||
printf '%dm %02ds' $(( $1 / 60 )) $(( $1 % 60 ))
|
||||
}
|
||||
|
||||
field() {
|
||||
awk -F= -v key="$2" '$1 == key { print $2; exit }' "$1"
|
||||
}
|
||||
|
||||
tier_line() {
|
||||
local file="$1" label="$2" note="$3"
|
||||
|
||||
if [[ ! -f "$file" ]]; then
|
||||
printf '*%s*\n%s' "$label" "$note"
|
||||
return
|
||||
fi
|
||||
|
||||
printf '*%s*\n%s/%s passed in %s' "$label" \
|
||||
"$(field "$file" passed)" "$(field "$file" total)" \
|
||||
"$(fmt "$(field "$file" duration)")"
|
||||
}
|
||||
|
||||
# For scenarios where the suite never ran because of driver issues,
|
||||
# we can't call it a failing test, so we just log it
|
||||
failure_lines() {
|
||||
local file="$1" label="$2"
|
||||
|
||||
[[ -f "$file" ]] || return 0
|
||||
|
||||
while IFS= read -r entry; do
|
||||
[[ -n "$entry" ]] || continue
|
||||
|
||||
local rest="${entry#*|}"
|
||||
local name="${entry%%|*}"
|
||||
local duration="${rest%%|*}"
|
||||
local reason="${rest#*|}"
|
||||
|
||||
if [[ "$reason" == "void" ]]; then
|
||||
printf '\n• `%s` (%s) _%s, driver never attached, the suite did not run_' \
|
||||
"$name" "$(fmt "$duration")" "$label"
|
||||
else
|
||||
printf '\n• `%s` (%s) _%s_' "$name" "$(fmt "$duration")" "$label"
|
||||
fi
|
||||
done < <(sed -n 's/^fail=//p' "$file")
|
||||
}
|
||||
|
||||
# Adding the results for the funds suites to the report too, so we know if we need to topup
|
||||
chain_lines() {
|
||||
local status_wanted="$1" icon="$2" file
|
||||
local seen=""
|
||||
|
||||
for file in *_summary.txt; do
|
||||
[[ -f "$file" ]] || continue
|
||||
|
||||
while IFS= read -r entry; do
|
||||
[[ -n "$entry" ]] || continue
|
||||
|
||||
local chain="${entry%%|*}"
|
||||
local rest="${entry#*|}"
|
||||
local status="${rest%%|*}"
|
||||
local detail="${rest#*|}"
|
||||
|
||||
[[ "$status" == "$status_wanted" ]] || continue
|
||||
[[ "$seen" == *"[$chain]"* ]] && continue
|
||||
seen="$seen[$chain]"
|
||||
|
||||
printf '\n%s *%s* _%s_' "$icon" "$chain" "$detail"
|
||||
done < <(sed -n 's/^chain=//p' "$file")
|
||||
done
|
||||
}
|
||||
|
||||
pass_names() {
|
||||
local file="$1" label="$2"
|
||||
|
||||
[[ -f "$file" ]] || return 0
|
||||
|
||||
printf '*%s* (%s)' "$label" "$(field "$file" passed)"
|
||||
|
||||
while IFS= read -r entry; do
|
||||
[[ -n "$entry" ]] || continue
|
||||
printf '\n• %s _%s_' "${entry%%|*}" "$(fmt "${entry##*|}")"
|
||||
done < <(sed -n 's/^pass=//p' "$file")
|
||||
}
|
||||
|
||||
tier0_failed=1
|
||||
tier1_failed=0
|
||||
total_passed=0
|
||||
|
||||
if [[ -f all_summary.txt ]]; then
|
||||
tier0_failed=$(field all_summary.txt failed)
|
||||
else
|
||||
[[ -f tier0_summary.txt ]] && tier0_failed=$(field tier0_summary.txt failed)
|
||||
[[ -f tier1_summary.txt ]] && tier1_failed=$(field tier1_summary.txt failed)
|
||||
fi
|
||||
|
||||
for file in tier0_summary.txt tier1_summary.txt; do
|
||||
[[ -f "$file" ]] || continue
|
||||
total_passed=$(( total_passed + $(field "$file" passed) ))
|
||||
done
|
||||
|
||||
if (( tier0_failed > 0 )); then
|
||||
headline=":x: Integration tests failed"
|
||||
elif (( tier1_failed > 0 )); then
|
||||
headline=":warning: Gate passed, tier1 has failures"
|
||||
else
|
||||
headline=":white_check_mark: Integration tests passed"
|
||||
fi
|
||||
|
||||
if (( tier0_failed > 0 )); then
|
||||
tier1_note="_skipped, tier0 failed_"
|
||||
else
|
||||
tier1_note="_did not run_"
|
||||
fi
|
||||
|
||||
where="<$REPO_URL/tree/$BRANCH|$BRANCH>"
|
||||
if [[ -n "$PR_NUMBER" ]]; then
|
||||
where="$where · <$REPO_URL/pull/$PR_NUMBER|#$PR_NUMBER ${PR_TITLE:-}>"
|
||||
fi
|
||||
|
||||
failures=$(printf '%s%s%s' \
|
||||
"$(failure_lines tier0_summary.txt tier0)" \
|
||||
"$(failure_lines tier1_summary.txt tier1)" \
|
||||
"$(failure_lines all_summary.txt suites)")
|
||||
|
||||
if [[ -f all_summary.txt ]]; then
|
||||
primary=$(tier_line all_summary.txt suites '')
|
||||
secondary=""
|
||||
else
|
||||
primary=$(tier_line tier0_summary.txt tier0 '_did not run_')
|
||||
secondary=$(tier_line tier1_summary.txt tier1 "$tier1_note")
|
||||
fi
|
||||
|
||||
chains=$(printf '%s%s%s%s' \
|
||||
"$(chain_lines ok ':white_check_mark:')" \
|
||||
"$(chain_lines empty ':moneybag:')" \
|
||||
"$(chain_lines waiting ':hourglass:')" \
|
||||
"$(chain_lines failed ':x:')")
|
||||
|
||||
needs_funding=$(chain_lines empty ':moneybag:')
|
||||
too_slow=$(chain_lines waiting ':hourglass:')
|
||||
|
||||
blocks=$(jq -n \
|
||||
--arg headline "$headline" \
|
||||
--arg where "$where" \
|
||||
--arg primary "$primary" \
|
||||
--arg secondary "$secondary" \
|
||||
--arg failures "$failures" \
|
||||
--arg chains "$chains" \
|
||||
--arg funding "$needs_funding" \
|
||||
--arg slow "$too_slow" \
|
||||
--arg defines "$(printf '%s' "$DART_DEFINES" | tr ';' ' ')" \
|
||||
--arg commit "${COMMIT:0:8}" \
|
||||
--arg actor "$ACTOR" \
|
||||
--arg repo "$REPO_URL" \
|
||||
--arg run "$RUN_URL" \
|
||||
'[
|
||||
{ type: "header", text: { type: "plain_text", text: $headline, emoji: true } },
|
||||
{ type: "section", text: { type: "mrkdwn", text: $where } },
|
||||
{ type: "section", fields: (
|
||||
[ { type: "mrkdwn", text: $primary } ]
|
||||
+ (if $secondary == "" then [] else
|
||||
[ { type: "mrkdwn", text: $secondary } ] end)
|
||||
) }
|
||||
]
|
||||
+ (if $failures == "" then [] else
|
||||
[ { type: "section", text: { type: "mrkdwn",
|
||||
text: ("*Did not pass*" + $failures) } } ]
|
||||
end)
|
||||
+ (if $chains == "" then [] else
|
||||
[ { type: "divider" },
|
||||
{ type: "section", text: { type: "mrkdwn",
|
||||
text: ("*Chains*" + $chains) } } ]
|
||||
end)
|
||||
+ (if $funding == "" then [] else
|
||||
[ { type: "context", elements: [ { type: "mrkdwn",
|
||||
text: ":moneybag: The chains above could not cover a send. Top those wallets up and re run the funds workflow, nothing there needs debugging :)." } ] } ]
|
||||
end)
|
||||
+ (if $slow == "" then [] else
|
||||
[ { type: "context", elements: [ { type: "mrkdwn",
|
||||
text: ":hourglass: Still rescanning when the clock ran out, so nothing was proven either way and the run is not red for them." } ] } ]
|
||||
end)
|
||||
+ [
|
||||
{ type: "context", elements: [
|
||||
{ type: "mrkdwn",
|
||||
text: ("<" + $repo + "/commit/" + $commit + "|" + $commit + "> · " + $actor
|
||||
+ (if $defines == "" then "" else " · `" + $defines + "`" end)) }
|
||||
] },
|
||||
{ type: "actions", elements: [
|
||||
{ type: "button", url: $run,
|
||||
text: { type: "plain_text", text: "View run", emoji: false } }
|
||||
] }
|
||||
]')
|
||||
|
||||
response=$(curl -sS -X POST https://slack.com/api/chat.postMessage \
|
||||
-H "Authorization: Bearer $SLACK_TOKEN" \
|
||||
-H "Content-type: application/json; charset=utf-8" \
|
||||
--data "$(jq -n --arg channel "$SLACK_CHANNEL" --arg text "$headline" \
|
||||
--argjson blocks "$blocks" \
|
||||
'{channel: $channel, text: $text, blocks: $blocks}')")
|
||||
|
||||
if [[ "$(jq -r '.ok' <<< "$response")" != "true" ]]; then
|
||||
error=$(jq -r '.error // "unknown"' <<< "$response")
|
||||
needed=$(jq -r '.needed // empty' <<< "$response")
|
||||
|
||||
if [[ -n "$needed" ]]; then
|
||||
echo "::warning::Slack rejected the report: $error, it wants the $needed scope"
|
||||
else
|
||||
echo "::warning::Slack rejected the report: $error"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
thread_ts=$(jq -r '.ts // empty' <<< "$response")
|
||||
|
||||
if [[ -z "$thread_ts" ]] || (( total_passed == 0 )); then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# So that the channel is not clutter (and uglyyyy), we put everything that passed in the thread
|
||||
# and the short version is the one that shows up in the channel
|
||||
passed=$(printf '%s\n\n%s' \
|
||||
"$(pass_names tier0_summary.txt tier0)" "$(pass_names tier1_summary.txt tier1)")
|
||||
|
||||
curl -sS -X POST https://slack.com/api/chat.postMessage \
|
||||
-H "Authorization: Bearer $SLACK_TOKEN" \
|
||||
-H "Content-type: application/json; charset=utf-8" \
|
||||
--data "$(jq -n --arg channel "$SLACK_CHANNEL" --arg ts "$thread_ts" --arg text "$passed" \
|
||||
'{channel: $channel, thread_ts: $ts, text: $text}')" > /dev/null
|
||||
@@ -22,8 +22,8 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
# Same prebuilt image as the build workflows (bundles Flutter 3.32.0).
|
||||
image: ghcr.io/cake-tech/cake_wallet:debian13-flutter3.32.0-ndkr28-go1.24.1-ruststablenightly
|
||||
# Same prebuilt image as the build workflows (bundles Flutter 3.41.9).
|
||||
image: ghcr.io/cake-tech/cake_wallet:debian13-flutter3.41.9-ndkr28-go1.24.1-ruststablenightly
|
||||
|
||||
steps:
|
||||
- name: Fix Actions HOME (writeable for ~/.cache)
|
||||
|
||||
@@ -157,6 +157,7 @@ lib/zcash/zcash.dart
|
||||
# scaffold first. PNGs remain build artifacts.
|
||||
# ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
|
||||
ios/Runner/Assets.xcassets/AppIcon.appiconset/*.png
|
||||
ios/AppIcon.icon/*
|
||||
|
||||
ios/Runner/Info.plist
|
||||
android/app/src/main/res/mipmap-*
|
||||
@@ -170,7 +171,6 @@ android/app/src/main/res/drawable/ic_launcher.png
|
||||
assets/new-ui/**/*.svg.vec
|
||||
|
||||
/pubspec.yaml
|
||||
/pubspec.lock
|
||||
/android/app.properties
|
||||
/android/app/src/main/AndroidManifest.xml
|
||||
|
||||
@@ -192,6 +192,7 @@ macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
|
||||
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
|
||||
macos/Runner/Configs/AppInfo.xcconfig
|
||||
macos/Runner.xcodeproj/project.pbxproj
|
||||
macos/AppIcon.icon/*
|
||||
|
||||
|
||||
integration_test/playground.dart
|
||||
@@ -247,3 +248,7 @@ __pycache__/
|
||||
|
||||
# Internal engineering notes (not for the public repo)
|
||||
docs/internal-notes.md
|
||||
*.salive
|
||||
android/.kotlin
|
||||
scripts/.cache
|
||||
pubspec.lock
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# docker buildx build --push --pull --platform linux/amd64,linux/arm64 . -f Dockerfile -t ghcr.io/cake-tech/cake_wallet:debian13-flutter3.32.0-ndkr28-go1.24.1-ruststablenightly
|
||||
# docker buildx build --push --pull --platform linux/amd64,linux/arm64 . -f Dockerfile -t ghcr.io/cake-tech/cake_wallet:debian13-flutter3.41.9-ndkr28-go1.24.1-ruststablenightly
|
||||
|
||||
# Heavily inspired by cirrusci images
|
||||
# https://github.com/cirruslabs/docker-images-android/blob/master/sdk/tools/Dockerfile
|
||||
@@ -15,7 +15,7 @@ LABEL org.opencontainers.image.source=https://github.com/cake-tech/cake_wallet
|
||||
ENV GOLANG_VERSION=1.24.1
|
||||
|
||||
# Pin Flutter version to latest known-working version
|
||||
ENV FLUTTER_VERSION=3.32.0
|
||||
ENV FLUTTER_VERSION=3.41.9
|
||||
|
||||
# Pin Android Studio, platform, and build tools versions to latest known-working version
|
||||
# Comes from https://developer.android.com/studio/#command-tools
|
||||
@@ -52,7 +52,7 @@ RUN set -o xtrace \
|
||||
# for x86 emulators
|
||||
libatk-bridge2.0-0 libgdk-pixbuf-xlib-2.0-0 libgtk-3-0 libnspr4 libnss3-dev libsqlite3-dev libxtst6 libxss1 lftp sqlite3 xxd \
|
||||
# Linux desktop dependencies
|
||||
clang cmake libgtk-3-dev ninja-build pkg-config libsecret-1-0 libsecret-1-dev gir1.2-secret-1 \
|
||||
clang lld cmake libgtk-3-dev ninja-build pkg-config libsecret-1-0 libsecret-1-dev gir1.2-secret-1 \
|
||||
# monero_c dependencies
|
||||
autoconf automake build-essential ccache gperf libtool llvm \
|
||||
# extra stuff for KVM
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
include: package:lints/recommended.yaml
|
||||
|
||||
|
||||
analyzer:
|
||||
@@ -8,6 +7,7 @@ analyzer:
|
||||
lib/**.g.dart,
|
||||
cw_core/lib/**.g.dart,
|
||||
cw_monero/lib/**.g.dart,
|
||||
cw_mweb/lib/**.g.dart,
|
||||
lib/generated/*.dart,
|
||||
cw_monero/ios/External/**,
|
||||
cw_shared_external/**,
|
||||
@@ -17,73 +17,124 @@ analyzer:
|
||||
strict-casts: true
|
||||
strict-raw-types: true
|
||||
|
||||
plugins:
|
||||
cw_custom_lints:
|
||||
path: cw_custom_lints
|
||||
|
||||
linter:
|
||||
rules:
|
||||
- cancel_subscriptions
|
||||
- always_declare_return_types
|
||||
- prefer_final_fields
|
||||
- empty_catches
|
||||
- always_put_control_body_on_new_line
|
||||
- always_put_required_named_parameters_first
|
||||
- always_use_package_imports
|
||||
- annotate_overrides
|
||||
- annotate_redeclares
|
||||
- avoid_empty_else
|
||||
- avoid_function_literals_in_foreach_calls
|
||||
- avoid_init_to_null
|
||||
- avoid_multiple_declarations_per_line
|
||||
- avoid_positional_boolean_parameters
|
||||
- avoid_relative_lib_imports
|
||||
- avoid_renaming_method_parameters
|
||||
- avoid_return_types_on_setters
|
||||
- avoid_returning_null_for_void
|
||||
- avoid_slow_async_io
|
||||
- avoid_types_as_parameter_names
|
||||
- avoid_types_on_closure_parameters
|
||||
- avoid_unnecessary_containers
|
||||
- avoid_unused_constructor_parameters
|
||||
- avoid_void_async
|
||||
- await_only_futures
|
||||
- valid_regexps
|
||||
- unrelated_type_equality_checks
|
||||
- camel_case_extensions
|
||||
- camel_case_types
|
||||
- cast_nullable_to_non_nullable
|
||||
- collection_methods_unrelated_type
|
||||
- constant_identifier_names
|
||||
- curly_braces_in_flow_control_structures
|
||||
- directives_ordering
|
||||
- empty_constructor_bodies
|
||||
- empty_statements
|
||||
- eol_at_end_of_file
|
||||
- flutter_style_todos
|
||||
- hash_and_equals
|
||||
- implicit_reopen
|
||||
- library_private_types_in_public_api
|
||||
- non_constant_identifier_names
|
||||
- only_throw_errors
|
||||
- package_names
|
||||
- prefer_asserts_with_message
|
||||
- prefer_conditional_assignment
|
||||
- prefer_const_constructors
|
||||
- prefer_const_constructors_in_immutables
|
||||
- prefer_const_declarations
|
||||
- prefer_constructors_over_static_methods
|
||||
- prefer_contains
|
||||
- prefer_double_quotes
|
||||
- prefer_expression_function_bodies
|
||||
- prefer_final_in_for_each
|
||||
- prefer_function_declarations_over_variables
|
||||
- prefer_if_null_operators
|
||||
- prefer_initializing_formals
|
||||
- prefer_inlined_adds
|
||||
- prefer_int_literals
|
||||
- prefer_is_empty
|
||||
- prefer_is_not_empty
|
||||
- prefer_is_not_operator
|
||||
- prefer_iterable_wheretype
|
||||
- prefer_null_aware_operators
|
||||
- prefer_spread_collections
|
||||
- prefer_typing_uninitialized_variables
|
||||
- recursive_getters
|
||||
- require_trailing_commas
|
||||
- sized_box_for_whitespace
|
||||
- sort_child_properties_last
|
||||
- sort_constructors_first
|
||||
- sort_unnamed_constructors_first
|
||||
- test_types_in_equals
|
||||
- throw_in_finally
|
||||
- control_flow_in_finally
|
||||
- unawaited_futures
|
||||
- unnecessary_async
|
||||
- unnecessary_await_in_return
|
||||
- unnecessary_const
|
||||
- unnecessary_constructor_name
|
||||
- unnecessary_lambdas
|
||||
- unnecessary_late
|
||||
- unnecessary_new
|
||||
- unnecessary_null_aware_assignments
|
||||
- unnecessary_null_checks
|
||||
- unnecessary_null_in_if_null_operators
|
||||
- unnecessary_nullable_for_final_variable_declarations
|
||||
- unnecessary_overrides
|
||||
- unnecessary_parenthesis
|
||||
- unnecessary_string_escapes
|
||||
- unnecessary_string_interpolations
|
||||
- unnecessary_this
|
||||
- unnecessary_to_list_in_spreads
|
||||
- unnecessary_underscores
|
||||
- unreachable_from_main
|
||||
- unrelated_type_equality_checks
|
||||
- use_build_context_synchronously
|
||||
- use_colored_box
|
||||
- use_full_hex_values_for_flutter_colors
|
||||
- use_function_type_syntax_for_parameters
|
||||
- use_is_even_rather_than_modulo
|
||||
- use_named_constants
|
||||
- use_null_aware_elements
|
||||
- use_raw_strings
|
||||
- use_rethrow_when_possible
|
||||
- use_string_buffers
|
||||
- use_super_parameters
|
||||
- use_truncating_division
|
||||
- valid_regexps
|
||||
- void_checks
|
||||
- prefer_final_locals
|
||||
- prefer_interpolation_to_compose_strings
|
||||
- null_closures
|
||||
- no_wildcard_variable_uses
|
||||
|
||||
|
||||
|
||||
|
||||
formatter:
|
||||
page_width: 100
|
||||
|
||||
|
||||
# analyzer:
|
||||
# strong-mode:
|
||||
# implicit-casts: false
|
||||
# implicit-dynamic: false
|
||||
# exclude: [build/**, lib/generated/*.dart, lib/**.g.dart, cw_monero/ios/External/**, cw_shared_external/**, shared_external/**]
|
||||
|
||||
# linter:
|
||||
# rules:
|
||||
# - always_declare_return_types
|
||||
# - annotate_overrides
|
||||
# - avoid_empty_else
|
||||
# - avoid_init_to_null
|
||||
# - avoid_return_types_on_setters
|
||||
# - await_only_futures
|
||||
# - camel_case_types
|
||||
# - cancel_subscriptions
|
||||
# - close_sinks
|
||||
# - comment_references
|
||||
# - constant_identifier_names
|
||||
# - control_flow_in_finally
|
||||
# - empty_catches
|
||||
# - empty_constructor_bodies
|
||||
# - empty_statements
|
||||
# - hash_and_equals
|
||||
# - invariant_booleans
|
||||
# - iterable_contains_unrelated_type
|
||||
# - library_names
|
||||
# - library_prefixes
|
||||
# - list_remove_unrelated_type
|
||||
# - literal_only_boolean_expressions
|
||||
# - non_constant_identifier_names
|
||||
# - one_member_abstracts
|
||||
# - only_throw_errors
|
||||
# - overridden_fields
|
||||
# - package_api_docs
|
||||
# - package_names
|
||||
# - package_prefixed_library_names
|
||||
# - parameter_assignments
|
||||
# - prefer_final_fields
|
||||
# - prefer_final_locals
|
||||
# - prefer_is_not_empty
|
||||
# - slash_for_doc_comments
|
||||
# - sort_constructors_first
|
||||
# - sort_unnamed_constructors_first
|
||||
# - test_types_in_equals
|
||||
# - throw_in_finally
|
||||
# - type_init_formals
|
||||
# - unawaited_futures
|
||||
# - unnecessary_getters_setters
|
||||
# - unrelated_type_equality_checks
|
||||
# - valid_regexps
|
||||
|
||||
@@ -60,7 +60,7 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId appProperties['id']
|
||||
minSdkVersion 24
|
||||
minSdkVersion 26
|
||||
targetSdkVersion 36
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
|
||||
@@ -90,7 +90,9 @@
|
||||
<data android:scheme="polygon" />
|
||||
<data android:scheme="polygon-wallet" />
|
||||
<data android:scheme="polygon_wallet" />
|
||||
<data android:scheme="solana" />
|
||||
<data android:scheme="solana-wallet" />
|
||||
<data android:scheme="solana_wallet" />
|
||||
<data android:scheme="tron" />
|
||||
<data android:scheme="tron-wallet" />
|
||||
<data android:scheme="tron_wallet" />
|
||||
@@ -115,6 +117,9 @@
|
||||
<data android:scheme="bsc" />
|
||||
<data android:scheme="bsc-wallet" />
|
||||
<data android:scheme="bsc_wallet" />
|
||||
<data android:scheme="robinhood" />
|
||||
<data android:scheme="robinhood-wallet" />
|
||||
<data android:scheme="robinhood_wallet" />
|
||||
<data android:scheme="zcash" />
|
||||
<data android:scheme="zcash-wallet" />
|
||||
<data android:scheme="lightning" />
|
||||
@@ -128,6 +133,14 @@
|
||||
<data android:scheme="nano-gpt" />
|
||||
</intent-filter>
|
||||
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
|
||||
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
|
||||
</intent-filter>
|
||||
|
||||
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
|
||||
android:resource="@xml/device_filter" />
|
||||
<meta-data android:name="flutter_deeplinking_enabled" android:value="false" />
|
||||
</activity>
|
||||
<meta-data
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<resources>
|
||||
<!-- BitBox02 Vendor ID: 0x03eb, Product ID: 0x2403 -->
|
||||
<usb-device vendor-id="1003" product-id="9219"/>
|
||||
|
||||
<!-- Trezor Devices -->
|
||||
<usb-device vendor-id="21324" product-id="1"/>
|
||||
<usb-device vendor-id="4617" product-id="21440"/>
|
||||
<usb-device vendor-id="4617" product-id="21441"/>
|
||||
</resources>
|
||||
@@ -7,4 +7,5 @@ org.gradle.workers.max=2
|
||||
android.enableR8=true
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
android.ndk.suppressMinSdkVersionError=21
|
||||
|
||||
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-all.zip
|
||||
|
||||
@@ -18,8 +18,8 @@ pluginManagement {
|
||||
|
||||
plugins {
|
||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||
id "com.android.application" version "8.7.1" apply false
|
||||
id "org.jetbrains.kotlin.android" version "2.0.21" apply false
|
||||
id "com.android.application" version "8.9.1" apply false
|
||||
id "org.jetbrains.kotlin.android" version "2.3.20" apply false
|
||||
id "com.google.gms.google-services" version "4.3.8" apply false
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
-
|
||||
label: "PublicNode"
|
||||
uri: arbitrum-one-rpc.publicnode.com
|
||||
is_default: true
|
||||
isDefault: true
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "dRPC"
|
||||
uri: arbitrum.drpc.org
|
||||
useSSL: true
|
||||
useSSL: true
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
uri: kaliumapi.appditto.com
|
||||
path: /api
|
||||
useSSL: true
|
||||
is_default: true
|
||||
isDefault: true
|
||||
isEnabledForAutoSwitching: true
|
||||
@@ -1,11 +1,14 @@
|
||||
-
|
||||
label: "LlamaNodes"
|
||||
uri: base.llamarpc.com
|
||||
useSSL: true
|
||||
-
|
||||
label: "PublicNode"
|
||||
uri: base-rpc.publicnode.com
|
||||
is_default: true
|
||||
isDefault: true
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "1RPC"
|
||||
uri: 1rpc.io/base
|
||||
useSSL: true
|
||||
useSSL: true
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
-
|
||||
label: "Stack Wallet"
|
||||
uri: bitcoincash.stackwallet.com:50002
|
||||
is_default: true
|
||||
isDefault: true
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Aftrek"
|
||||
uri: bch.aftrek.org:50002
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
|
||||
@@ -1,21 +1,27 @@
|
||||
-
|
||||
uri: electrum.blockstream.info:50002
|
||||
useSSL: true
|
||||
isDefault: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
uri: btc-electrum.cakewallet.com:50002
|
||||
useSSL: true
|
||||
isDefault: false
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
uri: electrs.cakewallet.com:50001
|
||||
label: "Cake Wallet Electrum"
|
||||
uri: btc-electrum.cakewallet.com:50002
|
||||
isOfficial: true
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Cake Wallet Electrs"
|
||||
uri: electrs.cakewallet.com:50001
|
||||
isOfficial: true
|
||||
-
|
||||
label: "Seth For Privacy"
|
||||
uri: fulcrum.sethforprivacy.com:50002
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Cake Wallet (Legacy)"
|
||||
uri: electrum.cakewallet.com:50002
|
||||
isOfficial: true
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
@@ -30,3 +36,8 @@
|
||||
uri: fortress.qtornado.com:443
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Cake Wallet (Tor)"
|
||||
uri: cakebtc5pihzt3byjclxfumiwvtxj72auarshrsvmaatmwmr7dj6zyid.onion:50001
|
||||
isOfficial: true
|
||||
useSSL: false
|
||||
|
||||
@@ -3,26 +3,33 @@
|
||||
useSSL: true
|
||||
isDefault: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "BNBChain"
|
||||
-
|
||||
uri: bsc-dataseed2.bnbchain.org
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "BNBChain #2"
|
||||
-
|
||||
uri: bsc-dataseed.nariox.org
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "Nariox"
|
||||
-
|
||||
uri: bsc-dataseed.defibit.io
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "DeFibit"
|
||||
-
|
||||
uri: bsc-dataseed.ninicoin.io
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "NiniCoin"
|
||||
-
|
||||
uri: bsc.nodereal.io
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "NodeReal"
|
||||
-
|
||||
uri: bsc-dataseed-public.bnbchain.org
|
||||
useSSL: true
|
||||
label: "BNBChain Public"
|
||||
@@ -1,8 +1,10 @@
|
||||
-
|
||||
uri: default-spv-nodes
|
||||
is_default: true
|
||||
isDefault: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "Decred"
|
||||
-
|
||||
uri: dcrd.sethforprivacy.com:9108
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "Seth For Privacy"
|
||||
@@ -1,13 +1,16 @@
|
||||
-
|
||||
label: "Stack Wallet"
|
||||
uri: dogecoin.stackwallet.com:50022
|
||||
is_default: true
|
||||
isDefault: true
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Aftrek"
|
||||
uri: doge.aftrek.org:50002
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Cipig"
|
||||
uri: electrum1.cipig.net:20060
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
|
||||
@@ -3,18 +3,21 @@
|
||||
useSSL: true
|
||||
isDefault: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "PublicNode"
|
||||
-
|
||||
uri: eth.llamarpc.com
|
||||
useSSL: true
|
||||
label: "LlamaNodes"
|
||||
-
|
||||
uri: rpc.flashbots.net
|
||||
useSSL: true
|
||||
label: "Flashbots"
|
||||
-
|
||||
uri: eth-mainnet.public.blastapi.io
|
||||
useSSL: true
|
||||
label: "Blast"
|
||||
-
|
||||
uri: eth.nownodes.io
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
uri: ethereum.publicnode.com
|
||||
label: "NOWNodes"
|
||||
@@ -1,4 +1,4 @@
|
||||
-
|
||||
uri: nodes.havenprotocol.org:443
|
||||
useSSL: true
|
||||
is_default: true
|
||||
isDefault: true
|
||||
@@ -1,3 +0,0 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16.5 2C17.8807 2 19 3.11929 19 4.5V5C19.2761 5 19.5 5.22386 19.5 5.5V8C19.5 8.24171 19.3286 8.44371 19.1006 8.49023L19 8.5V19.5C19 20.8807 17.8807 22 16.5 22H7.5C6.11929 22 5 20.8807 5 19.5V4.5C5 3.11929 6.11929 2 7.5 2H16.5ZM14.5 19C13.9477 19 13.5 19.4477 13.5 20C13.5 20.5523 13.9477 21 14.5 21H16.5C17.0523 21 17.5 20.5523 17.5 20C17.5 19.4477 17.0523 19 16.5 19H14.5ZM7.5 3.5C6.94772 3.5 6.5 3.94772 6.5 4.5V16.5C6.5 17.0523 6.94772 17.5 7.5 17.5H16.5C17.0523 17.5 17.5 17.0523 17.5 16.5V4.5C17.5 3.94772 17.0523 3.5 16.5 3.5H7.5Z" fill="white"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 665 B |
@@ -1,3 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 32 32">
|
||||
<path fill="#000" fill-rule="evenodd" d="M7 6a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4v12.191a9 9 0 0 1-1.204 4.498l-3.353 5.81A3 3 0 0 1 17.845 30h-3.69a3 3 0 0 1-2.598-1.5l-3.353-5.811A9 9 0 0 1 7 18.19zm4-2a2 2 0 0 0-2 2v12.191a7 7 0 0 0 .937 3.498l3.352 5.81a1 1 0 0 0 .866.501h3.69a1 1 0 0 0 .866-.5l3.352-5.81a7 7 0 0 0 .937-3.5V6a2 2 0 0 0-2-2z" clip-rule="evenodd"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 447 B |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
@@ -1 +0,0 @@
|
||||
{"images":[{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@3x.png","scale":"3x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@3x.png","scale":"3x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@3x.png","scale":"3x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@1x.png","scale":"1x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@3x.png","scale":"3x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@1x.png","scale":"1x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@1x.png","scale":"1x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@1x.png","scale":"1x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@2x.png","scale":"2x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@1x.png","scale":"1x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@2x.png","scale":"2x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@1x.png","scale":"1x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@2x.png","scale":"2x"},{"size":"83.5x83.5","idiom":"ipad","filename":"Icon-App-83.5x83.5@2x.png","scale":"2x"},{"size":"1024x1024","idiom":"ios-marketing","filename":"Icon-App-1024x1024@1x.png","scale":"1x"}],"info":{"version":1,"author":"xcode"}}
|
||||
|
Before Width: | Height: | Size: 225 KiB |
|
Before Width: | Height: | Size: 953 B |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 7.8 KiB |
@@ -0,0 +1,25 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="1024" height="1024" fill="black"/>
|
||||
<g clip-path="url(#clip0_3373_1543)">
|
||||
<path d="M760.715 378.625C802.842 378.625 837.031 412.781 837.031 454.937V760.812C837.031 802.906 802.905 837.031 760.809 837.031H263.222C221.127 837.031 187 802.906 187 760.812V454.937C187 412.812 221.158 378.625 263.316 378.625H265.066C283.005 379.062 300.255 385.75 313.756 397.656L457.513 524.25C473.076 537.969 492.546 544.812 512.016 544.812C531.485 544.812 550.924 537.937 566.518 524.25L710.275 397.656C724.213 385.375 742.12 378.625 760.715 378.625Z" fill="url(#paint0_linear_3373_1543)"/>
|
||||
<path d="M760.809 187C802.905 187 837.031 221.125 837.031 263.219V278.375C817.155 259.531 790.31 247.938 760.809 247.938H263.222C233.721 247.938 206.876 259.5 187 278.344V263.219C187 221.125 221.127 187 263.222 187H760.809Z" fill="url(#paint1_linear_3373_1543)"/>
|
||||
<path d="M760.809 282.593H263.222C221.127 282.593 187.031 316.718 187.031 358.812V374.406C206.907 355.531 233.784 343.937 263.316 343.937C289.505 343.937 314.756 353.156 334.757 369.968L481.264 498.937C489.858 506.187 500.765 510.156 512.016 510.156C523.266 510.156 534.173 506.187 542.767 498.937L689.274 369.968C709.275 353.156 734.526 343.937 760.715 343.937C790.248 343.937 817.124 355.531 837 374.406V358.812C837 316.718 802.905 282.593 760.809 282.593Z" fill="url(#paint2_linear_3373_1543)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_3373_1543" x1="984.847" y1="379" x2="984.847" y2="847" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="0.961538" stop-color="#999999"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_3373_1543" x1="837" y1="275.601" x2="803.874" y2="418.551" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#D9D9D9"/>
|
||||
<stop offset="1" stop-color="#999999"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_3373_1543" x1="512" y1="283" x2="512" y2="510" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#CCCCCC"/>
|
||||
<stop offset="1" stop-color="#999999"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_3373_1543">
|
||||
<rect width="650" height="650" fill="white" transform="translate(187 187)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,51 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_3373_1525)">
|
||||
<path d="M760.715 378.625C802.842 378.625 837.031 412.781 837.031 454.937V760.812C837.031 802.906 802.905 837.031 760.809 837.031H263.222C221.127 837.031 187 802.906 187 760.812V454.937C187 412.812 221.158 378.625 263.316 378.625H265.066C283.005 379.063 300.255 385.75 313.756 397.656L457.513 524.25C473.076 537.969 492.546 544.813 512.016 544.813C531.485 544.813 550.924 537.937 566.518 524.25L710.275 397.656C724.213 385.375 742.12 378.625 760.715 378.625Z" fill="url(#paint0_linear_3373_1525)"/>
|
||||
<path d="M760.809 187C802.905 187 837.031 221.125 837.031 263.219V278.375C817.155 259.531 790.31 247.938 760.809 247.938H263.222C233.721 247.938 206.876 259.5 187 278.344V263.219C187 221.125 221.127 187 263.222 187H760.809Z" fill="url(#paint1_linear_3373_1525)"/>
|
||||
<path d="M760.809 282.593H263.222C221.127 282.593 187.031 316.718 187.031 358.812V374.405C206.907 355.53 233.784 343.937 263.316 343.937C289.505 343.937 314.756 353.155 334.757 369.968L481.264 498.937C489.858 506.187 500.765 510.155 512.016 510.155C523.266 510.155 534.173 506.187 542.767 498.937L689.274 369.968C709.275 353.155 734.526 343.937 760.715 343.937C790.248 343.937 817.124 355.53 837 374.405V358.812C837 316.718 802.905 282.593 760.809 282.593Z" fill="url(#paint2_linear_3373_1525)"/>
|
||||
</g>
|
||||
<g clip-path="url(#clip1_3373_1525)">
|
||||
<path d="M760.715 378.625C802.842 378.625 837.031 412.781 837.031 454.937V760.812C837.031 802.906 802.905 837.031 760.809 837.031H263.222C221.127 837.031 187 802.906 187 760.812V454.937C187 412.812 221.158 378.625 263.316 378.625H265.066C283.005 379.062 300.255 385.75 313.756 397.656L457.513 524.25C473.076 537.969 492.546 544.812 512.016 544.812C531.485 544.812 550.924 537.937 566.518 524.25L710.275 397.656C724.213 385.375 742.12 378.625 760.715 378.625Z" fill="url(#paint3_linear_3373_1525)"/>
|
||||
<path d="M760.809 187C802.905 187 837.031 221.125 837.031 263.219V278.375C817.155 259.531 790.31 247.938 760.809 247.938H263.222C233.721 247.938 206.876 259.5 187 278.344V263.219C187 221.125 221.127 187 263.222 187H760.809Z" fill="url(#paint4_linear_3373_1525)"/>
|
||||
<path d="M760.809 187C802.905 187 837.031 221.125 837.031 263.219V278.375C817.155 259.531 790.31 247.938 760.809 247.938H263.222C233.721 247.938 206.876 259.5 187 278.344V263.219C187 221.125 221.127 187 263.222 187H760.809Z" fill="url(#paint5_linear_3373_1525)"/>
|
||||
<path d="M760.809 282.593H263.222C221.127 282.593 187.031 316.718 187.031 358.812V374.406C206.907 355.531 233.784 343.937 263.316 343.937C289.505 343.937 314.756 353.156 334.757 369.968L481.264 498.937C489.858 506.187 500.765 510.156 512.016 510.156C523.266 510.156 534.173 506.187 542.767 498.937L689.274 369.968C709.275 353.156 734.526 343.937 760.715 343.937C790.248 343.937 817.124 355.531 837 374.406V358.812C837 316.718 802.905 282.593 760.809 282.593Z" fill="url(#paint6_linear_3373_1525)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_3373_1525" x1="512.016" y1="378.625" x2="512.016" y2="837.031" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.00646752" stop-color="#403649"/>
|
||||
<stop offset="1" stop-color="#312938"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_3373_1525" x1="496.415" y1="186.913" x2="487.404" y2="266.57" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#61C5FF"/>
|
||||
<stop offset="0.924264" stop-color="#2A92FA"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_3373_1525" x1="512.016" y1="282.593" x2="512.016" y2="510.155" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF7D38"/>
|
||||
<stop offset="0.612828" stop-color="#FE6412"/>
|
||||
<stop offset="1" stop-color="#F25400"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_3373_1525" x1="669.083" y1="378.75" x2="669.083" y2="837" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.0378628" stop-color="#F9F9F9"/>
|
||||
<stop offset="0.961538" stop-color="#B5AEBB"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_3373_1525" x1="496.415" y1="186.913" x2="487.404" y2="266.57" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#61C5FF"/>
|
||||
<stop offset="0.924264" stop-color="#2A92FA"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_3373_1525" x1="837" y1="275.601" x2="803.874" y2="418.551" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#61C5FF"/>
|
||||
<stop offset="1" stop-color="#369AFF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_3373_1525" x1="504.687" y1="293.167" x2="512" y2="535.021" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF7B34"/>
|
||||
<stop offset="0.578219" stop-color="#FF630F"/>
|
||||
<stop offset="1" stop-color="#FF3B0F"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_3373_1525">
|
||||
<rect width="650" height="650" fill="white" transform="translate(187 187)"/>
|
||||
</clipPath>
|
||||
<clipPath id="clip1_3373_1525">
|
||||
<rect width="650" height="650" fill="white" transform="translate(187 187)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.8 KiB |
@@ -0,0 +1,25 @@
|
||||
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_3163_103)">
|
||||
<path d="M760.715 378.625C802.842 378.625 837.031 412.781 837.031 454.937V760.812C837.031 802.906 802.905 837.031 760.809 837.031H263.222C221.127 837.031 187 802.906 187 760.812V454.937C187 412.812 221.158 378.625 263.316 378.625H265.066C283.005 379.062 300.255 385.75 313.756 397.656L457.513 524.25C473.076 537.969 492.546 544.812 512.016 544.812C531.485 544.812 550.924 537.938 566.518 524.25L710.275 397.656C724.213 385.375 742.12 378.625 760.715 378.625Z" fill="url(#paint0_linear_3163_103)"/>
|
||||
<path d="M760.809 187C802.905 187 837.031 221.125 837.031 263.219V278.375C817.155 259.531 790.31 247.938 760.809 247.938H263.222C233.721 247.938 206.876 259.5 187 278.344V263.219C187 221.125 221.127 187 263.222 187H760.809Z" fill="url(#paint1_linear_3163_103)"/>
|
||||
<path d="M760.809 282.593H263.222C221.127 282.593 187.031 316.718 187.031 358.812V374.405C206.907 355.53 233.784 343.937 263.316 343.937C289.505 343.937 314.756 353.155 334.757 369.968L481.264 498.937C489.858 506.187 500.765 510.155 512.016 510.155C523.266 510.155 534.173 506.187 542.767 498.937L689.274 369.968C709.275 353.155 734.526 343.937 760.715 343.937C790.248 343.937 817.124 355.53 837 374.405V358.812C837 316.718 802.905 282.593 760.809 282.593Z" fill="url(#paint2_linear_3163_103)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_3163_103" x1="512.016" y1="378.625" x2="512.016" y2="837.031" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.00646752" stop-color="#403649"/>
|
||||
<stop offset="1" stop-color="#312938"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_3163_103" x1="496.415" y1="186.913" x2="487.404" y2="266.57" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#61C5FF"/>
|
||||
<stop offset="0.924264" stop-color="#2A92FA"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_3163_103" x1="512.016" y1="282.593" x2="512.016" y2="510.155" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF7D38"/>
|
||||
<stop offset="0.612828" stop-color="#FE6412"/>
|
||||
<stop offset="1" stop-color="#F25400"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_3163_103">
|
||||
<rect width="650" height="650" fill="white" transform="translate(187 187)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"fill" : {
|
||||
"linear-gradient" : [
|
||||
"display-p3:1.00000,1.00000,1.00000,1.00000",
|
||||
"srgb:0.93725,0.93725,0.97255,1.00000"
|
||||
],
|
||||
"orientation" : {
|
||||
"start" : {
|
||||
"x" : 0.5,
|
||||
"y" : 0
|
||||
},
|
||||
"stop" : {
|
||||
"x" : 0.5,
|
||||
"y" : 0.7
|
||||
}
|
||||
}
|
||||
},
|
||||
"groups" : [
|
||||
{
|
||||
"layers" : [
|
||||
{
|
||||
"glass" : false,
|
||||
"image-name-specializations" : [
|
||||
{
|
||||
"value" : "monerocom-icon-app.svg"
|
||||
},
|
||||
{
|
||||
"appearance" : "dark",
|
||||
"value" : "monerocom-icon-app-dark.svg"
|
||||
},
|
||||
{
|
||||
"appearance" : "tinted",
|
||||
"value" : "monero-tinted.svg"
|
||||
}
|
||||
],
|
||||
"name" : "monerocom-icon-app-dark"
|
||||
}
|
||||
],
|
||||
"shadow" : {
|
||||
"kind" : "neutral",
|
||||
"opacity" : 0.5
|
||||
},
|
||||
"translucency" : {
|
||||
"enabled" : true,
|
||||
"value" : 0.5
|
||||
}
|
||||
}
|
||||
],
|
||||
"supported-platforms" : {
|
||||
"squares" : "shared"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<svg width="650" height="650" viewBox="187 187 650 650" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_3163_103)">
|
||||
<path d="M760.715 378.625C802.842 378.625 837.031 412.781 837.031 454.937V760.812C837.031 802.906 802.905 837.031 760.809 837.031H263.222C221.127 837.031 187 802.906 187 760.812V454.937C187 412.812 221.158 378.625 263.316 378.625H265.066C283.005 379.062 300.255 385.75 313.756 397.656L457.513 524.25C473.076 537.969 492.546 544.812 512.016 544.812C531.485 544.812 550.924 537.938 566.518 524.25L710.275 397.656C724.213 385.375 742.12 378.625 760.715 378.625Z" fill="url(#paint0_linear_3163_103)"/>
|
||||
<path d="M760.809 187C802.905 187 837.031 221.125 837.031 263.219V278.375C817.155 259.531 790.31 247.938 760.809 247.938H263.222C233.721 247.938 206.876 259.5 187 278.344V263.219C187 221.125 221.127 187 263.222 187H760.809Z" fill="url(#paint1_linear_3163_103)"/>
|
||||
<path d="M760.809 282.593H263.222C221.127 282.593 187.031 316.718 187.031 358.812V374.405C206.907 355.53 233.784 343.937 263.316 343.937C289.505 343.937 314.756 353.155 334.757 369.968L481.264 498.937C489.858 506.187 500.765 510.155 512.016 510.155C523.266 510.155 534.173 506.187 542.767 498.937L689.274 369.968C709.275 353.155 734.526 343.937 760.715 343.937C790.248 343.937 817.124 355.53 837 374.405V358.812C837 316.718 802.905 282.593 760.809 282.593Z" fill="url(#paint2_linear_3163_103)"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_3163_103" x1="512.016" y1="378.625" x2="512.016" y2="837.031" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.00646752" stop-color="#403649"/>
|
||||
<stop offset="1" stop-color="#312938"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_3163_103" x1="496.415" y1="186.913" x2="487.404" y2="266.57" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#61C5FF"/>
|
||||
<stop offset="0.924264" stop-color="#2A92FA"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_3163_103" x1="512.016" y1="282.593" x2="512.016" y2="510.155" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF7D38"/>
|
||||
<stop offset="0.612828" stop-color="#FE6412"/>
|
||||
<stop offset="1" stop-color="#F25400"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_3163_103">
|
||||
<rect width="650" height="650" fill="white" transform="translate(187 187)"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 76 KiB |
@@ -0,0 +1,20 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" viewBox="0 0 250 250" fill="none">
|
||||
<g clip-path="url(#clip0_10809_45063)">
|
||||
<g>
|
||||
<path d="M0 71.1111C0 46.2199 0 33.7743 4.84415 24.2671C9.10519 15.9043 15.9043 9.10519 24.2671 4.84415C33.7743 0 46.2199 0 71.1111 0H178.889C203.78 0 216.226 0 225.733 4.84415C234.096 9.10519 240.895 15.9043 245.156 24.2671C250 33.7743 250 46.2199 250 71.1111V178.889C250 203.78 250 216.226 245.156 225.733C240.895 234.096 234.096 240.895 225.733 245.156C216.226 250 203.78 250 178.889 250H71.1111C46.2199 250 33.7743 250 24.2671 245.156C15.9043 240.895 9.10519 234.096 4.84415 225.733C0 216.226 0 203.78 0 178.889V71.1111Z" fill="white" />
|
||||
<path d="M178.89 238.889V250H71.11V238.889H178.89ZM238.889 178.89V71.11C238.889 58.4817 238.879 49.6759 238.319 42.8223C237.77 36.1003 236.744 32.2389 235.254 29.3132C232.058 23.0411 226.959 17.9419 220.687 14.7461C217.761 13.2555 213.9 12.2302 207.178 11.6808C200.324 11.1208 191.518 11.1111 178.89 11.1111H71.11C58.4817 11.1111 49.6759 11.1208 42.8223 11.6808C36.1003 12.2302 32.2389 13.2555 29.3132 14.7461C23.0411 17.9419 17.9419 23.0411 14.7461 29.3132C13.2555 32.2389 12.2302 36.1003 11.6808 42.8223C11.1208 49.6759 11.1111 58.4817 11.1111 71.11V178.89C11.1111 191.518 11.1208 200.324 11.6808 207.178C12.2302 213.9 13.2555 217.761 14.7461 220.687C17.9419 226.959 23.0411 232.058 29.3132 235.254C32.2389 236.744 36.1003 237.77 42.8223 238.319C49.6759 238.879 58.4817 238.889 71.11 238.889V250C47.7738 250 35.3773 249.999 26.0851 246.007L24.2676 245.155C16.4283 241.161 9.96351 234.936 5.67491 227.284L4.84483 225.732C0.606184 217.413 0.0770651 206.845 0.0108507 187.657L0 178.89V71.11C9.61996e-10 47.7738 0.000910626 35.3773 3.99306 26.0851L4.84483 24.2676C8.83916 16.4283 15.0637 9.96351 22.7159 5.67491L24.2676 4.84483C33.7746 0.000808636 46.2196 1.02606e-09 71.11 0H178.89L187.657 0.0108507C206.845 0.0770651 217.413 0.606184 225.732 4.84483C234.095 9.10587 240.894 15.9048 245.155 24.2676C249.999 33.7746 250 46.2196 250 71.11V178.89L249.989 187.657C249.923 206.845 249.394 217.413 245.155 225.732C240.894 234.095 234.095 240.894 225.732 245.155C217.413 249.394 206.845 249.923 187.657 249.989L178.89 250V238.889C191.518 238.889 200.324 238.879 207.178 238.319C213.9 237.77 217.761 236.744 220.687 235.254C226.959 232.058 232.058 226.959 235.254 220.687C236.744 217.761 237.77 213.9 238.319 207.178C238.879 200.324 238.889 191.518 238.889 178.89Z" fill="black" />
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path d="M141.616 72.2304C142.819 72.2304 143.181 72.9527 142.338 73.9158C121.873 96.5471 89.2506 134.346 59.2763 210.666C59.0356 211.268 58.3132 211.629 57.591 211.629H53.6183C52.7758 211.629 52.4145 211.124 52.6552 210.185C56.6277 195.499 62.0455 179.247 70.5924 155.292V122.067C70.5924 115.687 71.5556 111.233 75.4077 106.418L101.65 73.9158C102.577 72.7601 103.697 72.2304 105.021 72.2304H141.616Z" fill="black" />
|
||||
<path d="M148.839 81.3795C149.681 80.4169 150.524 80.8984 150.524 82.1018V128.087C150.524 128.689 150.404 129.532 150.042 130.254L133.309 157.821C131.263 161.191 128.88 162.901 124.643 164.201L87.0839 175.757C86.0005 176.118 85.4226 175.324 85.8801 174.433C104.057 138.921 123.679 109.428 148.839 81.3795Z" fill="black" />
|
||||
<path d="M142.699 34.7921C154.496 30.2177 180.017 30.4586 185.675 36.4775C192.055 43.2187 192.898 59.4701 191.453 70.0635C190.37 77.2862 189.166 78.8517 185.193 84.028L160.757 115.928C160.034 117.011 159.071 116.65 159.071 115.446V69.7023C159.071 65.9706 156.904 63.8035 153.172 63.8035H112.604C111.401 63.8033 111.039 62.9607 111.882 62.1182C118.743 54.8954 125.967 47.5525 136.801 38.2833C137.885 37.3563 140.244 35.7431 142.699 34.7921Z" fill="black" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_10809_45063">
|
||||
<rect width="250" height="250" fill="white" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" viewBox="0 0 250 250" fill="none">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M149.564 62.0033C151.096 62.0033 151.558 62.9194 150.488 64.1442C124.434 92.9567 82.9033 141.085 44.742 238.251C44.4354 239.017 43.5073 239.482 42.5877 239.482H37.5299C36.4611 239.479 36.0063 238.828 36.3123 237.635C41.3697 218.938 48.2585 198.246 59.1393 167.749V125.453C59.1393 117.331 60.3767 111.66 65.281 105.53L98.6919 64.1442C99.8704 62.6777 101.291 62.0042 102.974 62.0033H149.564Z" fill="white" />
|
||||
<path d="M158.757 73.6443C159.829 72.4195 160.91 73.037 160.911 74.5675V133.12C160.91 133.886 160.754 134.959 160.296 135.877L138.994 170.974C136.389 175.263 133.349 177.441 127.955 179.096L80.1466 193.801C78.7673 194.261 78.0255 193.249 78.6079 192.115C101.749 146.905 126.727 109.353 158.757 73.6443Z" fill="white" />
|
||||
<path d="M150.943 14.3421C165.96 8.51918 198.445 8.82347 205.655 16.483C213.778 25.0655 214.854 45.7602 213.015 59.2469C211.636 68.4366 210.106 70.4318 205.053 77.0162L173.93 117.639C173.011 119.011 171.79 118.553 171.789 117.024V58.7786C171.787 54.0315 169.031 51.273 164.283 51.2722H112.634C111.103 51.2722 110.641 50.2033 111.711 49.1313C120.447 39.9361 129.644 30.5848 143.436 18.7844C144.815 17.605 147.818 15.5531 150.943 14.3421Z" fill="white" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -1,9 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="256" height="256" viewBox="0 0 256 256" xml:space="preserve">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="256" height="256" viewBox="0 0 256 256" xml:space="preserve">
|
||||
|
||||
<defs>
|
||||
</defs>
|
||||
<g style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: none; fill-rule: nonzero; opacity: 1;" transform="translate(1.4065934065934016 1.4065934065934016) scale(2.81 2.81)" >
|
||||
<circle cx="45" cy="45" r="45" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(127,33,99); fill-rule: nonzero; opacity: 1;" transform=" matrix(1 0 0 1 0 0) "/>
|
||||
<rect x="0" y="0" width="90" height="90" rx="10" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(127,33,99); fill-rule: nonzero; opacity: 1;" transform=" matrix(1 0 0 1 0 0) "/>
|
||||
<polygon points="69.59,36.9 69.59,54.86 74.5,54.86 74.5,36.02 " style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(249,249,249); fill-rule: nonzero; opacity: 1;" transform=" matrix(1 0 0 1 0 0) "/>
|
||||
<polygon points="62.42,36.9 67.33,36.02 67.33,54.87 62.42,54.87 " style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(249,249,249); fill-rule: nonzero; opacity: 1;" transform=" matrix(1 0 0 1 0 0) "/>
|
||||
<rect x="55.43" y="41.08" rx="0" ry="0" width="4.91" height="13.78" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(249,249,249); fill-rule: nonzero; opacity: 1;" transform=" matrix(1 0 0 1 0 0) "/>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 134 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
@@ -1,99 +0,0 @@
|
||||
<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_14800_609868)">
|
||||
<g opacity="0.5">
|
||||
<path d="M65.6689 41.3975C61.2164 59.2548 43.128 70.1225 25.2667 65.6694C7.41273 61.2173 -3.45614 43.1298 0.998503 25.2735C5.44898 7.41416 23.5374 -3.45459 41.3934 0.997495C59.2537 5.44958 70.1215 23.5392 65.6689 41.3975Z" fill="url(#paint0_linear_14800_609868)"/>
|
||||
<path d="M65.6689 41.3975C61.2164 59.2548 43.128 70.1225 25.2667 65.6694C7.41273 61.2173 -3.45614 43.1298 0.998503 25.2735C5.44898 7.41416 23.5374 -3.45459 41.3934 0.997495C59.2537 5.44958 70.1215 23.5392 65.6689 41.3975Z" fill="url(#paint1_linear_14800_609868)"/>
|
||||
<path d="M0.998503 25.2735C5.44902 7.41421 23.5374 -3.45458 41.3934 0.997489C59.2536 5.44957 70.1214 23.5392 65.669 41.3975L65.5622 41.8149C60.9703 59.2852 43.2701 69.9194 25.6853 65.7709L25.2667 65.6693C7.41273 61.2173 -3.45614 43.1298 0.998503 25.2735ZM41.0708 2.29124C23.9295 -1.9826 6.56484 8.45112 2.29239 25.5959V25.5964C-1.98393 42.7381 8.44993 60.1016 25.5892 64.3756C42.7359 68.6506 60.1007 58.2178 64.3751 41.0751C68.6495 23.9311 58.2162 6.56514 41.0708 2.29124Z" fill="url(#paint2_linear_14800_609868)"/>
|
||||
<path d="M0.998503 25.2735C5.44902 7.41421 23.5374 -3.45458 41.3934 0.997489C59.2536 5.44957 70.1214 23.5392 65.669 41.3975L65.5622 41.8149C60.9703 59.2852 43.2701 69.9194 25.6853 65.7709L25.2667 65.6693C7.41273 61.2173 -3.45614 43.1298 0.998503 25.2735ZM41.0708 2.29124C23.9295 -1.9826 6.56484 8.45112 2.29239 25.5959V25.5964C-1.98393 42.7381 8.44993 60.1016 25.5892 64.3756C42.7359 68.6506 60.1007 58.2178 64.3751 41.0751C68.6495 23.9311 58.2162 6.56514 41.0708 2.29124Z" fill="url(#paint3_linear_14800_609868)"/>
|
||||
<path d="M0.998503 25.2735C5.44902 7.41421 23.5374 -3.45458 41.3934 0.997489C59.2536 5.44957 70.1214 23.5392 65.669 41.3975L65.5622 41.8149C60.9703 59.2852 43.2701 69.9194 25.6853 65.7709L25.2667 65.6693C7.41273 61.2173 -3.45614 43.1298 0.998503 25.2735ZM41.0708 2.29124C23.9295 -1.9826 6.56484 8.45112 2.29239 25.5959V25.5964C-1.98393 42.7381 8.44993 60.1016 25.5892 64.3756C42.7359 68.6506 60.1007 58.2178 64.3751 41.0751C68.6495 23.9311 58.2162 6.56514 41.0708 2.29124Z" fill="url(#paint4_linear_14800_609868)"/>
|
||||
<path d="M48.0289 30.1837C48.6924 25.7482 45.3154 23.3639 40.6977 21.7732L42.1956 15.7649L38.5383 14.8535L37.0799 20.7035C36.1185 20.4639 35.131 20.2378 34.1497 20.0139L35.6185 14.1253L31.9633 13.2139L30.4643 19.2201C29.6685 19.0389 28.8872 18.8597 28.1289 18.6712L28.1331 18.6524L23.0893 17.393L22.1164 21.2993C22.1164 21.2993 24.8299 21.9212 24.7727 21.9597C26.2539 22.3295 26.5216 23.3097 26.4768 24.0868L24.7706 30.9316C24.8727 30.9576 25.0049 30.9951 25.1508 31.0534C25.0289 31.0232 24.8987 30.9899 24.7643 30.9576L22.3727 40.5462C22.1914 40.9962 21.732 41.6712 20.6966 41.4149C20.7331 41.468 18.0383 40.7514 18.0383 40.7514L16.2227 44.9378L20.982 46.1243C21.8674 46.3462 22.7352 46.5784 23.5893 46.7972L22.0758 52.8743L25.7289 53.7857L27.2279 47.7732C28.2258 48.0441 29.1945 48.2941 30.1424 48.5295L28.6487 54.5139L32.306 55.4253L33.8195 49.3597C40.056 50.5399 44.7456 50.0639 46.7195 44.4232C48.3102 39.8816 46.6404 37.2618 43.3591 35.5534C45.7487 35.0024 47.5487 33.4305 48.0289 30.1837ZM39.6727 41.9014C38.5424 46.443 30.8956 43.9878 28.4164 43.3722L30.4247 35.3212C32.9039 35.9399 40.8539 37.1649 39.6727 41.9014ZM40.8039 30.118C39.7727 34.2493 33.4081 32.1503 31.3435 31.6357L33.1643 24.3337C35.2289 24.8482 41.8779 25.8087 40.8039 30.118Z" fill="url(#paint5_linear_14800_609868)"/>
|
||||
<path d="M48.0289 28.5836C48.6924 24.1481 45.3154 21.7638 40.6977 20.1731L42.1956 14.1648L38.5383 13.2534L37.0799 19.1034C36.1185 18.8638 35.131 18.6377 34.1497 18.4138L35.6185 12.5252L31.9633 11.6138L30.4643 17.62C29.6685 17.4388 28.8872 17.2596 28.1289 17.0711L28.1331 17.0523L23.0893 15.7929L22.1164 19.6992C22.1164 19.6992 24.8299 20.3211 24.7727 20.3596C26.2539 20.7294 26.5216 21.7096 26.4768 22.4867L24.7706 29.3315C24.8727 29.3575 25.0049 29.395 25.1508 29.4534C25.0289 29.4231 24.8987 29.3898 24.7643 29.3575L22.3727 38.9461C22.1914 39.3961 21.732 40.0711 20.6966 39.8148C20.7331 39.8679 18.0383 39.1513 18.0383 39.1513L16.2227 43.3377L20.982 44.5242C21.8674 44.7461 22.7352 44.9784 23.5893 45.1971L22.0758 51.2742L25.7289 52.1856L27.2279 46.1731C28.2258 46.444 29.1945 46.694 30.1424 46.9294L28.6487 52.9138L32.306 53.8252L33.8195 47.7596C40.056 48.9398 44.7456 48.4638 46.7195 42.8231C48.3102 38.2815 46.6404 35.6617 43.3591 33.9534C45.7487 33.4023 47.5487 31.8304 48.0289 28.5836ZM39.6727 40.3013C38.5424 44.8429 30.8956 42.3877 28.4164 41.7721L30.4247 33.7211C32.9039 34.3398 40.8539 35.5648 39.6727 40.3013ZM40.8039 28.5179C39.7727 32.6492 33.4081 30.5502 31.3435 30.0356L33.1643 22.7336C35.2289 23.2481 41.8779 24.2086 40.8039 28.5179Z" fill="white"/>
|
||||
<path d="M48.0289 28.5836C48.6924 24.1481 45.3154 21.7638 40.6977 20.1731L42.1956 14.1648L38.5383 13.2534L37.0799 19.1034C36.1185 18.8638 35.131 18.6377 34.1497 18.4138L35.6185 12.5252L31.9633 11.6138L30.4643 17.62C29.6685 17.4388 28.8872 17.2596 28.1289 17.0711L28.1331 17.0523L23.0893 15.7929L22.1164 19.6992C22.1164 19.6992 24.8299 20.3211 24.7727 20.3596C26.2539 20.7294 26.5216 21.7096 26.4768 22.4867L24.7706 29.3315C24.8727 29.3575 25.0049 29.395 25.1508 29.4534C25.0289 29.4231 24.8987 29.3898 24.7643 29.3575L22.3727 38.9461C22.1914 39.3961 21.732 40.0711 20.6966 39.8148C20.7331 39.8679 18.0383 39.1513 18.0383 39.1513L16.2227 43.3377L20.982 44.5242C21.8674 44.7461 22.7352 44.9784 23.5893 45.1971L22.0758 51.2742L25.7289 52.1856L27.2279 46.1731C28.2258 46.444 29.1945 46.694 30.1424 46.9294L28.6487 52.9138L32.306 53.8252L33.8195 47.7596C40.056 48.9398 44.7456 48.4638 46.7195 42.8231C48.3102 38.2815 46.6404 35.6617 43.3591 33.9534C45.7487 33.4023 47.5487 31.8304 48.0289 28.5836ZM39.6727 40.3013C38.5424 44.8429 30.8956 42.3877 28.4164 41.7721L30.4247 33.7211C32.9039 34.3398 40.8539 35.5648 39.6727 40.3013ZM40.8039 28.5179C39.7727 32.6492 33.4081 30.5502 31.3435 30.0356L33.1643 22.7336C35.2289 23.2481 41.8779 24.2086 40.8039 28.5179Z" fill="url(#paint6_linear_14800_609868)"/>
|
||||
<path d="M48.0289 28.5836C48.6924 24.1481 45.3154 21.7638 40.6977 20.1731L42.1956 14.1648L38.5383 13.2534L37.0799 19.1034C36.1185 18.8638 35.131 18.6377 34.1497 18.4138L35.6185 12.5252L31.9633 11.6138L30.4643 17.62C29.6685 17.4388 28.8872 17.2596 28.1289 17.0711L28.1331 17.0523L23.0893 15.7929L22.1164 19.6992C22.1164 19.6992 24.8299 20.3211 24.7727 20.3596C26.2539 20.7294 26.5216 21.7096 26.4768 22.4867L24.7706 29.3315C24.8727 29.3575 25.0049 29.395 25.1508 29.4534C25.0289 29.4231 24.8987 29.3898 24.7643 29.3575L22.3727 38.9461C22.1914 39.3961 21.732 40.0711 20.6966 39.8148C20.7331 39.8679 18.0383 39.1513 18.0383 39.1513L16.2227 43.3377L20.982 44.5242C21.8674 44.7461 22.7352 44.9784 23.5893 45.1971L22.0758 51.2742L25.7289 52.1856L27.2279 46.1731C28.2258 46.444 29.1945 46.694 30.1424 46.9294L28.6487 52.9138L32.306 53.8252L33.8195 47.7596C40.056 48.9398 44.7456 48.4638 46.7195 42.8231C48.3102 38.2815 46.6404 35.6617 43.3591 33.9534C45.7487 33.4023 47.5487 31.8304 48.0289 28.5836ZM39.6727 40.3013C38.5424 44.8429 30.8956 42.3877 28.4164 41.7721L30.4247 33.7211C32.9039 34.3398 40.8539 35.5648 39.6727 40.3013ZM40.8039 28.5179C39.7727 32.6492 33.4081 30.5502 31.3435 30.0356L33.1643 22.7336C35.2289 23.2481 41.8779 24.2086 40.8039 28.5179Z" fill="url(#paint7_linear_14800_609868)"/>
|
||||
<path d="M35.6185 12.5252L34.1497 18.4138C34.8857 18.5817 35.6251 18.7509 36.3544 18.926L37.0799 19.1034L38.5383 13.2534L42.1956 14.1648L40.6977 20.1731C45.3154 21.7638 48.6924 24.1481 48.0289 28.5836C47.5487 31.8304 45.7487 33.4023 43.3591 33.9534C46.6404 35.6617 48.3102 38.2815 46.7195 42.8231C44.7456 48.4638 40.056 48.9398 33.8195 47.7596L32.306 53.8252L28.6487 52.9138L30.1424 46.9294C29.1945 46.694 28.2258 46.444 27.2279 46.1731L25.7289 52.1856L22.0758 51.2742L23.5893 45.1971C22.7352 44.9784 21.8674 44.7461 20.982 44.5242L16.2227 43.3377L18.0383 39.1513C18.0383 39.1513 20.7331 39.8679 20.6966 39.8148C21.732 40.0711 22.1914 39.3961 22.3727 38.9461L24.7643 29.3575C24.8987 29.3898 25.0289 29.4231 25.1508 29.4534C25.0049 29.395 24.8727 29.3575 24.7706 29.3315L26.4768 22.4867C26.5216 21.7096 26.2539 20.7294 24.7727 20.3596C24.8299 20.3211 22.1184 19.6996 22.1164 19.6992L23.0893 15.7929L28.1331 17.0523L28.1289 17.0711C28.5081 17.1653 28.893 17.2574 29.2826 17.3484L30.4643 17.62L31.9633 11.6138L35.6185 12.5252ZM30.8552 18.256L30.3458 18.1401C29.5502 17.9589 28.7643 17.7785 28.0003 17.5885L27.4953 17.4632L27.4995 17.4437L23.4776 16.4396L22.7646 19.3021C23.0032 19.3576 23.2971 19.4264 23.5898 19.4963C23.9261 19.5766 24.264 19.6589 24.5154 19.7239C24.6397 19.7561 24.7494 19.7857 24.8286 19.8096C24.8651 19.8206 24.9101 19.8347 24.9497 19.8505C24.954 19.8522 24.9643 19.8564 24.9784 19.8627C25.7828 20.0791 26.3243 20.4754 26.6474 20.9846C26.9735 21.4985 27.0357 22.061 27.0094 22.5174L27.0065 22.5672L26.9943 22.6156L25.288 29.4604L25.1943 29.4369L25.1862 29.4627L25.2818 29.4867L22.8901 39.0752L22.8812 39.1109L22.8674 39.1453C22.7572 39.419 22.5476 39.8027 22.1674 40.0776C21.7796 40.358 21.268 40.4848 20.6432 40.3489C20.6232 40.3474 20.6088 40.3457 20.6034 40.345C20.5651 40.34 20.5217 40.3315 20.4849 40.3239C20.4057 40.3076 20.2964 40.2821 20.1716 40.252C19.9199 40.1913 19.583 40.1059 19.2479 40.0195C18.9218 39.9354 18.595 39.8496 18.3451 39.7838L16.9622 42.9724L21.1109 44.0067H21.1117C21.9966 44.2285 22.8772 44.4642 23.7216 44.6804L24.2349 44.8119L22.7219 50.8856L25.3404 51.539L26.8422 45.5159L27.3674 45.6586C28.3612 45.9283 29.3264 46.1771 30.2711 46.4117L30.7893 46.5406L29.2953 52.5252L31.9174 53.1786L33.424 47.1419L33.9187 47.2356C37.0189 47.8223 39.6425 47.9761 41.7112 47.3396C43.7316 46.7178 45.2792 45.3243 46.2161 42.6471C46.9818 40.4608 46.9366 38.8163 46.3776 37.5395C45.8155 36.2558 44.693 35.2493 43.1128 34.4265L41.8302 33.7586L43.2393 33.4336C44.3532 33.1767 45.2981 32.6901 46.0198 31.9159C46.741 31.142 47.2738 30.0439 47.5013 28.5054L47.5016 28.5047C47.8072 26.4614 47.1908 24.9228 45.9651 23.6872C44.7129 22.4249 42.8067 21.4636 40.524 20.6773L40.062 20.5182L41.549 14.5531L38.9266 13.8997L37.4685 19.7497L36.951 19.6208C35.9955 19.3827 35.0128 19.1579 34.031 18.9338L33.5005 18.8127L34.9719 12.9135L32.3516 12.2601L30.8552 18.256ZM30.5539 33.2036C31.7395 33.4995 34.4332 33.9792 36.6417 34.9815C37.7505 35.4847 38.8004 36.1452 39.4948 37.0336C40.2086 37.9469 40.5272 39.0789 40.1901 40.4304C39.8638 41.7411 39.0508 42.5639 37.999 43.0226C36.9747 43.4693 35.7396 43.5667 34.5227 43.5034C32.0931 43.3768 29.4876 42.5878 28.2878 42.2898L27.7698 42.1612L30.0365 33.0744L30.5539 33.2036ZM28.4164 41.7721C30.8956 42.3877 38.5424 44.8429 39.6727 40.3013C40.8539 35.5648 32.9039 34.3398 30.4247 33.7211L28.4164 41.7721ZM33.2932 22.2161C34.2662 22.4586 36.5394 22.8473 38.3888 23.7203C39.3203 24.16 40.2074 24.7487 40.7872 25.5578C41.3838 26.3903 41.6272 27.4193 41.3214 28.6468C41.0242 29.8374 40.3257 30.6069 39.4141 31.05C38.5281 31.4805 37.4712 31.5899 36.4417 31.552C34.3912 31.4767 32.2032 30.7995 31.2146 30.5531L30.6969 30.4242L32.7758 22.0872L33.2932 22.2161ZM31.3435 30.0356C33.4081 30.5502 39.7727 32.6492 40.8039 28.5179C41.8779 24.2086 35.2289 23.2481 33.1643 22.7336L31.3435 30.0356Z" fill="url(#paint8_linear_14800_609868)"/>
|
||||
</g>
|
||||
<path d="M96.2235 71.9527C91.7714 89.81 73.6849 100.678 55.8255 96.2245C37.9735 91.7725 27.1058 73.685 31.5599 55.8287C36.0099 37.9693 54.0964 27.1006 71.9505 31.5527C89.8089 36.0048 100.676 54.0943 96.2235 71.9527Z" fill="#F7931A"/>
|
||||
<path d="M96.2235 71.9527C91.7714 89.81 73.6849 100.678 55.8255 96.2245C37.9735 91.7725 27.1058 73.685 31.5599 55.8287C36.0099 37.9693 54.0964 27.1006 71.9505 31.5527C89.8089 36.0048 100.676 54.0943 96.2235 71.9527Z" fill="url(#paint9_linear_14800_609868)"/>
|
||||
<path d="M96.2235 71.9527C91.7714 89.81 73.6849 100.678 55.8255 96.2245C37.9735 91.7725 27.1058 73.685 31.5599 55.8287C36.0099 37.9693 54.0964 27.1006 71.9505 31.5527C89.8089 36.0048 100.676 54.0943 96.2235 71.9527Z" fill="url(#paint10_linear_14800_609868)"/>
|
||||
<path d="M96.2235 71.9527C91.7714 89.81 73.6849 100.678 55.8255 96.2245C37.9735 91.7725 27.1058 73.685 31.5599 55.8287C36.0099 37.9693 54.0964 27.1006 71.9505 31.5527C89.8089 36.0048 100.676 54.0943 96.2235 71.9527Z" fill="url(#paint11_linear_14800_609868)"/>
|
||||
<path d="M31.5599 55.8287C36.01 37.9694 54.0964 27.1006 71.9506 31.5527C89.8089 36.0047 100.676 54.0944 96.2235 71.9526L96.1167 72.3701C91.5253 89.8403 73.827 100.475 56.244 96.3261L55.8256 96.2245C37.9735 91.7724 27.1058 73.6849 31.5599 55.8287ZM71.6279 32.8464C54.4885 28.5726 37.1257 39.0063 32.8537 56.1511V56.1516C28.5778 73.2933 39.0106 90.6568 56.148 94.9308C73.2928 99.2057 90.6558 88.7729 94.9297 71.6303C99.2037 54.4862 88.7715 37.1203 71.6279 32.8464Z" fill="url(#paint12_linear_14800_609868)"/>
|
||||
<path d="M31.5599 55.8287C36.01 37.9694 54.0964 27.1006 71.9506 31.5527C89.8089 36.0047 100.676 54.0944 96.2235 71.9526L96.1167 72.3701C91.5253 89.8403 73.827 100.475 56.244 96.3261L55.8256 96.2245C37.9735 91.7724 27.1058 73.6849 31.5599 55.8287ZM71.6279 32.8464C54.4885 28.5726 37.1257 39.0063 32.8537 56.1511V56.1516C28.5778 73.2933 39.0106 90.6568 56.148 94.9308C73.2928 99.2057 90.6558 88.7729 94.9297 71.6303C99.2037 54.4862 88.7715 37.1203 71.6279 32.8464Z" fill="url(#paint13_linear_14800_609868)"/>
|
||||
<path d="M31.5599 55.8287C36.01 37.9694 54.0964 27.1006 71.9506 31.5527C89.8089 36.0047 100.676 54.0944 96.2235 71.9526L96.1167 72.3701C91.5253 89.8403 73.827 100.475 56.244 96.3261L55.8256 96.2245C37.9735 91.7724 27.1058 73.6849 31.5599 55.8287ZM71.6279 32.8464C54.4885 28.5726 37.1257 39.0063 32.8537 56.1511V56.1516C28.5778 73.2933 39.0106 90.6568 56.148 94.9308C73.2928 99.2057 90.6558 88.7729 94.9297 71.6303C99.2037 54.4862 88.7715 37.1203 71.6279 32.8464Z" fill="url(#paint14_linear_14800_609868)"/>
|
||||
<path d="M46.5206 67.6513L71.4546 46.1656C72.5411 45.4698 73.5767 46.1656 72.9135 47.3592L64.9559 63.0094H79.147C79.147 63.0094 81.4017 63.0094 79.147 64.8662L54.6109 86.4844C52.8868 87.9434 51.6931 87.1476 52.8868 84.8929L60.5792 69.6408H46.5206C46.5206 69.6408 44.266 69.6408 46.5206 67.6513Z" fill="url(#paint15_linear_14800_609868)"/>
|
||||
<path d="M46.5206 64.9843L71.4546 43.4986C72.5411 42.8028 73.5767 43.4986 72.9135 44.6922L64.9559 60.3424H79.147C79.147 60.3424 81.4017 60.3424 79.147 62.1992L54.6109 83.8175C52.8868 85.2764 51.6931 84.4806 52.8868 82.2259L60.5792 66.9738H46.5206C46.5206 66.9738 44.266 66.9738 46.5206 64.9843Z" fill="url(#paint16_linear_14800_609868)"/>
|
||||
<path d="M71.4547 43.4985C72.5412 42.8028 73.5767 43.4987 72.9136 44.6922L64.9558 60.3425H79.1469C79.1469 60.3425 81.4016 60.3425 79.1469 62.1993L54.611 83.8175L54.5305 83.8842C52.8501 85.2511 51.7118 84.4453 52.8868 82.2258L60.5792 66.9738H46.5206L46.4282 66.9699C46.0347 66.9431 44.6002 66.7328 46.4183 65.0761L46.5206 64.9844L71.4547 43.4985ZM72.5183 43.812C72.4487 43.7593 72.185 43.6755 71.7693 43.931L46.8688 65.3883C46.3257 65.8682 46.1264 66.1691 46.0683 66.323C46.065 66.3316 46.0628 66.3394 46.0607 66.3462C46.1043 66.369 46.1825 66.3974 46.2962 66.4175C46.3611 66.429 46.4211 66.4349 46.4644 66.4378C46.4856 66.4393 46.502 66.4399 46.512 66.4402C46.517 66.4403 46.5204 66.4404 46.5219 66.4404H61.4454L53.3631 82.4662L53.3605 82.4709L53.3581 82.4756C53.0793 83.0022 52.963 83.4021 52.9417 83.6727C52.9312 83.8059 52.945 83.8923 52.961 83.9422C52.9759 83.9887 52.9913 84.0006 52.9925 84.0016C52.9944 84.0032 53.0085 84.0146 53.0527 84.0196C53.1015 84.0251 53.1828 84.0218 53.3006 83.9883C53.5397 83.9204 53.8712 83.7446 54.2665 83.4102L78.7943 61.799L78.8011 61.793L78.8079 61.7876C79.3195 61.3662 79.5217 61.0955 79.5902 60.9537C79.5427 60.9347 79.4718 60.9133 79.3774 60.8977C79.311 60.8868 79.25 60.881 79.2058 60.8782C79.184 60.8768 79.167 60.8761 79.1566 60.8758H64.0863L72.4381 44.4506L72.4425 44.4417L72.4472 44.4331C72.5755 44.2022 72.5953 44.0424 72.587 43.954C72.5796 43.8743 72.5499 43.836 72.5183 43.812Z" fill="white"/>
|
||||
</g>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear_14800_609868" x1="33.3333" y1="0" x2="33.3333" y2="66.6673" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F7BC1A"/>
|
||||
<stop offset="1" stop-color="#FF6A00"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint1_linear_14800_609868" x1="33.3333" y1="0" x2="33.3333" y2="66.6673" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.725084" stop-color="#C94701" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#C94701" stop-opacity="0.3"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint2_linear_14800_609868" x1="33.3333" y1="9.32637e-05" x2="33.3333" y2="66.6674" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFE091"/>
|
||||
<stop offset="1" stop-color="#FF9735"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint3_linear_14800_609868" x1="33.3333" y1="9.32637e-05" x2="33.3333" y2="66.6674" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.85" stop-color="#FFA54D" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#FFA54D"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint4_linear_14800_609868" x1="33.3333" y1="9.32637e-05" x2="33.3333" y2="66.6674" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFF3DA"/>
|
||||
<stop offset="0.15" stop-color="#FFF3DA" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint5_linear_14800_609868" x1="32.1674" y1="13.2139" x2="32.1674" y2="55.4253" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F89A02"/>
|
||||
<stop offset="1" stop-color="#F56600"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint6_linear_14800_609868" x1="32.1675" y1="11.6138" x2="32.1675" y2="53.8252" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="#FFF1CF"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint7_linear_14800_609868" x1="32.1675" y1="11.6138" x2="32.1675" y2="53.8252" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="#FEEABD"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint8_linear_14800_609868" x1="32.1675" y1="11.6138" x2="32.1675" y2="53.8252" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="white"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint9_linear_14800_609868" x1="63.8913" y1="30.5552" x2="63.8913" y2="97.2225" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F7BC1A"/>
|
||||
<stop offset="1" stop-color="#FF7700"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint10_linear_14800_609868" x1="63.8913" y1="30.5552" x2="63.8913" y2="97.2225" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F7BC1A"/>
|
||||
<stop offset="1" stop-color="#FF6A00"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint11_linear_14800_609868" x1="63.8913" y1="30.5552" x2="63.8913" y2="97.2225" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.725084" stop-color="#C94701" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#C94701" stop-opacity="0.3"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint12_linear_14800_609868" x1="63.8913" y1="30.5553" x2="63.8913" y2="97.2226" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFE091"/>
|
||||
<stop offset="1" stop-color="#FF9735"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint13_linear_14800_609868" x1="63.8913" y1="30.5553" x2="63.8913" y2="97.2226" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0.85" stop-color="#FFA54D" stop-opacity="0"/>
|
||||
<stop offset="1" stop-color="#FFA54D"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint14_linear_14800_609868" x1="63.8913" y1="30.5553" x2="63.8913" y2="97.2226" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FFF3DA"/>
|
||||
<stop offset="0.15" stop-color="#FFF3DA" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint15_linear_14800_609868" x1="62.8338" y1="45.8887" x2="62.8338" y2="87.222" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F89A02"/>
|
||||
<stop offset="1" stop-color="#F56600"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="paint16_linear_14800_609868" x1="62.8338" y1="43.2217" x2="62.8338" y2="84.555" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="white"/>
|
||||
<stop offset="1" stop-color="#FEEABD"/>
|
||||
</linearGradient>
|
||||
<clipPath id="clip0_14800_609868">
|
||||
<rect width="100" height="100" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 20 KiB |
@@ -1,24 +1,30 @@
|
||||
-
|
||||
label: "Bysh"
|
||||
uri: electrum-ltc.bysh.me:50002
|
||||
useSSL: true
|
||||
isDefault: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
uri: ltc-electrum.cakewallet.com:50002
|
||||
useSSL: true
|
||||
isDefault: false
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Cake Wallet"
|
||||
uri: ltc-electrum.cakewallet.com:50002
|
||||
isOfficial: true
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Stack Wallet"
|
||||
uri: litecoin.stackwallet.com:20063
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Fiat Faucet"
|
||||
uri: lightweight.fiatfaucet.com:50002
|
||||
useSSL: true
|
||||
-
|
||||
label: "Xurious"
|
||||
uri: electrum.ltc.xurious.com:50002
|
||||
useSSL: true
|
||||
-
|
||||
label: "Electrum-LTC"
|
||||
uri: backup.electrum-ltc.org:443
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
@@ -26,3 +32,8 @@
|
||||
uri: ltc.rentonisk.com:50002
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
label: "Cake Wallet (Tor)"
|
||||
uri: cakeltcnzbdxhk3dhlzxjnnylxbfhhbx2njegaluyh35t7dca35vcnqd.onion:50001
|
||||
isOfficial: true
|
||||
useSSL: false
|
||||
|
||||
@@ -1,34 +1,37 @@
|
||||
-
|
||||
uri: rpc.nano.to
|
||||
isDefault: true
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "Nano.to"
|
||||
-
|
||||
uri: nano.nownodes.io
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
uri: rpc.nano.to
|
||||
is_default: true
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "NOWNodes"
|
||||
-
|
||||
uri: node.nautilus.io
|
||||
path: /api
|
||||
useSSL: true
|
||||
isEnabledForAutoSwitching: true
|
||||
label: "Nautilus"
|
||||
-
|
||||
uri: app.natrium.io
|
||||
path: /api
|
||||
useSSL: true
|
||||
label: "Natrium"
|
||||
-
|
||||
uri: rainstorm.city
|
||||
path: /api
|
||||
useSSL: true
|
||||
label: "Rainstorm City"
|
||||
-
|
||||
uri: node.somenano.com
|
||||
path: /proxy
|
||||
useSSL: true
|
||||
label: "SomeNano"
|
||||
-
|
||||
uri: nanoslo.0x.no
|
||||
path: /proxy
|
||||
useSSL: true
|
||||
-
|
||||
uri: www.bitrequest.app
|
||||
port: 8020
|
||||
useSSL: true
|
||||
label: "0x.no"
|
||||
@@ -1,7 +1,7 @@
|
||||
-
|
||||
uri: rpc.nano.to
|
||||
useSSL: true
|
||||
is_default: true
|
||||
isDefault: true
|
||||
isEnabledForAutoSwitching: true
|
||||
-
|
||||
uri: workers.perish.co
|
||||
|
||||
@@ -1 +1 @@
|
||||
[{"title":"تحسينات الأداء","description":"تحسين أداء التطبيق وسرعته"},{"title":"أضف جسر USDT","description":"قم بتوصيل USDT الخاص بك من سلسلة إلى أخرى"},{"title":"تحسينات المحافظ","description":"تحسين واجهة مستخدم المحفظة ووظائفها"},{"title":"إصلاحات الشوائب","description":"سحق المزيد من الأخطاء، لجعل تجربتك سلسة"}]
|
||||
[{"title":"تحسينات تريزور","description":"يمكنك الآن إدخال عبارة المرور الخاصة بك على جهاز Trezor نفسه"},{"title":"تحسينات الشراء/البيع","description":"شراء وبيع العملات المشفرة الخاصة بك بشكل أسهل وأكثر سلاسة"},{"title":"تحسينات مونيرو","description":"يستمر تقدم المزامنة في التحرك أثناء تسخين محفظتك، حتى تعرف دائمًا مكانها"},{"title":"إصلاحات الشوائب","description":"مزامنة جهات الاتصال، واختيار العقدة، وتسجيل الدخول إلى Cake Pay، والمزيد، تم سحقها جميعًا"}]
|
||||
@@ -1 +1 @@
|
||||
[{"title":"Подобрения в производителността","description":"Подобрете производителността и скоростта на приложението"},{"title":"Добавете USDT мост","description":"Прехвърлете вашия USDT от една верига към друга"},{"title":"Подобрения в портфейлите","description":"Подобрете потребителския интерфейс и функционалността на портфейлите"},{"title":"Поправки на грешки","description":"Скуош повече грешки, за да направи вашето изживяване гладко"}]
|
||||
[{"title":"Подобрения на Trezor","description":"сега можете да въведете вашата парола на самото устройство Trezor"},{"title":"Подобрения за покупка/продаване","description":"Купувайте и продавайте вашата крипто по-лесно и по-гладко"},{"title":"Подобрения на Monero","description":"Прогресът на синхронизирането продължава да се движи, докато портфейлът ви загрява, така че винаги да знаете къде се намира"},{"title":"Поправки на грешки","description":"Синхронизиране на контакти, избор на възел, влизане в Cake Pay и други, всички смачкани"}]
|
||||
@@ -1 +1 @@
|
||||
[{"title":"Vylepšení výkonu","description":"Zlepšete výkon a rychlost aplikace"},{"title":"Přidejte přemostění USDT","description":"Přemostění USDT z jednoho řetězce do druhého"},{"title":"Vylepšení peněženek","description":"Vylepšete uživatelské rozhraní a funkčnost peněženky"},{"title":"Opravy chyb","description":"Squash více chyb, aby vaše zkušenosti hladké"}]
|
||||
[{"title":"Vylepšení Trezor","description":"nyní můžete zadat svou přístupovou frázi na samotném zařízení Trezor"},{"title":"Vylepšení nákupu/prodeje","description":"Nakupujte a prodávejte své kryptoměny snadněji a plynuleji"},{"title":"Vylepšení Monero","description":"Zatímco se vaše peněženka zahřívá, postup synchronizace se neustále pohybuje, takže vždy víte, kde se nachází"},{"title":"Opravy chyb","description":"Synchronizace kontaktů, výběr uzlů, přihlášení do Cake Pay a další, vše zmačkané"}]
|
||||