네트워크 업그레이드
아래 각 항목은 StableChain 릴리스에서 변경된 내용, 중요성 및 수행해야 할 작업을 설명합니다. 릴리스는 최신순으로 나열됩니다. 바이너리, 커밋 해시 및 업그레이드 블록 높이에 대한 자세한 내용은 메인넷 버전 기록 및 테스트넷 버전 기록을 참조하세요.
이 노트 읽는 방법
몇 가지 용어가 나옵니다. 의미는 다음과 같습니다.
- 상태를 깨는 업그레이드: 모든 노드는 거버넌스 제안을 통해 조정된 동일한 블록 높이에서 새 바이너리를 실행해야 합니다. 이러한 릴리스는 버전 기록 테이블에 업그레이드 높이가 있습니다. 검증자를 실행하는 경우 일정에 따라 업그레이드해야 합니다. 그렇지 않으면 노드가 체인을 따르지 않습니다.
- 하위 호환 가능한 업그레이드: 새 바이너리는 이전 바이너리와 함께 작동하므로 조정된 전환이 없습니다. 이러한 릴리스에는 업그레이드 높이가 없습니다. 바이너리를 교체하여 원하는 시기에 업그레이드할 수 있습니다.
- 가스 면제: 스폰서가 트랜잭션 수수료를 지불할 수 있도록 하는 StableChain 기능이므로 발신자는 가스 토큰을 보유하지 않고도 트랜잭션을 수행할 수 있습니다.
- 시스템 트랜잭션: 일반 사용자가 아닌 프로토콜 자체에서 발행하는 특수 트랜잭션으로, 내부 작업을 실행하는 데 사용됩니다.
- 프리컴파일: 고정 주소에 있는 내장 계약으로, EVM 바이트코드 대신 네이티브 코드를 실행하며, 빨라야 하는 일반적인 작업에 사용됩니다.
노드가 실행 중인 버전을 확인하려면 다음을 수행합니다.
stabled versionv1.8.0v1.8.0 현재
2026년 8월 26일 블록 36,976,000에서 활성화된 상태 머신을 깨는 메인넷 업그레이드입니다. 이 업그레이드는 더 빠른 블록 처리 및 우선 순위 트래픽에 대한 예측 가능한 포함이라는 두 가지 주제 아래 네 가지 변경 사항을 그룹화합니다.
| 이니셔티브 | 블록 단계 | 변경 사항 | 의도된 결과 |
|---|---|---|---|
| 낙관적 병렬 실행(OPE) | 실행 | Block-STM이 순차적 트랜잭션 실행을 대체합니다. | 약 10,000 TPS를 목표로 하는 멀티코어 실행. |
| 선택적 RecheckTx | 커밋 후 멤풀 재확인 | 노드는 커밋된 블록에 의해 변경된 계정에서만 트랜잭션을 재확인합니다. | 측정된 최상의 경우 지속적인 처리량이 최대 두 배 증가하고 노드 CPU 사용량은 31~34% 감소합니다. |
| MemIAVL | 상태 지속성 | 메모리 매핑된 스냅샷과 WAL(쓰기 전 로그)이 LevelDB 기반 저장소를 대체합니다. | 쓰기 증폭이 10~50배에서 약 1회 쓰기로 감소합니다. |
| 2D 논스 및 엔터프라이즈 블록스페이스 | 제출 및 블록 제안 | 독립적인 논스 채널이 예약된 레인별 가스 용량과 결합됩니다. | 적격 엔터프라이즈 트랜잭션에 대한 결정론적 다음 블록 포함. |
이러한 변경 사항은 단일 블록 라이프사이클의 여러 단계를 다룹니다.
- 제출: 2D 논스를 사용하면 계정이 독립적인 논스 채널을 통해 트랜잭션을 제출할 수 있습니다. 한 채널에서 중단된 트랜잭션은 다른 채널을 차단하지 않습니다.
- 제안: 보장된 블록스페이스는 블록을 엔터프라이즈, 트랜잭션 유형 및 일반 레인으로 나눕니다. 각 레인에는 제안 및 유효성 검사 중에 적용되는 예약된 가스 예산이 있습니다.
- 실행: OPE는 Block-STM을 통해 트랜잭션을 동시에 실행한 다음 고정된 블록 내 순서에 대해 유효성을 검사합니다. 모든 노드는 여전히 동일한 상태를 생성합니다.
- 커밋: MemIAVL은 하나의 메모리 매핑된 스냅샷에 대해 변경 사항을 WAL에 추가합니다. 이렇게 하면 LevelDB 압축 및 반복적인 디스크 쓰기가 방지됩니다.
- 커밋 후 재확인: 선택적 RecheckTx는 블록의 상태 변경 델타를 사용하여 전체 멤풀을 스캔하는 대신 영향을 받는 발신자만 재확인합니다.
처리량 변경 사항
OPE는 트랜잭션 실행을 하나의 CPU 코어에서 여러 코어로 이동합니다. 트랜잭션은 낙관적으로 실행되고, 충돌은 재실행을 트리거하며, 고정된 트랜잭션 순서는 결정론적 결과를 유지합니다.
선택적 RecheckTx는 각 커밋 후에 작업을 제거합니다. 고유한 발신자의 보류 중인 트랜잭션 10,000개에 대한 최상의 테스트에서 처리량은 700 TPS에서 1,400 TPS로 증가했습니다. 더 일반적인 워크로드의 예상 개선은 1.5-1.7배입니다. CometBFT는 애플리케이션이 선택적 재확인을 지원하는지 감지하고 지원하지 않는 경우 전체 재확인으로 폴백합니다.
MemIAVL은 상태 저장소 경로에서 LevelDB를 제거합니다. 쓰기는 원시 변경 세트를 포함하는 순차적 WAL 항목이 됩니다. 읽기는 운영 체제의 페이지 캐시로의 포인터 조회입니다. RocksDB가 지원하는 별도의 VersionDB는 가장 오래된 보존된 스냅샷보다 오래된 기록 상태를 제공합니다.
예측 가능한 포함
2D 논스는 각 계정에 여러 독립적인 논스 채널을 제공합니다. NonceKey가 채널을 선택합니다. NonceKey = 0은 일반적인 EVM 호환 시퀀스를 유지하는 반면, 프로토콜은 uint64 범위의 상위 절반을 자체 용도로 예약합니다. MaxUint64는 TimeoutTimestamp를 사용하여 리플레이 방지를 위한 정렬되지 않은 트랜잭션을 표시합니다.
이 릴리스는 기존 EVM 트랜잭션 형식과 함께 트랜잭션 유형 0x3F인 CustomTx를 추가합니다. 비트 63이 설정된 NonceKey는 MaxUint64를 제외한 엔터프라이즈 레인 트랜잭션을 식별합니다.
보장된 블록스페이스는 각 블록을 별도의 가스 할당량을 가진 엔터프라이즈, 트랜잭션 유형 및 일반 레인으로 나눕니다. 거버넌스는 하나의 MsgUpdateParams 제안을 통해 레인 매개변수를 제어하며, 승인된 업데이트는 다음 블록에 적용됩니다.
메인넷 활성화는 max_blockspace_gas_weight = 20과 가중치 50을 가진 하나의 엔터프라이즈 레인을 시드했습니다. 트랜잭션 유형 레인은 시드하지 않았습니다. 적격 엔터프라이즈 트랜잭션은 검증자가 정직하게 행동하고 네트워크가 동기 상태를 유지할 때 결정론적 다음 블록 포함을 받습니다.
StableSystem 프리컴파일은 이제 blockspaceLanes()를 노출합니다. 모든 클라이언트는 eth_call을 통해 활성 레인 레지스트리를 쿼리하고 프로토콜의 분류 규칙을 재현할 수 있습니다.
레인 모델에 대한 자세한 내용은 보장된 블록스페이스를 참조하거나 쿼리 ABI에 대한 StableSystem 참조를 참조하십시오.
활성화 및 노드 구성
v1.8.0 핸들러는 모듈 마이그레이션을 실행하고, NonceKey 프리컴파일을 활성화하고, EIP-2935 기록 저장소를 설치하고, max_gas_per_tx를 40,000,000으로 설정합니다.
이 릴리스는 config.toml과 app.toml 모두에 구성 키를 추가합니다. 운영자는 활성화 전에 v1.8.0 템플릿을 설치한 다음 노드별 설정을 복원해야 했습니다. 문서화된 메인넷 업그레이드에는 상태 내보내기, 가져오기 또는 스냅샷 재설정이 필요하지 않았습니다.
바이너리는 inter-block-cache를 강제로 비활성화합니다. 아카이브 노드 운영자는 기본 app.toml 템플릿을 설치한 후 원래 가지치기 설정을 복원해야 합니다.
안정성 및 보안 변경 사항
- 논스는 최종 상태에 대해 확인되어 교차 블록 트랜잭션 리플레이를 닫습니다.
- 제안 처리는 승인 및 합의 시 레인 예산 및 트랜잭션별 가스 상한을 적용합니다.
- 순차 및 Block-STM 실행은 이제 동일한 누적 EVM 로그 인덱스와
LastResultsHash를 생성합니다. - JSON-RPC는 비용이 많이 드는 요청, WebSocket 구독, 증명 저장소 키 및 추적 출력에 제한을 적용합니다.
- 스트리밍 블록 결과 및
BlockResultsForLogs는 대규모 로그 쿼리 중에 메모리 사용량을 제한합니다. - MemIAVL 및 VersionDB는 버전 격차에서 실패 시 닫히고 중단된 WAL 또는 스냅샷 쓰기에서 안전하게 복구됩니다.
조치해야 할 대상: 활성화 후 조인하거나 업그레이드하는 노드는 v1.8.0 바이너리 및 구성 템플릿을 사용해야 합니다. 노드 업그레이드를 따르고 메인넷 버전 기록에서 현재 바이너리를 확인하십시오.
v1.3.1
하위 호환 패치입니다. 조정된 업그레이드 높이 없이 출시되었으므로 노드 운영자는 언제든지 바이너리를 교체하여 채택할 수 있었습니다.
v1.3.0
가스 면제 기능을 더욱 유연하게 만든 보안 중심의 상태를 깨는 업그레이드입니다. 가스 면제 변경으로 인해 지갑 및 거래소와 같은 새로운 파트너가 매번 상태를 깨는 업그레이드가 필요 없이 나중에 거버넌스 제안을 통해 온보딩될 수 있습니다.
조치해야 할 대상: 모든 노드 운영자는 예정된 높이에서 업그레이드해야 합니다. 정확한 높이는 메인넷 버전 기록을 참조하십시오.
보안 개선 사항:- 비공개 JSON-RPC 네임스페이스는 더 이상 등록되지 않으며,
AllowInsecureUnlock=true일 때만 서명 API가 활성화됩니다. - 가스 면제 입력이 강화되었습니다: 주소는 EIP-55 표준 형식을 사용해야 하며, 쿼리 입력은 길이 및 형식 제한이 있으며, 래퍼 유형, 체인 ID 및 EIP-7702 내부 트랜잭션 유효성 검사가 강화되었습니다.
- 시스템 트랜잭션은 이제
from주소뿐만 아니라to주소 및 메서드 선택자에 대해서도 유효성이 검사됩니다. 이는 수수료 없는 실행을 트리거할 수 있는 경로를 차단합니다. - 프라하 프리컴파일 주소 범위가 차단된 주소 목록에 추가되었으며, 알 수 없는 프리컴파일 메서드는 이제 쿼리 가스가 필요합니다.
- 실패한 상태 저장 프리컴파일 호출에 대한 가스 회계가 수정되었습니다.
- ERC-20 내부 호출 실패 후 환불 비활성화 상태 누출이 해결되었습니다.
- 프리컴파일 웜셋 추적 및
COINBASEopcode 동작이 수정되었습니다. - EIP-7702 권한 부여 롤백이 사양에 맞게 조정되었습니다.
from=0x0으로 보고된 시스템 트랜잭션 응답,feeHistory오류 로깅 및 기록 전체 트랜잭션 응답에서 체인 ID 일관성이 수정되었습니다.
v1.2.2
StableChain을 공식 업스트림 합의 릴리스와 일치시키고 두 가지 쿼리 동작을 정리하는 하위 호환 선택적 업그레이드입니다.
조치해야 할 대상: 아무도 필요하지 않습니다. 이 업그레이드는 거버넌스 제안이 필요하지 않습니다. 노드 운영자는 편리할 때마다 바이너리를 교체하여 채택할 수 있습니다.
변경 사항:- CometBFT가 공식
v0.38.21로 업그레이드되었습니다. 이는 v1.1.4에서 이전에 배포된 보안 패치를 따르며, 외부 파트너가 네트워크가 실행하는 정확한 합의 버전을 확인할 수 있도록 합니다. - 가스 면제 트랜잭션 쿼리에서 중복 로그 인덱스가 제거되었습니다.
- 시스템 트랜잭션 쿼리에 대한 RPC 응답에 안전 장치가 추가되었습니다.
v1.2.1
악용될 경우 체인을 중단시킬 수 있는 두 가지 문제를 해결한 하위 호환 핫픽스입니다.
조치해야 할 대상: 검증자는 업그레이드해야 합니다. RPC 제공자를 포함한 다른 노드 운영자의 경우 업그레이드는 선택 사항입니다. 거버넌스 제안이 필요하지 않습니다.
수정 사항:- 사용자가
MsgEthereumTx.From == 0x1을 설정하여 인증을 우회하고 시스템 전용 프리컴파일을 호출한 다음 스푸핑된 트랜잭션을 사용하여ProcessProposal이 블록을 반복적으로 거부하고 합의를 중단시키도록 강제할 수 있는 시스템 트랜잭션 스푸핑 경로를 닫았습니다. ExtensionOptionsWaiver트랜잭션이CheckTx를 통과할 수 있지만ProcessProposal이 전체 블록을 거부하도록 만들 수 있는 멤풀 포이즌 체인 중단이 수정되었습니다.
이전 릴리스
자세한 릴리스 노트는 v1.2.1부터 시작합니다. v1.2.0 및 이전 릴리스(제네시스 릴리스 포함)에 대한 바이너리, 커밋 해시 및 업그레이드 높이는 버전 기록 테이블을 참조하십시오.
- 메인넷 버전 기록: 모든 메인넷 버전과 바이너리 및 업그레이드 높이.
- 테스트넷 버전 기록: 릴리스 후보를 포함한 모든 테스트넷 버전.

