-- ============================================
-- 블록체인 원장 테이블 (폐쇄형 SQL Ledger)
-- ============================================

SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS `blockchain_ledger` (
  `bl_idx`            BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '블록 인덱스(Height)',
  `bl_created_at`     DATETIME NOT NULL COMMENT '블록 생성 시각',
  `bl_tx_type`        VARCHAR(30) NOT NULL DEFAULT '' COMMENT '트랜잭션 타입(ORDER_CREATE/ORDER_UPDATE/...)',
  `bl_entity_uuid`    CHAR(36) NULL COMMENT '업무 엔티티 UUID',
  `bl_entity_version` INT UNSIGNED NOT NULL DEFAULT 1 COMMENT '엔티티 버전',
  `bl_payload`        JSON NOT NULL COMMENT '블록 payload(JSON)',
  `bl_previous_hash`  CHAR(64) NOT NULL DEFAULT '' COMMENT '이전 블록 해시',
  `bl_hash`           CHAR(64) NOT NULL DEFAULT '' COMMENT '현재 블록 해시',
  `bl_nonce`          INT NOT NULL DEFAULT 0 COMMENT '논스(폐쇄형 체인에서 기본 0)',
  `bl_actor_idx`      INT UNSIGNED NULL COMMENT '수행자 mb_idx',
  `bl_lg_idx`         INT UNSIGNED NULL COMMENT '지자체 lg_idx',
  PRIMARY KEY (`bl_idx`),
  KEY `idx_bl_entity_uuid` (`bl_entity_uuid`),
  KEY `idx_bl_tx_type` (`bl_tx_type`),
  KEY `idx_bl_lg_idx` (`bl_lg_idx`),
  UNIQUE KEY `uk_bl_hash` (`bl_hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='블록체인 원장';
