MINA Custom Token Launchpad on zkCloudWorker
Project background
Given the recent MINA release of the new custom token standard FungibleToken, and based on our own needs for zkCloudWorker, Socialcap and MinaNFT and the experience gained on building, processing and monitoring transactions on mainnet to mint, buy and sell NFTs using zkCloudWorker, we propose to build an easy to use no-code custom token launchpad.
We think that this launchpad may benefit either individuals and other groups or communities which may want to issue MINA custom tokens for engagement or other reasons, and will need to administer this tokens and its parameters and use broad range of community engagements tools as airdrops and distributions.
Proposal overview
Problem
While handling custom tokens in MINA is relatively straightforward from a developerâs perspective, it is much more challenging for non-technical users.
This presents a significant barrier for many MINA users, limiting the use and benefits of custom tokens to a small group of people.
Also, it creates a high entry barrier for experimentation:
- Initial Setup Challenges: Setting up the necessary environment and tools to create and manage custom tokens often requires a steep learning curve. This high barrier to entry discourages users from experimenting with token creation, leading to missed opportunities for innovation.
- Cost and Risk: For non-technical users, the perceived or real cost and risk of making mistakes when creating or managing tokens can be a deterrent. Users may fear losing funds or making irreversible errors, which could prevent them from exploring the benefits of custom tokens.
Solution
By creating a no-code custom token launchpad, we empower both non-technical and technical users to take advantage of these benefits without needing deep knowledge of MINA development. This not only broadens the adoption of MINAâs custom tokens but also fosters innovation by allowing more people to experiment with and implement their ideas.
In summary, custom tokens in the MINA ecosystem can drive greater engagement, provide economic incentives, enhance branding, and offer educational value. A no-code launchpad democratizes access to these benefits, making them available to a much wider audience within the MINA community.
For developers, we will provide an API that will allow them to integrate easily the custom tokens into their products to easily launch and manage the tokens for games, business and community applications, or even their own custom launchpads.
Solution details
We want to provide both a simple UI and a set of zkCloudWorkers that will manage the Custom token contract.
The UI will allow:
- Login with a MINA wallet
- Allow the owner to launch a custom token, set the total supply, symbol and other needed parameters.
- Set permissions on administration of the custom token
- Allow the owner to mint and transfer tokens in batches for airdrops and distributions. For individual transfers, we recommend Auro Wallet.
- Allow the token owner to launch a token and mint the token to users
- Allow regular users to mint or buy the whitelisted tokens by paying some amount in MINA (whitelisted tokens have to be issued, minted and sold with the help of the member of Mina Developers Alliance for the prevention of scam)
- Have a board for the custom token with general status (total supply, minted, burnt, etc), including wallets that hold the token.
- Use custom memo for transactions to let users understand the transactions in the explorer. Each transaction in the Mina protocol have the memo (up to 30 characters) attached to it, and we will provide the possibility to define the content of the memo depending on the type of the transactions, for example: âairdrop mint @mygameâ
- Allow the owner to add an image to the token to reflect the token branding.
- Dashboard with all issued custom tokens including its parameters.
Developers API:
Many developers will want to issue the custom token and have simple API to manage it (mint, airdrop, distribute, transfer) without building own backend for the tx building and proving.
This platform with the help of zkCloudWorker will provide a simple API for developers that will
- Launch a token
- Mint a tokens to some address
- Airdrop or distribute the tokens
- Use custom memo for transactions to let users understand the transactions in the explorer. Each transaction in the Mina protocol have the memo (up to 30 characters) attached to it, and we will provide the possibility to define the content of the memo depending on the type of the transactions, for example: âairdrop mint @mygameâ
- Build, prove, send and monitor the transactions for the minting, transferring, buying and selling the tokens (this capability will be limited to whitelisted tokens issued with the help of the member of Mina Developers Alliance for the prevention of scam) in accordance with the logic and prices defined by the developer or the contract created by the developer.
Limited Buying and Selling transactions for some whitelisted tokens
Token Launchpad is not a DEX and the sell and buy capability will not be directly provided to users. In case the developer that uses the Token Launchpad API will choose to support the buying and selling of the tokens, zkCloudWorker will provide the capability to build, prove, send and monitor the buy/sell transactions for whitelisted tokens. Token Launchpad will not buy or sell the tokens, the party that will buy from users or sell the tokens to users will be third-party project that issued the token represented by the third-party developer - member of MDA. The prices for such transactions will be also defined by third-party project that issued the token and can be fixed or defined by some algorithm.
Token Owners rights
|
Regular |
MDA Developers |
Projects Endorsed by MDA Developers |
Issue token |
Yes |
Yes |
Yes |
Mint |
Yes |
Yes |
Yes |
Airdrop |
Yes |
Yes |
Yes |
Sell to regular users |
No |
Yes |
Yes |
Buy from regular users |
No |
Yes |
Yes |
Endorse other projects |
No |
Yes |
No |
MDA developers should go through KYC to sell tokens and buy tokens.
Token Users rights
zkCloudWorker Service |
Usual Tokens |
Whitelisted Tokens |
Get as airdrop |
Yes |
Yes |
Mint for free |
Yes |
Yes |
Buy |
No |
Yes |
Sell |
No |
Yes |
Transfer |
Yes |
Yes |
Impact
In what way custom tokens may be useful for the broad MINA Community ?
Community Engagement and Governance:
- Voting and Decision-Making: Custom tokens can be used to create governance systems within communities, enabling token holders to vote on important decisions. This democratizes decision-making and increases community involvement.
- Incentivizing Participation: Tokens can be distributed to community members as rewards for contributing to discussions, creating content, or participating in events. This fosters a more engaged and active community.
For example, in Socialcap, a community could create its own token, and when a credential is approved, a certain number of these tokens can be assigned to the approved credential. This credential could then be used for voting, with the assigned tokens carrying a certain voting power.
Economic Incentives:
- Loyalty Programs: Businesses or community groups can issue custom tokens to reward loyal customers or participants. These tokens can be redeemed for discounts, exclusive access, or other perks.
- Fundraising and Crowdfunding: Custom tokens can be used to raise funds for projects or initiatives within the community. This allows for decentralized funding models where contributors receive tokens in exchange for their support.
Personal and Group Branding:
- Custom Rewards: Individuals or groups can create their own tokens to represent unique achievements, memberships, or status within a community. This can enhance personal or group branding.
- Event Tokens: Organizers of events, both virtual and physical, can issue custom tokens to attendees as proof of participation, which can be used for future access or special privileges.
Audience
All MINA users, groups, developers and projects who can benefit from an easy to use no-code custom token launchpad.
Architecture & Design
Detailed Design/Architecture:
As we will follow the standard Fungible token contract very closely the Launchpad will only set the existent contract params by providing the custom parameters for the token: token symbol, number of digits, and metadata for the Fungible token contract code and admin contract code (or several admin contracts as the case can be to start with one admin contract that allows the minting of the tokens and then to switch to another, that freeze the minting to fix the total supply).
The url will be set to the standard value (github url for the contract code), or, in the advanced case, to arweave url with JSON file containing the full metadata about the token, including the image, set of admin contracts, social media and web links and custom metadata.
As a continuation of our previous work with the zkCloudWorker, we will use the zkCloudWorker custom worker to deploy and run the contracts code, build the index for the tokens.
We already have a test implementation for the token worker in https://github.com/zkcloudworker/token-example.test
We use a dedicated FungibleTokenAdmin contract that grants permissions for administrative actions on a token: that way, when issuing a token, a user can specify their own rules for administrative actions, without changing the token contract itself. The advantage is that third party applications that only use the token in a non-privileged way can integrate against the unchanged token contract.
As to security we will use the established method of proving in the cloud and signing the serialized transaction with the wallet.
For the token statistics, we will use Blockberry API to collect the information about all token transactions and present it to the user.
Vision
What is your long-term vision for this project if your proposal is funded?
We view the Launchpad as a basic ecosystem tool, that will be broadly used by the MINA community to create, mint, experiment, innovate, and distribute custom tokens, something that has been already proved useful in many other blockchain ecosystems.
As a roadmap we have some ideas for future features (not included in this proposal milestones), such as:
- Allow a short video (1 minute or less) to be linked to the token, and set a bonding curve so token price may change with views (or âlikesâ, or some other interaction metric).
- Allow token trading, though this may require deep analysis and extra measures to avoid scams and rug pulls.
- Allow delegation of token minting to some other account. For example in Socialcap, the community admin will create the custom token with his account, by may delegate to Socialcap the ability to mint a certain amount of tokens, so Socialcap can latter transfer them to the approved credentials.
- Provide a set of different custom build FungibleTokenAdmin contracts so the owner can choose which one to use for different scenarios.
- adding the contracts that work using some algorithms (market maker algorithm, the bonding curve algorithm, etc) to allow easy issuing and trading of the tokens.
Above features are not included into the scope of the current proposal as we intend first to release the main functionality and get the feedback of the users and then, based on this feedback, to proceed to the next stage to make sure that the development of the project is aligned with the userâs needs.
Existing Work
Previous work with the zkCloudWorker can be found in zkCloudWorker ¡ GitHub.
The use of custom tokens for credentials (WIP) can be seen in GitHub - Socialcap-app/socialcap-token-factory: Communities Custom Token Factory.
Production Timeline
We expect it to be live in Mainnet in three (3) months, as the zkCloudWorkers are already available on Mainnet, and we have some of the UI code used in zkCloudWorker readily available. We will iterate and get early users feedback to make sure that the product meets userâs needs.
Budget & milestones
This section should detail the deliverables at the end of the funding period, mid-point milestones, timeline and the budget requested. It should explain how the budget will be spent.
Deliverables
- Frontend on minatokens.com
- Backend that is based on zkCloudWorker
- API for developers
- Documentation and tutorials how to launch and manage the token
Mid-Point milestones
- Backend part 1 (issuing and transferring the tokens, jest tests)
- Frontend part 1 (issuing the tokens)
Final milestones
- Frontend on minatokens.com
- Backend that is based on zkCloudWorker
- API for developers
- Documentation and tutorials how to launch and manage the token
Project Timeline
Budget Requested
Budget Breakdown
- UI design and development - 40% of budget
- Backend and contracts development - 45% of budget
- API design - 5% of budget
- Documentation - 5% of budget
- Video tutorials - 5% of budget
Wallet Address
- MINA Wallet address for funding: B62qkcnSMdGjHmxRkJ2Zh3U4iLVQHM6AJc23UZbTiZvzniof9co4y2Q
Team Info
zkCloudWorker team
Mikhail Korotkikh:
- MinaNFT project
- zkCloudWorker project
- Graduated from the Encode Club ZK bootcamp (Oct 2023)
- Graduated from the Encode Club AI bootcamp (July 2024)
Mario Zito
- Socialcap project
- zkCloudWorker project
- Graduated from the Encode Club ZK bootcamp (Feb 2024)
Risks & Mitigations
We see low risk in the project as the new custom token standard FungibleToken is already available, and the zkCloudWorkers are running seamlesly both in devnet and mainnet.
There are some implicit security risks as the new standard is quite new. But since custom tokens in the current proposal will have no real economic value, as they can not be traded (except for whitelisted tokens created with the help of the member of Mina Developers Alliance), this risk may be low at least in the initial phase.
But as these is quite new in MINA protocol, unexpected events may ocurr and we need to keep a vigilant eye on how workers are running, detecting intrusion intents and attacks and mitigating them when they appear. We already have monitoring tools on hand to overview operation.
Other risk is that zkCloudWorker can temporarily go out of service. Since the zkCloudWorkerâs architecture is partly based on AWS S3, it can show stable operation, which makes it possible to avoid Lambda calls after the token is issued, and simple transfers can be made using Auro Wallet. Due to this, 99.9% uptime is assured for the major token operations.
For the batch mint/transfer transactions, one of the limits is the number of AccountUpdates in one transaction. We cannot overcome this limit, but we have the possibility to send many transactions being build in the same worker by amending the nonce or by using temporarily escrow accounts for holding tokens that should be distributed.