hiero-ledger / hiero-ledger/hiero-consensus-node
Improve error message when the supply type is not set for a token that has a max supply
- Dominant language
- Java
- Stars
- 406
- Forks
- 226
- Avg merge
- 3d 4h
- Merged PRs (30d)
- 210
Description
### Problem
When creating a token that has a specified max supply, the supply type needs to be set to finite. If a user tries to create a token that does not have the supply type set to finite the network returns a `INVALID_TOKEN_MAX_SUPPLY`. This is misleading and confusing because the max token supply amount that was set is valid. We should update this response to say something like `TOKEN_SUPPLY_TYPE_NEEDS_TO_BE_SET`.
## 🆕🐥 First Timers Only
This issue is reserved for people who have never contributed to [Hedera](https://hedera.com) or any open source project in general.
We know that creating a pull request (PR) is a major barrier for new contributors.
The goal of this issue and all other issues labeled by [**'Good First Issue'**](https://github.com/issues?q=is%3Aopen+is%3Aissue+org%3Ahashgraph+archived%3Afalse+label%3A%22Good+First+Issue%22+) is to help you make your first contribution to Hedera.
## 👾 Description of the issue
When creating a token that has a specified max supply, the supply type needs to be set to finite. If a user tries to create a token that does not have the supply type set to finite the network returns a `INVALID_TOKEN_MAX_SUPPLY`. This is misleading and confusing because the max token supply amount that was set is valid. We should update this response to say something like `TOKEN_SUPPLY_TYPE_NEEDS_TO_BE_SET`.
### Steps to reproduce
Read and run the test `TokenCreateHandlerTest.rejectsInvalidMaxSupplyForInfiniteSupplyInPureChecks()`. Even though the defined max supply is valid, the error code is `INVALID_TOKEN_MAX_SUPPLY`.
### Proposed Solution:
To fix the issue and return the error code, three steps are necessary:
1. Add the new error code `TOKEN_SUPPLY_TYPE_NEEDS_TO_BE_SET` as another entry in `response_code.proto`. Once this is done, rebuild the project to re-generate the Java classes from the protobuf definition.
2. Fix the test above to expect the new error code. It is a new value of the enum `ResponseCodeEnum`.
3. Fix the code in `TokenCreateValidator.validateSupplyType()`.
The test should run successfully again.
## 📋 Step by step guide to do a contribution
If you have never contributed to an open source project at GitHub, the following step-by-step guide will introduce you to the workflow. More information and concrete samples for shell commands for each step can be found in our [CONTRIBUTING.md](https://github.com/hashgraph/.github/blob/main/CONTRIBUTING.md) file.
A more detailed general documentation of the GitHub PR workflow can be found [here](https://github.com/firstcontributions/first-contributions/blob/master/README.md).
- [ ] **Claim this issue:** Comment below that you are interested in working on the issue
- [ ] **Wait for assignment:** A community member with the given rights will add you as an assignee of the issue
- [ ] **Fork the repository:** You can do that in GitHub (by simply clicking the 'fork' button).
- [ ] **Check out the forked repository**
- [ ] **Create a feature branch** for the issue. We do not have a hard naming definition for branches but it is best practice to prefix the branch name with the issue id.
- [ ] **Solve the issue** in your branch.
- [ ] **Commit your changes:** Here, it is needed to add `sign-off` information to the commit to accept the "Developer Certificate of Origin" (https://developercertificate.org). More details can be found in our [CONTRIBUTING.md](https://github.com/hashgraph/.github/blob/main/CONTRIBUTING.md)
- [ ] **Start a Pull Request (PR)**: We have a pattern for naming pull requests that a GitHub Action checks. We use that pattern to support the creation of automatic release notes.
- [ ] **Check GitHub Actions:** Several GitHub Actions will be triggered automatically for each PR. If a GitHub Action fails and you do not understand the cause of that error do not hesitate to add a comment to the PR and ask the Hedera developer community for support.
- [ ] **Wait for reviews:** Members of the Hedera developer community will review your PR. If a reviewer finds any missing pieces or a problem, he or she will start a discussion with you and describe the next steps for solving the problem.
- [ ] **You did it 🎉:** We will merge the fix in the develop branch. Thanks for being part of the Hedera community as an open-source contributor ❤️
## 🎉 Contribute to Hacktoberfest
Solve this issue as part of the [Hacktoberfest](https://hacktoberfest.digitalocean.com) event and get a chance to receive cool goodies like a T-Shirt. 🎽
## 🤔 Additional Information
If you have any questions, just ask us directly in this issue by adding a comment. You can join our community chat at [Discord](https://hedera.com/discord). A general manual about open-source contributions can be found [here](https://github.com/firstcontributions/first-contributions/blob/master/README.md).
Contributor guide
Research direction
Start with response_code.proto and the TokenCreateHandlerTest.rejectsInvalidMaxSupplyForInfiniteSupplyInPureChecks() test. Then inspect TokenCreateValidator.validateSupplyType() to trace the returned error. Done means the new TOKEN_SUPPLY_TYPE_NEEDS_TO_BE_SET response code is generated and the test passes expecting it.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- blockchain
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 55/100