# Bitroot 개발자 가이드

Bitroot는 100% EVM 호환 체인입니다. 즉, 이미 사용 중인 이더리움 도구 — 지갑, SDK, 컨트랙트 프레임워크 — 를 거의 그대로 쓸 수 있으며, 네트워크 파라미터만 Bitroot에 맞게 지정하면 됩니다. 이 가이드에서는 네트워크 연결, 컨트랙트 배포와 디버깅, 그리고 3중 엔진 아키텍처 중 개발자 대상 구성 요소를 다룹니다.

## 1. 개요

이 가이드 전반에서 다시 찾게 될 몇 가지 진입점입니다.

- **블록 탐색기(BRTSCAN)**: <https://devnet.bitroot.co/overview> — 블록, 트랜잭션, 컨트랙트 상태를 조회할 수 있습니다. 또한 현재 RPC URL과 Chain ID를 확인할 수 있는 권위 있는 출처이기도 합니다. 이 값들은 네트워크가 발전하면서 바뀔 수 있으므로, 이 페이지의 이전 버전을 포함해 다른 곳에 복사된 값은 언제든 오래된 것일 수 있다고 가정하세요.
- **테스트넷 파우셋**: <https://devnet.bitroot.co/faucet> — 컨트랙트 배포와 디버깅에 쓸 테스트넷 BRT를 무료로 받을 수 있습니다.
- **브리지**: <https://bridge.bitroot.co/> — 자산을 넣고 뺄 수 있습니다.
- **프로토콜 저장소**: <https://github.com/brt-chain/bitroot> — 노드 설정, 프로토콜 구현 세부 사항, AI Agent 호출 인터페이스의 정확한 ABI가 이곳에 있습니다.

가장 자주 하는 작업을 위한 짧은 단계별 가이드입니다.

- [MetaMask에 Bitroot 추가하기: RPC URL과 Chain ID](/ko/developers/add-network)
- [파우셋에서 테스트 BRT 받기](/ko/developers/testnet-faucet)
- [Hardhat, Foundry, Remix로 스마트 컨트랙트 배포하기](/ko/developers/deploy-contract)

## 2. Bitroot 네트워크 연결

Bitroot는 표준 JSON-RPC를 사용하므로, 커스텀 EVM 네트워크를 지원하는 지갑(MetaMask, Rabby, OKX Wallet 등)이라면 네트워크를 직접 추가할 수 있습니다. MetaMask를 예로 들면 다음과 같습니다.

