# Foundry

### Что такое Foundry? <a href="#what-is-foundry" id="what-is-foundry"></a>

Foundry - это набор инструментов для разработки Ethereum на языке Rust, который помогает разработчикам управлять зависимостями, компилировать проекты, запускать тесты, развертывать контракты и взаимодействовать с блокчейном через интерфейс командной строки.&#x20;

Кроме того, Foundry может напрямую взаимодействовать с Ethereum API компании Caldera, что позволяет использовать Foundry для развертывания смарт-контрактов в сети Caldera.

### [​](https://docs.caldera.xyz/deploying-contracts/foundry#get-started-with-foundry)Начало работы с Foundry <a href="#get-started-with-foundry" id="get-started-with-foundry"></a>

1. Установите Foundry
   * Linux или MaxOS

     ```
     curl -L https://foundry.paradigm.xyz | bash
     foundryup
     ```
   * Windows

     ```
     curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh
     cargo install --git https://github.com/foundry-rs/foundry foundry-cli anvil --bins --locked
     ```
2. Создайте проект

   ```
   forge init foundry
   ```
3. Перейдите в Source в проекте и создайте свой смарт-контракт

   ```
   cd src
   touch MyToken.sol
   ```
4. Вставьте код смарт-контракта или используйте произвольный ниже код.

   ```solidity
   // SPDX-License-Identifier: MIT
   // compiler version must be greater than or equal to 0.8.17 and less than 0.9.0
   pragma solidity ^0.8.17;

   contract HelloWorld {
       string public greet = "Hello World!";
   }
   ```
5. Установите OpenZeppelin контракты как зависимость

   ```
   forge install OpenZeppelin/openzeppelin-contracts
   ```
6. Скомпилируйте контракт

   ```
   forge build
   ```

### [​](https://docs.caldera.xyz/deploying-contracts/foundry#deploying-your-smart-contract)Деплой своего смарт-контракта <a href="#deploying-your-smart-contract" id="deploying-your-smart-contract"></a>

Развертывание контракта с помощью Forge - это простой процесс, который можно выполнить одной командой. Однако для этого требуется конечная точка RPC, закрытый ключ, который имеет средства, и любые аргументы для конструктора контракта.

Например, контракт `MyToken.sol` требует начального количества токенов, указанного в его конструкторе, поэтому команда для его развертывания в сети будет включать аргумент 100.

Чтобы развернуть контракт `MyToken.sol`, используйте команду, соответствующую RPC-адресу цепочки Caldera, во время выполнения команды `forge create`:

```
forge create --rpc-url "RPC URL" //Insert your RPC URL here
--constructor-args 100 \
--private-key YOUR_PRIVATE_KEY \
src/MyToken.sol:MyToken 
```
