> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 개념

> Helius Privacy가 작동하는 방식을 이해합니다. 사용자 흐름, 전송 시공개되거나 비공개로 남는 것은 무엇이며, 사용자 정의 가능한 정책이 있는 링을 포함합니다.

## 링 소개

모든 Solana 거래는 공개적으로 읽을 수 있습니다: 주소, 잔액 및 전송 이력은 누구나 볼 수 있습니다. 링은 온체인 잔액을 암호화하며 기본적으로 비양육권 상태를 유지합니다:

* 비밀 링에서는 자산과 금액은 비공개이며, 송신자와 수신자는 보이는 상태로 남습니다.
* 익명 링에서는 자산, 금액, 송신자, 수신자가 모두 비공개입니다.

<img src="https://mintcdn.com/helius/ANceN_N6YhA2y60D/images/privacy/transaction-visibility-cards.svg?fit=max&auto=format&n=ANceN_N6YhA2y60D&q=85&s=d775dd0d4ebcf7b299ef0f3ccfb025ca" alt="두 개의 Solana 거래 카드가 나란히 놓여 있습니다. 비밀 카드에는 거래 해시, 송신자 및 수신자가 표시되며 자산과 금액은 가려져 있습니다. 익명 카드는 거래 해시만 표시하고 송신자, 자산, 금액, 수신자는 모두 가려져 있습니다. 거래 해시는 모두에서 공개됩니다." width="2320" height="540" data-path="images/privacy/transaction-visibility-cards.svg" />

링의 종류는 다양합니다:

1. 기본 링(Default Ring)은 권한이 필요 없고 비밀입니다. 자산과 금액을 암호화하며, 누구나 사용할 수 있으며 사용자 정의 정책 제어는 없습니다.
2. 사용자 정의 링(Custom Rings)은 Solana 프로그램이며, Solana에서의 프라이버시를 프로그램 가능하게 하는 것입니다. 사용자 정의 링은 사용자 정의 정책, 보고 및 가시성 규칙과 함께 비밀 또는 익명일 수 있습니다.