1. MetaMask를 열고 네트워크 선택기 → "Add network" → "Add a network manually"를 클릭합니다.
2. BRTSCAN(<https://devnet.bitroot.co/overview>)을 엽니다. 페이지 상단이나 네트워크 정보 패널에 현재 **네트워크 이름, RPC URL, Chain ID, 통화 기호, 블록 탐색기 URL**이 표시되는데, 이 값을 MetaMask 입력 폼에 그대로 복사해 넣습니다.
3. 저장한 뒤 Bitroot 네트워크로 전환합니다. 계정 잔액이 표시되어야 합니다(파우셋에서 테스트넷 토큰을 받기 전까지는 0 BRT가 정상입니다).

> 이 페이지에 RPC URL이나 Chain ID를 의도적으로 하드코딩하지 않았습니다. 테스트넷 파라미터는 업그레이드 사이에 바뀔 수 있고, 오래된 하드코딩 값은 여러분을 잘못된 네트워크에 연결할 가능성이 더 크기 때문입니다. 항상 BRTSCAN이 현재 표시하는 값을 사용하세요.

## 3. 테스트넷 토큰 받기

파우셋(<https://devnet.bitroot.co/faucet>)을 방문해 지갑 주소를 제출하면 컨트랙트 배포와 가스비 지불에 쓸 테스트넷 BRT를 받을 수 있습니다. 평균 가스비가 약 $0.00007 수준이므로, 소량의 파우셋 수령만으로도 개발 중 상당한 횟수의 배포와 호출을 감당할 수 있습니다.

## 4. 스마트 컨트랙트 개발: 이미 아는 도구 그대로 사용하기

Bitroot는 100% EVM 호환되므로 다음 도구들은 어댑터 계층 없이 바로 쓸 수 있습니다. 네트워크 설정만 Bitroot로 지정하면 됩니다.

**Hardhat**(`hardhat.config.js`):

```js
module.exports = {
  solidity: "0.8.24",
  networks: {
    bitrootTestnet: {
      url: process.env.BITROOT_RPC_URL, // get the current RPC URL from BRTSCAN
      chainId: Number(process.env.BITROOT_CHAIN_ID), // get the current Chain ID from BRTSCAN
      accounts: [process.env.DEPLOYER_PRIVATE_KEY],
    },
  },
};
```

**Foundry**(`foundry.toml`와 환경 변수):

```toml
[rpc_endpoints]
bitroot_testnet = "${BITROOT_RPC_URL}"
```

배포는 다른 EVM 체인에서와 동일하게 동작합니다.

```bash
forge create src/MyContract.sol:MyContract \
  --rpc-url $BITROOT_RPC_URL \
  --private-key $DEPLOYER_PRIVATE_KEY
```

**Remix**: "Deploy & Run" 패널에서 "Injected Provider - MetaMask"를 선택합니다. MetaMask가 Bitroot에 연결되어 있기만 하면 컴파일, 배포, 호출이 이더리움 메인넷을 상대로 할 때와 정확히 동일하게 동작합니다.

## 5. ethers.js / viem으로 네트워크와 상호작용하기

```ts
import { ethers } from "ethers";

const provider = new ethers.JsonRpcProvider(process.env.BITROOT_RPC_URL);
const wallet = new ethers.Wallet(process.env.DEPLOYER_PRIVATE_KEY!, provider);

const balance = await provider.getBalance(wallet.address);
console.log(`Balance: ${ethers.formatEther(balance)} BRT`);
```

병렬화된 지능형 실행 엔진이 서로 충돌하지 않는 트랜잭션을 동시에 실행하므로, 독립적인 트랜잭션 묶음(에어드롭, 대량 발행 등)을 확인 하나하나를 기다리며 수동으로 직렬화할 필요 없이 안심하고 한꺼번에 보낼 수 있습니다. 네트워크가 어떤 트랜잭션을 병렬로 실행할 수 있는지 스스로 판단합니다.

## 6. 블록 탐색기와 컨트랙트 검증

컨트랙트를 배포한 뒤에는 BRTSCAN에서 소스를 검증해 두세요. 그러면 작성자 본인과 다른 사용자가 컨트랙트 동작을 확인하고, 디버깅 중에 탐색기에서 바로 읽기 전용 메서드를 호출할 수 있습니다. 검증 절차와 필요한 입력값은 BRTSCAN 페이지에 안내된 내용을 따르세요.

## 7. AI 네이티브 EVM 사용하기

Bitroot가 일반 EVM 체인과 가장 크게 다른 점은 내장된 AI Agent 호출 인터페이스입니다. 스마트 컨트랙트가 별도의 오라클이나 오프체인 릴레이 없이 AI 모델 추론을 직접 호출할 수 있습니다. 이 인터페이스는 여전히 빠르게 발전하고 있으므로, **정확한 컨트랙트 인터페이스, 프리컴파일 주소, ABI는 프로토콜 저장소(<https://github.com/brt-chain/bitroot>)에 있습니다** — 오래될 수 있는 시그니처를 여기에 중복해 적지 않습니다. 개념적으로는 Solidity에서 곧바로 `call`할 수 있는 "AI 추론 프리컴파일"이라고 생각하면 됩니다. 입력과 출력은 영지식 증명 기반 감사 레이어에 기록되므로, 추론 결과는 원본 모델 가중치를 노출하지 않고도 온체인 또는 오프체인 제3자가 검증할 수 있습니다.

## 8. 보안과 모범 사례

- **키 관리**: 평문 `.env` 파일은 테스트넷 디버깅에는 괜찮지만, 프로덕션 배포에는 하드웨어 지갑이나 MPC 기반 커스터디를 사용해야 하며, 프라이빗 키를 저장소에 하드코딩해서는 안 됩니다.
- **컨트랙트 감사**: 영지식 증명 감사 레이어가 여러분 컨트랙트 로직에 대한 감사를 대신해 주지는 않습니다. 이 레이어는 연산과 그 결과가 신뢰할 수 있는지 검증할 뿐, 비즈니스 로직에 버그가 있는지는 알려주지 않습니다.
- **가스 추정**: 가스비는 이더리움 메인넷보다 훨씬 저렴하지만, 프로덕션의 배치 작업은 여전히 가스 추정을 거치는 것이 좋습니다. 트랜잭션당 가스 한도를 너무 낮게 잡아 일부만 실패하는 상황을 피할 수 있습니다.
- **네트워크 파라미터 확인**: 런타임에 Chain ID를 검증하세요(`provider.getNetwork()`와 비교). 설정 파일의 오타 때문에 배포가 조용히 잘못된 체인으로 향하는 일을 막을 수 있습니다.

## 9. FAQ

**기존 이더리움 컨트랙트를 그대로 Bitroot에 배포할 수 있나요?**
대부분의 경우 가능합니다. 컨트랙트가 이더리움 특정 프리컴파일 주소를 가정하지 않는다면, 표준 Solidity 컨트랙트는 코드 수정 없이 컴파일·배포됩니다.

**테스트넷과 메인넷은 같은 네트워크 파라미터를 쓰나요?**
아니요. 항상 BRTSCAN에서 어느 환경을 대상으로 하는지 확인하세요. RPC URL과 Chain ID는 테스트넷과 향후 메인넷이 서로 다릅니다.

**AI 네이티브 EVM 모듈 호출에는 추가 수수료가 있나요?**
정확한 수수료 모델은 프로토콜 저장소와 공식 공지에서 정의하며, 이 페이지에서는 어느 쪽으로도 단정하지 않습니다.

## 10. 참고 자료

| 리소스 | 링크 |
| --- | --- |
| 블록 탐색기(BRTSCAN) | <https://devnet.bitroot.co/overview> |
| 테스트넷 파우셋 | <https://devnet.bitroot.co/faucet> |
| 브리지 | <https://bridge.bitroot.co/> |
| 프로토콜 저장소 | <https://github.com/brt-chain/bitroot> |
| 기술 백서 | 이 사이트의 Research → Whitepaper |

이 가이드에서 다루지 않은 문제를 겪으셨다면, 미디어 문의 페이지나 커뮤니티 채널을 통해 알려주세요.
