> For the complete documentation index, see [llms.txt](https://docs.rome.builders/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rome.builders/ko/developer-guides/from-home.md).

# 홈에서: 다른 체인에서 Rome에 도달하기

다른 체인의 사용자가 집을 떠나지 않고도 Rome 앱에 도달하게 하세요 — 자산을 가져오고, 작업을 수행하고, 다시 내보내세요.

사용자들은 Rome로 옮겨올 필요가 없습니다. 사용자의 홈 체인—Arbitrum이나 Monad 같은 L2, 또는 Solana—에서 자산을 가져와 여러분의 Rome 앱을 사용하고, 자산을 다시 꺼내갈 수 있습니다. 브리지는 온체인이며 사용자의 서명으로 승인됩니다. 여러분은 하나의 API로 앱을 연결하면 됩니다.

## 작동 방식

* **인바운드(홈 → Rome):** CCTP를 통한 가스 토큰 USDC 경로에서는 `settle_inbound_bridge_v2` Rome 프로그램의 instruction이, 서명된 **EIP-712** `SettleAuthorization`, 따라서 특권적인 정산 주체는 없습니다. 다른 인바운드 경로들은 그 instruction이나 서명을 사용하지 않습니다. Wormhole을 통한 ETH와 Wrapper USDC, SOL은 사용자 계정에 래퍼 토큰으로 바로 도착합니다. 가스 토큰이 USDC인 체인의 Solana USDC는 래퍼를 가스로 바꾸기 위해 사용자가 서명하는 트랜잭션이 하나 더 필요합니다. 견적은 경로에 어떤 서명이 필요한지 알려줍니다.
* **아웃바운드(Rome → 홈):** `RomeBridgeWithdraw` (in [`rome-solidity`](https://github.com/rome-protocol/rome-solidity)) Rome에서 자산을 소각합니다. 그런 다음 사용자는 자신의 트랜잭션으로 홈 체인에서 이를 청구합니다.
* **전송:** Circle **CCTP** USDC와 **Wormhole** ETH용 토큰 브리지입니다. Solana 홈 체인에서는 일반 SPL 전송으로 들어오고 Rome 출금으로 나갑니다. Wormhole은 ETH 전용 인바운드 경로입니다. 일반적인 Wormhole 경로는 아웃바운드 전용으로만 존재하며, 그 위의 각 자산은 먼저 Rome 운영자가 활성화해야 합니다.
* **오케스트레이션:** 오프체인 [`rome-bridge-api`](https://github.com/rome-protocol/rome-bridge-api) 경로를 견적하고, 소스 체인 트랜잭션을 검증하며, 정산 수수료를 대신 부담합니다. 자금도 키도 보유하지 않습니다. 사용자가 이미 서명한 것만 실행할 수 있습니다.

## 구현하기

API는 devnet에서 다음 주소로 공개되어 있습니다: `https://bridge-api.devnet.romeprotocol.xyz`. `GET /v1/routes` 실행 중인 모든 경로(자산, 레일, 방향, 소스 체인, Rome 체인, 속도)를 나열합니다. 아래 호출은 SDK가 다음 네 가지로 감싸는 것과 같습니다: `@rome-protocol/sdk/bridge` (`requestQuote`, `registerTransfer`, `getTransfer`, `reportStep`). CLI가 전체 흐름을 대신 실행합니다: `rome fund` 및 `rome bridge` 전송에는 `rome verify --path from-home` 왕복에는, 다음에서 설명한 대로 [Rome CLI](/ko/products/rome-cli.md) 페이지에 있습니다.

### 자산을 가져오기

1. **경로를 견적합니다.** 사용자의 소스 체인, 자산, 금액, 주소를 보냅니다. 체인은 다음과 같은 CAIP-2 ID로 입력합니다. `eip155:84532`; `romeChainId` 는 여러분의 Rome 체인입니다. 이전 이름인 `ethereum` 및 `solana` 도 아직 허용되지만 사용 중단(deprecated)되었으며, API는 해당 응답에 `Sunset` 헤더를 표시합니다. 전체 요청 및 응답 형식은 [API 참조](https://github.com/rome-protocol/rome-bridge-api/blob/main/docs/API.md).

   ```bash
   curl -X POST https://bridge-api.devnet.romeprotocol.xyz/v1/quote \\
     -H 'Content-Type: application/json' \\
     -d '{
       "asset": "USDC",
       "direction": "to-rome",
       "sourceChain": "eip155:84532",
       "romeChainId": "200010",
       "amount": "1000000",
       "sender": { "ethereum": "0xUSER" },
       "recipient": "0xUSER"
     }'
   ```

   금액은 문자열 형태의 기본 단위 정수입니다(`"1000000"` 는 1 USDC입니다). ETH 금액은 wei 단위이며, 아웃바운드 시 10,000,000,000 wei의 배수여야 합니다(래퍼는 소수점 8자리입니다). API는 더 세분된 값은 거부합니다. 응답에는 다음이 나열됩니다: `단계`. `userSigns: true`, 단계 순서대로: EVM 트랜잭션은 `unsignedTxs`, Solana instruction은 `unsignedTx`. 반환된 그대로 정확히 서명합니다. 서명할 것이 없는 단계는 Circle 또는 Wormhole이 전송을 증명한 뒤 스폰서가 처리합니다. 아웃바운드 클레임은 아래에 설명한 예외로, 사용자가 직접 만듭니다.
2. **사용자가 서명하게 하십시오.** CCTP 견적의 경우, 소스 체인에서의 USDC 승인과 소각입니다. 견적에 다음 항목이 있으면 `signatureRequests`, 사용자도 해당 EIP-712에 서명합니다 `SettleAuthorization` 소각 해시가 알려지면; 소각 해시를 채워 넣고 결과를 다음으로 전달합니다: `userSettleSig` 다음 호출에서. 가스 토큰 CCTP 경로에만 있습니다. Wormhole ETH, wrapper-intent USDC 및 Solana 경로에는 없습니다.
3. **전송을 등록합니다.** `POST /v1/transfers` 전체 견적과 `step1TxHash`, 첫 번째 단계(소각)에서 마지막 트랜잭션의 해시를 함께 보냅니다. API는 소스 체인의 트랜잭션이 견적과 일치하는지 확인하고 전송 `ID`.
4. **폴링합니다** `GET /v1/transfers/{id}` 몇 초마다 다음까지 `결과` 인 것을 선택하세요 `완료`. 그러면 사용자는 Rome에서 자금이 충전되고 앱을 사용할 수 있습니다.

Solana 홈 체인도 다른 단계일 뿐 같은 구조를 따릅니다. 사용자는 자신의 Rome 계정의 토큰 계정으로 SPL 전송을 보냅니다. SOL은 그 한 번의 전송 후 래핑된 SOL로 도착합니다. Hadrian처럼 가스 토큰이 USDC인 체인에서는 USDC에 두 번째 단계가 필요합니다. 사용자가 서명하는 Rome 트랜잭션으로 도착한 래퍼를 네이티브 가스로 바꿉니다. 그 외의 어떤 SPL 토큰이든 다음 경로를 거칩니다: `spl-solana-to-rome` 경로로 들어가며, 여기서 mint는 `splAsset`.

### 자산을 다시 꺼내기

아웃바운드 브리지는 인바운드 흐름을 거꾸로 돌린 것이 아닙니다. 서명이 하나 이상 필요하며, 사용자가 홈 체인에서 마무리합니다. 다음으로 견적을 받습니다: `direction` 값을 `from-rome`. `sourceChain` 는 Rome가 아닌 쪽을 지정하며 `destinationChainId` 사용자가 클레임할 체인을 선택합니다. 둘 다 전달하세요: `destinationChainId` 가 클레임 체인을 결정하며, 이것이 없으면 견적은 기본적으로 Ethereum Sepolia whatever로 설정됩니다 `sourceChain` 라고 나옵니다:

```bash
curl -X POST https://bridge-api.devnet.romeprotocol.xyz/v1/quote \\
  -H 'Content-Type: application/json' \\
  -d '{
    "asset": "USDC",
    "direction": "from-rome",
    "sourceChain": "eip155:84532",
    "destinationChainId": 84532,
    "romeChainId": "200010",
    "amount": "1000000",
    "sender": { "rome": "0xUSER" },
    "recipient": "0xUSER"
  }'
```

CCTP를 통한 USDC의 경우 견적은 두 단계를 반환하며, 사용자는 둘 다 서명합니다:

1. **Rome에서는 순서대로 두 개의 트랜잭션입니다.** 첫 번째는 다음을 부여합니다: `RomeBridgeWithdraw` Solana의 사용자 wUSDC에 대한 위임 권한을 (`approve_spl`). 이 권한 부여는 이 소각 금액과 정확히 일치하므로, 견적에는 매번 포함되며 사용자는 각 소각 전에 서명합니다. 두 번째는 다음을 통해 wUSDC를 소각합니다: `RomeBridgeWithdraw`, 이것이 CCTP 전송을 시작합니다. 소각 해시로 전송을 등록합니다. 소각은 견적에서 다음으로 지정한 토큰인 wUSDC를 사용합니다: `burnToken`, 네이티브 가스 USDC가 아닙니다. 가스로 들어온 자금은 소각되는 대상이 아니므로, 왕복하려면 USDC를 다음과 함께 가져오세요: `intent: "wrapper"`.
2. **목적지 체인에서 클레임합니다.** 폴링합니다 `GET /v1/transfers/{id}` 2단계가 `준비될 때까지`. 그러고 나서 다음을 포함합니다: `메시지` 및 `증명`. 사용자는 다음을 호출합니다: `receiveMessage(message, attestation)` 목적지 체인의 Circle 메시지 전송기에서(견적에는 전송기와 CCTP 도메인이 명시됩니다). 여기서는 아무도 수수료를 대신 내주지 않으므로, 사용자는 그 체인에서 가스가 필요합니다. 다음으로 클레임 해시를 보고합니다: `POST /v1/transfers/{id}/steps/2`.

Wormhole을 통한 ETH도 같은 구조입니다. 사용자는 wETH에 대해 같은 위임 권한을 부여하고, Rome에서 wETH를 소각한 뒤, Wormhole 가디언이 서명할 때까지 기다립니다. 그런 다음 사용자는 자신의 트랜잭션으로 Ethereum에서 상환합니다: `completeTransferAndUnwrapETH` 토큰 브리지에서 견적이 지정한 다음을 사용합니다(`claimTokenBridge`), 서명된 메시지(`vaa`)를 2단계에서 가져와 사용합니다.

Solana 주소로 출금할 때는 클레임 단계가 없습니다. USDC는 사용자의 Solana 계정으로 출금하는 단일 Rome 트랜잭션입니다. SOL은 세 개의 트랜잭션으로 이루어진 하나의 Rome 단계입니다. wSOL에 대한 동일한 위임 권한 부여, Solana에서 수신자의 wSOL 토큰 계정의 선택적 생성(이미 존재하면 건너뜀), 그리고 다음을 통한 출금: `RomeBridgeWithdraw`.

**첫 번째 아웃바운드 전송에는 활성화된 계정이 필요합니다.** CCTP 소각은 Solana에 메시지 계정을 생성하며, Rome의 사용 계정에는 이를 지불할 충분한 lamports가 있어야 합니다. 새 지갑은 그렇지 않으므로, 사용자가 한 번 활성화할 때까지 첫 번째 아웃바운드 전송은 실패합니다. 확인 기준은 계정에 최소 15,000,000 lamports가 있는지입니다. 다음으로 읽습니다: `account_lamports(bytes32)` 다음에 있는 CPI precompile에서 `0xff00000000000000000000000000000000000008`, Solana의 사용 외부 인증 계정(external-auth account)을 전달합니다(CLI가 이 읽기를 대신 수행합니다). 활성화는 다음을 호출합니다: `activate()` 다음의 `SimpleActivator` 에서 나열된 계약 [레지스트리](https://github.com/rome-protocol/rome-registry) 에서 여러분의 체인에 대해, 그리고 이 호출은 해당 체인의 가스 토큰으로 결제를 포함합니다. Hadrian에서는 2 USDC입니다. CLI는 다음으로 이를 수행합니다: `rome activate <chain>`, 그리고 `rome bridge --to` 계정이 준비되지 않았으면 멈추고 실행하라고 알려줍니다. 이 예비분은 한 번의 소각을 감당하며, Circle이 소각을 증명하면 임대료는 돌아오는데, 약 30분이 걸립니다. 그 전에 두 번째 소각을 하거나, 활성화 이후 자금이 소진된 계정은 다음이 필요합니다: `topUpUserPda(lamports)` 동일한 계약에서, 왜냐하면 `activate()` 계정이 활성화되면 되돌리기(revert) 때문입니다. `rome activate` 올바른 호출을 선택합니다. 인바운드 전송에는 활성화가 필요 없습니다. 견적에는 활성화가 단계로 포함되지 않으므로, 앱이 계정을 확인하고 첫 번째 아웃바운드 견적 전에 이를 제공해야 합니다.

## 코드를 읽어보세요

* [appia](https://github.com/rome-protocol/appia) — 홈에서 시작하는 앱: 사용자가 자신의 홈 체인에서 USDC를 가져와 Rome 쪽 DeFi를 떠나지 않고 사용합니다.
* [rome-bridge-api](https://github.com/rome-protocol/rome-bridge-api) — 오케스트레이터(견적 → 검증 → 스폰서).

## 다음 단계

* [자금 받기](/ko/resources/faucets.md) — 같은 브리지 경로로 새 dev 지갑에 자금을 넣습니다.
* [Solidity 배포](/ko/developer-guides/deploy-solidity.md) — 앱을 Rome에 올리세요.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.rome.builders/ko/developer-guides/from-home.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
