AI prompts
base on # π Welcome to Tact Challenge
### by TON Foundation
## π Tasks
1. [task1](/contracts/1.tact) - Counter contract
2. [task2](/contracts/2.tact) - Proxy contract
3. [task3](/contracts/3.tact) - Dex contract
4. [task4](/contracts/4.tact) - NFT locker contract
5. [task5](/contracts/5.tact) - NFT random swap
Each task has two parts:
- π A comment with a description of what the smart contract should do.
- π» The code of the smart contract with one or more functions marked as `testable`.
The goal of the contestants is to provide a code that matches the description.
Each task may give the contestant either 0 or 5 to 6 score points: 5 for all tests passed plus "gas-score" from 0 to 1 (0 for "infinite" gas consumption, 1 for 0 gas consumption, dependence is inverse exponent).
Each TVM execution is limited to 100,000,000 (hundred million) gas units.
This limit is high enough that it only rules out infinite loops. Any practical solution, regardless of how (un)optimized it is, will fit.
We ask participants not to change the signature (number, order, and types of arguments and result) of `testable` functions for us to be able to evaluate their submission.
## π
Solution submission guide and terms
1. **Registration Process**: Before you begin, make sure to go through the registration process via the [@smartchallengebot](https://t.me/smartchallengebot?start=true). Your solutions will not be accepted if you are not properly registered.
2. **Create a Private GitHub Repository**: Clone this repository and set it as your own private GitHub repo. **Ensuring the visibility configs are set to "private"** is crucial to safeguarding your solution.
3. **Set Your Token**: Utilize the `token` provided to you during registration in Telegram bot and set it as a secret variable called USER_TOKEN in your private repository. You can learn more about setting secret variables in the [official GitHub documentation](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository).
4. **Submit Your Solution**: When you are ready to submit your solution, simply push your code into your private repository. The code will be sent to the task review server, and GitHub actions will display the status of your submission.
5. **Solution Evaluation**: If at least one of your solutions works well, your submission will be counted. Feel free to push solutions for more tasks; GitHub actions will run your code against tests and count successful submissions. To see a detailed report on your submission, proceed to GitHub Actions tab and you will see a similar report along with possible errors if present:
<div align="center">
| Task ID | Compiled | Tests Passed | Points | Gas Used | Compilation Error |
|---------|:--------:|:------------:|:------:|:----------------------:|:-----------------:|
| 1 | β | β | 0 | N/A | [Error Details](#compilation-error-task-1) |
| 2 | β
| β 0/6 | 0 | 0 | |
| 3 | β
| β
10/10 | 5.127 | 491,235,717 | |
| 4 | β | β | 0 | N/A | [Error Details](#compilation-error-task-4) |
| 5 | β | β | 0 | N/A | [Error Details](#compilation-error-task-5) |
</div>
6. **Check Your Points**: To check your solution points, review the logs of the GitHub action for your latest commit. Additionally, you can find your solution points in the menu button inside of the Telegram bot.
**Best of luck with your submissions!**
## βΌοΈ Important rules:
- It's forbidden to use any FunC/Fift code inside of submitted Tact solutions. Participants who will have FunC/Fift code in their submissions will be disqualified. This rule applies to Tact bindings as they're using a lower level of abstraction thus compromising the nature of Tact Challenge.
- Please don't share your solution's code with anybody. If someone's submission will be suspected of using your code - both participants will be disqualified. Repeated case will cause lifetime ban from TON Smart Challenges.
## π Scoring and Prizes
Winners of the contest will receive prizes denominated in Toncoin, the native cryptocurrency of TON blockchain, which is also used as a resource for contract execution.
Each task can bring you a max of 6 points. You get 5 points for solving a task. You get an extra point if you solve it without using any gas.
**Minimum amount** of points to be eligible for the prize is **6 points**.
Prizes:
- The top 15% of participants share $10,000 in TON
- The middle 30% of participants share $10,000 in TON
- The bottom 55% of participants share $10,000 in TON
Each prize pool is shared equally among the participants in that group. In total, we're giving away $30,000 in TON prizes.
The total prize might change depending on the number of participants.
## π Getting Started with TON
New to blockchain or TON development? Start here:
- [Blockchain Basics](https://blog.ton.org/what-is-blockchain)
- [TON Intro](https://docs.ton.org/learn/introduction)
- [Developer Portal](https://ton.org/dev?filterBy=developSmartContract)
### π Essential Tact Resources
Master the Tact language with these must-have materials:
- [Tact by Example](https://tact-by-example.org/)
- [Tact Docs](https://tact-lang.org/)
- [Video Tutorials](https://www.youtube.com/@AlefmanVladimirEN-xb4pq/videos)
- [Join Tact Community](https://t.me/tactlang)
Find ready-to-use smart contract examples [here](https://github.com/tact-lang/awesome-tact#-smart-contracts-examples). Explore more about Tact in the [awesome-tact repository](https://github.com/tact-lang/awesome-tact).
### π οΈ Tools for Tact Compilation and Testing
#### For Tact Challenge
For Tact Challenge we recommend cloning current repository and follow the submission guide described above.
#### To quickstart your own Tact projects
We recommend using [tact-template](https://github.com/tact-lang/tact-template) for a smooth Tact development experience:
1. Clone the [template repo](https://github.com/tact-lang/tact-template)
2. `yarn build` to build contracts
3. `yarn test` to test contracts
4. `yarn deploy` to deploy contracts
### π TON Developers Community Chats
Stay in the loop and engage with other developers:
- [TON Dev Chat (EN)](https://t.me/tondev_eng)
- [TON Dev Chat (δΈζ)](https://t.me/tondev_zh)
- [TON Dev Chat (Π Π£)](https://t.me/tondev)
", Assign "at most 3 tags" to the expected json: {"id":"3546","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"