# Smart Contract

## Contract Overview

The SHIM token is an ERC-20 token with additional features like fee mechanisms, trading limits, and liquidity functions. It's designed to work with Uniswap V2 and includes anti-whale measures.

## Core Functions

### 1. Constructor

```solidity
constructor () ERC20("ShimaNest", "SHIM")
```

* Initializes the token with name "ShimaNest" and symbol "SHIM"
* Sets up router addresses for different chains (BSC mainnet/testnet, ETH mainnet/testnet)
* Transfers ownership to `0x4F69F9cEDC6Cf0db1AF4DdCE364DcD9EEB1408dF`
* Creates Uniswap V2 pair
* Sets initial fees (3% liquidity, 2% marketing on both buy/sell)
* Configures wallet/transaction limits
* Mints 20 billion tokens to owner
* Disables trading initially

### 2. Fee Management Functions

**`updateBuyFees()`**

```solidity
function updateBuyFees(uint256 _liquidityFeeOnBuy, uint256 _marketingFeeOnBuy)
```

* Allows owner to update buy fees
* Ensures total fees don't exceed 10%
* Emits `UpdateBuyFees` event

**`updateSellFees()`**

```solidity
function updateSellFees(uint256 _liquidityFeeOnSell, uint256 _marketingFeeOnSell)
```

* Similar to `updateBuyFees` but for sell transactions
* Also caps total fees at 10%

**`updateWalletToWalletTransferFee()`**

```solidity
function updateWalletToWalletTransferFee(uint256 _walletToWalletTransferFee)
```

* Sets fee for wallet-to-wallet transfers (non-dex transactions)
* Maximum fee capped at 5%

### 3. Wallet Management Functions

**`changeMarketingWallet()`**

```solidity
function changeMarketingWallet(address _marketingWallet)
```

* Allows owner to change marketing wallet address
* Prevents setting to zero address
* Emits `MarketingWalletChanged` event

**`excludeFromFees()`**

```solidity
function excludeFromFees(address account, bool excluded)
```

* Excludes/includes account from fees
* Only callable by owner
* Emits `ExcludeFromFees` event

### 4. Trading Functions

**`enableTrading()`**

```solidity
function enableTrading()
```

* Activates trading (initially disabled)
* Also enables swapping functionality
* Can only be called once

**`_transfer()` (Internal)**

```solidity
function _transfer(address from, address to, uint256 amount)
```

* Main transfer function with all fee logic
* Checks trading status and limits
* Handles fee collection and redistribution
* Implements anti-whale measures
* Processes swaps when thresholds are met

### 5. Liquidity Functions

**`swapAndLiquify()`**

```solidity
function swapAndLiquify(uint256 tokens)
```

* Internal function that:
  1. Swaps half of tokens for ETH
  2. Adds liquidity with other half of tokens and received ETH
  3. Sends LP tokens to dead address
* Emits `SwapAndLiquify` event

**`swapAndSendMarketing()`**

```solidity
function swapAndSendMarketing(uint256 tokenAmount)
```

* Swaps tokens for ETH
* Sends ETH to marketing wallet
* Emits `SwapAndSendMarketing` event

### 6. Limit Management Functions

**Max Wallet Limits:**

```solidity
function setEnableMaxWalletLimit(bool enable)
function setMaxWalletAmount(uint256 _maxWalletAmount)
function excludeFromMaxWallet(address account, bool exclude)
```

* Enable/disable wallet limit
* Set max wallet amount (min 1% of supply)
* Exclude addresses from limit

### **Max Transaction Limits:**

```solidity
function setEnableMaxTransactionLimit(bool enable)
function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell)
function excludeFromMaxTransactionLimit(address account, bool exclude)
```

* Similar to wallet limits but for transactions
* Minimum 0.1% of supply for both buy/sell limits

### 7. Utility Functions

**`claimStuckTokens()`**

```solidity
function claimStuckTokens(address token)
```

* Allows owner to recover accidentally sent tokens
* Cannot recover the token itself

**`setSwapTokensAtAmount()`**

```solidity
function setSwapTokensAtAmount(uint256 newAmount)
```

* Sets threshold for auto-swapping accumulated fees
* Must be > 0.0001% of total supply

**`setSwapEnabled()`**

```solidity
function setSwapEnabled(bool _enabled)
```

* Toggles whether fee auto-swapping is active

## Key Features

1. **Fee Mechanism**:
   * Different fees for buying/selling (default 5% total)
   * Separate wallet-to-wallet transfer fee
   * Fees are split between liquidity and marketing
2. **Anti-Whale Protection**:
   * Max wallet limit (default 2%)
   * Max transaction limits (default 1% buy/sell)
3. **Liquidity Management**:
   * Automatic LP creation from fees
   * Marketing fees converted to ETH
4. **Security Measures**:
   * Trading initially disabled
   * Owner can exclude addresses from limits/fees
   * Prevents setting dangerous limits (<0.1%)
5. **Multi-Chain Support**:
   * Detects chain ID to use correct router addresses
   * Supports BSC and Ethereum mainnets/testnets

## Events

The contract emits several events for important state changes:

* Fee updates
* Wallet/limit changes
* Swap activities
* Exclusions from limits/fees
* Ownership transfers (from Ownable)

This comprehensive token contract includes robust features for DeFi trading while implementing protections against common issues like whale manipulation and providing flexibility for fee adjustments.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://knowledge.shimanest.com/security-and-transparency/smart-contract.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
