Skip to main content

Architecture

EVM Implementations​

From developer and end-user point of view, EUROe is extremely easy to use and understand as it is a standard ERC20 with a few extra properties. For most uses, you can consider EUROe like any other ERC20. EUROe also supports EIP-2612 Permit Extension for EIP-20 Signed Approvals.

The ERC20 contract is implemented through an ERC-1967 proxy following the OpenZeppelin UUPS pattern. The architecture below abstracts the proxy and describes the stablecoin implementation as a whole.

Architecture diagram

Dependencies​

The EVM -compatible implementation of the EUROe smart contract imports the following OpenZeppelin contracts:

  1. ERC20Upgradeable.sol (github.com ↗)
  2. IERC20Upgradeable.sol (github.com ↗)
  3. ERC20BurnableUpgradeable.sol (github.com ↗)
  4. PausableUpgradeable.sol (github.com ↗)
  5. AccessControlUpgradeable.sol (github.com ↗)
  6. ERC20PermitUpgradeable.sol (github.com ↗)
  7. Initializable.sol (github.com ↗)
  8. UUPSUpgradeable.sol (github.com ↗)
  9. SafeERC20Upgradeable.sol (github.com ↗)

Solana Implementation​

From developer and end-user point of view, EUROe is extremely easy to use and understand as it is a standard SPL token. The architecture below describes the stablecoin implementation as a whole, describing only the functions that are either actually used by privileged addresses or commonly used by third-parties. The diagram is for illustrative purposes only and omits important core functionality of an SPL token.

Architecture diagram

Dependencies​

The Solana implementation of the EUROe program relies on the SPL token implementation. For more information about the SPL token, we recommend the following resources:

  1. @solana/spl-token (github.io ↗)
  2. Solana program library (spl.solana.com ↗)

Additionally, the EUROe program utilises the Metaplex SDK for adding metadata to the token. Read more at @metaplex-foundation/js (npmjs.com ↗). The metadata itself is served from the EUROe persistent developer directory (dev.euroe.com ↗).