> ## Documentation Index
> Fetch the complete documentation index at: https://injectivelabs-docs-ai-sdk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Bank Precompile

# Bank Precompile

Bank Precompile은 고정 주소 `0x0000000000000000000000000000000000000064`에 있는 시스템 스마트 컨트랙트입니다.

EVM 개발자에게 Injective의 **bank 모듈**(`x/bank`)과 직접 상호작용하는 가스 효율적이고 네이티브한 경로를 제공합니다. 이를 통해 ERC-20 토큰을 효과적으로 온체인에 가져옵니다. Bank precompile을 사용하는 모든 ERC-20 컨트랙트는 온체인에서 `erc20:0x...` denom으로 표현됩니다. 기술적으로 이는 토큰이 온체인에만 존재하며 EVM은 별도의 복사본을 유지하는 대신 체인 상태에 대한 뷰를 제공함을 의미합니다. 두 개의 토큰 버전이 전환하기 위해 사용자 작업이 필요한 기존 브릿징과 달리 Bank precompile은 온체인 bank denom 또는 ERC-20 `transfer()` 메서드를 사용하는 모든 전송에 대해 실시간 이중 환경 반영을 제공합니다.

Bank precompile로 지원되는 다양한 ERC-20 구현과 precompile 인터페이스 및 추상 컨트랙트는 [Injective의 Solidity Contracts 저장소](https://github.com/InjectiveLabs/solidity-contracts)에서 사용할 수 있습니다. 주요 컨트랙트는 다음과 같습니다:

* **Bank.sol** – precompile 인터페이스
* **BankERC20.sol** – Bank precompile로 지원되는 추상 ERC20 구현
* **FixedSupplyBankERC20.sol** – 고정 공급량의 탈중앙화 ERC20(소유자 없음, 민팅 또는 버닝 없음)
* **MintBurnBankERC20.sol** – 토큰을 민트하고 버닝할 수 있는 소유자가 있는 ERC20

이러한 구현은 OpenZeppelin의 ERC20 컨트랙트를 기반으로 합니다. 개발자는 Bank precompile을 활용하는 사용자 정의 ERC20 컨트랙트를 자유롭게 만들 수 있습니다.

## ERC20 컨트랙트 배포

**ℹ️ 참고:**

denom 스팸을 방지하기 위해 ERC20 모듈을 통한 ERC20 컨트랙트 배포는 **유료 작업**이며 **1 INJ**의 배포 수수료가 필요합니다. ERC20 컨트랙트 배포 트랜잭션에 이 금액이 포함되어 있는지 확인하세요. 그렇지 않으면 작업이 거부됩니다.

## Bank Precompile 인터페이스

```solidity theme={null}
interface IBankModule {
    function mint(address,uint256) external payable returns (bool);
    function balanceOf(address,address) external view returns (uint256);
    function burn(address,uint256) external payable returns (bool);
    function transfer(address,address,uint256) external payable returns (bool);
    function totalSupply(address) external view returns (uint256);
    function metadata(address) external view returns (string memory,string memory,uint8);
    function setMetadata(string memory,string memory,uint8) external payable returns (bool);
}
```

## 예제

[Wrapped INJ(wINJ)](/ko/developers-evm/wrapped-inj#is-winj-the-same-as-weth "wINJ는 wETH와 동일한가요?")는
[MultiVM Token Standard(MTS)](/ko/developers-evm/multivm-token-standard)를 구현하기 위해
Bank EVM precompile을 사용합니다.

## 빌딩 시작

Bank, Exchange 및 Staking precompiles를 사용하여 컨트랙트를 구축하는 방법을 보여주는 몇 가지 데모를 준비했습니다. 이 예제는 또한 가장 일반적인 Ethereum 개발 프레임워크인 **Foundry**를 사용하여 Injective EVM과 상호작용하는 방법을 보여줍니다.

[여기](https://github.com/InjectiveLabs/solidity-contracts/tree/master/demos/erc20)에서 bank precompile 데모를 보고 해당 README를 따르세요.
