// 개발자
Bitroot에 스마트 컨트랙트 배포하기: Hardhat, Foundry, Remix
Bitroot는 EVM 호환이므로 이더리움에서 이미 쓰던 도구를 어댑터 계층 없이 그대로 배포에 사용할 수 있습니다. 바꿔야 할 것은 네트워크 설정뿐입니다. 이 페이지에서는 Hardhat, Foundry, Remix 순서로 설명합니다.
1. 시작하기 전에
- 지갑에 네트워크를 추가하고 BRTSCAN에서 RPC URL과 Chain ID를 확인합니다: MetaMask에 Bitroot 추가하기.
- 가스비를 낼 테스트넷 BRT를 받습니다: 테스트넷 파우셋 가이드.
- RPC URL, Chain ID, 배포자 키는 환경 변수에 보관하고 커밋하지 마세요.
2. Hardhat
hardhat.config.js:
module.exports = {
solidity: "0.8.24",
networks: {
bitrootTestnet: {
url: process.env.BITROOT_RPC_URL, // current RPC URL from BRTSCAN
chainId: Number(process.env.BITROOT_CHAIN_ID), // current Chain ID from BRTSCAN
accounts: [process.env.DEPLOYER_PRIVATE_KEY],
},
},
};
평소 사용하는 스크립트로 배포합니다.
npx hardhat run scripts/deploy.js --network bitrootTestnet
3. Foundry
foundry.toml:
[rpc_endpoints]
bitroot_testnet = "${BITROOT_RPC_URL}"
배포는 다른 EVM 체인에서 쓰는 것과 같은 명령입니다.
forge create src/MyContract.sol:MyContract \
--rpc-url $BITROOT_RPC_URL \
--private-key $DEPLOYER_PRIVATE_KEY
4. Remix
"Deploy & Run Transactions" 패널에서 "Injected Provider - MetaMask"를 선택합니다. MetaMask가 Bitroot에 연결되어 있기만 하면, 컨트랙트 컴파일, 배포, 호출이 이더리움에서와 똑같이 동작합니다.
5. 배포 검증하기
BRTSCAN(https://devnet.bitroot.co/overview)에서 컨트랙트 주소를 열고, 그곳에 안내된 절차에 따라 소스 코드를 검증하세요. 그러면 다른 사용자가 코드를 읽고 탐색기에서 읽기 전용 메서드를 호출할 수 있습니다.
6. 확인해 둘 만한 함정
- 잘못된 체인. 네트워크 가이드에 나온 것처럼 런타임에 Chain ID를 비교하면, 설정 파일의 오타 때문에 배포가 다른 네트워크로 가는 일을 막을 수 있습니다.
- 프리컴파일 가정. 표준 Solidity 컨트랙트는 그대로 컴파일되고 배포됩니다. 이더리움 고유의 프리컴파일 주소에 의존하는 컨트랙트는 확인이 필요합니다.
- 배치 작업의 가스 한도. 프로덕션 실행 전에 배치 작업의 가스를 추정해, 트랜잭션당 한도가 낮아서 일부만 실패하는 일이 없도록 하세요.
- 키 관리. 평문
.env는 테스트넷 디버깅에서는 허용됩니다. 프로덕션 배포에는 하드웨어 지갑이나 MPC 수탁을 사용해야 합니다.