샌드박스에서 STON.fi 토큰 스왑을 실행하는 데 성공한 개발자들은, 코드에 남겨진 몇 가지 사소해 보이는 지름길 때문에 메인넷으로 전환할 때 사용자 자금이 모두 사라질 수 있다는 경고를 받고 있습니다. 개발자 블로그에 공개된 커뮤니티 작성 체크리스트는 대부분의 통합 과정이 실패하는 정확한 지점들을 설명하며, 프로덕션 환경에 적합한 출시를 위한 구체적인 레시피를 제공합니다.
전환이 중요한 이유
STON.fi는 TON 블록체인 상의 여러 DEX에 걸쳐 유동성을 집계하는 라우터를 제공합니다. 사용자에게 원클릭 스왑을 제공하려는 프로젝트는 일반적으로 프런트엔드나 스마트 컨트랙트 래퍼(wrapper)에서 라우터를 호출합니다. 테스트 환경에서는 라우터 주소가 고정되어 있고, 수수료 체계가 알려져 있으며, 샌드박스는 잘못된 트랜잭션도 허용합니다. 하지만 메인넷에서는 라우터가 업그레이드될 수 있고, 수수료 매개변수가 변경될 수 있으며, 주소 하나만 잘못 입력해도 실제 토큰이 작동하지 않는 컨트랙트로 전송될 수 있습니다. 따라서 재무적 이해관계는 매끄러운 사용자 경험과 프로젝트의 명성을 하룻밤 사이에 망가뜨릴 수 있는 손실 사이의 차이를 결정짓습니다.
가장 흔한 실수: 값의 하드코딩
실패한 런칭에서 반복적으로 나타나는 패턴은 테스트 중에 유효했던 라우터 주소나 수수료 상수를 하드코딩하는 것입니다. STON.fi가 성능을 개선하거나 버그를 수정하기 위해 정기적으로 라우터를 업그레이드하면, 하드코딩된 주소는 더 이상 기능하는 컨트랙트를 가리키지 않게 됩니다. 이 경우 통합 프로세스는 사용자가 알 수 없는 에러를 발생시키거나, 더 심각하게는 자금을 처리할 수 없는 주소로 조용히 전송해 버립니다. 커뮤니티 가이드는 단 하나의 규칙을 강조합니다. 어떤 라우터를 사용할지는 STON.fi REST API가 결정하도록 하십시오.
단계별 안전 체크리스트
이 체크리스트는 마이그레이션 프로세스를 환경, 컨트랙트 상호작용, 수수료 계산, 예외 상황 처리라는 네 가지 논리적 계층으로 나눕니다.
환경 변수를 조기에 검증하십시오. 테스트 중에는 WebSocket 엔드포인트와 REST API 기본 URL을 샌드박스로 지정하고, 출시 전에 메인넷 노드로 전환하십시오. 여기서 오타가 발생하면 실제 스왑이 테스트 라우터로 리다이렉트되어 토큰이 영구적으로 잠길 수 있습니다.
컨트랙트 주소를 절대 임베드(embed)하지 마십시오. STON.fi API에 시뮬레이션 요청을 보내 응답에서 현재 라우터 주소를 가져온 다음, 런타임 시
dexFactory(또는 이에 상응하는 컨트랙트 팩토리)에 전달하십시오. 이렇게 하면 향후 어떤 라우터 업그레이드에도 자동으로 대응할 수 있습니다.수수료를 실시간으로 계산하십시오. API의 구성 페이로드에서 수수료 매개변수를 가져와 수수료 계산 루틴에 사용하십시오. 하드코딩된 퍼센티지는 플랫폼이 경제 모델을 조정하는 즉시 쓸모없게 됩니다.
공식 SDK와 TonConnect를 우선적으로 사용하십시오. SDK는 사용자를 대신해 BOC(Bag of Cells) 구조를 생성하며 가스 한도, 데이터 인코딩 및 서명 검증에 대한 체크 기능을 포함하고 있습니다. 수동 BOC 컴파일은 SDK가 처리할 수 없는 매우 특수한 경우에만 제한적으로 사용해야 합니다.
실패 모드 테스트를 수행하십시오. 샌드박스에서 가스 부족(out-of-gas), 승인(allowance) 부족, 잘못된 응답 등의 시나리오를 시뮬레이션하십시오. 컨트랙트가 사용자에게 환불을 해주거나 명확한 에러 이벤트를 발생시키는지 확인하십시오. 사용자가 프로덕션 환경에서 이러한 버그를 발견하게 만드는 것은 사용자 이탈을 초래합니다.
리퍼럴 출금 경로를 확인하십시오. DEX의 두 번째 버전에서는 리퍼럴 수수료가 지갑 대신 전용 Vault 컨트랙트에 쌓입니다. 통합 프로세스에서 Vault의 출금 메서드를 호출하고, 리퍼럴 계정에 크레딧을 적립하기 전에 수신된 토큰을 처리해야 합니다.
개발자들 사이의 논쟁
일부 개발자들은 SDK가 불필요한 오버헤드를 추가하며, 직접 만든 BOC 페이로드가 가스 비용 면에서 더 작고 저렴할 수 있다고 주장합니다. 가이드는 이러한 견해를 인정하면서도, SDK에는 라우터 주소 및 수수료 스키마에 대한 업데이트가 포함되어 있다는 점을 지적합니다. 즉, 수동으로 구축한 페이로드는 STON.fi가 업그레이드될 때마다 다시 검토해야 한다는 뜻입니다. 따라서 트레이드오프는 미미한 가스 절감과 예기치 않은 오류 발생 위험 사이의 선택입니다.
향후 주의 깊게 살펴볼 사항
- 라우터 업그레이드 공지. STON.fi는 개발자 채널에 예정된 라우터 변경 사항을 게시합니다. 해당 피드를 구독하면 메인넷 전환 전에 샌드박스에서 새 주소를 선제적으로 테스트할 수 있습니다.
- 수수료 매개변수 수정. 수수료 퍼센티지는 시장 상황에 대응하기 위해 조정될 수 있으므로, 구성 엔드포인트를 주기적으로 호출하는 기능을 모니터링 서비스에 포함하십시오.
- SDK 버전 출시. 새로운 SDK 버전에는 메인넷 출시 후 발견된 예외 상황에 대한 버그 수정이 포함되는 경우가 많습니다. SDK를 최신 상태로 유지하는 것은 라우터 주소를 업데이트하는 것만큼 중요합니다.
핵심은 명확합니다. "테스트에서 작동하는" 스왑이 자동으로 안전한 메인넷 경험으로 이어지는 것은 아닙니다. 라우터 주소부터 수수료 체계에 이르기까지 모든 핵심 값을 라이브 STON.fi API에서 가져오고, 사용자가 인터페이스를 접하기 전에 에러 경로를 엄격하게 테스트함으로써, 개발자는 프로덕션 단계로 넘어가는 마지막 관문을 통과할 때 사용자 자금을 보호하고 신뢰를 유지할 수 있습니다.
출처: https://dev.to/web3kd/the-last-mile-taking-a-stonfi-integration-from-test-network-to-real-users-2ho0
