본문으로 건너뛰기

반송 불가 메시지

스마트 콘트랙트 간에 전송되는 거의 모든 내부 메시지는 바운스 가능해야 하며, 즉 "바운스" 비트가 설정되어 있어야 합니다. 그런 다음 대상 스마트 컨트랙트가 존재하지 않거나 이 메시지를 처리하는 동안 처리되지 않은 예외가 발생하면 메시지는 원래 값의 나머지 부분(모든 메시지 전송 및 가스 요금)을 제외하고 다시 "바운스"됩니다. 반송된 메시지 본문에는 32비트 0xffffff와 원본 메시지에서 256비트가 포함되지만, "반송" 플래그는 지워지고 "반송" 플래그가 설정됩니다. 따라서 모든 스마트 컨트랙트는 모든 인바운드 메시지의 "반송" 플래그를 확인하고 이를 조용히 수락하거나(0 종료 코드로 즉시 종료), 어떤 아웃바운드 쿼리가 실패했는지 감지하기 위해 몇 가지 특수 처리를 수행해야 합니다. 반송된 메시지 본문에 포함된 쿼리는 절대로 실행해서는 안 됩니다.

정보

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

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

최종 사용자(예: 지갑)가 많은 금액(예: 5개 이상의 톤코인)이 포함된 반송 불가 메시지를 보내지 못하도록 '허용'하지 않거나, 보낼 경우 경고하는 것이 좋습니다. 소량을 먼저 전송한 다음 새로운 스마트 컨트랙트를 초기화한 다음 더 큰 금액을 전송하는 것이 '더 좋은 아이디어'입니다.