> ## 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.

# Wrapped INJ (wINJ)

# Wrapped INJ (wINJ)

## 래핑된 암호화폐란?

Injective에서 INJ는 네트워크에서 트랜잭션 수수료를 지불하는 데 사용되는 암호화폐입니다.

그러나 일부 dApp(DEX 포함)은 인터페이스에서 ERC20 토큰만 허용하므로 INJ는 **작동하지 않습니다**.

해결책은 INJ를 래핑하는 ERC20 토큰을 만드는 것이며, 이를 "wrapped INJ"라고 합니다.
토큰 심볼은 **wINJ**입니다.
따라서 ERC20 토큰을 허용하는 모든 dApp은 wINJ를 허용합니다.

wINJ 토큰이 작동하는 메커니즘은 간단합니다:

* Mint: INJ를 입금할 때마다 총 공급량을 증가시킵니다.
* Burn: INJ를 출금할 때마다 총 공급량을 감소시킵니다.

wINJ를 INJ와 1:1로 담보화된 ERC20 토큰으로 생각할 수 있으며, 따라서 동일한 가치로 취급되지만 기술적 인터페이스가 다릅니다.

## wINJ는 wETH와 동일한가요?

Ethereum에 익숙한 분들은
이것이 wrapped Ether(wETH)와 동일하게 들린다고 생각할 수 있습니다.
맞습니다. 지금까지 wINJ는 wETH와 동일한 방식으로 작동합니다.

그러나 Injective 네트워크는 MultiVM 기술 아키텍처로 설계되었습니다.
이는 wINJ가 wETH처럼 *표준* ERC20 구현을 사용하여 구현된 경우
wINJ는 Injective 네트워크의 비EVM 부분(예: Cosmos 트랜잭션)과 상호작용할 때 **액세스할 수 없음**을 의미합니다.

이것이 바로 Injective의
[MultiVM Token Standard(MTS)](/ko/developers-evm/multivm-token-standard)가
설계된 정확한 유형의 제한입니다.

