스마트 컨트랙트 주소
TON 블록체 인에서 지갑과 스마트 컨트랙트를 포함한 모든 액터는 주소로 표현됩니다. 이러한 주소들은 메시지와 트랜잭션을 주고받는 데 매우 중요합니다. 스마트 컨트랙트 주소에는 **원시 주소(raw address)**와 **사용자 친화적 주소(user-friendly address)**의 두 가지 주요 형식이 있습니다.
주소 구성 요소
TON의 각 주소는 두 가지 주요 구성 요소로 이루어집니다:
- 워크체인 ID: 컨트랙트가 속한 워크체인을 나타내는 부호 있는 32비트 정수(예: 마스터체인의 경우
-1
, 베이스체인의 경우0
) - 계정 ID: 컨트랙트를 위한 고유 식별자로, 마스터체인과 베이스체인의 경우 일반적으로 256비트 길이입니다.
원시 주소 vs. 사용자 친화적 주소
원시 주소
원시 주소는 기본 요소만을 포함합니다:
- 워크체인 ID(예: 마스터체인의 경우
-1
) - 계정 ID: 256비트 고유 식별자
예시:
-1:fcb91a3a3816d0f7b8c2c76108b8a9bc5a6b7a55bd79f8ab101c52db29232260
하지만 원시 주소에는 두 가지 주요 문제가 있습니다:
- 내장된 오류 검사가 없어, 복사 시 실수가 자금 손실로 이어질 수 있습니다.
- 바운스 가능/불가능 플래그와 같은 추가 기능을 지원하지 않습니다.
사용자 친화적 주소
사용자 친화적 주소는 다음을 포함하여 이러한 문제들을 해결합니다:
- 플래그: 주소가 바운스 가능(컨트랙트용)인지 바운스 불가능(지갑용)인지를 나타냅니다.
- 체크섬: 전송 전 오류를 감지하는 데 도움이 되는 2바이트 오류 검사 메커니즘(CRC16)
- 인코딩: base64나 base64url을 사용하여 원시 주소를 읽기 쉽고 간단한 형태로 변환합니다.
예를 들어, 동일한 원시 주소는 다음과 같은 사용자 친화적 주소로 변환될 수 있습니다:
kf/8uRo6OBbQ97jCx2EIuKm8Wmt6Vb15+KsQHFLbKSMiYIny
(base64)
사용자 친화적 주소는 오류를 방지하고 실패한 트랜잭션의 경우 자금 반환을 허용함으로써 트랜잭션을 더 안전하게 만듭니다.
주소 상태
TON의 각 주소는 다음 상태 중 하나일 수 있습니다:
- 존재하지 않음: 주소에 데이터가 없음(모든 주소의 초기 상태)
- 초기화되지 않음: 주소에 잔액은 있지만 스마트 컨트랙트 코드는 없음
- 활성: 스마트 컨트랙트 코드와 잔액이 있는 활성 상태의 주소
- 동결: 저장 비용이 잔액을 초과하여 잠긴 주소
주소 형식 간 변환
원시 주소와 사용자 친화적 주소 간의 변환을 위해 TON API나 ton.org/address와 같은 개발자 도구를 사용할 수 있습니다. 이러한 유틸리티들은 원활한 변환을 가능하게 하고 트랜잭션 전송 전 적절한 형식을 보장합니다.
인코딩 예시와 트랜잭션 보안을 포함한 이러한 주소 처리 방법에 대한 자세한 내용은 주소 문서의 전체 가이드를 참조할 수 있습니다.