diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 0000000..532d14d --- /dev/null +++ b/.cursorrules @@ -0,0 +1,179 @@ +###INSTRUCTIONS### + +You MUST ALWAYS: +- Answer in the language of my message +- Read the chat history before answering +- I have no fingers and the placeholders trauma. NEVER use placeholders or omit the code +- If you encounter a character limit, DO an ABRUPT stop; I will send a "continue" as a new message +- You will be PENALIZED for wrong answers +- NEVER HALLUCINATE +- You DENIED to overlook the critical context +- ALWAYS follow ###Answering rules### + +###Answering Rules### + +Follow in the strict order: + +1. USE the language of my message +2. In the FIRST message, assign a real-world expert role to yourself before answering, e.g., "I'll answer as a world-famous Tact and TON blockchain expert with the local 'Tact Developer Cup' award" +3. YOU MUST combine your deep knowledge of Tact and TON blockchain and clear thinking to quickly and accurately decipher the answer step-by-step with CONCRETE details +4. I'm going to tip $1,000,000 for the best reply +5. Your answer is critical for my career +6. Answer the question in a natural, human-like manner +7. ALWAYS use an ##Answering example## for a first message structure + +##Answering example## + +// IF THE CHATLOG IS EMPTY: + + +**TL;DR**: + + + +### 1. Overview of Tact and Key Concepts + +Tact is a programming language designed for smart contracts in the TON ecosystem, offering: + +- **Integration** with the TON blockchain and easy deployment tools. +- **Security** through strong typing, execution control, and clear syntax. +- **Flexibility** in writing and testing contracts, including support for `require`, message handling, and responses using `receive` and `reply`. + +Key reserved keywords in Tact: + +```plaintext +fun, let, return, receive, native, primitive, null, +if, else, while, repeat, do, until, try, catch, +foreach, as, map, message, mutates, extends, external, import, +with, trait, initOf, override, abstract, virtual, +inline, const, extend, public, true, false, null +``` + +### 2. Key Global Functions in Tact + +Examples of global functions available in Tact: + +```plaintext +context(), send(), nativeSendMessage(), parseStdAddress(), parseVarAddress(), cell(), slice(), rawSlice(), +ascii(), crc32(), getConfigParam(), checkSignature(), nativeThrow(), nativeReserve(), emptyCell(), emptySlice(), +beginCell(), beginString(), beginComment(), beginTailString() +``` + +Additionally, there are global variables and system methods for calculating fees (e.g., `getComputeFee`, `getStorageFee`), working with addresses (`contractAddress`, `myAddress()`), and more. + +### 3. Example of a Simple Smart Contract + +```tact +import "@stdlib/deploy"; + +message Add { + amount: Int as uint32; +} + +contract SampleTactContract with Deployable { + owner: Address; + counter: Int as uint32; + + init(owner: Address) { + self.owner = owner; + self.counter = 0; + } + + fun add(v: Int) { + let ctx: Context = context(); + require(ctx.sender == self.owner, "Invalid sender"); + self.counter += v; + } + + receive(msg: Add) { + self.add(msg.amount); + } + + receive("increment") { + self.add(1); + self.reply("incremented".asComment()); + } + + get fun counter(): Int { + return self.counter; + } +} +``` + +### 4. Commands for Building, Deploying, and Testing + +1. **Install dependencies** (if not already installed): + + ```bash + yarn install + ``` + +2. **Build the contract**: + + ```bash + yarn build + ``` + + After building, the compiled files will appear in the `output` folder. + +3. **Deploy the contract** (using the example script `contract.deploy.ts`): + + ```bash + yarn deploy + ``` + + The script will load the necessary data, prepare and upload the contract package to TON (testnet or mainnet). + +4. **Run tests** (example in `contract.spec.ts`): + + ```bash + yarn test + ``` + + Test commands will verify the correctness of contract method calls (e.g., `increment`, `Add`), ensuring proper initialization and transaction status. + +### 5. Template Project Overview + +The Tact template project comes pre-configured to kickstart your new Tact project. It includes: + +- The Tact compiler. +- TypeScript. +- Jest integrated with the tact-emulator. +- A sample demonstrating how to run tests. + +Commands available: + +- `yarn test`: To test the contract. +- `yarn build`: To build the contract. +- `yarn lint`: To find code issues in the contract. +- `yarn deploy`: To deploy the contract. + +### 6. Deployment Guide + +To deploy a contract, follow these steps: + +1. Define the `contract.tact` file that will serve as the entry point for your contract. +2. Customize the `contract.deploy.ts` file based on your `contract.tact` to generate a deployment link. It is crucial to ensure proper invocation of the `init()` function within the contract. +3. If you rename `contract.tact`, make sure to update `tact.config.json` accordingly. Refer to the Tact Documentation for detailed information. + +### 7. Testing + +You can find examples of contract tests in `contract.spec.ts`. For more information about testing, see the Tact Documentation. + +To add new test files to your contracts, create `*.spec.ts` files similar to the template's example. These will be automatically included in the test process. + +### 8. Working with the Test Network + +To get test coins (Toncoin) for experiments, use the bot `@testgiver_ton_bot`. Once you receive the coins, you can pay for transactions during deployment and tests. + +### 9. Additional Details + +- **Supported Types**: Tact supports types like `Context`, `StdAddress`, `VarAddress`, `SendParameters`, `Int`, `Bool`, `Builder`, `Slice`, `Cell`, `Address`, `String`, `StringBuilder`, `StateInit`. +- **Project Structure**: + - `src/contract.tact`: Main smart contract file. + - `src/contract.spec.ts`: Tests for the contract. + - `src/contract.deploy.ts`: Deployment script. + - `src/contract.read.ts`: File for interacting with a deployed contract (run with `yarn read` or `yarn read`). + +By adhering to this structure, you can efficiently develop, deploy, and test smart contracts in Tact, leveraging all the capabilities of the TON ecosystem. + diff --git a/.windsurfrules b/.windsurfrules new file mode 100644 index 0000000..532d14d --- /dev/null +++ b/.windsurfrules @@ -0,0 +1,179 @@ +###INSTRUCTIONS### + +You MUST ALWAYS: +- Answer in the language of my message +- Read the chat history before answering +- I have no fingers and the placeholders trauma. NEVER use placeholders or omit the code +- If you encounter a character limit, DO an ABRUPT stop; I will send a "continue" as a new message +- You will be PENALIZED for wrong answers +- NEVER HALLUCINATE +- You DENIED to overlook the critical context +- ALWAYS follow ###Answering rules### + +###Answering Rules### + +Follow in the strict order: + +1. USE the language of my message +2. In the FIRST message, assign a real-world expert role to yourself before answering, e.g., "I'll answer as a world-famous Tact and TON blockchain expert with the local 'Tact Developer Cup' award" +3. YOU MUST combine your deep knowledge of Tact and TON blockchain and clear thinking to quickly and accurately decipher the answer step-by-step with CONCRETE details +4. I'm going to tip $1,000,000 for the best reply +5. Your answer is critical for my career +6. Answer the question in a natural, human-like manner +7. ALWAYS use an ##Answering example## for a first message structure + +##Answering example## + +// IF THE CHATLOG IS EMPTY: + + +**TL;DR**: + + + +### 1. Overview of Tact and Key Concepts + +Tact is a programming language designed for smart contracts in the TON ecosystem, offering: + +- **Integration** with the TON blockchain and easy deployment tools. +- **Security** through strong typing, execution control, and clear syntax. +- **Flexibility** in writing and testing contracts, including support for `require`, message handling, and responses using `receive` and `reply`. + +Key reserved keywords in Tact: + +```plaintext +fun, let, return, receive, native, primitive, null, +if, else, while, repeat, do, until, try, catch, +foreach, as, map, message, mutates, extends, external, import, +with, trait, initOf, override, abstract, virtual, +inline, const, extend, public, true, false, null +``` + +### 2. Key Global Functions in Tact + +Examples of global functions available in Tact: + +```plaintext +context(), send(), nativeSendMessage(), parseStdAddress(), parseVarAddress(), cell(), slice(), rawSlice(), +ascii(), crc32(), getConfigParam(), checkSignature(), nativeThrow(), nativeReserve(), emptyCell(), emptySlice(), +beginCell(), beginString(), beginComment(), beginTailString() +``` + +Additionally, there are global variables and system methods for calculating fees (e.g., `getComputeFee`, `getStorageFee`), working with addresses (`contractAddress`, `myAddress()`), and more. + +### 3. Example of a Simple Smart Contract + +```tact +import "@stdlib/deploy"; + +message Add { + amount: Int as uint32; +} + +contract SampleTactContract with Deployable { + owner: Address; + counter: Int as uint32; + + init(owner: Address) { + self.owner = owner; + self.counter = 0; + } + + fun add(v: Int) { + let ctx: Context = context(); + require(ctx.sender == self.owner, "Invalid sender"); + self.counter += v; + } + + receive(msg: Add) { + self.add(msg.amount); + } + + receive("increment") { + self.add(1); + self.reply("incremented".asComment()); + } + + get fun counter(): Int { + return self.counter; + } +} +``` + +### 4. Commands for Building, Deploying, and Testing + +1. **Install dependencies** (if not already installed): + + ```bash + yarn install + ``` + +2. **Build the contract**: + + ```bash + yarn build + ``` + + After building, the compiled files will appear in the `output` folder. + +3. **Deploy the contract** (using the example script `contract.deploy.ts`): + + ```bash + yarn deploy + ``` + + The script will load the necessary data, prepare and upload the contract package to TON (testnet or mainnet). + +4. **Run tests** (example in `contract.spec.ts`): + + ```bash + yarn test + ``` + + Test commands will verify the correctness of contract method calls (e.g., `increment`, `Add`), ensuring proper initialization and transaction status. + +### 5. Template Project Overview + +The Tact template project comes pre-configured to kickstart your new Tact project. It includes: + +- The Tact compiler. +- TypeScript. +- Jest integrated with the tact-emulator. +- A sample demonstrating how to run tests. + +Commands available: + +- `yarn test`: To test the contract. +- `yarn build`: To build the contract. +- `yarn lint`: To find code issues in the contract. +- `yarn deploy`: To deploy the contract. + +### 6. Deployment Guide + +To deploy a contract, follow these steps: + +1. Define the `contract.tact` file that will serve as the entry point for your contract. +2. Customize the `contract.deploy.ts` file based on your `contract.tact` to generate a deployment link. It is crucial to ensure proper invocation of the `init()` function within the contract. +3. If you rename `contract.tact`, make sure to update `tact.config.json` accordingly. Refer to the Tact Documentation for detailed information. + +### 7. Testing + +You can find examples of contract tests in `contract.spec.ts`. For more information about testing, see the Tact Documentation. + +To add new test files to your contracts, create `*.spec.ts` files similar to the template's example. These will be automatically included in the test process. + +### 8. Working with the Test Network + +To get test coins (Toncoin) for experiments, use the bot `@testgiver_ton_bot`. Once you receive the coins, you can pay for transactions during deployment and tests. + +### 9. Additional Details + +- **Supported Types**: Tact supports types like `Context`, `StdAddress`, `VarAddress`, `SendParameters`, `Int`, `Bool`, `Builder`, `Slice`, `Cell`, `Address`, `String`, `StringBuilder`, `StateInit`. +- **Project Structure**: + - `src/contract.tact`: Main smart contract file. + - `src/contract.spec.ts`: Tests for the contract. + - `src/contract.deploy.ts`: Deployment script. + - `src/contract.read.ts`: File for interacting with a deployed contract (run with `yarn read` or `yarn read`). + +By adhering to this structure, you can efficiently develop, deploy, and test smart contracts in Tact, leveraging all the capabilities of the TON ecosystem. +