SSP로 Ethereum 보내고 받기

·8분 읽기·작성자: SSP Editorial Team
SSP Academy 커버: SSP로 Ethereum 보내고 받기

SSP로 Ethereum 보내고 받기

ETH를 자가수탁 지갑으로 넣고 빼는 일은 SSP를 Ethereum용으로 설정한 뒤 가장 먼저 하게 될 일 중 하나입니다. 계정 모델과, SSP의 2-of-2 multisig가 일반적인 Ethereum 트랜잭션에 어떻게 들어맞는지 이해하고 나면 어렵지 않습니다. 이 가이드는 ETH 받기, 보내기, 그리고 두 기기로 서명할 때 무대 뒤에서 실제로 무슨 일이 일어나는지를 차례로 살펴봅니다.

SSP 안의 ETH가 처음이라면, 큰 그림을 잡기 위해 먼저 SSP의 Ethereum부터 읽고, 그다음 실전 송수신 흐름을 위해 여기로 돌아오세요.

계정 모델 간단 정리

내부적으로 Ethereum은 Bitcoin과 다르게 작동합니다. Bitcoin에서는 지갑이 여러 미사용 출력을 다루며 지출할 때마다 새 잔돈 주소를 생성합니다. Ethereum에서 당신의 계정은 단지 잔액을 보유하는 단일 주소입니다. ETH를 받으면 잔액이 올라가고, 보내면 내려갑니다. 고민해야 할 잔돈 주소도, 출력 선택도 없습니다.

이는 자가수탁에 두 가지 실용적인 의미가 있습니다. 첫째, 같은 주소를 무기한 재사용하므로 백업하고, 확인하고, 공유할 주소가 하나뿐입니다. 둘째, 모든 트랜잭션은 순서가 매겨져야 하는데, Ethereum은 이를 nonce라는 카운터로 처리합니다 — 아래에서 더 다룹니다.

SSP에서 이 단일 주소가 바로 당신의 2-of-2 multisig 계정입니다. EVM 체인에서는 ERC-4337 스마트 컨트랙트 계정이므로, 체인에서는 평범한 주소처럼 보여도 두 키가 여전히 모든 지출을 통제합니다.

ETH 받기

받기는 더 안전한 쪽입니다. 지갑에서 아무것도 나가지 않기 때문입니다. 보내는 사람에게 주소를 주고 네트워크가 확정하기를 기다립니다.

당신의 0x 주소

당신의 Ethereum 수신 주소는 0x로 시작하고 그 뒤에 40개의 16진수 문자가 옵니다. SSP는 이를 텍스트와 스캔 가능한 코드 두 가지로 표시하여 보내는 사람이 정확히 복사할 수 있게 합니다. Ethereum은 하나의 주소를 재사용하므로, 결제마다 새 주소가 필요하지 않습니다.

두 기기 모두에서 주소를 확인하세요

자가수탁은 주소 확인을 당신의 몫으로 둡니다. 복사된 주소를 공격자의 것으로 바꿔치기하는 멀웨어는 업계 전반의 실제 위험이므로, 공유하려는 주소가 정말 당신의 것인지 확인하세요. SSP는 확장 프로그램과 SSP Key 양쪽에서 계정을 보여주므로, 각 기기에서 처음과 끝 문자를 살펴 일치하는지 확인하세요. 같은 습관이 Bitcoin을 SSP로 받을 때에도 적용됩니다 — 누군가가 보내준 웹페이지가 아니라, 당신이 통제하는 하드웨어에서 확인하세요.

ETH와 ERC-20 토큰을 위한 하나의 주소

같은 0x 주소가 ETH와 ERC-20 토큰을 모두 받습니다. 토큰은 당신의 주소로 잔액을 기록하는 컨트랙트 안에 존재하기 때문입니다. 토큰마다 별도의 주소가 필요하지 않습니다. 필요한 것은 보내는 사람이 올바른 네트워크를 쓰고 있는지 확인하는 일입니다.

올바른 네트워크 선택하기

