# 개요

> NeuroChain은 AI 네이티브 보안 Layer 1입니다 — Malachite BFT, ML-DSA-65 양자 내성 서명, WASM 컨트랙트, 그리고 프로토콜에 내장된 AI 감사와 이상 징후 점수화를 갖추고 있습니다.

Source: https://docs.nro.world/ko/learn/overview

NeuroChain은 **AI 네이티브 보안 Layer 1**입니다. AI는 몇 군데의 명확히 정의된 지점 — 배포 전 컨트랙트 감사와 mempool에서의 트랜잭션 이상 징후 점수화 — 에서 프로토콜에 참여하며, 블록의 최종 확정 여부를 결정하는 지점에는 절대 관여하지 않습니다.

## 무엇이 다른가

| 기능 | 하는 일 | 참고 문서 |
|------|---------|-----------|
| **VMGuardian** | 모든 WASM 컨트랙트를 배포 전에 감사하고(규칙 엔진 + 내장 신경망), 배포된 컨트랙트도 계속 재감사합니다. | [VMGuardian](/ko/ai/vmguardian) |
| **Sentinel** | 들어오는 모든 트랜잭션의 이상 징후를 점수화합니다. 선택적인 정책 계층은 거부하는 대신 트랜잭션을 보류하거나 확인을 요청할 수 있습니다. | [Sentinel](/ko/ai/sentinel) |
| **NeuroWASM** | CosmWasm / NEAR 수준의 컨트랙트 API입니다. 컨트랙트가 AI 결과(점수, 인증서, 신뢰 목록)를 읽을 수 있게 하는 호스트 함수는 계획되어 있습니다. | [NeuroWASM](/ko/neurowasm/) |
| **네이티브 계정 추상화** | AI 에이전트를 위한 스폰서 가스와 세션 키 — 위에 덧붙인 것이 아니라 계정 모델에 내장되어 있습니다. | [계정 추상화](/ko/ai/account-abstraction) |
| **양자 내성 서명** | 모든 계정과 모든 검증자가 ML-DSA-65(Dilithium3, FIPS 204)로 서명합니다. | [주소](./addresses) |
| **아이덴티티** | 주소는 그대로 유지되면서, 그 주소를 제어하는 키는 교체할 수 있습니다. | [아이덴티티](/ko/ai/identity) |
| **양자 내성 헤더를 갖춘 IBC v2** | 다른 체인(Cosmos 우선)으로의 전송과 보안 증명입니다. 상대 체인은 ML-DSA-65 서명으로 NeuroChain을 검증합니다. 실험적 | [IBC v2와 샤딩](/ko/operate/ibc) |

## 아키텍처

![NeuroChain 아키텍처: 지갑과 AI 에이전트가 게이트웨이를 호출하고, 노드는 서명을 검증하고 Sentinel로 트랜잭션을 점수화한 뒤 mempool에 넣고, 검증자들 사이에서 Malachite BFT로 순서를 정하고, VMGuardian 게이트와 WASM VM으로 실행하며, 상태를 RocksDB에 저장합니다](/diagrams/ko/architecture.svg)

| 계층 | 기술 |
|------|------|
| 노드 | Rust, Tokio, RocksDB |
| 합의 | Malachite — Rust 라이브러리로 구현된 Tendermint BFT ([합의](./consensus)) |
| 컨트랙트 | `wasmi` 인터프리터 위의 WASM, fuel 기반 가스 측정, 호스트 모듈 `env` |
| 서명 | 계정과 검증자 모두 ML-DSA-65 |
| AI 모델 | 노드에 컴파일되어 들어간 작은 신경망 (`no_std`, 외부 런타임 없음) |
| 게이트웨이 | Node.js + Fastify — 노드 앞단의 REST와 WebSocket |
| 웹 앱 | Quasar / Vue 3 (`neurochain-web`) |

## 트랜잭션이 이동하는 방식

![트랜잭션 수명 주기: 지갑이 서명하고, 게이트웨이가 전달하고, 노드가 검증하고 점수화하며, mempool이 대기열에 넣고, Malachite가 스테이크 2/3 쿼럼에 도달하면, 모든 검증자가 이를 적용합니다](/diagrams/ko/tx-lifecycle.svg)

1. 지갑이 ML-DSA-65 키로 `nc-tx-v2|from|to|value|nonce`에 서명합니다 — 브라우저에서 WASM 모듈을 통해 수행됩니다.
2. 게이트웨이는 트랜잭션을 변경 없이 노드로 전달합니다.
3. 노드는 서명, 주소가 해당 키에 속하는지, nonce와 잔액을 확인한 다음 Sentinel로 트랜잭션을 점수화합니다.
4. 트랜잭션은 수수료 순으로 정렬되어 mempool에서 대기합니다(상태 `pending`).
5. 다음 제안자(proposer)가 이를 블록에 넣고 검증자들이 투표합니다. 스테이크의 2/3를 초과하는 쪽이 precommit하면 블록은 최종 확정됩니다.
6. 모든 검증자가 블록을 똑같이 적용하여 같은 상태 루트에 도달합니다. 상태가 `confirmed`가 됩니다.

## 단위

체인상의 모든 금액은 **uNRO** 단위입니다: `1 NRO = 1 000 000 uNRO`. API 응답에는 이미 포맷된 `*_human` 필드(예: `balance_human`)가 포함되어 있으니, 클라이언트에서 변환하지 말고 이 값을 표시하세요.

## 로컬 포트

퍼블릭 네트워크는 아직 운영되지 않으므로, 예제는 로컬 스택을 사용합니다.

| 서비스 | 기본 포트 | 재정의 |
|--------|-----------|--------|
| 노드 RPC | 9933 | `NEUROCHAIN_RPC_PORT` |
| 노드 P2P | 30333 | `NEUROCHAIN_P2P_PORT` |
| 게이트웨이 (REST + WebSocket) | 3000 | 게이트웨이 환경 변수 |
| 웹 앱 | 8080 | `WEB_PORT` |
| 문서 (이 사이트) | 5173 | `DOCS_PORT` |

## 결코 바뀌지 않는 프로토콜 규칙

- **AI는 절대 투표권을 바꾸지 않습니다.** 커밋 쿼럼은 스테이크의 2/3 초과입니다. AI는 검증자를 제외(jail 또는 slash로 투표권 0)할 수만 있고, 가중치를 더할 수는 없습니다. [합의](./consensus)를 참고하세요.
- **컨트랙트는 호스트를 통해 호출자를 식별합니다.** 호출 페이로드의 `caller` 필드가 아니라 `get_caller()`를 사용하세요.
- **금액은 uNRO 단위의 정수입니다.** 잔액, 수수료, 스테이크에 부동소수점은 쓰지 않습니다.
