Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/2026-03-19-how-pusd-is-minted/image-1.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/2026-03-19-how-pusd-is-minted/image-2.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added blog/2026-03-19-how-pusd-is-minted/image-3.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
210 changes: 210 additions & 0 deletions blog/2026-03-19-how-pusd-is-minted/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
---
slug: how-pusd-is-minted
title: 'How is pUSD (Universal Stablecoin) minted'
authors: [push]
image: './cover-image.webp'
description: "A universal stablecoin is a dollar you can use on one chain while the actual asset stays on another. Here's how it's minted"
text: "A universal stablecoin is a dollar you can use on one chain while the actual asset stays on another. Here's how it's minted"
tags: [Key Features, Product, Technical]
---

![Cover Image of How Push Rethinks Stablecoins](./cover-image.webp)

<!--truncate-->

## What is a Universal Stablecoin?

A universal stablecoin is a dollar you can use on one chain while the actual asset stays on another.

You don’t bridge it.

You don’t wrap it.

You don’t move liquidity around.

Instead, the original stablecoin is locked on its source chain, and Push Chain mints a 1:1 representation (pUSD) that you can use immediately.

From a user’s perspective, it behaves like any other stablecoin.
From the system’s perspective, nothing actually “moves”.

That distinction matters because it’s what lets Push avoid bridges without giving up security.

Push Chain doesn’t move dollars across chains.

It mirrors ownership.

The diagram here shows how a user from any EVM / non-EVM chain, like Solana here, can mint pUSD from USDC in just a couple of clicks:

![Seamless cross-chain asset transfer flow](./image-1.webp)

![Unified liquidity via universal stablecoin](./image-2.webp)

**Lock on the source → mint on Push → burn on Push → release on source.**

No wrapping

No liquidity hops

No extra “claim your token” step

# Minting 1 pUSD

Example: A user has USDC on Ethereum and wants to use it on an app built on Push.

Here, the user just signs one txn on Ethereum.

Under the hood:

- The Universal Gateway receives the USDC
- Funds are transferred into an MPC TSS vault
- A lock event is emitted on the source chain

The asset never left Ethereum.

# **Why does MPC vault matter here?**

It isn’t a multisig that anyone controls

- The signing key is split across validators
- No single party can move funds
- Only threshold consensus can execute the txn

This is what makes the mint secure.

# How Push Chain verifies minting

Universal Validators watch the source chain.

They independently verify:

- The lock actually happened
- Funds are in the MPC vault
- The user signature is valid
- Amounts match exactly

Once enough no. of validators agree, Push Chain is told:

> “This lock is real.”
>

That’s the only condition for minting.

Push mints exactly the locked amount of pUSD.

It’s credited to the user’s [UEA](https://push.org/blog/what-are-universal-executor-accounts/):

- Deterministically derived from their source address
- Same identity, just different execution layer

From the user’s POV:

- One signature
- pUSD usable immediately
- No follow up txn

> pUSD supply isn’t market-managed. It’s state-managed.
>

# Withdrawing pUSD back to your chain's native stablecoin

**Nothing is released unless something is burned.**

When a user wants to withdraw a required amount:

- Exact number of pUSD is burned on Push Chain
- A burn proof is emitted
- Validators verify the burn

Only after threshold consensus:

- Validators generate partial signatures
- These combine to authorize the MPC vault
- The vault releases exactly the burned amount

Burn 100 pUSD → release 100 USDC on the source chain.

## What does the user get?

The asset lands:

- On the original chain
- At the original address
- As the original token

![Simple cross-chain mint and burn flow](./image-3.webp)

# Why pUSD matters to builders

This design quietly removes a lot of complexity:

- No bridge liquidity assumptions
- No fragmented balances
- No identity remapping

You can build apps assuming:

**one user, one balance, one execution surface,** even if assets live on external chains.

To know more about pUSD - [read our quick thesis](https://push.org/blog/how-push-rethinks-stablecoins/).

We’re about to launch pUSD very soon. Join our [Discord](https://push.org/blog/how-push-rethinks-stablecoins/) or [Telegram](https://t.me/epnsproject) to be the first to know when it’s live!

---

# Guidelines

## 🧠 Maker Monday

**🎯 Goal**

Help developers and curious users **understand Push Chain technology**.

Every Monday, turn complex infra into approachable learning — SDKs, modules, contracts, and architecture.

**💡 What to Do**

- Focus on **explaining how** Push Chain works, not **how much** it’s achieved.
- Share small, modular lessons from real development (like new functions, simplified calls, or dev UX improvements).
- Use short video clips, diagrams, or Playground screenshots to make the concept visual.
- Keep it crisp: one insight → one visual → one takeaway.
- Preferred to be an X Article

**🧩 Some Content Ideas**

- **Feature Explain:** “How Shared-State lets you skip bridges in 2 steps.”
- **Code Example:** “New helper function moveFunds() lets you send native tokens from any chain.”
- **Architecture Nugget:** “Universal Execution precompiles handle tx validation natively — here’s how.”
- **Concept Simplifier:** “Fee abstraction ≠ free tx. Here’s how it really works.”

**🚫 Avoid**

- Pure milestone or tx count posts (move them to Push Pulse).
- Heavy jargon dumps — teach, don’t overwhelm.
- Overly promotional lines like “world’s first / biggest”.

**🧠 Examples**

| **❌ Weak (brag)** | **✅ Strong (educate)** |
| --- | --- |
| “25k tx on Donut this week 🚀” | “25k tx on Donut this week — here’s how validator batching keeps Shared-State stable ⚙️” |
| “SDK v2 is live!” | “SDK v2 introduces unified multicall. Here’s what changes for devs 👇” |
| “Donut testnet booming 💥” | “Every tx on Donut executes via Universal Validation — here’s what that means for interop.” |

**🪄 Tone**

- Builder-friendly, transparent, slightly geeky.
- Imagine explaining a concept to another dev over coffee — that’s the energy.

**📈 What Success Looks Like**

- Saves and quote tweets with “this is neat / this makes sense now.”
- Higher average CTR to docs or Playground.
- Builders replying with “testing this rn.”

**✅ Summary Takeaway**

**Maker Monday teaches. Push Pulse celebrates. Deep Dive explains.**

If you can add code, a diagram, or a “why it matters” line — it’s a Maker Monday.

---
Loading
Loading