diff --git a/ethtx_ce/frontend/templates/index.html b/ethtx_ce/frontend/templates/index.html
index efde376..10a70ba 100644
--- a/ethtx_ce/frontend/templates/index.html
+++ b/ethtx_ce/frontend/templates/index.html
@@ -216,6 +216,8 @@
+
+
diff --git a/ethtx_ce/frontend/templates/semantics.html b/ethtx_ce/frontend/templates/semantics.html
index 3f4be38..fd2a5c4 100644
--- a/ethtx_ce/frontend/templates/semantics.html
+++ b/ethtx_ce/frontend/templates/semantics.html
@@ -182,6 +182,8 @@
Semantics for: {{address}} / {{ metadata.chain }}
+
+
diff --git a/ethtx_ce/frontend/templates/transaction.html b/ethtx_ce/frontend/templates/transaction.html
index 935ad7b..0720ddd 100644
--- a/ethtx_ce/frontend/templates/transaction.html
+++ b/ethtx_ce/frontend/templates/transaction.html
@@ -12,9 +12,17 @@
~ limitations under the License.
-->
+{% macro block_explorer_link(chain_id) %}
+ {%- if chain_id.startswith("fantom") -%}
+ https://{%- if chain_id == 'fantom_testnet' -%}testnet.{% endif %}ftmscan.io/
+ {% else %}
+ https://{%- if chain_id != 'mainnet' -%}{{ chain_id }}.{% endif %}etherscan.io/
+ {% endif %}
+{% endmacro %}
+
{% macro address_link(address, label, badge="") %}
{%- if address and address != '0x0000000000000000000000000000000000000000' -%}
-
+
{%- if badge -%}
[{{ badge }}]
{%- endif -%}
@@ -27,7 +35,7 @@
{% macro nft_link(address, label) %}
{%- if address and address != '0x0000000000000000000000000000000000000000' -%}
-
+
{{- label -}}
{%- else -%}
diff --git a/wsgi.py b/wsgi.py
index 1a79854..c5a70af 100644
--- a/wsgi.py
+++ b/wsgi.py
@@ -28,12 +28,16 @@
"mainnet": dict(hook=os.getenv("MAINNET_NODE_URL", ""), poa=False),
"goerli": dict(hook=os.getenv("GOERLI_NODE_URL", ""), poa=True),
"rinkeby": dict(hook=os.getenv("RINKEBY_NODE_URL", ""), poa=True),
+ "fantom": dict(hook=os.getenv("FANTOM_NODE_URL", ""), poa=True),
+ "fantom_testnet": dict(hook=os.getenv("FANTOM_TESTNET_NODE_URL", ""), poa=True),
},
default_chain="mainnet",
etherscan_urls={
"mainnet": "https://api.etherscan.io/api",
"goerli": "https://api-goerli.etherscan.io/api",
"rinkeby": "https://api-rinkeby.etherscan.io/api",
+ "fantom": "https://api.fmtscan.com/api",
+ "fantom_testnet": "https://api-testnet.ftmscan.com/api",
},
)