Final Report
Copyright © 2022 by Verilog Solutions. All rights reserved.
April 4, 2022
by Verilog Solutions
This report presents our engineering engagement with STEPN, a Game-Fi/Social-Fi Web3 application. Users could acquire STEPN NFT sneakers and earn rewards by engaging in outdoor activities. STEPN tokens have two tokens: GST & GMT.
STEPN is a Game-Fi/Social-Fi project with a dual-token system (GMT and GST) and an NFT system (STEPN Sneaker). Users acquire the STEPN Sneaker to participate in the move-and-earn program and earn GST and/or GMT. GMT and GST can be used to upgrade Sneakers and increase the rate of earning. GMT is the governance token, and it is currently deployed on Solana and BNB Chain. GST is the unlimited-supply reward token, and it is currently deployed on Solana.
Our review focused on the main branch, specifically, commit hash c07ff86e5e8060de0cd10d6842405964c2cc5d13.
Our auditing service for STEPN includes the following two stages:
Pre-Audit Consulting Service
As a part of the pre-audit service, the Verilog Solutions team worked closely with the STEPN development team to discuss potential vulnerability and smart contract development best practices in a timely fashion. Verilog Solutions team is very appreciative of establishing an efficient and effective communication channel with the STEPN team, as new findings are often exchanged promptly and fixes were deployed quickly, during the preliminary report stage.
Audit Service
The Verilog Solutions team conducted a thorough study of the STEPN code. The list of findings, along with the severity and solution, is available under the section Findings & Improvement Suggestions.
Below is the summary of GMT & GST token info:
Network | Token | Token Address |
---|---|---|
Solana | GMT | 7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx |
Solana | GST | AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB |
BNB | GMT | 0x3019BF2a2eF8040C242C9a4c5c4BD4C81678b2A1 |
BNB | GST | n/a (coming soon) |
STEPN dev team used Solana Token Program to create both GMT & GST tokens. Token Program defines a common implementation for Fungible and Non Fungible tokens.
The document of the Token Program: https://spl.solana.com/token
The Github of Token Program: https://github.com/solana-labs/solana-program-library
As can be seen from the Solscan, both GMT & GST tokens used Solana Token Program:
Besides, the STEPN project dev team already turned off the emission right for GMT Token as can be seen in the screenshot, GMT token has a fixed supply.
Currently, only the GMT token has been deployed on BNB Chain, and the token has been implemented by the Binance Bridge team. The contract deployment address is 0x3019BF2a2eF8040C242C9a4c5c4BD4C81678b2A1.
Below is the summary of GMT token on BNB Chain:
Title | Info |
---|---|
Network | BNB Chain |
Token | GMT |
Upgradable Contract? | Yes |
Proxy Address | 0x3019BF2a2eF8040C242C9a4c5c4BD4C81678b2A1 |
Implementation Address | 0xba5fe23f8a3a24bed3236f05f2fcf35fd0bf0b5c |
Implementation Contract Source Code can be found in GMT BNB Implementation.
In summary, the implemented smart contracts follow the ERC20 standards.
GreenSatoshiToken.sol
:
a. Owner
can mint()
any amount of GST tokens to any address without limitations.
STEPNNFT.sol
:
a. Owner
can setBaseURI()
, mint()
.
InformationalMinorMediumMajorCritical
Total | Acknowledged | Resolved | |
---|---|---|---|
Critical | 0 | 0 | 0 |
Major | 0 | 0 | 0 |
Medium | 2 | 2 | 0 |
Minor | 0 | 0 | 0 |
Informational | 0 | 0 | 0 |
none ;)
none ;)
Centralization Risks on GreenSatoshiToken.sol
. Medium
Description: Owner
of this smart contract can mint tokens to certain addresses, Private key leaks may result in the unlimited token supply issue.
Recommendation: uses a multisig
wallet to prevent a single point of failure.
Feedback from Project Team: As disclosed in the STEPN whitepaper, GST has an unlimited supply therefore we have to enable the function to mint an unlimited amount of GST.
Centralization Risks on STEPNNFT.sol
. Medium
Description: Owner
of this smart contract can mint tokens to certain addresses, Private key leaks may result in the unlimited NFT supply issue. Owner
of this smart contract can change the base URL of the NFT.
Recommendation: uses multisig
wallet to prevent a single point of failure.
Feedback from Project Team: STEPN’s NFT sneaker also has an unlimited supply, therefore we have to beagle the function to allow an unlimited amount of NFT sneakers to be minted by our users.
none ;)
none ;)
In this section, we listed the deployed contract on-chain for your reference.
STEPN team implemented a solidity version of GST token, which uses Openzeppelin
's ERC20 standard libraries:
Verilog Solutions receives compensation from one or more clients for performing the smart contract and auditing analysis contained in these reports. The report created is solely for Clients and published with their consent. As such, the scope of our audit is limited to a review of code, and only the code we note as being within the scope of our audit detailed in this report. It is important to note that the Solidity code itself presents unique and unquantifiable risks since the Solidity language itself remains under current development and is subject to unknown risks and flaws. Our sole goal is to help reduce the attack vectors and the high level of variance associated with utilizing new and consistently changing technologies. Thus, Verilog Solutions in no way claims any guarantee of security or functionality of the technology we agree to analyze.
In addition, Verilog Solutions reports do not provide any indication of the technologies proprietors, business, business model, or legal compliance. As such, reports do not provide investment advice and should not be used to make decisions about investment or involvement with any particular project. Verilog Solutions has the right to distribute the Report through other means, including via Verilog Solutions publications and other distributions. Verilog Solutions makes the reports available to parties other than the Clients (i.e., “third parties”) – on its website in hopes that it can help the blockchain ecosystem develop technical best practices in this rapidly evolving area of innovation.