Minto is a decentralised platform that tokenizes mining power through its hashrate token, BTCMT. Each BTCMT token corresponds to a unit of operational mining power, enabling users to participate in Bitcoin mining without the complexities of managing physical hardware. The platform offers access to mining power within a transparent framework, where the token's value is directly tied to the revenue generated from mining activities. This model not only simplifies entry into the mining sector but also aligns investor interests with the performance of the mining operations.
The primary objective of Minto was to lower the entry barriers for users unfamiliar with web3 technologies and blockchain mechanics. The aim was to simplify the overall user experience and foster broader adoption of the platform. To achieve this, the project focused on:
Rock’n’Block was tasked with delivering these enhancements to support Minto's goal of making BTC mining more accessible to a broader audience.
In close cooperation with the Minto team, we defined the following functional requirements to enhance the platform's user experience and operational efficiency:
The platform shall support user account management with multiple registration options. Users should be able to create accounts using email, social media accounts, or crypto wallets. To ensure security, two-factor authentication (2FA) shall be implemented to protect user accounts.
To facilitate user engagement, various methods for purchasing BTCMT tokens shall be available. Users should be able to buy tokens with credit cards or through cryptocurrency invoices. Additionally, the platform shall allow token swapping via decentralized exchanges (DEX) to enhance liquidity.
A significant feature of the Minto platform shall be the implementation of gasless transactions for users with generated wallets. This functionality shall enable users to conduct transactions without needing a balance of native tokens for gas fees, simplifying the overall user experience.
Users shall have the capability to perform essential asset operations, including sending and receiving tokens, staking assets, claiming rewards, and unstaking tokens. These functionalities are critical for fostering user engagement with the platform.
To promote transparency and build user trust, the platform shall provide access to transaction history, allowing users to track their activities and manage their assets effectively.
The platform shall empower users to participate in governance by voting on decentralized autonomous organization (DAO) proposals. An intuitive voting interface shall facilitate user engagement in governance processes, ensuring their voices are heard in the Minto ecosystem.
Here’s the refined overview focusing solely on the purchase process for BTCMT tokens, emphasizing the integration with Fireblocks and the overall system functionality:
Registration Process: Users register by providing their email, password, and confirmation. The registration process is supported by Firebase for secure user management. If a user attempts to register with an email that already has a profile, an error message is displayed, and registration fails. If the user tries to register with an existing social account, they will be redirected to log in instead.
Upon successful registration, the system communicates with Firebase to create the user account. The user then sees an "Account Created" screen before being redirected to the main page. Following this, the backend calls the Fireblocks API to create a new Vault account for the user, specifying optional parameters such as account name, visibility, customer reference ID, and auto-fuel settings.
Two-Factor Authentication (2FA): Users who opt for 2FA receive instructions to set it up using an authenticator app. After entering the verification code, 2FA is enabled for their profile and required for future logins.
After registration, the backend automatically creates an asset wallet for the user using the Fireblocks API, initially supporting currencies like BNB, BTC, and USDT. Users see their wallet address and a QR code upon creation.
Users can log in via email and password, social accounts, or by connecting their wallets. Email login includes a maximum of three password attempts, after which the account is temporarily locked for five minutes.
Users can recover forgotten passwords through Firebase. After entering and confirming a new password, they must log in manually, as automatic authentication is not permitted.
Users can purchase BTCMT tokens through three methods: by card, with crypto via invoice, or from an exchange.
When users select the card payment option, the system redirects them to the Fiat Gateway payment page. Users specify the currency and amount for their purchase, and the payment gateway receives the recipient's address corresponding to the BTCMT token purchase contract. Upon confirmation of the payment, the system waits for a response from the gateway regarding payment execution. If successful, the funds transfer from the gateway to the BTCMT purchase contract on Minto, executing the purchase and sending the BTCMT tokens to the user’s specified address. The Fireblocks API facilitates the transaction details, ensuring accurate processing.
If the payment fails, the system displays an error message prompting the user to try again.
For crypto payments, users are directed to the dedicated Buy BTCMT Crypto page, where they select the currency options, such as BTC, ETH, BNB, USDT, and USDC, along with the payment amount. The system presents details like the purchase amount, gas fees, and referral bonuses, if applicable.
After confirming the purchase, the system sends a request to the invoice module, which generates a payment address valid for a set duration (TTL). Users complete the transaction by sending the specified amount to the generated address.
The invoice module monitors payment progress, validating whether the full amount is received. The Fireblocks API plays a critical role by relaying information regarding transaction status and account balance replenishment to the backend. The invoice’s status reflects whether it is pending, completed, or canceled based on payment conditions.
If users encounter any issues during the transaction, the system prompts them with an error message.
When users opt to buy BTCMT tokens from an exchange, they are redirected to the Buy BTCMT Exchange page. Here, they specify the currency and payment amount. The system compiles transaction parameters and communicates with the Fireblocks API to sign and publish the transaction on the blockchain. After a successful execution, BTCMT tokens are sent to the user’s address, and the system updates the user with purchase completion details.
If the DEX transaction fails, the system displays an error message encouraging the user to try again.
Upon a successful purchase, the system updates the user’s balance via the Fireblocks API and notifies the user of their newly acquired tokens. Users receive options to stake their tokens or defer their decision.
If users choose to stake, the system prepares the transaction parameters for the Fireblocks API, which handles the signing and execution of the staking transaction. The system processes the details and confirms the staked status to the user.
If any transaction fails during this stage, the system displays an error message prompting the user to attempt the process again.
The Gas Station module is a critical component designed to simplify gas fee payments during user transactions, such as buying, sending, withdrawing, staking, and unstaking tokens. Its primary function is to automatically manage gas payments, allowing users to focus on their transactions without worrying about the underlying costs associated with network fees.
When a user initiates a transaction, the system automatically calculates the total transaction amount, dividing it into two parts: the amount intended for the transaction and a small portion that serves as a commission for the administrator. This commission is crucial for maintaining the Gas Station's functionality and is sent to a special funding address created specifically for this purpose.
One of the key features of the Gas Station module is the auto-fuel parameter. When activated, this feature ensures that gas fees are automatically covered from the user's account, making the transaction process seamless. Users don’t need to take any extra steps to manage these fees; the system takes care of everything behind the scenes.
By automating gas fee management and simplifying the payment process, the Gas Station module enhances the user experience, making it easier for individuals to engage in various transactions without the stress of managing gas costs manually.
Users initiate a send transaction by selecting a currency from their balance. The system verifies that the user has a balance greater than zero for the selected currency. The transaction parameters, including recipient address and amount, are submitted to the Fireblocks API for processing. The system calculates the estimated gas fee using the Fireblocks API and handles the transaction signing via the Vault. Once the transaction is executed, the system requests confirmation of the transaction status from Fireblocks.
Users select a staking type and specify the deposit amount. The system retrieves the user's BTCMT token balance from the Fireblocks API. Transaction parameters are sent to Fireblocks for processing after confirmation, and the tokens are transferred to the staking contract. The system follows up with a request to Fireblocks for execution confirmation.
To withdraw accumulated staking rewards, users input the desired claim amount. The system collects the necessary transaction parameters and sends them to Fireblocks. After processing, the system requests confirmation of the transaction execution from Fireblocks.
Users can withdraw tokens from staking by entering the amount within the allowable limits. The system collects the unstake transaction parameters and submits them to Fireblocks for processing. The system then retrieves the transaction execution information from Fireblocks.
The system facilitates the receiving of tokens by generating a wallet address and QR code for the user. Upon receipt of tokens, Fireblocks sends execution information to the system, which updates the user's balance accordingly.
The Token page displays the transaction history by querying the Fireblocks API for transaction data. This includes all transaction types, such as sends, receives, stakes, and withdrawals, sorted by date. Users can request detailed transaction information through the Fireblocks API for each transaction.
The integration of Fireblocks into Minto's platform resulted in several significant outcomes that reflect the project's innovative approach: