Nhảy tới nội dung

토큰 손실 방지

cảnh báo

주의하세요! 토큰을 잃는다는 것은 돈을 잃는 것을 의미합니다!

여러 시나리오에서 토큰 손실이 가능합니다. 이러한 시나리오는 다음과 같이 몇 가지로 그룹화할 수 있습니다.

  1. 부적절한 키 관리
  2. 삭제된 계정으로의 환불
  3. 배치 내에서 실패한 함수 호출

부적절한 키 관리

부적절한 키 관리는 토큰 손실로 이어질 수 있습니다. 이러한 경우, 키를 분실하거나 삭제한 계정을 복구할 수 있는 백업 키를 발급하여 방지할 수 있습니다.

FullAccess 키를 분실하는 경우

사용자는 다른 키가 없는 계정에 대한 FullAccess 키 쌍의 개인 키를 잃을 수 있습니다. 이 경우 아무도 자금을 회수할 수 없습니다. 자금은 계정에 영원히 잠기게 됩니다.

FunctionCall 액세스 키를 분실하는 경우

계정 내 하나뿐인 FunctionCall 액세스 키가 삭제될 수 있습니다. 이 경우에도 아무도 자금을 회수할 수 없습니다. 자금은 계정에 영원히 잠기게 됩니다.


삭제된 계정으로 환불하는 경우

계정에 대한 환불 Receipt가 발행될 때 해당 계정이 더 이상 존재하지 않는 경우, 자금은 현재 에포크의 지분에 비례하여 밸리데이터들에게 분배됩니다.

수혜자가 존재하지 않는 계정을 삭제하는 경우

계정을 삭제할 때, 수혜자를 지정해야 합니다. 삭제되면 송금 Receipt가 생성되어 수취인 계정으로 전송됩니다. 수취인 계정이 존재하지 않는 경우 환불 Receipt가 생성되어 원래 계정으로 다시 전송되겠지만, 이때는 원래 계정이 이미 삭제된 상태이므로 자금은 밸리데이터들에게 분산됩니다.

잔고가 0인 계정이 환불받기 전에 가비지 수집되어 삭제되는 경우

계정 A가 모든 자금을 다른 계정 B로 이체했는데 계정 B가 존재하지 않는 경우, 해당 계정 A에 대한 환불 Receipt가 생성됩니다. 이 기간 동안 계정 A는 네트워크의 가비지 수집 활동에 의해 삭제되기 쉽습니다. 환불 영수증이 도착하기 전에 계정 A가 삭제되면 자금은 밸리데이터들에게 분산됩니다.


배치에서 실패한 함수를 호출하는 경우

cảnh báo

스마트 컨트랙트를 설계할 때 NEAR 프로토콜의 비동기적인 특성을 항상 고려해야 합니다.

컨트랙트 함수 f1이 두 개(또는 그 이상)의 다른 함수 f2f3를 호출 하고, 이 함수 f2f3 중 하나 이상이 실패하면 실패한 함수에서 토큰이 환불되지만 토큰은 성공한 함수에 대해서는 올바르게 적립됩니다.

배치 내 한 번의 실패가 전체 배치 실패를 의미하는 경우, 사용 사례에 따라 성공적인 호출의 토큰이 손실된 것으로 간주될 수 있습니다.