특히
[이 줄](https://github.com/InjectiveLabs/solidity-contracts/blob/b152129a/src/WINJ9.sol#L9C10-L9C15)을 참고하세요:

```solidity theme={null}
contract WINJ9 is BankERC20, IWINJ9 {
```

스마트 컨트랙트 내에서 `uint256` 값으로 잔액을 저장하는 대신
일반적인 ERC20 구현처럼
wINJ 스마트 컨트랙트는 `Bank` precompile을 사용합니다.
마법은 [`BankERC20`의 `_update` 함수](https://github.com/InjectiveLabs/solidity-contracts/blob/b152129a/src/BankERC20.sol#L50-L81)에서 발생하며,
여기서 `Bank` 모듈의 `mint`, `burn` 또는 `transfer` 함수가
[EVM precompile](/ko/developers-evm/bank-precompile "Injective의 네이티브 Bank 모듈용 EVM precompile")을 통해 호출됩니다.

이러한 잔액은 `Bank` precompile에서 저장/검색되므로
Injective의 MultiVM 아키텍처 내 다른 곳에서 액세스할 수 있습니다.
예를 들어 Cosmos SDK를 사용하여 wINJ 잔액을 쿼리할 수 있습니다.
EVM 트랜잭션을 통해 업데이트한 후에도;
그리고 그 반대도 마찬가지입니다.
이를 "네이티브 체인 잔액"이라고 합니다.

[wINJ의 전체 데모](https://github.com/InjectiveLabs/solidity-contracts/tree/master/demos/winj9)를 확인하세요.

## wINJ를 프로그래밍 방식으로 사용하는 방법

* Injective 메인넷 주소: `0x0000000088827d2d103ee2d9A6b781773AE03FfB`
* Injective 테스트넷 주소: `0x0000000088827d2d103ee2d9A6b781773AE03FfB`

INJ를 wINJ로 변환하려면 이 스마트 컨트랙트에서 `deposit` 함수를 호출합니다:

* 함수 서명: `deposit() public payable`
* 금액을 파라미터로 지정할 필요가 없습니다.
  대신 트랜잭션에서 `value`를 설정하면 `payable`이 `msg.value`로 이를 선택합니다.

wINJ를 INJ로 변환하려면 이 스마트 컨트랙트에서 `withdraw` 함수를 호출합니다:

* 함수 서명: `withdraw(uint256 wad) public`
* 받고자 하는 INJ 금액을 `wad` 파라미터로 설정합니다.

다른 모든 함수(예: 전송)는 표준 ERC20과 동일합니다.

## 네트워크 탐색기를 통해 wINJ 사용하는 방법

* Injective 메인넷 탐색기 URL: [`0x0000000088827d2d103ee2d9A6b781773AE03FfB`](https://blockscout.injective.network/address/0x0000000088827d2d103ee2d9A6b781773AE03FfB?tab=contract)
* Injective 테스트넷 탐색기 URL: [`0x0000000088827d2d103ee2d9A6b781773AE03FfB`](https://testnet.blockscout.injective.network/address/0x0000000088827d2d103ee2d9A6b781773AE03FfB?tab=contract)

INJ를 wINJ로 변환하려면 이 스마트 컨트랙트에서 `deposit` 함수를 호출합니다:

* wINJ 토큰의 탐색기 페이지에서 "Contract" 탭, 그런 다음 "Read/Write contract" 하위 탭으로 이동합니다.
* `deposit()` 함수를 찾고 `>` 기호를 클릭하여 확장합니다
* "Send native INJ (uint256)" 필드에 변환하려는 INJ 금액을 입력합니다
  * 이 숫자는 자동으로 `10^18`로 곱해지므로 수동으로 변환할 필요가 없습니다
* "Write" 버튼을 누릅니다
* 지갑에서 트랜잭션을 확인하여 서명하고 제출합니다.
* 지갑에서 선택한 금액만큼 INJ 감소와 wINJ 증가가 반영되어야 합니다.
  * INJ 감소는 트랜잭션 수수료로 사용되기 때문에 약간 더 많습니다.

wINJ를 INJ로 변환하려면 이 스마트 컨트랙트에서 `withdraw` 함수를 호출합니다:

* wINJ 토큰의 탐색기 페이지에서 "Contract" 탭, 그런 다음 "Read/Write contract" 하위 탭으로 이동합니다.
* `withdraw()` 함수를 찾고 `>` 기호를 클릭하여 확장합니다
* "wad (uint256)" 필드에 변환하려는 wINJ 금액을 입력합니다
  * 이 숫자는 자동으로 `10^18`로 곱해지므로 수동으로 변환할 필요가 없습니다
* "Write" 버튼을 누릅니다
* 지갑에서 트랜잭션을 확인하여 서명하고 제출합니다.
* 지갑에서 선택한 금액만큼 INJ 증가와 wINJ 감소가 반영되어야 합니다.
  * INJ 증가는 트랜잭션 수수료로 사용되기 때문에 약간 더 적습니다.

# Injective Do를 통해 wINJ 사용하는 방법

* [Injective Do](https://do.injective.network/)를 방문합니다
* 오른쪽 상단의 "Connect" 버튼을 누릅니다
* 지갑을 선택합니다
* 지갑에서 "Allow"를 선택하여 Injective Do dApp에 연결을 허용합니다.
* 이제 오른쪽 상단("Connect" 버튼이 이전에 있던 곳)에 지갑 주소가 표시됩니다
* 상단 탐색 바에서 "EVM"을 선택합니다
* 드롭다운 메뉴에서 "Wrap/Unwrap"을 선택합니다
* INJ를 wINJ로 변환하려면
  * 상단의 "Wrap" 탭을 누릅니다
  * "Amount" 필드에 원하는 변환 금액을 입력합니다
  * 하단의 "Wrap" 버튼을 누릅니다
  * 트랜잭션이 완료되면 지갑에서 INJ 및 wINJ 잔액을 확인합니다
* wINJ를 INJ로 변환하려면
  * 상단의 "Unwrap" 탭을 누릅니다
  * "Amount" 필드에 원하는 변환 금액을 입력합니다
  * 하단의 "Unwrap" 버튼을 누릅니다
  * 트랜잭션이 완료되면 지갑에서 INJ 및 wINJ 잔액을 확인합니다