이것이 사람들이 EVM 체인에서 자금을 잃는 가장 흔한 경로입니다. Ethereum 메인넷에 존재하는 주소는 Polygon, Base 및 다른 EVM 체인에도 존재하지만, 한 체인의 잔액은 다른 체인의 잔액이 아닙니다. 누군가 잘못된 네트워크로 ETH를 보내면, 당신이 지켜보는 체인에는 도착하지 않습니다. 주소를 공유하기 전에 보내는 사람과 정확한 네트워크를 합의하고, SSP가 같은 체인으로 설정되어 있는지 확인하세요. 3편에서는 Polygon, Base 및 다른 EVM 체인에서 SSP 사용하기를 자세히 다룹니다.

ETH 보내기: 2-of-2 공동 서명 흐름

보낼 때 SSP의 multisig 설계가 드러납니다. 단일 키 지갑은 한 번 서명하고 방송합니다. SSP는 당신의 두 키를 모두 요구하므로 흐름에 승인 단계가 하나 더 있습니다 — 그리고 그 단계가 바로 보안 모델의 핵심입니다.

다음은 보내기의 대략적인 형태이며, 정확한 라벨은 바뀔 수 있어 일반적으로 설명합니다:

  1. SSP Wallet 확장 프로그램에서 보내기를 선택하고, 받는 사람 주소와 금액을 입력한 뒤 수수료를 검토합니다.
  2. 확장 프로그램이 트랜잭션을 구성하고 키 1로 첫 번째 서명을 합니다.
  3. 휴대폰의 SSP Key가 푸시 알림을 받습니다. 거기서 같은 세부 정보를 검토하고 키 2로 공동 서명합니다.
  4. 두 서명이 결합되면 트랜잭션이 네트워크로 방송됩니다.

어떤 기기도 혼자서는 자금을 옮길 수 없으므로, 당신의 브라우저만 장악한 공격자는 여전히 보낼 수 없습니다. 승인하려면 당신의 휴대폰도 필요할 것입니다. EVM 체인에서 SSP는 Schnorr 집계를 사용해 두 서명을 하나로 합치므로, 체인에 도달하는 것은 두 개의 별도 서명이 아니라 하나의 계정 추상화 작업입니다. 더 깊은 메커니즘은 계정 추상화 방식의 EVM multisig에서 다룹니다.

공동 서명 습관은 정신적으로 SSP로 Bitcoin 보내기와 동일합니다. 다른 것은 바탕에 깔린 트랜잭션 형식뿐입니다.

트랜잭션의 수명 주기

보내기를 짧은 파이프라인으로 그려보면 도움이 됩니다:

  • 구성 — 확장 프로그램이 트랜잭션을 조립합니다: 받는 사람, 금액, gas 설정, 그리고 다음 nonce.
  • 서명 — 키 1이 확장 프로그램에서 서명합니다.
  • 공동 서명 — 당신이 푸시를 승인한 뒤 키 2가 SSP Key에서 서명합니다.
  • 제출됨 / 대기 중 — 결합된 트랜잭션이 방송되어 블록에 포함되기를 기다리며 mempool에 머뭅니다.
  • 확정됨 — 검증자가 그것을 블록에 포함시킵니다. 이후의 각 블록은 확인을 더하고 되돌리기를 더 어렵게 만듭니다.

트랜잭션은 체인에서 확정되어야 비로소 최종입니다. 그전까지는 대기 중이며, 경우에 따라 교체될 수 있습니다. Etherscan 같은 공개 블록 탐색기에 트랜잭션 해시를 붙여 넣으면 어떤 트랜잭션의 진행 상황이든 확인할 수 있습니다.

nonce 이해하기

nonce는 당신의 트랜잭션 순서를 매기는, 계정별 카운터입니다. 첫 트랜잭션은 nonce 0을, 다음은 1을 쓰는 식입니다. 네트워크는 이를 엄격히 순서대로 처리합니다.

이 순서에는 실용적인 결과가 따릅니다. 한 트랜잭션이 대기 중으로 막히면 — 보통 그 gas 가격이 현재 상황에 비해 너무 낮았기 때문입니다 — 이후의 모든 트랜잭션이 그 뒤에서 막힙니다. 네트워크가 더 높은 nonce로 건너뛰지 않기 때문입니다. 해결책은 막힌 트랜잭션을 교체하는 것입니다: 같은 nonce이지만 더 높은 수수료로 트랜잭션을 다시 제출하면 검증자가 새 버전을 고를 수 있습니다. 지갑은 이를 흔히 "가속" 또는 "교체" 동작으로 제시합니다. SSP는 교체에 대해서도 여전히 2-of-2 공동 서명을 요구합니다. 새 트랜잭션이기 때문입니다.

