client/container: ethereum-based: support Etherscan V2, add more L2 chains

- Implements support for unified API via Etherscan V2 (ethereum-based)
  * All ethereum-based L2s are now accessed via single API endpoint
    - Chains are now available via chain ID
  * Updates API key requirement for `fetch` ethereum-based subaccounts
    - The API key's value must now be prepended with "etherscan"
      * Previously was prepended per-chain ("ethereum" or "polygon")
    - The API key is now *required* (can be generated at etherscan.io)
      * Resolves fatal error in Etherscan::parse_response()
      * Impl will now handle if:
        - Config's API key/value is malformed
        - Etherscan API key was not given
        - Etherscan response is fatal

- Adds support for more L2s
  * Arbitrum (One)
  * Optimism
  * Base

- Adds more L2s to existing accounts
  * Coinbase Wallet
  * Ledger Live
  * MetaMask

- Updates documentation
  * Update default generated `fetch` config
  * Update `fetch` usage help
  * Update README
This commit is contained in:
2025-08-01 13:25:31 -07:00
parent 183806da6d
commit d270d56366
29 changed files with 375 additions and 46 deletions

View File

@@ -1,6 +1,6 @@
# docker-finance | modern accounting for the power-user
#
# Copyright (C) 2021-2024 Aaron Fiore (Founder, Evergreen Crypto LLC)
# Copyright (C) 2021-2025 Aaron Fiore (Founder, Evergreen Crypto LLC)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -48,17 +48,39 @@
# 1. Visit coingecko.com to get the assets's ID
# 2. Prepend the ID to the ticker (as seen below)
#
# 3. For account APIs, replace XXXXXXX... with your API-related information.
# Accounts below will provide unique details/caveats on API key creation.
# 3. For account APIs:
#
# 4. Feel free to delete any unused accounts/subaccounts as needed.
# - Replace XXXXXXX... with your API-related information.
#
# * See the accounts below for unique details/caveats on API key creation.
#
# 4. For blockchain-based APIs:
#
# - 'key' format: blockchain1/API_KEY1,blockchain2/API_KEY2
#
# * For ethereum-based chains:
#
# - As of now, you *MUST* use an API key.
# Generate your API key at etherscan.io
#
# - Use "etherscan" as the blockchain API, as its
# unified API is used for all ethereum-based chains.
#
# * For algorand/tezos: currently no API key is required.
#
#
# 5. Feel free to delete any unused accounts/subaccounts as needed.
# NOTE:
# Disclaimer:
#
# The example wallet accounts/addresses used in this file:
#
# - were picked randomly from the blockchain and are meant to be used for
# demonstration purposes only
#
# - outside the realm of testing and development, have no association with
# the author or docker-finance or Evergreen Crypto LLC
#
# - are not endorsements of the wallet's activity or tokenomics
version: @DOCKER_FINANCE_VERSION@
@@ -170,15 +192,13 @@ version: @DOCKER_FINANCE_VERSION@
#subaccount: "platform/{BTC,LTC,ETH,USDC,USD}"
coinbase-wallet:
# API scanner keys can be generated at etherscan.io, polygonscan.com
# key format: blockchain1/API_KEY1,blockchain2/API_KEY2
key: "ethereum/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
key: "etherscan/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
subaccount:
ethereum:
- "phone:cb-1/0x10Bd3c5d536f69e87C8d4ECB49C01dDc9db4637b"
coinomi:
key: "ethereum/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
key: "etherscan/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
subaccount:
# NOTE: same account name can only be used with differing networks
ethereum:
@@ -187,20 +207,22 @@ version: @DOCKER_FINANCE_VERSION@
- "phone:coinomi-1/BO65GIBYYYUPK4KTQ32IRO5BE2H3VEFTK65GKI2GNHZYPNUMJKGJOFJWSY"
metamask:
# API scanner keys can be generated at etherscan.io, polygonscan.com
# key format: blockchain1/API_KEY1,blockchain2/API_KEY2
key: "ethereum/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,polygon/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
key: "etherscan/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
subaccount:
ethereum:
- "laptop:wallet-1/0x6546d43EA6DE45EB7298A2074e239D5573cA02F3"
- "phone:wallet-1/0x236ba53B56FEE4901cdac3170D17f827DF43E969"
polygon:
- "laptop:wallet-2/0xEad0B2b6f6ab84d527569835cd7fe364e067cFFf"
arbitrum:
- "phone:wallet-2/0xd3b29C94a67Cfa949FeD7dd1474B71d006fa0A2A"
base:
- "laptop:wallet-3/0x4C7219b760b71B9415E0e01Abd34d0f65631e57e"
optimism:
- "phone:wallet-3/0x53004E863Aa0F4028B154ECA65CFb32Eb5a8f5bB"
ledger:
# API scanner keys can be generated at etherscan.io, polygonscan.com
# key format: blockchain1/API_KEY1,blockchain2/API_KEY2
key: "ethereum/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
key: "etherscan/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
subaccount:
algorand:
- "nano:x-1:general-1/R7U6QWS4QLDB5YLBI25TWCPW47N565FUUDP6GG5XEWAKD5INLATHIG24NE"