Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

시스템 트랜잭션

Stable은 시스템 트랜잭션을 사용하여 SDK 모듈 이벤트를 표준 EVM 로그로 변환합니다. 애플리케이션은 eth_getLogs 또는 기존 WebSocket 구독을 통해 이 로그를 사용할 수 있습니다.

예를 들어, 시스템 트랜잭션은 스테이킹 모듈이 언바운딩 작업을 완료한 후 UnbondingCompleted를 발생시킵니다. 이 이벤트에는 위임자, 검증인, 원래 완료 높이 및 금액이 포함됩니다.

애플리케이션이 받는 것

사용자의 토큰 언바운딩이 완료되는 시점을 추적하는 것을 고려해 보세요. 시스템 트랜잭션이 없으면 dApp은 다음 중 하나를 수행해야 합니다.

  • SDK 이벤트를 감시하고 자체 데이터베이스에 저장하는 별도의 인덱서를 실행합니다. 운영 오버헤드와 새로운 실패 지점이 발생합니다.
  • REST 엔드포인트를 주기적으로 폴링합니다. 5~10초의 지연 시간, 더 높은 RPC 부하, 유지해야 할 두 개의 클라이언트 스택(web3 + REST)이 발생합니다.

시스템 트랜잭션은 dApp에 이미 EVM 로그에 사용하는 동일한 WebSocket 연결을 통해 실시간 이벤트 알림을 제공합니다. 별도의 인덱서도, REST 폴링도 필요 없습니다.

흐름 작동 방식

1. 프로토콜 이벤트: SDK 계층 작업이 완료됩니다 (예: 스테이킹 언바운딩).
2. 감지: x/stable EndBlocker는 이벤트를 감지하고 상태 큐에 넣습니다.
3. 시스템 TX: 다음 블록의 PrepareProposal에서 프로토콜은 StableSystem.notifySystemTxLogs()를 호출하는
   시스템 트랜잭션을 생성합니다.
4. EVM 방출: 프리컴파일은 큐에 있는 항목을 처리하고 표준
   EVM 이벤트를 발생시킵니다. dApp은 eth_getLogs 및 구독을 통해 이를 확인합니다.

시스템 트랜잭션은 사용자에게 의해 생성되는 것이 아니라 블록 제안 중에 검증인에 의해 생성됩니다. 사용자 트랜잭션보다 먼저 블록의 맨 앞에 위치합니다.

StableSystem 프리컴파일

이벤트는 0x0000000000000000000000000000000000009999StableSystem 프리컴파일을 통해 흐릅니다. 오늘날 이는 위임자, 검증인, 원래 완료 높이 및 금액과 함께 UnbondingCompleted를 발생시킵니다.

동일한 프리컴파일은 공개 blockspaceLanes() 뷰 메서드를 노출합니다. 이는 오프체인 트랜잭션 분류를 위한 활성 Enterprise 및 트랜잭션 유형 레인 레지스트리를 반환합니다.

보안 모델

두 가지 속성이 이벤트 스트림의 신뢰성을 유지합니다.

  • 프로토콜 전용 발신자. 시스템 트랜잭션은 0x0000000000000000000000000000000000000001을 발신자로 사용합니다. EVM 상태 전환 규칙은 이 주소를 프로토콜 생성 트랜잭션에 예약합니다. 사용자는 이벤트를 위조하거나 자신의 트랜잭션에서 notifySystemTxLogs()를 호출할 수 없습니다.
  • 결정론적 방출. 모든 정직한 검증인은 동일한 프로토콜 이벤트에 대해 동일한 시스템 트랜잭션을 생성합니다. 표준 합의 외에 추가적인 신뢰 가정은 없습니다.

배치 처리

블록 크기를 제한하기 위해 각 호출은 최대 100개의 큐에 있는 시스템 로그 항목을 처리합니다. 버스트가 제한을 초과하면 나머지 항목은 나중에 블록을 위해 큐에 유지됩니다.

큐에 있는 이벤트는 일반적으로 다음 블록에 나타납니다. 이 전달 지연은 네트워크에 구성된 스테이킹 언바운딩 기간과 별개입니다.

ABI를 찾는 곳

StableSystem 인터페이스, 블록스페이스 반환 유형, 이벤트 시그니처 및 인증 규칙은 시스템 트랜잭션 참조에 있습니다.

다음으로 이동할 곳