<Info>
  대부분의 응용 프로그램에는 권한이 필요 없는 비밀 기본 링을 권장합니다.
  사용자 정의 정책 및 규정 준수 제어를 위해, [여기에서 연락](https://www.helius.dev/contact)하여 사용자 정의 링을 시작하세요.
</Info>

<img src="https://mintcdn.com/helius/iNBk0QZ3vdaUiFW5/images/privacy/privacy-network.svg?fit=max&auto=format&n=iNBk0QZ3vdaUiFW5&q=85&s=af61b324d07f1184da1f3912d9f050fb" alt="두 개의 링을 보유한 대시 온체인 영역으로 표시된 비공개 잔액. 기본 링은 비밀이며, 자가 양육권 및 무허용 상태입니다. 사용자 정의 링은 비밀 또는 익명일 수 있으며, 사용자 정의 정책 및 규정을 추가합니다. 비공개 전송은 링을 연결하고, 각 링은 아래 Solana 공개 밸런스 레이어로 입출합니다." width="850" height="540" data-path="images/privacy/privacy-network.svg" />

### 사용자 정의 링은 프로그래밍 가능합니다

사용자 정의 링은 Solana 프로그램으로 Simple하게 프라이버시를 프로그래밍 가능하게 하며, Token-2022와 유사한 기능을 제공합니다.

사용자 정의 링은 전송 및 가시성/감사를 위한 완전히 사용자 정의된 규칙을 정의할 수 있습니다.

<Accordion title="사용자 정의 링 정책 예시">
  | 정책        | 예시                                   |
  | --------- | ------------------------------------ |
  | 허용된 자산    | USDC 또는 특정 발행된 스테이블코인만 허용            |
  | 전송 한도     | 임계값 초과 시 추가 승인이 필요                   |
  | 공동 서명     | 선택된 결제에 대해 규정 준수 승인 필요               |
  | 허용 목록     | 승인된 계정, 상인 또는 링으로만 전송 허용             |
  | 차단 목록     | 제재 대상지 또는 위험한 목적지 차단                 |
  | 동결/해제     | 조사 중일 때 잔액 동결                        |
  | 영구 대리인    | 설정된 권한이 정책 하에 자금을 이동할 수 있도록 허용       |
  | 감사자 가시성   | 규정 준수, 회계 또는 규제 당국이 링 활동을 볼 수 있도록 허용 |
  | 링 간 규칙    | 특정 링 간 이동 허용 또는 차단                   |
  | 인출 규칙     | 공개 인출 제한 또는 승인 필요                    |
  | 스마트 계정 지원 | 스마트 계정과의 네이티브 사용 허용                  |
  | 계정 복구     | 설정된 권한 또는 대체 신원이 계정을 복구할 수 있도록 허용    |
</Accordion>

링 당국은 링 생성 시 선언되므로, 사용자는 링을 선택하기 전에 정책을 검토할 수 있습니다.
기본 링은 권한이 없으며 사용자 정의 권한이나 감사자가 없습니다.

<Tip>
  자신의 사용자 정의 링을 설정하려면, [여기에서 연락](https://www.helius.dev/contact)하여 설정을 도와드리겠습니다.
  자신의 규정 준수를 가져오거나, Helius의 관리형 KYC 및 제재 스크리닝 솔루션을 사용할 수 있습니다.
</Tip>

## 사용자 흐름 및 프라이버시 보장

Helius Privacy와의 거래는 기본적으로 온체인에서 실행되며, Solana 프로그램과 결합되어 단일 거래를 이루게 됩니다.
사용자는 링으로 들어가고, 내부에서 비공개로 전송하거나 링을 나갈 수 있습니다:

**1. 입금 또는 온램프.** 사용자는 공공 Solana 잔액 또는 명목 잔액에서 직접 비공개 잔액으로 토큰을 보냅니다.

**2. 비공개 전송.** 사용자는 동일한 링에서 비공개 잔액 간에 토큰을 보내거나, 다른 링으로 보냅니다.

**3. 출금 또는 오프램프.** 사용자는 비공개에서 공공 Solana 잔액으로, 또는 직접 명목 잔액으로 토큰을 보냅니다.

<img src="https://mintcdn.com/helius/df3Lmw7POmPkuUJN/images/privacy/privacy-rings-lifecycle.svg?fit=max&auto=format&n=df3Lmw7POmPkuUJN&q=85&s=54d057b2674ad3a194575858d35db167" alt="링 수명 주기의 다이어그램. 100 USDC의 공공 잔액이 링에 입금되고 명목 잔액의 USD / EUR / ...가 동일한 링에 온램프되며, 자금이 두 비공개 잔액 간에 비공개 전송을 통해 이동한 다음, 공공 잔액으로 출금되거나 명목 잔액으로 오프램프됩니다." width="1420" height="240" data-path="images/privacy/privacy-rings-lifecycle.svg" />

사용자는 공공 잔액과 마찬가지로 Solana 지갑 주소로 토큰을 보냅니다.
Privacy API는 수신자가 Private Wallet을 가지고 있다면 전송을 자동으로 Private Wallet으로 라우팅합니다.
그렇지 않으면 전송은 수신자의 공공 주소로의 출금입니다.

누구든지 수신자의 공개 지갑 주소만 알면 Private Wallet에 입금할 수 있습니다.
발신자의 앱이 프라이버시를 지원하지 않는 경우, 수신자는 공개적으로 자금을 받고 두 번째 단계에서 자신의 비공개 잔액으로 암호화할 수 있습니다.

### 비공개 잔액으로 입금: 무엇이 비공개인가

사용자는 두 가지 방법으로 비공개 잔액에 입금할 수 있습니다:

1. 명목 잔액에서 암호화폐 비공개 잔액으로 온램프
2. 공공 암호화폐에서 비공개 암호화폐 잔액으로 입금

<Tabs>
  <Tab title="On-ramp from fiat balance">
    | Field                    | Visibility                                                  | Why                                                                                                                                                                                                                                                                                                   |
    | ------------------------ | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | Fiat balance and payment | Not onchain                                                 | The fiat payment is not onchain                                                                                                                                                                                                                                                                       |
    | Asset                    | Private                                                     | The asset is encrypted onchain                                                                                                                                                                                                                                                                        |
    | Amount                   | Private                                                     | The transferred amount is encrypted onchain                                                                                                                                                                                                                                                           |
    | Onramp Provider          | Public in a confidential Ring, private in an anonymous Ring | In a confidential Ring the wallet address of the provider is visible. An anonymous Ring uses a relayer, so the public ledger does not reveal the source private wallet.                                                                                                                               |
    | User wallet address      | Public in a confidential Ring, private in an anonymous Ring | In a confidential Ring the user wallet address is visible onchain. The user address used for the onramp cannot be linked to the user, if it is new and is not later tied to a known wallet address by a confidential transfer. In an anonymous Ring, the public ledger does not reveal the recipient. |
  </Tab>

  <Tab title="Deposit from public crypto balance">
    | Field                      | Visibility | Why                                                |
    | -------------------------- | ---------- | -------------------------------------------------- |
    | Source public wallet       | Public     | The source wallet address is visible onchain       |
    | Asset                      | Public     | The asset is visible onchain                       |
    | Amount                     | Public     | The deposited amount is visible onchain            |
    | Destination wallet address | Public     | The destination wallet address is visible onchain  |
    | Resulting private balance  | Private    | The resulting private balance is encrypted onchain |
  </Tab>
</Tabs>

### 비공개 전송: 무엇이 비공개인가

사용자는 두 가지 방법으로 비공개 전송을 할 수 있습니다:

1. 동일한 링에서 전송
2. 다른 링으로 전송

<Info>
  대부분의 응용 프로그램에는 권한이 필요 없는 비밀 기본 링을 권장합니다.
  사용자 정의 정책 및 규정 준수 제어를 위해, [여기에서 연락](https://www.helius.dev/contact)하여 사용자 정의 링을 시작하세요.
</Info>

<Tabs>
  <Tab title="Permissionless Confidential Ring">
    | Field                 | Visibility | Why                                                                  |
    | --------------------- | ---------- | -------------------------------------------------------------------- |
    | Asset                 | Private    | The asset is encrypted onchain                                       |
    | Amount                | Private    | The transferred amount is encrypted onchain                          |
    | Source private wallet | Public     | In a confidential Ring the source private wallet is visible onchain. |
    | Recipient             | Public     | In a confidential Ring the recipient is visible onchain.             |
  </Tab>

  <Tab title="Custom Rings">
    Transfers from and within a ring reveal the program ID of the custom Ring.

    A balance in a Custom Ring can exit to an SPL token account, to the Default Ring, or to another Ring, as long as the source Ring's policy permits it.
    The default Ring is permissionless and does not have a policy or authority.

    One transaction can combine balances from the Default Ring and one Custom Ring. A transfer between two Custom Rings routes through the Default Ring.

    | Private transfer       | Custom confidential Rings | Custom anonymous Rings                                                                                      | Default confidential to or from Custom confidential | Confidential (Default or Custom) to Custom anonymous | Custom anonymous to confidential (Default or Custom)                                                        |
    | ---------------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
    | Amount                 | Private                   | Private                                                                                                     | Private                                             | Private                                              | Private                                                                                                     |
    | Asset                  | Private                   | Private                                                                                                     | Private                                             | Private                                              | Private                                                                                                     |
    | Source private wallet  | Public                    | Private. A relayer submits the transaction, so the public ledger does not reveal the source private wallet. | Public                                              | Public                                               | Private. A relayer submits the transaction, so the public ledger does not reveal the source private wallet. |
    | Recipient              | Public                    | Private                                                                                                     | Public                                              | Private                                              | Public                                                                                                      |
    | Custom Ring program ID | Public                    | Public                                                                                                      | Public                                              | Public                                               | Public                                                                                                      |
  </Tab>
</Tabs>

### 비공개 잔액에서 출금: 무엇이 비공개인가

사용자는 두 가지 방법으로 비공개 잔액에서 출금할 수 있습니다:

1. 비공개 암호화폐에서 명목 잔액으로 오프램프
2. 비공개 암호화폐에서 공공 암호화폐 잔액으로 출금

<Tabs>
  <Tab title="Off-ramp to fiat balance">
    | Field               | Visibility                                                  | Why                                                                                                                                                                                                                                                                                                        |
    | ------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | Fiat payout         | Not onchain                                                 | The fiat payout is not onchain                                                                                                                                                                                                                                                                             |
    | Asset               | Private                                                     | The asset is encrypted onchain                                                                                                                                                                                                                                                                             |
    | Amount              | Private                                                     | The transferred amount is encrypted onchain                                                                                                                                                                                                                                                                |
    | Offramp Provider    | Public in a confidential Ring, private in an anonymous Ring | In a confidential Ring an observer can see that a user offramped with this Offramp Provider. In an anonymous Ring the public ledger does not reveal sender and recipient.                                                                                                                                  |
    | User wallet address | Public in a confidential Ring, private in an anonymous Ring | In a confidential Ring the user wallet address is visible onchain. Another wallet address cannot be linked to this address if this address is new and is not later tied to a known wallet address by a confidential transfer. In an anonymous Ring the public ledger does not reveal sender and recipient. |
  </Tab>

  <Tab title="Withdraw to public crypto balance">
    | Field                     | Visibility | Why                                                                  |
    | ------------------------- | ---------- | -------------------------------------------------------------------- |
    | Source private wallet     | Public     | In a confidential Ring the source private wallet is visible onchain. |
    | Asset                     | Public     | The asset is visible onchain                                         |
    | Amount                    | Public     | The withdrawn amount is visible onchain                              |
    | Destination public wallet | Public     | The destination wallet address is visible onchain                    |
    | Resulting public balance  | Public     | The resulting public balance is visible onchain                      |
    | Remaining private balance | Private    | The remaining balance is encrypted onchain                           |
  </Tab>
</Tabs>

## 고급 거래 흐름

비공개 전송은 공개 전송과 유사하게 작동하며, 단일 Solana 거래에서 실행됩니다.

<Tabs>
  <Tab title="비공개 전송">
    1. 사용자의 SOL 또는 SPL 잔액이 온체인에서 암호화됩니다.
    2. 암호화된 상태를 가져와 로컬에서 해독하거나, 위임된 제공자가 해독하여 해독된 상태를 제공합니다.
    3. 지갑은 금액과 수신자를 설정한 후 ZK 증명을 요청합니다.
    4. RPC 제공자가 기본적으로 ZK 증명을 생성하여 반환합니다. 사용자 정의 링은 또한 정책 증명을 요구합니다.
    5. 지갑은 Solana 거래를 구축합니다. ZK 증명은 암호화된 상태를 공개하지 않고 검증됩니다. 호출된 프로그램과 서명 및 제출하는 주체는 링에 따라 다릅니다:

    |          | 권한 없는 비밀 링                           | 사용자 정의 비밀 링                          | 사용자 정의 익명 링                       |
    | -------- | ------------------------------------ | ------------------------------------ | --------------------------------- |
    | 호출된 프로그램 | Solana 프라이버시 프로그램                    | 사용자 정의 링 프로그램 및 Solana 프라이버시 프로그램    | 사용자 정의 링 프로그램 및 Solana 프라이버시 프로그램 |
    | 서명자      | 발신자가 서명합니다. 가스 스폰서가 수수료를 지불할 수 있습니다. | 발신자가 서명합니다. 가스 스폰서가 수수료를 지불할 수 있습니다. | 릴레이어이므로 발신자가 거래와 연결되지 않습니다.       |

    6. 앱은 Solana 거래 해시를 통해 상태를 추적합니다.

    <Tabs sync={false}>
      <Tab title="권한 없는 비밀 링">
        ```mermaid theme={"system"}
        %%{init: {
          'theme': 'base',
          'themeVariables': {
            'lineColor':           '#FF6B35',
            'primaryTextColor':    '#737373',
            'primaryBorderColor':  '#9CA3AF',
            'actorBkg':            '#FFFFFF',
            'actorBorder':         '#9CA3AF',
            'actorTextColor':      '#737373',
            'signalColor':         '#FF6B35',
            'signalTextColor':     '#737373',
            'labelBoxBkgColor':    '#FF6B351F',
            'labelBoxBorderColor': '#FF6B35',
            'noteBkgColor':        '#F5F5F5',
            'noteTextColor':       '#737373',
            'noteBorderColor':     '#9CA3AF'
          }
        }}%%
        sequenceDiagram
            participant Wallet
            participant RPC as RPC Provider
            participant Solana

            rect rgba(255, 107, 53, 0.06)
                Note left of Wallet: Local
                Wallet->>RPC: Fetch encrypted state
                RPC-->>Wallet: Encrypted state
                Note over Wallet: Decrypt locally
            end
            rect rgba(255, 107, 53, 0.06)
                Note left of Wallet: Delegated
                Wallet->>RPC: Get private balance
                Note over RPC: Decrypt and serve decrypted state
                RPC-->>Wallet: Decrypted state
            end

            Note over Wallet: Set amount and recipient
            Wallet->>RPC: Request ZK proof
            Note over RPC: Generate ZK proof
            RPC-->>Wallet: ZK proof
            Note over Wallet: Build transaction, sign

            Wallet->>RPC: Submit Transaction
            RPC->>Solana: Forward transaction
            Note over Solana: Verify signatures
            Note over Solana: CPI Solana Privacy Program
            Note over Solana: Verify ZK proof
            RPC-->>Wallet: Transaction signature
        ```
      </Tab>

      <Tab title="사용자 정의 비밀 링">
        ```mermaid theme={"system"}
        %%{init: {
          'theme': 'base',
          'themeVariables': {
            'lineColor':           '#FF6B35',
            'primaryTextColor':    '#737373',
            'primaryBorderColor':  '#9CA3AF',
            'actorBkg':            '#FFFFFF',
            'actorBorder':         '#9CA3AF',
            'actorTextColor':      '#737373',
            'signalColor':         '#FF6B35',
            'signalTextColor':     '#737373',
            'labelBoxBkgColor':    '#FF6B351F',
            'labelBoxBorderColor': '#FF6B35',
            'noteBkgColor':        '#F5F5F5',
            'noteTextColor':       '#737373',
            'noteBorderColor':     '#9CA3AF'
          }
        }}%%
        sequenceDiagram
            participant Wallet
            participant RPC as RPC Provider
            participant Solana

            rect rgba(255, 107, 53, 0.06)
                Note left of Wallet: Local
                Wallet->>RPC: Fetch encrypted state
                RPC-->>Wallet: Encrypted state
                Note over Wallet: Decrypt locally
            end
            rect rgba(255, 107, 53, 0.06)
                Note left of Wallet: Delegated
                Wallet->>RPC: Get private balance
                Note over RPC: Decrypt and serve decrypted state
                RPC-->>Wallet: Decrypted state
            end

            Note over Wallet: Set amount and recipient
            Wallet->>RPC: Request ZK proof
            Note over RPC: Generate ZK proof and policy proof
            RPC-->>Wallet: ZK proof and policy proof
            Note over Wallet: Build transaction, sign

            Wallet->>RPC: Submit Transaction
            RPC->>Solana: Forward transaction
            Note over Solana: Verify signatures
            Note over Solana: CPI Custom Ring Program
            Note over Solana: Verify policy ZK proof
            Note over Solana: CPI Solana Privacy Program
            Note over Solana: Verify SPP ZK proof
            RPC-->>Wallet: Transaction signature
        ```
      </Tab>

      <Tab title="사용자 정의 익명 링">
        ```mermaid theme={"system"}
        %%{init: {
          'theme': 'base',
          'themeVariables': {
            'lineColor':           '#FF6B35',
            'primaryTextColor':    '#737373',
            'primaryBorderColor':  '#9CA3AF',
            'actorBkg':            '#FFFFFF',
            'actorBorder':         '#9CA3AF',
            'actorTextColor':      '#737373',
            'signalColor':         '#FF6B35',
            'signalTextColor':     '#737373',
            'labelBoxBkgColor':    '#FF6B351F',
            'labelBoxBorderColor': '#FF6B35',
            'noteBkgColor':        '#F5F5F5',
            'noteTextColor':       '#737373',
            'noteBorderColor':     '#9CA3AF'
          }
        }}%%
        sequenceDiagram
            participant Wallet
            participant RPC as RPC Provider
            participant Relayer
            participant Solana

            rect rgba(255, 107, 53, 0.06)
                Note left of Wallet: Delegated
                Wallet->>RPC: Get private balance
                Note over RPC: Decrypt and serve decrypted state
                RPC-->>Wallet: Decrypted state
            end

            Note over Wallet: Set amount and recipient, sign
            Wallet->>RPC: Request ZK proof
            Note over RPC: Generate ZK proof and policy proof
            RPC-->>Wallet: ZK proof and policy proof
            Note over Wallet: Build transaction

            Wallet->>Relayer: Submit Transaction
            Relayer->>Solana: Forward transaction
            Note over Solana: Verify signatures
            Note over Solana: CPI Custom Ring Program
            Note over Solana: Verify policy ZK proof
            Note over Solana: CPI Solana Privacy Program
            Note over Solana: Verify SPP ZK proof
            Relayer-->>Wallet: Transaction signature
        ```
      </Tab>
    </Tabs>
  </Tab>

  <Tab title="Solana 전송">
    1. 사용자의 SOL 또는 SPL 잔액이 온체인에 공개됩니다.
    2. 지갑이 공개 상태를 읽고, 전송을 구축하며 소유자가 서명합니다.
    3. Solana 런타임이 서명을 검증하고 시스템 프로그램 또는 토큰 프로그램을 호출하여 공개 잔액을 업데이트합니다.
    4. 앱은 Solana 거래 해시를 통해 상태를 추적합니다.

    ```mermaid theme={"system"}
    %%{init: {
      'theme': 'base',
      'themeVariables': {
        'lineColor':           '#FF6B35',
        'primaryTextColor':    '#737373',
        'primaryBorderColor':  '#9CA3AF',
        'actorBkg':            '#FFFFFF',
        'actorBorder':         '#9CA3AF',
        'actorTextColor':      '#737373',
        'signalColor':         '#FF6B35',
        'signalTextColor':     '#737373',
        'labelBoxBkgColor':    '#FF6B351F',
        'labelBoxBorderColor': '#FF6B35',
        'noteBkgColor':        '#F5F5F5',
        'noteTextColor':       '#737373',
        'noteBorderColor':     '#9CA3AF'
      }
    }}%%
    sequenceDiagram
        participant Wallet
        participant RPC
        participant Solana

        Wallet->>RPC: Get public balance
        RPC-->>Wallet: Public state
        Note over Wallet: Build transfer, owner signs
        Wallet->>RPC: sendTransaction
        RPC->>Solana: Forward transaction
        Note over Solana: Verify signatures
        Note over Solana: CPI System / Token Program
        Note over Solana: Update balance
        RPC-->>Wallet: Transaction signature
    ```
  </Tab>
</Tabs>

## 비공개 지갑

사용자는 비공개 지갑에 암호화된 잔액을 보관합니다.

비공개 지갑은 사용자의 공공 Solana 주소로 전송을 수신하여 `inbox` 역할을 합니다.
이렇게 하면 발신자는 항상 공개 전송처럼 수신자의 Solana 주소를 입력합니다.

| 비교      | Solana 지갑 | 비공개 지갑           |
| ------- | --------- | ---------------- |
| 공개 식별자  | Solana 주소 | 동일한 Solana 주소    |
| 온체인 저장소 | 공개 토큰 계정  | 비공개 토큰 계정 (UTXO) |

### 비공개 지갑 생성

비공개 지갑이 생성되면 Solana 주소가 온체인 레지스트리에 등록됩니다.

레지스트리는 하나의 Solana 주소를 하나의 <Tooltip tip="The Shielded Address는 Solana 키페어가 아니며, 수신, nullifier 및 보기 공개 키로부터 결정적으로 유도됩니다.">Shielded Address</Tooltip>에 매핑합니다.
전송은 백그라운드에서 Shielded Address로 암호화됩니다.
여러 Solana 주소는 하나의 Shielded Address를 공유할 수 없습니다.
각 레지스트리 레코드는 누구나 Solana 주소가 비공개 전송을 수신할 수 있는지 확인할 수 있는 PDA로, <Tooltip tip="regyS5rkAcw2YzDJCmTwCTHs2s246FXxbmuRZ42u2PD">[레지스트리 프로그램](https://orbmarkets.io/address/regyS5rkAcw2YzDJCmTwCTHs2s246FXxbmuRZ42u2PD)</Tooltip>에 의해 소유됩니다.

<img src="https://mintcdn.com/helius/NHXFc7ysJd1NoY9P/images/privacy/wallet-shape.svg?fit=max&auto=format&n=NHXFc7ysJd1NoY9P&q=85&s=7e96783047c79ed30c4e995623f197a6" alt="사용자 지갑이 두 개의 공개 Solana 지갑 및 비공개 지갑과 연결되어 있습니다. 받은 편지함 화살표는 Public Wallet A의 공개 키를 비공개 지갑의 Shielded Address에 연결합니다." width="1120" height="570" data-path="images/privacy/wallet-shape.svg" />

<Info>
  지갑 앱에서 사용자가 전용 "비공개 지갑" 공개 키 또는 공개 키에만 사용할 수 있는 비공개 지갑을 생성할 수 있도록 허용할 수 있습니다.
</Info>

### 비공개 지갑으로의 전송

모든 전송에서 Privacy API는 수신자가 비공개 지갑을 가지고 있는지 확인하기 위해 온체인 레지스트리에서 지갑 주소를 조회합니다.
일치하는 항목이 있으면 백그라운드에서 Shielded Address를 사용하여 전송을 암호화합니다.

<Info>
  비공개 전송의 수신자가 비공개 지갑을 소유하고 있지 않은 경우, Privacy API는 전송을 비공개에서 공개로의 출금으로 해결합니다.

  사용자가 실수로 공개 잔액으로 출금하지 않도록 하기 위해 UI에서 별도의 사용자 서명을 요청하는 것을 권장합니다.
</Info>

```mermaid theme={"system"}
%%{init: {
  'theme': 'base',
  'themeVariables': {
    'lineColor':           '#FF6B35',
    'primaryTextColor':    '#737373',
    'primaryBorderColor':  '#9CA3AF',
    'actorBkg':            '#FFFFFF',
    'actorBorder':         '#9CA3AF',
    'actorTextColor':      '#737373',
    'signalColor':         '#FF6B35',
    'signalTextColor':     '#737373',
    'labelBoxBkgColor':    '#FF6B351F',
    'labelBoxBorderColor': '#FF6B35',
    'noteBkgColor':        '#F5F5F5',
    'noteTextColor':       '#737373',
    'noteBorderColor':     '#9CA3AF'
  }
}}%%
sequenceDiagram
    participant User
    participant Privacy API
    participant Solana

    User->>Privacy API: Initiate Private Transfer
    Privacy API->>Solana: Look up Solana address
    rect rgba(255, 107, 53, 0.06)
        Note left of User: Recipient has a Private Wallet
        Solana-->>Privacy API: Registered
        Privacy API->>User: Request Signature
        User->>Privacy API: Sign private transfer
        Privacy API-->>Solana: Send Private Transfer
    end
    rect rgba(255, 107, 53, 0.06)
        Note left of User: Recipient has no Private Wallet
        Solana-->>Privacy API: Not Registered
        Privacy API->>User: Request Signature
        User->>Privacy API: Sign to Confirm Withdrawal
        Privacy API-->>Solana: Private-to-Public Withdrawal
    end
```

### 키 관리

비공개 지갑은 사용자의 Solana 키페어에서 Solana 지갑에 shielded keypair를 추가합니다.

| 키                | Solana 지갑  | 비공개 지갑                   |
| ---------------- | ---------- | ------------------------ |
| 공개 키             | 전송 수신에 공유됨 | 전송 수신에 공유됨               |
| 비공개 키            | 거래 서명에 사용됨 | 거래 서명에 사용됨               |
| 시드 구문            | 지갑 재생성     | 지갑 재생성                   |
| shielded keypair | N/A        | 서명, nullifier 및 보기 키의 번들 |

shielded keypair는 서명, nullifier 및 보기 키의 번들로, Solana 키페어가 아닙니다.

| 키           | 비밀 링               | 사용자 정의 익명 링        |
| ----------- | ------------------ | ------------------ |
| 서명 키        | 공개 지갑의 Ed25519     | 비공개 지갑의 P-256      |
| Nullifier 키 | UTXO를 사용한 것으로 표시   | UTXO를 사용한 것으로 표시   |
| 보기 키        | 읽기 전용 P-256. 잔액 해독 | 읽기 전용 P-256. 잔액 해독 |

Shielded Address는 shielded keypair의 공개 키입니다. 전송은 이에 암호화됩니다.

```
ShieldedAddress = (signing_pk, nullifier_pk, viewing_pk)
```

#### Shielded Keypair 생성하기

지갑은 두 가지 방법으로 shielded keypair를 생성할 수 있습니다.

1. **시드 구문에서 키 유도하기**

   * 시드 기반 지갑의 권장 접근 방법.
   * 비밀 링: 서명 키는 시드에서 Solana 지갑이 유도하는 동일한 Ed25519 키입니다. nullifier 및 보기 키는 동일한 시드에서 추가로 유도된 키입니다.
   * 사용자 정의 익명 링: 서명 키는 지갑 시드에서 추가로 유도된 P-256 키입니다.
   * Solana 지갑을 재생성하는 것과 동일한 방식으로 shielded keypair를 항상 재생성할 수 있습니다.

2. **기존 Solana 키로 고정 메시지에서 키 유도하기**

   * Solana 서명은 결정적이므로 동일한 Solana 키페어는 항상 동일한 shielded keypair를 생성합니다. 앱은 비공개 키를 받지 않습니다.
   * 시드 구문을 사용하지 않는 테스트 및 지갑에 대한 권장 접근 방법. 통합되는 지갑은 서명이 제3자에게 노출되지 않도록 보장해야 합니다.

#### Shielded Keypair 통합하기

지갑은 네이티브 [지갑 통합](/docs/ko/privacy/integration/wallet)을 통해 shielded keypair를 보관할 수 있습니다.
[임베디드 프라이버시 지갑](/docs/ko/privacy/integration/embedded-wallet)을 사용하면 지갑 제공자가 shielded keypair를 보관하고 키 작업을 대신 수행합니다.

| 키 관리                                                     | 누가 shielded keypair를 보관하는가 | 그 작업이 어디에서 실행되는가 |
| -------------------------------------------------------- | -------------------------- | ---------------- |
| 네이티브 [지갑 통합](/docs/ko/privacy/integration/wallet)             | 지갑                         | 장치에서             |
| [임베디드 프라이버시 지갑](/docs/ko/privacy/integration/embedded-wallet) | 지갑 제공자                     | 지갑 제공자의 인프라에서    |

### 복호화 모드와 지갑 동기화

소유자만 보기 키를 사용하여 비공개 지갑 잔액을 복호화할 수 있습니다.

선택적 공개를 위해 소유자는 보기 키를 감사자와 공유할 수 있으며, 감사자는 자산을 사용할 수 없는 상태에서 활동을 읽을 수 있습니다.
사용자 정의 링에서는 정책이 해당 사용자 정의 링의 모든 잔액을 복호화할 수 있는 감사자를 선언할 수 있습니다.

비밀 링(기본 링 및 비밀 사용자 정의 링)은 로컬 및 위임된 복호화를 지원합니다.
익명 링(사용자 정의 링만 해당)은 위임된 복호화만 지원합니다.

| 모드 | 복호화가 일어나는 곳 | 누가 보기 액세스를 가지는가 | 지갑 트레이드오프                             | 누가 사용하는가                  |
| -- | ----------- | --------------- | ------------------------------------- | ------------------------- |
| 로컬 | 지갑 내        | 지갑 전용           | 가장 좋은 프라이버시지만 로컬 상태 및 동기화 라이프사이클이 필요  | 비밀 링: 기본 링 및 비밀 사용자 정의 링  |
| 위임 | 승인된 RPC 제공자 | 지갑 + 제공자        | 로컬 동기화 작업은 감소하지만 제공자가 잔액 및 이력을 볼 수 있음 | 모든 링; 사용자 정의 익명 링의 유일한 모드 |

<Info>
  지갑은 지갑 잠금 해제 시, 비공개 지갑 열기, 앱 다시 시작, 네트워크 재연결, 스트림 간극 또는 지갑 복원 시 백필을 실행되는 곳에서 잔액을 해독하고 업데이트해야 합니다.
</Info>

#### 로컬 복호화

로컬 복호화 모드에서는 지갑이 잔액 및 기록을 로컬에서 복호화하고 동기화합니다.
Helius 서버는 니모닉, 시드, 서명 비공개 키, 보기 비공개 키 또는 nullifier 비밀을 받지 않습니다.

#### 위임된 복호화

위임된 복호화 모드에서는 지갑과 선택된 제공자가 보기 키를 공유합니다.
이로 인해 제공자가 잔액 및 이력을 복호화할 수 있지만, 자산을 사용할 수 있는 권한은 부여되지 않습니다.
지갑은 또한 제공자가 기록된 활동을 동기화하도록 승인할 때 이전 보기 키를 공유할 수 있습니다.

감사자 액세스는 위임된 복호화와 별개입니다.
감사자는 정책 정의된 링 가시성을 받으며, 위임된 제공자는 지갑 범위의 동기화 액세스를 받습니다.

#### 인덱서가 암호화된 상태 제공

공개 지갑이 Solana RPC에 의존하듯이, 비공개 지갑은 인덱서에 의존합니다.
인덱서는 잔액을 읽고 비공개 거래를 구축하는 데 필요한 암호화된 상태를 제공합니다.

기본적으로, 인덱서는 <Tooltip text="https://devnet.helius-rpc.com/?api-key=<API_KEY> / https://mainnet.helius-rpc.com/?api-key=<API_KEY>">Helius RPC URL</Tooltip>을 통해 접근할 수 있습니다. 누구든지 무허가로 자신만의 인덱서를 백업으로 실행할 수 있습니다.

## 비공개 지갑 잔액

비공개 지갑 잔액은 Solana 토큰 계정이 아닌 UTXO(사용되지 않은 거래 출력)로서 비공개 Solana 토큰 계정에 온체인에 보관됩니다.
기본 링 및 모든 사용자 정의 링은 하나의 상태 머클 트리에 비공개 잔액을 저장합니다.

비공개 지갑 잔액은 비공개 지갑이 소유한 모든 UTXO의 합입니다.
Solana 프로그램은 일반 Solana 계정과 유사하게 UTXO를 소유할 수 있습니다.
이 문서에서는 비공개 Solana 토큰 계정과 UTXO를 상호 교환적으로 사용합니다.

<img src="https://mintcdn.com/helius/KNGZoSuCXDUVm6yU/images/privacy/utxo-set-to-wallet.svg?fit=max&auto=format&n=KNGZoSuCXDUVm6yU&q=85&s=92c14cfcf72e56cbaff498a7b95c638b" alt="여러 UTXO 노트에 연결된 점선으로 연결된 비공개 지갑. 각 노트에는 하나의 자산이 들어 있습니다. 지갑 잔액은 노트의 합계입니다." width="700" height="276" data-path="images/privacy/utxo-set-to-wallet.svg" />

<Accordion title="UTXO와 Solana 계정에서의 잔액">
  사용자 경험 측면에서는 잔액이 UTXO 또는 Solana 토큰 계정에 보관되는지는 중요하지 않습니다.

  기술적 관점에서는, 공개 잔액을 사용하는 것은 Solana 토큰 계정에서 `amount`을 감소시킵니다.
  비공개 잔액을 사용하는 것은 UTXO의 `amount` 필드를 덮어쓰지 않습니다.
  대신, 비공개 거래는 기존 UTXO를 입력으로 자동으로 선택하여
  입력을 소비하고 수신자 및 송신자의 남는 잔액을 위한 새로운 출력을 생성합니다.

  예를 들어, Alice는 50 USDC를 가지고 있으며 Bob에게 35를 보냅니다.

  * Solana 토큰 계정에서는 그녀의 `amount` 필드가 50에서 15로 변경되며, Bob의 필드는 35로 증가합니다. 값이 제자리에 변경됩니다.
  * UTXO에서는 Alice는 하나의 50 USDC 노트를 보유합니다. 거래는 그것을 사용하고 두 개의 새로운 노트를 생성합니다: Bob을 위한 35 USDC 노트와 Alice를 위한 15 USDC 잔여 노트. 그녀의 오래된 50 노트는 이제 사용되었습니다.

  <Tabs>
    <Tab title="하나의 입력 노트">
      <img src="https://mintcdn.com/helius/KNGZoSuCXDUVm6yU/images/privacy/spend-comparison.svg?fit=max&auto=format&n=KNGZoSuCXDUVm6yU&q=85&s=3d0ce046ce268daf75ab8546766bc427" alt="Alice가 50 USDC 중 Bob에게 35를 보냅니다. Solana 토큰 계정에서는 금액 필드가 50에서 15로 제자리에 변경됩니다. UTXO에서는 Alice의 단일 50 USDC 노트가 사용되며 두 개의 새로운 노트가 생성됩니다: Bob에게 35 USDC 노트와 Alice에게 15 USDC 잔여 노트." width="1016" height="240" data-path="images/privacy/spend-comparison.svg" />
    </Tab>

    <Tab title="여러 입력 노트">
      <img src="https://mintcdn.com/helius/KNGZoSuCXDUVm6yU/images/privacy/spend-comparison-multi.svg?fit=max&auto=format&n=KNGZoSuCXDUVm6yU&q=85&s=f4502ff2086c41f41908e337f3c12f7b" alt="Alice가 50 USDC를 20, 20, 10의 세 노트로 보유하며 Bob에게 35를 보냅니다. Solana 토큰 계정에서는 금액 필드가 50에서 15로 제자리에 변경됩니다. UTXO에서는 모든 입력 노트가 사용되며 두 개의 새로운 노트가 생성됩니다: Bob에게 35 USDC 노트와 Alice에게 15 USDC 잔여 노트." width="1016" height="240" data-path="images/privacy/spend-comparison-multi.svg" />
    </Tab>
  </Tabs>

  |     | Solana 토큰 계정           | 비공개 Solana 토큰 계정 (UTXO)       |
  | --- | ---------------------- | ----------------------------- |
  | 보관  | `amount` 필드의 하나의 잔액 숫자 | 각 자산에 대한 고정된 양의 노트 세트         |
  | 잔액  | 계정의 숫자                 | 모든 사용되지 않은 UTXO의 합            |
  | 사용  | `amount` 필드를 제자리에 감소   | 입력 UTXO를 소비하고 새로운 잔여 UTXO를 기록 |
  | 가시성 | 온체인 공개                 | 온체인 암호화                       |

  <Info>
    SOL 및 SPL 자산의 비공개 잔액에 대한 입금 시, Solana 프라이버시 프로그램이 소유하는 인터페이스 PDA는 토큰을 에스크로로 보관하고 사용자가 소유자로 설정된 UTXO를 생성합니다.

    공개 잔액으로의 출금 시, 기존 UTXO는 사용된 것으로 표시되고, 토큰은 Solana 토큰 계정에 릴리스됩니다.
  </Info>
</Accordion>

하나의 비공개 지갑은 동시에 여러 링의 잔액을 보유할 수 있으며, 링의 수에는 제한이 없습니다.
어떤 링에 잔액이 속하는지는 지갑의 속성이 아닙니다. 이는 각 UTXO에 저장된 `policy_program_id` 필드의 속성입니다.

## 비공개 Solana 토큰 계정

비공개 Solana 토큰 계정은 Solana 토큰 계정과 유사하게 동작하는 UTXO로 두 가지 핵심 차이점이 있습니다:

* 비공개 Solana 토큰 계정은 생성 시 임대 면제를 필요로 하지 않으며,
* 그 잔액은 온체인 암호화됩니다.

여전히 비공개 Solana 토큰 계정에는 다음과 같은 데이터를 저장합니다:

* **자산:** UTXO가 보유한 단위의 소유주. SOL은 기본 소유주 주소입니다. 자산은 SOL 또는 임의의 SPL 또는 Token-2022 자산이 될 수 있습니다.
* **금액:** 노트가 보유한 `asset` 개수, 자산의 가장 작은 단위로 표시.
* **프로그램 및 정책 데이터:** 구성된 링 정책에서 Token-2022와 유사한 기능을 추가하기 위한 선택적 데이터

<Tabs>
  <Tab title="다이어그램">
    <img src="https://mintcdn.com/helius/KNGZoSuCXDUVm6yU/images/privacy/account-comparison-private.svg?fit=max&auto=format&n=KNGZoSuCXDUVm6yU&q=85&s=860d0d2f3894b0a0ac169b82e538a934" alt="비공개 Solana 토큰 계정. Solana 프라이버시 프로그램이 비공개 토큰 계정을 소유하고 있으며, 이는 PrivateAccount 필드: 소유자, 자산, 금액, 정책 데이터 및 정책 프로그램 id로 확장됩니다." width="1080" height="590" data-path="images/privacy/account-comparison-private.svg" />
  </Tab>

  <Tab title="코드">
    각 비공개 Solana 토큰 계정에 저장된 전체 레코드는 평면 UTXO입니다:

    ```rust Private Solana Token Account (UTXO) theme={"system"}
    struct Utxo {
        /// Constant separating UTXOs from other Poseidon-hashed records.
        domain: u16,
        /// Recipient's `owner_hash` from their Shielded Address.
        /// Senders write this value directly; the spender supplies the preimage
        /// components as proof witness.
        owner: [u8; 32],
        /// Asset mint. SOL is Address::default().
        asset: Address,
        /// Amount in the smallest unit of `asset`.
        amount: u64,
        /// Random bytes ensuring distinct UTXO hashes for equal
        /// `(owner, asset, amount)` triples.
        blinding: [u8; 31],
        /// Arbitrary program data.
        program_data: Option<Vec<u8>>,
        /// Arbitrary policy data.
        policy_data: Option<Vec<u8>>,
        /// The policy program that authorizes spends of this UTXO.
        policy_program_id: Option<Address>,
    }
    ```
  </Tab>
</Tabs>

<Accordion title="Solana 토큰 계정 보기">
  <Tabs>
    <Tab title="다이어그램">
      <img src="https://mintcdn.com/helius/KNGZoSuCXDUVm6yU/images/privacy/account-comparison-solana.svg?fit=max&auto=format&n=KNGZoSuCXDUVm6yU&q=85&s=89ff901091255f2038972208fcb5d538" alt="Solana 토큰 계정. 토큰 프로그램이 토큰 계정을 소유하고 있으며, 이는 AccountInfo 필드 (데이터, 실행 가능, Lamports, 소유자) 및 데이터 필드가 계정 데이터 (소유주, 양, 금액)로 확장된 것으로 확장됩니다." width="1080" height="462" data-path="images/privacy/account-comparison-solana.svg" />
    </Tab>

    <Tab title="코드">
      ```rust Solana Token Account theme={"system"}
      pub struct Account {
          /// The mint associated with this account
          pub mint: Pubkey,
          /// The owner of this account.
          pub owner: Pubkey,
          /// The amount of tokens this account holds.
          pub amount: u64,
          /// If `delegate` is `Some` then `delegated_amount` represents
          /// the amount authorized by the delegate
          pub delegate: COption<Pubkey>,
          /// The account's state
          pub state: AccountState,
          /// If is_native.is_some, this is a native token, and the value logs the
          /// rent-exempt reserve. An Account is required to be rent-exempt, so
          /// the value is used by the Processor to ensure that wrapped SOL
          /// accounts do not drop below this threshold.
          pub is_native: COption<u64>,
          /// The amount delegated
          pub delegated_amount: u64,
          /// Optional authority to close the account.
          pub close_authority: COption<Pubkey>,
      }
      ```
    </Tab>
  </Tabs>
</Accordion>

## 동시성에 관하여

사용자는 거래가 완료되면 즉시 비공개 잔액을 사용할 수 있습니다.

즉, 키페어의 잔액은 여러 UTXO로 나뉘어져 있을 때 동시적으로 사용할 수 있습니다.
지갑은 어떤 UTXO를 사용할지 선택합니다.

하나의 머클 트리가 비권한 기본 링 및 모든 사용자 정의 링에 대한 비공개 상태를 저장합니다.
트리는 하나의 기록 가능한 Solana 계정에 저장됩니다.
이 계정에 쓰여지는 비공개 전송은 블록당 Solana의 1,200만 CU의 계정 쓰기 잠금 제한을 공유합니다.

비공개 전송은 약 220,000 CU를 소비합니다.
따라서 하나의 트리는 블록당 약 54개의 비공개 전송을 지원하며, 현재 Solana 블록 시간이 약 400밀리초인 경우 초당 약 130건의 거래를 지원할 수 있습니다.

이 프로토콜은 처리량을 증가시키기 위해 더 많은 트리를 추가할 수 있습니다.
각 트리는 자체의 계정당 컴퓨팅 예산을 가진 별도의 기록 가능한 계정으로, 서로 다른 트리에서의 거래는 동일한 쓰기 잠금 예산을 경쟁하지 않습니다.

## 증명 생성 시간에 관하여

제로 지식 증명은 현재 프로버 서버에 의해 생성됩니다. 일반적인 비밀 전송은 수십 밀리초 내에 증명이 완료되며, 비밀 링에 대한 로컬 증명이 계획되어 있습니다.
증명 시간은 사용자 경험을 원활히 하기 위해 적극적으로 최적화되고 있습니다.

## 용어

| 용어               | 의미                                                                                                             | 다른 표기                                                               |
| ---------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| AES-GCM          | UTXO의 내용을 암호화하고 변조 여부를 감지하는 대칭 암호화 방식                                                                          |                                                                     |
| 감사자              | 사용자 정의 링에 대해 구성된 뷰어. 감사자는 링 데이터를 읽을 수는 있지만 사용할 수는 없습니다                                                         |                                                                     |
| 사용자 정의 링         | 사용자 정의 규칙, 가시성 및 권한을 가진 전용 엔터프라이즈 링.                                                                           | 이전에 "정책 링"                                                          |
| 복호화 모드           | 링이 잔액 및 이력 복호화를 지원하는 방식: 비밀 링(기본 링 및 비밀 사용자 정의 링)은 로컬 및 위임을 지원하며, 익명 사용자 정의 링은 위임만 지원                          |                                                                     |
| 위임된 복호화          | 선택된 제공자가 공유된 보기 키를 사용하여 잔액 및 이력을 읽고 사용할 수 있는 권한 없이 읽을 수 있는 동기화 모드                                              |                                                                     |
| 기본 링             | 권한 없는 비밀 링에서 잔액을 가진 비공개 지갑 그룹; 자산 및 금액은 비공개이며 송신자 및 수신자는 공개 상태                                                 |                                                                     |
| 입금               | Solana 공개 주소에서 링으로의 공공에서 비공개로의 전송                                                                              | 시작, 공공에서 비공개 입금                                                     |
| ECDH             | 송신자 및 수신자가 서로의 키를 교환하지 않고 공유 비밀을 생성할 수 있는 타원 곡선 디피-헬만                                                          |                                                                     |
| 동결 권한            | 정책에서 허용할 때 잔액을 동결하거나 해제할 수 있는 권한을 가진 구성된 권한                                                                    |                                                                     |
| HPKE             | ECDH 키 동의를 대칭 암호화와 결합하여 수신자의 키에 대한 UTXO를 암호화하는 하이브리드 공개 키 암호화                                                  |                                                                     |
| 받은 편지함           | 비공개 지갑의 수신 주소로 사용되는 Solana 공개 키                                                                                | 공공 수신 주소                                                            |
| 소유자              | 비공개 지갑 작업을 인증하는 Solana 공개 키, 스마트 계정 또는 제공자 지원 서명자                                                              |                                                                     |
| 정책 프로그램          | 사용자 정의 링의 규칙을 시행하고 거래가 어느 사용자 정의 링을 사용하는지 공개하는 공공 온체인 프로그램                                                     | 정책 규칙 집합, 링 정책                                                      |
| 프라이버시 API        | Private Wallet 생성, 잔액/이력 읽기, 전송 준비, 증명 생성 및 거래 제출을 위한 Helius API                                               | RPC 제공자 (문서에서는 "프라이버시 API / RPC 제공자"로 결합; enterprise.mdx의 신뢰 모델 참조) |
| 비공개 잔액           | 링 내에 보유된 사용자의 암호화된 잔액                                                                                          | 보호 잔액, 암호화된 잔액, 비공개 자금                                              |
| 비공개 Solana 토큰 계정 | 비공개 지갑이 소유한 하나의 자산의 금액을 보유하는 온체인 UTXO. 비공개 지갑 잔액은 모든 사용되지 않은 UTXO의 합                                           | UTXO, 노트, 사용되지 않은 거래 출력                                             |
| 비공개 전송           | 비공개 지갑 간 자산이나 금액을 드러내지 않고 진행되는 전송. 비밀 공개 링에서는 송신자와 수신자가 보이는 상태로 남고, 익명 링은 릴레이어를 사용하여 어느 쪽도 드러내지 않습니다           | 비공개 대 비공개 전송, 링 내 전송                                                |
| 비공개 지갑           | 암호화된 온체인 잔액 및 전송이 포함된 결제 계정                                                                                    | 비공개 계정, 비공개 결제 계정, 관리형 비공개 계정                                       |
| 비공개 지갑 잔액        | 비공개 지갑이 소유한 모든 사용되지 않은 UTXO의 합                                                                                 |                                                                     |
| 공개 잔액            | 링 외부의 사용자의 일반 공개 SPL 토큰 잔액                                                                                     | 공공 계정, 공공 토큰 계정, SPL 토큰 잔액                                          |
| 레지스트리            | 발신자가 주소에 비공개로 지불할 수 있도록 Solana 주소를 그 보호된 주소로 매핑합니다. 레코드는 주소가 비공개 전송을 수신할 수 있다는 것이지 비공개 자금을 보유하고 있다는 의미는 아닙니다   |                                                                     |
| 릴레이어             | 익명 링 거래를 제출하고 Solana 거래 수수료를 지불하여 발신자가 거래와 연결되지 않도록 합니다                                                        |                                                                     |
| 사용자 정의 링         | 정책이 관리하는 사용자 정의 링에 잔액이 있는 비공개 지갑 그룹.                                                                           |                                                                     |
| Shielded Address | 사용자의 레지스트리 레코드에 게시된 (서명, nullifier, 보기 키)의 공개 키 번들. 온체인 주소가 아닙니다                                               | 보호 공개 키, 보호된 공개 키                                                   |
| Shielded keypair | 비공개 지갑의 서명, nullifier 및 보기 키 번들. 지갑 또는 임베디드 프라이버시 지갑의 지갑 제공자가 보유                                               | 보호 키                                                                |
| TSPP             | 오픈소스 Solana 프라이버시 프로토콜, Helius Labs에서 제작 및 유지관리하는 표준으로, 온체인 상태 전환을 지원                                          | Solana 프라이버시 프로토콜                                                   |
| Viewing Key      | 비공개 지갑 잔액을 복호화하는 읽기 전용 P-256 키페어. 소유자가 선택적 공개를 위해 감사자와 공유할 수 있음                                                | 보기 키                                                                |
| 지갑 제공자           | 사용자 계정, 서명자, 스마트 계정 또는 자금 관리 지갑을 관리하고 비내보낼 수 없는 프라이버시 키를 보유하는 시스템, 예: Turnkey, Privy, Squads, Rain 또는 내부 관리 스택 | 지갑 키 관리자, 키 관리 서비스, 보안 키 인프라                                        |
| 출금               | 링에서 공공 주소로의 비공개에서 공개로의 전송                                                                                      | 비공개에서 공개로의 출금                                                       |

## Didn't find what you were looking for?

<Callout type="info">
  Reach out! [Telegram](https://t.me/tilo_light) | [E-Mail](mailto:sales@helius.xyz) | [Contact](https://www.helius.dev/contact)
</Callout>
