트랜잭션 결과(Transaction Results)
rippled server
는 engine_result 와 meta.TransactionResult
와 같은 필드에 표시되는 결과 코드로 트랜잭션 결과를 요약합니다. 이 코드는 접두사가 다른 여러 범주로 그룹화됩니다:
범주
접두사
설명
Failure
트랜잭션은 서버의 현재(진행 중인) 원장이나 이후 원장에 적용될 수 없습니다. 이미 적용되었을 수도 있고, 원장의 상태로 인해 향후 적용이 불가능할 수도 있습니다.
Local error
rippled 서버가 높은 부하 등 로컬 조건으로 인해 오류가 발생했습니다. 다른 서버나 다른 시간에 재제출하면 다른 응답을 받을 수 있습니다. 잘못된 트랜잭션 템 부적절한 구문, 충돌하는 옵션, 잘못된 서명 등으로 인해 트랜잭션이 유효하지 않습니다.
rippled
server 는 실패한 트랜잭션을 자동으로 재시도합니다. 잠정적인 실패 결과를 근거로 트랜잭션이 완전히 실패했다고 가정하지 않는 것이 중요합니다. 트랜잭션의 성공 또는 실패가 최종 확정되지 않는 한 나중에 트랜잭션이 성공할 수도 있습니다.
Warning:
트랜잭션의 잠정 결과 코드는 최종 결과와 다를 수 있습니다. 잠정적으로 성공한 트랜잭션이 최종적으로 실패할 수도 있고, 잠정적으로 실패한 트랜잭션이 최종적으로 성공할 수도 있습니다. 잠정적으로 실패한 트랜잭션도 최종적으로 다른 코드로 실패할 수 있습니다. 트랜잭션의 결과가 최종적인지 확인하는 방법은 finality of results을 참조하세요.
로컬 오류(tel
)와 잘못된 트랜잭션(tem
)을 구분하는 것은 프로토콜 수준 규칙의 문제입니다. 예를 들어, 프로토콜은 트랜잭션에 포함될 수 있는 최대 경로 수에 제한을 두지 않습니다. 그러나 서버는 처리할 수 있는 경로의 유한한 한도를 정의할 수 있습니다. 서로 다른 두 서버가 서로 다르게 구성된 경우, 경로가 많은 트랜잭션에 대해 한 서버가 tel
오류를 반환하는 반면 다른 서버는 트랜잭션을 성공적으로 처리할 수 있습니다. 충분한 서버가 트랜잭션을 처리할 수 있어 합의에서 살아남는다면, 해당 트랜잭션은 여전히 검증 원장에 포함될 수 있습니다.
반대로 tem
오류는 설정에 관계없이 어느 서버에서도 트랜잭션을 적용할 수 없음을 의미합니다. 트랜잭션이 프로토콜의 규칙을 위반하거나, 허용할 수 없을 정도로 모호하거나, 완전히 무의미한 트랜잭션입니다. 잘못된 트랜잭션이 유효해질 수 있는 유일한 방법은 프로토콜을 변경하는 것입니다. 예를 들어, 새로운 기능이 채택된 경우 해당 기능을 사용하는 트랜잭션은 해당 기능 이전의 오래된 소프트웨어를 실행하는 서버에서 잘못된 트랜잭션으로 간주될 수 있습니다.
Immediate Response
submit method의 응답에는 트랜잭션의 로컬 처리 중에 발생한 일을 나타내는 rippled
서버의 잠정 결과가 포함됩니다.
submit
method의 응답에는 다음 필드가 포함됩니다:
필드
값
설명
engine_result
문자열
트랜잭션의 결과를 나타내는 코드(예: tecPATH_DRY).
engine_result_code
부호 있는 정수
엔진 결과에 해당하는 숫자입니다. 정확한 값은 예고 없이 변경될 수 있습니다.
engine_result_message
문자열
발생한 상황을 설명하는 사람이 읽을 수 있는 메시지입니다. 이 메시지는 개발자가 문제를 진단하기 위한 것으로, 사전 통지 없이 변경될 수 있습니다.
트랜잭션을 로컬로 제출하고 적용할 때 아무런 문제가 발생하지 않았다면 다음과 같은 응답이 표시됩니다:
Note:
이 단계의 성공 결과는 트랜잭션이 완전히 성공했음을 의미하지 않으며, 로컬 서버에 보관된 원장의 임시 버전에 성공적으로 적용되었다는 의미일 뿐입니다. 이 단계의 실패 결과도 잠정적인 결과이며 변경될 수 있습니다. 자세한 내용은 Finality of Results을 참조하세요.
Last updated