# Auro Wallet:Mina Custom token support

**URL:** <https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334>\
**Category:** Mina Navigator Proposals\
**Created:** [June 20, 2024, 9:57am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334 "2024-06-20T09:57:41Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![hgedia](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/hgedia/32/1734_2.png) [@hgedia](https://forums.minaprotocol.com/u/hgedia)\
**Post date:** [June 20, 2024, 9:57am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/1 "2024-06-20T09:57:42Z")

</div>

This topic is to discuss the proposal submitted by @niuniu  
Please see below for the details of the proposal and discussion.

**02nd July, 2024**  
_Current status: Funded_  
_Funding Note: The funding for this proposal is approved. This proposal has a high impact on the ecosystem. Due to the findings mentioned above, there is a medium risk associated with the delivery. The Auro wallet team has been delivering great value to the ecosystem and we find this proposal is moving in the right direction to add support for custom tokens._

**20th June, 2024**  
_Current status: Under Consideration._  
_Opened for community discussion on : 20th June, 2024._

---

<div class="post-metadata">

**Author:** ![niuniu](https://avatars.discourse-cdn.com/v4/letter/n/ec9cab/32.png) [@niuniu](https://forums.minaprotocol.com/u/niuniu)\
**Post date:** [June 20, 2024, 11:37am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/2 "2024-06-20T11:37:43Z")

</div>

## Auro Wallet ：Mina Custom token’s are coming!

## Project Background

Auro Wallet is an open source wallet on the Mina Protocol, that supports MINA transfer, staking, zkApp interaction and other features.

Currently, Mina will release the token standard. As a wallet, we need to support the token standard as soon as possible so that users can view token assets and transfers conveniently and quickly.

We plan to support the asset display, transfer and token management (display, hide) feature of mina token. The token standard we will be building for is [mina fungible token](https://github.com/MinaFoundation/mina-fungible-token), which is also the token standard currently promoted by Mina.

## Proposal Overview

**Problem:**  
Custom tokens are an important feature of the chain. Although the Mina token standard will be released, no wallets currently support them.

**Solution:**  
Auro will add support for custom tokens in both the Chrome extension & mobile App. Users can send, receive and see history of custom tokens.

The details of the token standard supported are as follows:

- [Mina fungible token](https://github.com/MinaFoundation/mina-fungible-token): standard token asset display, transfer, display and hide.
- [Contract](https://github.com/o1-labs/o1js/blob/1588ee566d15a6e5ef6a1a611386c7da578ab48a/src/lib/mina/token/token-contract.ts): standard asset display, display and hide

**Impact:**

- Users can easily view token balances and details, as well as perform operations such as transfers and payments.
- Existing or new applications can benefit from this feature.

**Audience:**  
All Mina token holders. All Auro Wallet users who use tokens on the Mina.

## Architecture & Design

### **Detailed Design/Architecture:**

 ![auro-wallet](https://canada1.discourse-cdn.com/flex035/uploads/minaprotocol/original/2X/e/efb2948d3fbf1dd84ec458944b772cbd4f6554af.png)

There are mainly client-side (including mobile-apps and Chrome extensions, which are used as extension below) and server-side.

Users do not need to add tokens manually. The current token assets come from the daemon node.Daemon node requirements for returning token assets are to inherit or implement the [basic token contract](https://github.com/o1-labs/o1js/blob/1588ee566d15a6e5ef6a1a611386c7da578ab48a/src/lib/mina/token/token-contract.ts). Users can manage the returned assets (whether they are displayed on the page or not) and transfer token assets.See below for details.

The following changes are expected to the architecture/components:

#### The client-side:

- **UI**

- **Extension Background**

#### The server-side:

- **Daemon node service**

- **Token build service**

- **Archive node service**

**Vision:**  
Auro Wallet’s vision is to be the favorite wallet for Mina Protocol users and developers, and to create more possibilities together with Mina.

**Existing Work :**

> **[GitHub - aurowallet/auro-wallet-browser-extension: Mina Protocol browser extension wallet](https://github.com/aurowallet/auro-wallet-browser-extension)**
>
> Mina Protocol browser extension wallet

> **[GitHub - aurowallet/auro-wallet-mobile-app: Mina Protocol moblie app wallet](https://github.com/aurowallet/auro-wallet-mobile-app)**
>
> Mina Protocol moblie app wallet

**Production Timeline :**  
It is currently in the development stage and is expected to be released in June.

## Budget & milestones

- **Deliverables** :

- **Mid-Point milestones:**

- **Project Timeline :** 5 weeks

- **Budget Requested :**  
23000 MINA

- **Budget Breakdown:**

- **Wallet Address:**  
B62qpDuvZmpWkt4hVqUvWQsHCw2F1hY2QXQg1dK5T8Er1313FQVAMaQ

## Team Info

- **Proposer Github** :

- **Proposer Experience** :

- **Team Members** :

- **Achievements** :

## Risks & Mitigations

- What risks or dependencies do you foresee with building this project ?

- What are your migrations, if any?

---

<div class="post-metadata">

**Author:** ![inthestrongwind](https://avatars.discourse-cdn.com/v4/letter/i/2bfe46/32.png) [@inthestrongwind](https://forums.minaprotocol.com/u/inthestrongwind)\
**Post date:** [June 20, 2024, 9:19pm UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/3 "2024-06-20T21:19:06Z")

</div>

There is no doubt that this function is urgently needed now. I just want to ask if the development time can be shortened. At the same time, when will NFT be supported?Thank you.

---

<div class="post-metadata">

**Author:** ![Peter](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/peter/32/2077_2.png) [@Peter](https://forums.minaprotocol.com/u/Peter)\
**Post date:** [June 21, 2024, 8:58am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/4 "2024-06-21T08:58:39Z")

</div>

The launch of Mina’s custom tokens on Auro Wallet is certainly a significant and crucial development for the ecosystem!

---

<div class="post-metadata">

**Author:** ![hgedia](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/hgedia/32/1734_2.png) [@hgedia](https://forums.minaprotocol.com/u/hgedia)\
**Post date:** [June 21, 2024, 9:03am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/5 "2024-06-21T09:03:02Z")

</div>

Hi! Thanks for the proposal. Can you please elaborate on the user journey? It is not very clear to understand how custom tokens are added to the wallet and displayed. Do you have wireframes/mock-ups of this flow?

---

<div class="post-metadata">

**Author:** ![niuniu](https://avatars.discourse-cdn.com/v4/letter/n/ec9cab/32.png) [@niuniu](https://forums.minaprotocol.com/u/niuniu)\
**Post date:** [June 21, 2024, 11:42am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/6 "2024-06-21T11:42:27Z")

</div>

We are waiting NFT standard. once standard roll out, We will support first time.  
About NFT standard, maybe MF have a estimated time?

---

<div class="post-metadata">

**Author:** ![niuniu](https://avatars.discourse-cdn.com/v4/letter/n/ec9cab/32.png) [@niuniu](https://forums.minaprotocol.com/u/niuniu)\
**Post date:** [June 21, 2024, 11:47am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/7 "2024-06-21T11:47:21Z")

</div>

For backend: It’s a service. Mina daemon node default show all fungible token. Normally wallet will list all token on user wallet client.

For frontend: We will setup a feature let user can decide which token show in wallet.this feature won’t help much at first. but when network has scam token ,it will be very useful protection user assets.

Let me clarify it by a UI design.

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/minaprotocol/original/2X/b/bcfb94514f66cabb4b970edd751bbc4454f7af70.png)

---

<div class="post-metadata">

**Author:** ![zk\_kirol](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/zk_kirol/32/2046_2.png) [@zk\_kirol](https://forums.minaprotocol.com/u/zk_kirol)\
**Post date:** [June 27, 2024, 9:08am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/8 "2024-06-27T09:08:59Z")

</div>

Hi, thanks for your proposal; I have a couple of questions.

I’d love to learn more about the token build service. It will just be used for token transfers, right? Balances can be fetched without it. Could you explain bit more how are you planning on designing it? Extension ↔ Token service connection I mean

I am unsure if I understand how you plan to index all contracts. “Daemon node requirements for returning token assets are to inherit or implement the basic token contract “ without the source code of the contracts. Would you detect all token accounts? Even so, there may be many applications that just use TokenContract yet do not implement the FundgibleToken standard.

You mention scam token detection. How would you implement it, and is it in the scope of this proposal? Potentially, at some point, ‘indexing all tokens’ may be overkill (let’s hope for such traffic on Mina 😃 ). How would you see such a process evolve in the future?

Your proposal heavily depends on MF releasing the FungibleToken standard; let’s hope for its successful release soon!

---

<div class="post-metadata">

**Author:** ![bulingTang](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/bulingtang/32/2083_2.png) [@bulingTang](https://forums.minaprotocol.com/u/bulingTang)\
**Post date:** [June 28, 2024, 10:24am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/9 "2024-06-28T10:24:11Z")

</div>

The token build service is only used to build the token-transfer transaction body. It will not handle other behaviors. The balance, symbol, token-id, token address are all from the daemon node.

1. When the user clicks to confirm the transfer, the extension will encrypt the key information of the transfer (SendTokenParams) and daemon-gql-url (used to initialize Mina instance because Auro supports custom networks; daemon-gql-url is also sent as a parameter here) and send it to the token build service (hereinafter referred to as the service).

2. After receiving the transfer information, the service decrypts and verifies the parameters. If the verification passes, it checks whether the token contract has been executed compile. If it has been executed, it continues to build the service. After the service is built, the result is encrypted and returned to the extension.

3. After receiving the build result of the service, the extension decrypts and verifies after decryption (verifies whether the update address and amount of accountUpdates are user input parameters). If it passes, it signs and broadcasts. If the decryption or verification fails in the middle, an exception will be thrown to prompt the user. This transaction ends.

```auto
type SendTokenParams = {
sender: string;
receiver: string;
tokenAddress: string;
amount: number | string;
isNewAccount?: boolean;
};

```

Regarding index all contracts, this is daemon-gql’s requirement for returning asset tokens. Auro Wallet will only receive and display them and will not process the contract source code. If the application only implements TokenContract but does not implement the FundgibleToken standard, Auro Wallet will display its assets as long as it passes daemon-gql’s requirements. Transfers may not be supported because we mainly support contracts of the FundgibleToken standard.

Scam tokens mainly rely on users to provide data (like GitHub PRs or issues) and risk service scanning (mainly scanning memo information). When users encounter related problems, they can submit risk tokens on However, Auro Wallet is not within the scope of this proposal. Auro Wallet will regularly scan the GitHub repository and prompt users in extensions. However, this service is not within the scope of this proposal.

---

<div class="post-metadata">

**Author:** ![zk\_kirol](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/zk_kirol/32/2046_2.png) [@zk\_kirol](https://forums.minaprotocol.com/u/zk_kirol)\
**Post date:** [July 1, 2024, 5:54pm UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/10 "2024-07-01T17:54:19Z")

</div>

thanks for the reply!

> [@bulingTang](#):
>
> it checks whether the token contract has been executed compile

how would you check that? does your server compile the contract, if so don’t you need source code for this?

---

<div class="post-metadata">

**Author:** ![hgedia](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/hgedia/32/1734_2.png) [@hgedia](https://forums.minaprotocol.com/u/hgedia)\
**Post date:** [July 2, 2024, 4:33pm UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/11 "2024-07-02T16:33:13Z")

</div>

> [@zk\_kirol](#):
>
> how would you check that? does your server compile the contract, if so don’t you need source code for this?

We have discussed this internally and here are some of our guidelines.

- The token standard is undergoing an audit, so the team should keep an eye on issues reported on [GitHub](https://github.com/MinaFoundation/mina-fungible-token/issues?q=is%3Aopen+is%3Aissue+label%3Aaudit) with label audit among others.
- The verification key for the same fungible token contract if compiled with two different versions of o1js can potentially lead to different verification keys. Thus making it harder to interact.

The funding for this proposal is approved. This proposal has a high impact on the ecosystem. Due to the findings mentioned above, there is a medium risk associated with the delivery. The Auro wallet team has been delivering great value to the ecosystem and we find this proposal is moving in the right direction to add support for custom tokens.

---

<div class="post-metadata">

**Author:** ![bulingTang](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/bulingtang/32/2083_2.png) [@bulingTang](https://forums.minaprotocol.com/u/bulingTang)\
**Post date:** [July 3, 2024, 1:45am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/12 "2024-07-03T01:45:16Z")

</div>

Here we set a runtime variable. When the contract is compiled, we will record it. When the next request hits the server, we will check whether it has been compiled. If not, we will request compile and record the status after compiled to avoid the long-time caused by repeated compile.

The source code is required. We have built-in FungibleToken source code by default. We will prompt the token developer to submit the source code in the developer documentation. If there is no source code, we will try to interact with [FungibleToken](https://github.com/MinaFoundation/mina-fungible-token).

---

<div class="post-metadata">

**Author:** ![bulingTang](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/bulingtang/32/2083_2.png) [@bulingTang](https://forums.minaprotocol.com/u/bulingTang)\
**Post date:** [July 31, 2024, 2:16pm UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/13 "2024-07-31T14:16:36Z")

</div>

Currently, Auro Extension token feature has been developed and is in the final stage of audit.  
The Auro App feature has been basically developed and will be submitted for audit soon.  
Currently, we are fixing the service issues raised by the audit (to be completed soon).  
And optimize the token build service.

---

<div class="post-metadata">

**Author:** ![Atombob](https://avatars.discourse-cdn.com/v4/letter/a/a88e4f/32.png) [@Atombob](https://forums.minaprotocol.com/u/Atombob)\
**Post date:** [August 28, 2024, 1:27pm UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/14 "2024-08-28T13:27:06Z")

</div>

When this update will launch on Mainnet？

---

<div class="post-metadata">

**Author:** ![bulingTang](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/bulingtang/32/2083_2.png) [@bulingTang](https://forums.minaprotocol.com/u/bulingTang)\
**Post date:** [September 2, 2024, 12:59am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/15 "2024-09-02T00:59:43Z")

</div>

The final audit is currently underway and is expected to be launched within 2 weeks.

---

<div class="post-metadata">

**Author:** ![bulingTang](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/bulingtang/32/2083_2.png) [@bulingTang](https://forums.minaprotocol.com/u/bulingTang)\
**Post date:** [September 2, 2024, 1:30am UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/16 "2024-09-02T01:30:33Z")

</div>

This proposal has been successfully delivered. The following is a detailed description document

Repository link

> **[GitHub - aurowallet/auro-wallet-browser-extension at feature/v2.3.0](https://github.com/aurowallet/auro-wallet-browser-extension/tree/feature/v2.3.0)**
>
> feature/v2.3.0

> **[GitHub - aurowallet/auro-wallet-mobile-app at feature/v2.1.0](https://github.com/aurowallet/auro-wallet-mobile-app/tree/feature/v2.1.0)**
>
> feature/v2.1.0

### auro-wallet-browser-extension

Currently supports the display of FungibleToken tokens, token management and token send.

In addition, due to concurrency issues, the token-zk-command of the extension is built by the front-end web page (token-build-web), that is, after the extension init send params, token-build-web get parameters to start build. After the build is completed, the extension request signs and broadcast.

### auro-wallet-mobile-app

Currently supports the display of FungibleToken tokens, token management and token send. The token-zk-command of the app is completed by the serve

---

<div class="post-metadata">

**Author:** ![ied](https://yyz1.discourse-cdn.com/flex035/user_avatar/forums.minaprotocol.com/ied/32/2172_2.png) [@ied](https://forums.minaprotocol.com/u/ied)\
**Post date:** [September 29, 2024, 12:04pm UTC](https://forums.minaprotocol.com/t/auro-wallet-mina-custom-token-support/6334/17 "2024-09-29T12:04:09Z")

</div>

I completely agree that custom token support in Auro Wallet would be a great addition. It’s something that would make interacting with Mina-based tokens much more straightforward for both developers and users. Having native support for custom tokens would definitely simplify the process and enhance the overall user experience.
