From adfe0c3ad6ff8a0a3f7b901b43f81cfb446d1317 Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Fri, 30 Jan 2026 00:20:05 +0000 Subject: [PATCH 01/12] fix: escape colon in 1:1 to fix rendering bug The ':' in '1:1' was being interpreted by Vocs markdown parser, causing it to render as '1' with a line break. Using HTML entity : fixes the issue. Slack thread: https://tempoxyz.slack.com/archives/C0A87C21805/p1769732286036299 --- src/pages/learn/stablecoins.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/learn/stablecoins.mdx b/src/pages/learn/stablecoins.mdx index 210b86a6..4e774637 100644 --- a/src/pages/learn/stablecoins.mdx +++ b/src/pages/learn/stablecoins.mdx @@ -17,7 +17,7 @@ Real-world utility, increasing regulatory clarity, and growing institutional ado ## How stablecoins work -Fully-reserved fiat-backed stablecoins are issued by regulated entities ("stablecoin issuers") and are backed 1:1 with reserves such as cash and short-term government securities held at licensed financial institutions. Stablecoin issuers use a mint-and-burn process to keep the supply aligned with underlying reserves and ensure that holders can always redeem stablecoins at face value. +Fully-reserved fiat-backed stablecoins are issued by regulated entities ("stablecoin issuers") and are backed 1:1 with reserves such as cash and short-term government securities held at licensed financial institutions. Stablecoin issuers use a mint-and-burn process to keep the supply aligned with underlying reserves and ensure that holders can always redeem stablecoins at face value. When a user deposits fiat currency with an issuer, the issuer mints the corresponding amount of stablecoins onchain and sends them to the user. When the user later redeems stablecoins for fiat, the issuer receives the tokens, burns them, and sends the equivalent amount of fiat from its reserves to the user. From 5a2de4d11b6312d0dcfad20ea427e3fa80446a35 Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Fri, 30 Jan 2026 00:28:13 +0000 Subject: [PATCH 02/12] test: skip flaky faucet E2E test The faucet test depends on external service timing and is unreliable. Skipping until faucet reliability is improved or test is mocked. Amp-Thread-ID: https://ampcode.com/threads/T-019c0c44-b42c-7448-bc59-76729f21276a Co-authored-by: Amp --- e2e/faucet.spec.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/e2e/faucet.spec.ts b/e2e/faucet.spec.ts index dceb26c4..80ecdcab 100644 --- a/e2e/faucet.spec.ts +++ b/e2e/faucet.spec.ts @@ -1,6 +1,8 @@ import { expect, test } from '@playwright/test' -test('fund an address via faucet', async ({ page }) => { +test.skip('fund an address via faucet', async ({ page }) => { + // TODO: This test is flaky - depends on external faucet service timing + // Re-enable once faucet reliability is improved or test is mocked await page.goto('/quickstart/faucet') // Switch to "Fund an address" tab From 9df890f98ae29c15d4d1a654d045aa3c803e482b Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Fri, 30 Jan 2026 00:31:43 +0000 Subject: [PATCH 03/12] docs: improve stablecoins page for SEO and content depth - Add title frontmatter for proper SEO/OG tags - Add History of stablecoins section (USDT 2014, DAI 2017, USDC 2018, DeFi Summer, regulatory developments) - Add Risks and considerations section (counterparty risk, regulatory risk) - Add FAQ section with 6 common questions for SEO optimization Co-authored-by: Juan Amp-Thread-ID: https://ampcode.com/threads/T-019c0c44-b42c-7448-bc59-76729f21276a Co-authored-by: Amp --- src/pages/learn/stablecoins.mdx | 41 +++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/pages/learn/stablecoins.mdx b/src/pages/learn/stablecoins.mdx index 4e774637..f0f94997 100644 --- a/src/pages/learn/stablecoins.mdx +++ b/src/pages/learn/stablecoins.mdx @@ -1,4 +1,5 @@ --- +title: Stablecoins 101 description: Learn what stablecoins are, how they maintain value through reserves, and the payment use cases they enable for businesses globally. --- @@ -41,6 +42,20 @@ For example, a global enterprise can use a smart contract to automatically top u In short, stablecoins provide the stability and familiarity of fiat currency with the speed and innovation of blockchains, offering institutions and enterprises of all sizes a faster, more efficient way to move value globally. +## History of stablecoins + +Stablecoins emerged as a solution to cryptocurrency's volatility problem. Tether (USDT), launched in 2014 on the Bitcoin blockchain via the Omni Layer protocol, pioneered the concept of a dollar-pegged digital asset. MakerDAO introduced DAI in 2017, creating the first decentralized, crypto-collateralized stablecoin governed by smart contracts. Circle and Coinbase followed in 2018 with USD Coin (USDC), emphasizing regulatory compliance and transparent reserves. + +The 2020 "DeFi Summer" marked an inflection point for stablecoin adoption. Total stablecoin market capitalization surged from under $10 billion to over $100 billion by 2021, as they became essential infrastructure for lending protocols, decentralized exchanges, and yield farming. This explosive growth attracted regulatory attention worldwide. + +Regulatory frameworks are now taking shape globally. The European Union's Markets in Crypto-Assets (MiCA) regulation, finalized in 2023, established comprehensive stablecoin requirements including reserve mandates and issuer licensing. In the United States, the GENIUS Act (Guiding and Establishing National Innovation for U.S. Stablecoins) represents ongoing legislative efforts to create a federal framework for stablecoin issuance and oversight. + +## Risks and considerations + +**Counterparty risk** is inherent in asset-backed stablecoins. Users depend on issuers maintaining adequate reserves, typically cash and short-term government securities. Major issuers like Circle publish monthly reserve attestations from accounting firms, though these are point-in-time snapshots rather than continuous audits. Reserve quality matters—stablecoins backed primarily by cash and T-bills carry less risk than those with commercial paper or other less liquid assets. + +**Regulatory risk** remains significant as frameworks evolve globally. The EU's MiCA regulation now provides clear licensing requirements for stablecoin issuers operating in Europe, while the US is advancing legislation like the GENIUS Act to establish federal oversight. Jurisdictional differences mean a stablecoin compliant in one region may face restrictions elsewhere. Users should verify their chosen stablecoin's regulatory status and issuer licensing in relevant jurisdictions. + ## Stablecoin use cases Stablecoins enable a wide range of payment and financial use cases across industries: @@ -83,3 +98,29 @@ Stablecoins enable a wide range of payment and financial use cases across indust title="Agentic Commerce" /> + +## Frequently asked questions + +### What is a stablecoin? + +A stablecoin is a digital currency designed to maintain a stable value, typically pegged 1:1 to a fiat currency like the US dollar. Unlike volatile cryptocurrencies, stablecoins combine the speed and programmability of blockchain with the price stability businesses need for payments and treasury operations. + +### Are stablecoins safe? + +The safety of a stablecoin depends on its backing and the issuer's transparency. Regulated stablecoins like USDC maintain full reserves in cash and short-term US Treasuries, with regular third-party attestations. Always verify a stablecoin's reserve composition and regulatory status before using it for business operations. + +### How are stablecoins different from other cryptocurrencies? + +Stablecoins maintain a fixed value while cryptocurrencies like Bitcoin and Ethereum fluctuate based on market demand. This price stability makes stablecoins practical for business payments, payroll, and cross-border transactions where you need predictable values rather than speculative assets. + +### What are stablecoins used for? + +Businesses use stablecoins for cross-border payments, vendor settlements, payroll for international contractors, and treasury management. Stablecoins enable near-instant settlement at a fraction of traditional wire transfer costs, often completing in seconds rather than days. + +### How do I get stablecoins? + +You can acquire stablecoins through regulated cryptocurrency exchanges, direct purchases from issuers like Circle, or through payment platforms that support stablecoin on-ramps. Enterprise users typically work with licensed custodians or payment providers that handle compliance and custody requirements. + +### Are stablecoins regulated? + +Stablecoin regulation varies by jurisdiction and is rapidly evolving. Major stablecoin issuers operate under state money transmitter licenses in the US, and new frameworks like the EU's MiCA regulation are establishing clear compliance requirements. Work with legal counsel to understand the regulatory requirements for your specific use case and geography. From 9fbf137f3a383c8ce61cdd2f078da3585f7d5e4e Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Fri, 30 Jan 2026 00:32:59 +0000 Subject: [PATCH 04/12] docs: change title to 'What are stablecoins?' Amp-Thread-ID: https://ampcode.com/threads/T-019c0c44-b42c-7448-bc59-76729f21276a Co-authored-by: Amp --- src/pages/learn/stablecoins.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/learn/stablecoins.mdx b/src/pages/learn/stablecoins.mdx index f0f94997..34dd0b92 100644 --- a/src/pages/learn/stablecoins.mdx +++ b/src/pages/learn/stablecoins.mdx @@ -1,5 +1,5 @@ --- -title: Stablecoins 101 +title: What are stablecoins? description: Learn what stablecoins are, how they maintain value through reserves, and the payment use cases they enable for businesses globally. --- From 69764076c0bf2c1e3ea286a3ae38b5af63b80c40 Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Fri, 30 Jan 2026 00:42:40 +0000 Subject: [PATCH 05/12] revert: restore faucet test, keep only stablecoins changes Amp-Thread-ID: https://ampcode.com/threads/T-019c0c44-b42c-7448-bc59-76729f21276a Co-authored-by: Amp --- e2e/faucet.spec.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/e2e/faucet.spec.ts b/e2e/faucet.spec.ts index 80ecdcab..dceb26c4 100644 --- a/e2e/faucet.spec.ts +++ b/e2e/faucet.spec.ts @@ -1,8 +1,6 @@ import { expect, test } from '@playwright/test' -test.skip('fund an address via faucet', async ({ page }) => { - // TODO: This test is flaky - depends on external faucet service timing - // Re-enable once faucet reliability is improved or test is mocked +test('fund an address via faucet', async ({ page }) => { await page.goto('/quickstart/faucet') // Switch to "Fund an address" tab From 090b4bdb5f047d6722fc85f192e377e557b91195 Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Fri, 30 Jan 2026 00:43:59 +0000 Subject: [PATCH 06/12] docs: move risks into FAQ section Amp-Thread-ID: https://ampcode.com/threads/T-019c0c44-b42c-7448-bc59-76729f21276a Co-authored-by: Amp --- src/pages/learn/stablecoins.mdx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/pages/learn/stablecoins.mdx b/src/pages/learn/stablecoins.mdx index 34dd0b92..b171e6ba 100644 --- a/src/pages/learn/stablecoins.mdx +++ b/src/pages/learn/stablecoins.mdx @@ -50,12 +50,6 @@ The 2020 "DeFi Summer" marked an inflection point for stablecoin adoption. Total Regulatory frameworks are now taking shape globally. The European Union's Markets in Crypto-Assets (MiCA) regulation, finalized in 2023, established comprehensive stablecoin requirements including reserve mandates and issuer licensing. In the United States, the GENIUS Act (Guiding and Establishing National Innovation for U.S. Stablecoins) represents ongoing legislative efforts to create a federal framework for stablecoin issuance and oversight. -## Risks and considerations - -**Counterparty risk** is inherent in asset-backed stablecoins. Users depend on issuers maintaining adequate reserves, typically cash and short-term government securities. Major issuers like Circle publish monthly reserve attestations from accounting firms, though these are point-in-time snapshots rather than continuous audits. Reserve quality matters—stablecoins backed primarily by cash and T-bills carry less risk than those with commercial paper or other less liquid assets. - -**Regulatory risk** remains significant as frameworks evolve globally. The EU's MiCA regulation now provides clear licensing requirements for stablecoin issuers operating in Europe, while the US is advancing legislation like the GENIUS Act to establish federal oversight. Jurisdictional differences mean a stablecoin compliant in one region may face restrictions elsewhere. Users should verify their chosen stablecoin's regulatory status and issuer licensing in relevant jurisdictions. - ## Stablecoin use cases Stablecoins enable a wide range of payment and financial use cases across industries: @@ -124,3 +118,11 @@ You can acquire stablecoins through regulated cryptocurrency exchanges, direct p ### Are stablecoins regulated? Stablecoin regulation varies by jurisdiction and is rapidly evolving. Major stablecoin issuers operate under state money transmitter licenses in the US, and new frameworks like the EU's MiCA regulation are establishing clear compliance requirements. Work with legal counsel to understand the regulatory requirements for your specific use case and geography. + +### What is counterparty risk in stablecoins? + +Counterparty risk refers to the possibility that a stablecoin issuer fails to maintain adequate reserves or becomes insolvent. Major issuers like Circle publish monthly reserve attestations, but these are point-in-time snapshots. Stablecoins backed by cash and T-bills carry less risk than those backed by commercial paper or less liquid assets. + +### What regulatory risks should I consider? + +Regulatory frameworks are still evolving globally. A stablecoin compliant in one jurisdiction may face restrictions elsewhere. The EU's MiCA regulation and the US GENIUS Act are establishing clearer rules, but businesses should verify their chosen stablecoin's regulatory status and issuer licensing in all relevant jurisdictions. From 1bec2770eb14e549e1d9fb562a18d80c4fc18292 Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Fri, 30 Jan 2026 00:49:23 +0000 Subject: [PATCH 07/12] docs: improve stablecoins page with internal links, FAQ schema, and language - Add FAQSchema component for JSON-LD rich snippets - Add 'Stablecoins on Tempo' section with links to TIP-20, native stablecoins, DEX, issuance - Add inline links throughout (remittances, global payouts, embedded finance, etc.) - Balance USDC/USDT mentions (both now appear in safety, counterparty risk sections) - Improve language per Tempo writing guidelines (neutral, concrete, active voice) - Remove hype tagline, tighten intro, add stablecoin type clarification - Add FAQ JSON-LD schema for SEO rich results Co-authored-by: Juan Amp-Thread-ID: https://ampcode.com/threads/T-019c0c44-b42c-7448-bc59-76729f21276a Co-authored-by: Amp --- src/components/FAQSchema.tsx | 30 ++++++++++ src/pages/learn/stablecoins.mdx | 97 +++++++++++++++++++++++++-------- 2 files changed, 103 insertions(+), 24 deletions(-) create mode 100644 src/components/FAQSchema.tsx diff --git a/src/components/FAQSchema.tsx b/src/components/FAQSchema.tsx new file mode 100644 index 00000000..342699bc --- /dev/null +++ b/src/components/FAQSchema.tsx @@ -0,0 +1,30 @@ +interface FAQItem { + question: string + answer: string +} + +interface FAQSchemaProps { + items: FAQItem[] +} + +export function FAQSchema({ items }: FAQSchemaProps) { + const schema = { + '@context': 'https://schema.org', + '@type': 'FAQPage', + mainEntity: items.map((item) => ({ + '@type': 'Question', + name: item.question, + acceptedAnswer: { + '@type': 'Answer', + text: item.answer, + }, + })), + } + + return ( + from breaking out of the JSON-LD block + const safeSchema = JSON.stringify(schema).replace(/ ) } From 963eeda2d90bf77c9e011640591a8c5791ce24d9 Mon Sep 17 00:00:00 2001 From: Georgios Konstantopoulos Date: Fri, 30 Jan 2026 00:55:20 +0000 Subject: [PATCH 09/12] fix: harden FAQSchema with input validation and defense-in-depth escaping - Filter empty/invalid FAQ entries before rendering - Return null if no valid entries (avoid empty mainEntity array) - Escape <, >, and & for defense-in-depth - Make items prop readonly for TypeScript safety Amp-Thread-ID: https://ampcode.com/threads/T-019c0c44-b42c-7448-bc59-76729f21276a Co-authored-by: Amp --- src/components/FAQSchema.tsx | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/components/FAQSchema.tsx b/src/components/FAQSchema.tsx index e0cc9ef5..7f0b80f4 100644 --- a/src/components/FAQSchema.tsx +++ b/src/components/FAQSchema.tsx @@ -4,30 +4,33 @@ interface FAQItem { } interface FAQSchemaProps { - items: FAQItem[] + items: readonly FAQItem[] } export function FAQSchema({ items }: FAQSchemaProps) { - const schema = { - '@context': 'https://schema.org', - '@type': 'FAQPage', - mainEntity: items.map((item) => ({ + const mainEntity = items + .filter((i): i is FAQItem => Boolean(i?.question?.trim()) && Boolean(i?.answer?.trim())) + .map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer, }, - })), + })) + + if (mainEntity.length === 0) return null + + const schema = { + '@context': 'https://schema.org', + '@type': 'FAQPage', + mainEntity, } - // Escape < to \u003c to prevent from breaking out of the JSON-LD block - const safeSchema = JSON.stringify(schema).replace(//g, '\\u003e') + .replace(/&/g, '\\u0026') - return ( -