본문으로 건너뛰기

반송 불가 메시지

스마트 컨트랙트 간에 전송되는 거의 모든 내부 메시지는 반송 가능해야 합니다. 즉, "반송" 비트가 설정되어 있어야 합니다. 그러면 대상 스마트 컨트랙트가 존재하지 않거나 이 메시지를 처리하는 동안 처리되지 않은 예외가 발생하는 경우, 메시지는 원래 값의 나머지(모든 메시지 전송 및 가스 수수료를 제외한)를 가지고 "반송"됩니다. 반송된 메시지의 본문에는 32비트 0xffffffff가 포함되며, 그 뒤에 "반송" 플래그가 해제되고 "반송됨" 플래그가 설정된 원래 메시지의 256비트가 따릅니다. 따라서 모든 스마트 컨트랙트는 모든 수신 메시지의 "반송됨" 플래그를 확인하고 조용히 수락하거나(0 종료 코드로 즉시 종료) 어떤 발신 쿼리가 실패했는지 감지하기 위한 특별한 처리를 수행해야 합니다. 반송된 메시지의 본문에 포함된 쿼리는 절대 실행되어서는 안 됩니다.

정보

반송된 메시지의 본문에 포함된 쿼리는 절대 실행되어서는 안 됩니다 .

어떤 경우에는 반송 불가 내부 메시지를 사용해야 합니다. 예를 들어, 새 계정은 최소한 하나의 반송 불가 내부 메시지가 전송되지 않으면 생성될 수 없습니다. 이 메시지에 새 스마트 컨트랙트의 코드와 데이터가 포함된 StateInit이 포함되어 있지 않는 한, 반송 불가 내부 메시지에 비어 있지 않은 본문을 포함하는 것은 의미가 없습니다.

최종 사용자(예: 지갑 사용자)가 많은 양의 값(예: 5 Toncoin 이상)이 포함된 반송 불가 메시지를 보내지 못하게 하거나 보내는 경우 경고하는 것이 좋습니다. 먼저 작은 금액을 보내고, 그 다음 새 스마트 컨트랙트를 초기화한 후, 더 큰 금액을 보내는 것이 더 나은 방법입니다.