트랜잭션 결과(Transaction Results)

rippled serverengine_result 와 meta.TransactionResult와 같은 필드에 표시되는 결과 코드로 트랜잭션 결과를 요약합니다. 이 코드는 접두사가 다른 여러 범주로 그룹화됩니다:

범주

접두사

설명

Claimed cost only

거래가 의도한 목적을 달성하지 못했지만 거래 비용이 소멸되었습니다. 이 결과는 검증된 원장에서만 최종적인 결과입니다.

Failure

트랜잭션은 서버의 현재(진행 중인) 원장이나 이후 원장에 적용될 수 없습니다. 이미 적용되었을 수도 있고, 원장의 상태로 인해 향후 적용이 불가능할 수도 있습니다.

Local error

rippled 서버가 높은 부하 등 로컬 조건으로 인해 오류가 발생했습니다. 다른 서버나 다른 시간에 재제출하면 다른 응답을 받을 수 있습니다. 잘못된 트랜잭션 템 부적절한 구문, 충돌하는 옵션, 잘못된 서명 등으로 인해 트랜잭션이 유효하지 않습니다.

Malformed transaction

부적절한 구문, 충돌하는 옵션, 잘못된 서명 등으로 인해 거래가 유효하지 않습니다.

Retry

거래를 적용할 수 없지만 향후 원장에서는 성공적으로 적용될 수 있습니다.

Success

(오류 아님) 거래가 성공했습니다. 이 결과는 검증된 원장에서만 최종 결과입니다.

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

문자열

발생한 상황을 설명하는 사람이 읽을 수 있는 메시지입니다. 이 메시지는 개발자가 문제를 진단하기 위한 것으로, 사전 통지 없이 변경될 수 있습니다.

트랜잭션을 로컬로 제출하고 적용할 때 아무런 문제가 발생하지 않았다면 다음과 같은 응답이 표시됩니다:

    "engine_result": "tesSUCCESS",
    "engine_result_code": 0,
    "engine_result_message": "The transaction was applied. Only final in a validated ledger."

Note:

이 단계의 성공 결과는 트랜잭션이 완전히 성공했음을 의미하지 않으며, 로컬 서버에 보관된 원장의 임시 버전에 성공적으로 적용되었다는 의미일 뿐입니다. 이 단계의 실패 결과도 잠정적인 결과이며 변경될 수 있습니다. 자세한 내용은 Finality of Results을 참조하세요.

Last updated