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

Open
#3,197 0 comments 0 reactions 0 assignees View on GitHub
Good First Issue Candidate
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.