Node JVM

sigilaris-node-jvmsigilaris-node-common 위에 얹힌 JVM runtime bundle이다. 이 모듈은 현재 runtime lifecycle seam, config/bootstrap assembly, HotStuff integration, Armeria HTTP transport adapter, SwayDB-backed persistence helper를 소유한다.

현재 Baseline

Transaction Pipeline Admission Identity

새 integration은 TxPipelineAdmissionServiceTxPipelineIdentityStrategy[F]를 주입하는 방식을 권장한다. Admission은 request normalization 직후 strategy를 정확히 한 번 호출하고, 그 submission 전체에서 반환된 hash/id 쌍을 재사용한다. 기본 구현은 TxPipelineIdentityStrategy.v1(identityScope)다.

0.2.12 이전의 TxPipelineIdGeneratoridentityScope를 받는 constructor도 유지된다. 이 constructor는 두 인자를 새로운 단일 identity-result 경로로 adapt한다. TxPipelineIdGenerator.deterministicSha256는 이미 계산된 hash를 사용하며, generator scope와 constructor의 identityScope가 같으면 normalized identity payload를 두 번 hash하지 않는다. 과거부터 서로 다른 scope를 넘긴 경우도 byte compatibility를 유지해 pipeline id는 generator scope, canonical hash는 admission scope를 계속 사용한다. 새 integration은 두 scope를 같게 해야 한다. 기존 custom id generator는 source compatibility를 유지하지만 identity를 replay lookup 전에 계산하므로 callback은 idempotent replay를 포함한 모든 normalized submission마다 한 번 실행된다. 따라서 normalization 뒤의 admission 검사에서 거부되는 request에도 callback이 실행된다.

Custom identity strategy의 canonicalPayloadHash는 normalized request와 identity scope에 대해 deterministic하고 collision-resistant해야 한다. Admission은 replay, alias binding, idempotency key 없는 convergence에서 동일 hash를 동일 canonical request의 증거로 취급한다. pipelineId와 hash/id pair도 안정적으로 유지해야 한다. Strategy 변경은 모든 writer/reader에 함께 rollout해야 하며, 그렇지 않으면 node 사이의 replay와 collision 판단이 달라질 수 있다.

섹션 가이드

현재 제한 사항

후속 작업

관련 페이지