nonce를 직접 손대는 일은 드뭅니다 — SSP가 채워줍니다 — 하지만 그것이 존재한다는 사실을 알면 대기 중인 트랜잭션이 왜 뒤의 것들을 붙잡는지 설명됩니다.

gas, 큰 틀에서

모든 Ethereum 트랜잭션은 gas를 들이고, 이는 ETH로 지불됩니다. ERC-20 토큰을 옮길 때도 마찬가지입니다: 토큰은 Ethereum 트랜잭션에 실려 가고, 그 트랜잭션은 연산을 위해 ETH가 필요합니다. 실용적인 규칙은 gas를 감당할 수 있도록 항상 소량의 ETH 잔액을 두는 것입니다. 그러지 않으면 토큰 잔액이 충분해도 gas 부족으로 보내기가 실패할 수 있습니다.

EIP-1559 아래의 gas 가격 책정은 네트워크가 정하는 기본 수수료와, 더 빨리 포함되기 위해 당신이 더하는 우선순위 팁으로 나뉩니다. 여기서는 간략히 둡니다. 전체 그림 — 기본 수수료, 팁, 수수료가 치솟는 이유, 자가수탁에서 고르는 법 — 은 자가수탁 사용자를 위해 설명하는 Ethereum의 gas 수수료를 읽어 보세요.

ETH 대 ERC-20 토큰

ETH는 Ethereum의 네이티브 자산이며 gas를 지불하는 대상입니다. ERC-20 토큰은 당신의 주소에 대해 잔액을 추적하는 스마트 컨트랙트로 정의되는 별개의 자산입니다. 토큰을 보내는 것은 기술적으로 단순한 가치 이전이라기보다 컨트랙트 상호작용에 가깝지만, SSP에서는 동일한 구성, 서명, 공동 서명, 방송 흐름을 따릅니다.

일부 토큰 동작은 다른 컨트랙트가 당신을 대신해 토큰을 옮길 수 있게 되기 전에 일회성 승인(approval)을 요구합니다 — 스왑과 DeFi에서 흔합니다. 승인은 그 자체로 별개의 주제이며 여기서는 범위 밖입니다. 지출 승인을 요청하는 프롬프트가 토큰 상호작용의 정상적인 일부이며, 같은 2-of-2 공동 서명이 그것을 보호한다는 점만 알아 두세요.

보내기 전 실용적 주의사항

  • 올바른 네트워크. 체인이 받는 사람이 기대하는 것과 일치하는지 확인하세요. Base의 ETH는 Ethereum 메인넷의 ETH가 아닙니다.
  • 주소 형식. Ethereum 주소는 0x에 16진수 문자 40개입니다. 붙여넣고, 절대 다시 입력하지 말고, 두 기기에서 처음과 끝을 확인하세요.
  • ENS 이름. 일부 지갑은 원시 주소 대신 name.eth 같은 사람이 읽을 수 있는 이름으로 보낼 수 있게 합니다. 어떤 주소와도 같이 다루세요: 승인하기 전에 그것이 기대하는 받는 사람으로 해석되는지 확인하세요.
  • gas용 ETH를 남겨 두세요. 토큰만 있는 잔액은 자신의 gas를 낼 수 없습니다. ETH를 조금 보유하세요.

Ethereum 트랜잭션이 어떻게 구성되는지에 대한 프로토콜 수준의 세부 사항은 공식 Ethereum 트랜잭션 문서가 탄탄한 참고가 됩니다.

마무리

SSP에서 ETH를 받는 것은 확인된 0x 주소를 올바른 네트워크에서 공유하는 일입니다. 보내기는 의도적인 단계 하나를 더합니다 — SSP Key 공동 서명 — 이는 단일 장애 지점을 둘로 바꿉니다. gas용 ETH를 조금 손에 두고, 트랜잭션이 멈출 때 nonce를 살피고, 매번 네트워크를 확인하면 SSP에서의 일상적인 ETH 이동이 익숙한 일이 됩니다. 여기서부터는 gas 수수료 글이 자연스러운 다음 읽을거리입니다.

이 글 공유하기

관련 글