트랜잭션 제출

트랜잭션의 수명주기는 사용자가 서명된 트랜잭션을 준비하고 RPC 노드에 제출하는 것으로 시작합니다.

트랜잭션은 일반적으로 응용 프로그램 프론트엔드에서 준비되어 사용자의 지갑에서 서명되기 전에 제시됩니다. 대부분의 지갑은 이 트랜잭션의 가스 한도를 채우기 위해 eth_estimateGas RPC 호출을 수행하지만 사용자는 지갑에서 이를 재정의할 수도 있습니다. 사용자에게는 또한 트랜잭션의 가스 가격을 선택하도록 요청됩니다. 이는 가스 단위당 네이티브 토큰의 양입니다.

사용자가 지갑에서 서명을 승인하면 서명된 트랜잭션이 eth_sendTransaction 또는 eth_sendRawTransaction API 호출을 사용하여 RPC 노드에 제출됩니다.

Monad에서 유의해야 할 점은 가스 한도가 운송 가스와 실행 가스의 합계입니다. 운송 가스는 상수입니다.

멤풀 전파

RPC 노드는 보류 중인 트랜잭션을 합의에 참여하는 다른 Monad 노드로 전달합니다. 보류 중인 트랜잭션 집합은 일반적으로 '멤풀'이라고합니다. 메모리 풀 동작에 대한 자세한 내용은 멤풀을 참조하십시오. 스팸 방지를 위해 노드는 준비금 잔고에 충분한 가스가있을 때에만 트랜잭션을 멤풀에 추가합니다.

블록 인클루전

MonadBFT는 블록을 생성하기 위해 로테이팅 리더 메커니즘을 사용합니다. 각 라운드에서 리더는 보류 중인 트랜잭션 목록에서 블록을 조립합니다. 블록에 포함될 트랜잭션을 선택한 후 리더는 운송 비용으로 준비금 잔고을 감소시킵니다.

블록은 MonadBFT에서 설명한대로 네트워크를 통해 전파됩니다. 이 블록에 대한 쿼럼 인증서(QC)는 다음 회의 라운드에서 전파됩니다(다음 리더에 의해 전송됨). 투표 노드는 QC를 본 후 서로 투표를 보냅니다. 노드가 지분의 2/3가 예로 투표하면 해당 블록이 최종화됩니다.

한 번 블록이 최종화되면 트랜잭션은 공식적으로 블록체인의 역사에 "발생"한 것입니다. 순서가 결정되었으므로 그 트랜잭션의 진리 값(즉, 성공 또는 실패 여부 및 실행 직후 결과)이 결정됩니다.

로컬 실행

노드가 블록을 최종화하면 해당 블록에서 트랜잭션을 실행하기 시작합니다. 효율성을 위해 트랜잭션은 최적화된 병렬로 실행되지만 결과는 항상 원래 순서대로 커밋되기 때문에 마치 트랜잭션이 직렬로 실행된 것처럼입니다.

결과 조회

사용자는 eth_getTransactionByHash 또는 eth_getTransactionReceipt를 호출하여 트랜잭션의 결과를 쿼리할 수 있습니다. RPC 노드는 지역 노드에서 실행이 완료되자마자 반환합니다.

기타 세부 정보 (Other details)