26-10-22 STEEMVM이 새로운 체인으로 다시 업데이트 되었습니다.

in AVLE 일상 • 6 hours ago

SteemVM이 v0.0.6부터 완전히 새로운 체인(steemvm-2)으로 다시 시작되었습니다.

@blaze.apps 증인이 기존의 SteemVM을 새로운 체인으로 교체를 했습니다.

https://steemit.com/hive196634/@blaze.apps/steemvm-v0-0-6-know-the-update

한글 번역을 아래와 같습니다. 그간 발생한 여러가지 문제를 개선한 것입니다.
잘 읽어 보시면 어떤 기능이 개선되었는지 잘 알 수 있습니다.
새롭게 검증인으로 참여하는 것도 어렵지 않습니다.
이 내용은 기존 검증인이 새롭게 업데이트 하는 과정도 포함되어 있습니다.
좀 더 많이 검증인으로 참가했으면 좋겠습니다


이 릴리스에서 도입된 모든 내용과, 기존 검증인이 reset.sh로 새 체인으로 이동하는 방법을 정확히 설명합니다.

안녕하세요 여러분 👋

SteemVM은 Steem 메인체인에 브리지된 EVM 앱체인입니다. 브리지된 STEEM이 네이티브 가스 토큰이고, 컨트랙트는 실제 이더리움 가상 머신에서 실행되며, 신뢰할 수 있는 릴레이가 아닌 본딩된 검증인 쿼럼이 모든 입금과 출금을 보호합니다.

v0.0.6은 새로운 체인 steemvm-2 로 출시됩니다. 기존 체인에서 조율된 업그레이드를 하는 대신, v0.0.6의 모든 기능이 깨끗한 제네시스에 내장되고, 파라미터가 수정되며, Steem 시작 지점이 기록됩니다. 기존 검증인은 스크립트 하나(reset.sh)로 이동합니다. 이 스크립트는 키와 주소를 유지하고, 새 체인에 검증인으로 다시 참여시킵니다.

한눈에 보기:

  • 🆕 새 체인: chain-id steemvm-2, EVM chain-id 81630, 두 체인이 절대 섞이지 않도록 기록된 Steem 앵커 포함.
  • 🤖 출금이 스스로 지급됨: 모든 검증인의 오라클이 @svm.bank 게이트웨이용 자동 서명자를 실행.
  • ⚖️ 서명 권한이 지분과 정확히 일치: @svm.bank의 가중치 합계는 항상 10,000, 임계값은 7,500.
  • 🛡️ 강화된 브리지: 10월 보안 검토 결과가 모두 해결됨.
  • 🔒 보안 갱신: 전체 스택이 최신 호환 릴리스로 업데이트됨.
  • 🧰 새 운영 도구: reset.sh로 검증인을 한 명령으로 이동, 신규 검증인은 한 줄로 시작, 수도꼭지가 스테이크를 지원, 공개 HTTPS 엔드포인트가 상태 동기화를 제공.

1. 새 체인: steemvm-2

항목값
Cosmos chain-idsteemvm-2
EVM chain-id81630 (0x13ede)
제네시스 시간2026-10-18 08:43:09 UTC
Instructions/genesis.json sha256feec8833b4124e64d8c820c7f49a62b49fea4be41dff683b3071381d70ec1a56
Steem 앵커블록 110542427, ID 0696be5b24933003cd18654e794c7fce06d63c72
노드 버전v0.0.6 (steemblazer/steemvmd:v0.0.6)
제네시스 검증인@blaze.apps
블록 시간약 6초

공개 엔드포인트 (HTTPS):

용도URL
EVM JSON-RPC (MetaMask)https://evm.steemvmscan.com
EVM WebSocketwss://evm-ws.steemvmscan.com
CometBFT RPC (및 상태 동기화)https://rpc.steemvmscan.com
Cosmos REST APIhttps://api.steemvmscan.com

왜 새 체인인가

깨끗한 제네시스 덕분에 v0.0.6을 블록 1부터 완전하게 출시할 수 있었고, 기존 업그레이드 방식으로는 이어졌을 파라미터 문제를 수정할 수 있었습니다:

  • 거버넌스 예치금이 실제 금액: 제안 제출에 10 STEEM (긴급 제안은 50 STEEM), 기존의 먼지 값 대신.
  • 커뮤니티 세금 없음: community_tax가 0이라 스테이킹 보상이 전액 스테이커에게 감.
  • 첫 블록부터 1 gwei 가스 하한.
  • SBD가 제네시스부터 준비됨: 0x…0901에 ERC-20 토큰으로 등록됨.
  • EVM 스테이킹 프리컴파일(0x…0800) 이 처음부터 켜져 있으며, 검증인 신원 게이트 뒤에 있음.

Steem 앵커

두 체인 모두 Steem의 동일한 게이트웨이 계정 @svm.bank를 감시합니다. 그래서 steemvm-2는 Steem에서 시작 지점, 즉 앵커를 기록합니다: 블록 110542427과 그 블록의 ID.

  • 온체인 규칙: 체인은 앵커 이전 Steem 블록에 대한 입금, 이름 등록, 지급 증명을 모두 거부합니다. steemvm-2가 존재하기 전의 Steem 이력은 여기서 다시 크레딧될 수 없습니다.
  • 모든 오라클에서: 각 오라클은 자신의 Steem 노드가 앵커 블록에 대해 기록된 ID를 반환하는지 확인합니다. 잘못된 네트워크나 잘못된 제네시스에 있는 노드는 무언가를 증명하기 전에 잡힙니다. 오라클은 앵커 이전의 Steem 이력을 절대 스캔하지 않습니다.

EVM chain-id 가드

노드는 app.toml의 EVM chain-id가 81630과 다르면 시작을 거부합니다. 오래된 설정을 가진 노드가 잘못된 네트워크에 서명하는 일을 막습니다.


2. 출금이 스스로 지급됨: svm.bank 서명자

브리지 아웃하면 코인이 SteemVM에서 소각되고 출금 요청이 기록됩니다. 그런 다음 STEEM 또는 SBD가 Steem의 @svm.bank에서 여러분에게 지급됩니다. @svm.bank는 자체 키가 없습니다. 멀티시그이며, 그 권한은 가중치가 부여된 검증인 계정 목록이고, 가중치의 최소 75%를 가진 검증인이 서명해야 트랜잭션이 유효합니다. 단일 검증인도 자금을 이동할 수 없습니다.

이 서명을 모으는 작업은 예전에는 수동이었습니다. v0.0.6에서는 모든 검증인의 오라클이 svm.bank 서명자를 실행합니다:

  1. 제안: 각 출금마다 한 검증인의 서명자가 지정됩니다. 지급 초안을 작성합니다: @svm.bank에서 여러분 계정으로, 정확한 순액, 메모 svm-withdrawal <id>로 이체.
  2. 독립적 확인: 다른 모든 서명자는 제안자의 말이 아니라 SteemVM 자체에 대해 지급을 검증합니다. 출금이 존재하고 아직 미지급이어야 하며, 수취인, 금액(0.001까지), 자산이 모두 일치해야 합니다.
  3. 승인: 동의하는 서명자는 자신의 서명을 자신의 Steem 프로필 메타데이터에 게시합니다. 공개적이고 감사 가능하며, 중앙 서버가 없습니다.
  4. 실행: 승인이 가중치의 75%에 도달하면, 한 서명자가 Steem에 지급을 브로드캐스트합니다.
  5. 확인: 검증인의 오라클이 지급을 보고 증명합니다. 본딩된 투표 파워의 ⅔에서 출금이 REQUESTED에서 PROCESSED로 전환되고, Steem 트랜잭션 ID가 온체인에 기록됩니다.

두 번 지급될 수 없도록 설계됨:

  • 출금당 한 번의 승인: 서명자는 출금당 최대 하나의 제안만 승인하며, 가장 이른 올바른 것만 승인합니다. 각 승인을 게시하기 전에 로컬 기록을 작성하므로, 지연된 Steem 노드가 이중 서명을 유도할 수 없습니다.
  • 환불과 경쟁하지 않음: SteemVM은 3.5일 내에 확인되지 않은 출금을 환불합니다. 서명자는 그 기한 약 하루 전에는 지급하지 않습니다.
  • 틀린 것은 거부, 불확실한 것은 대기: 절대 올바를 수 없는 지급(잘못된 금액, 수취인, 메모)은 거부됩니다. 나중에 해결될 수 있는 것은 다음 패스에서 다시 확인됩니다.
  • 재무 및 복구 작업은 절대 자동이 아님: @svm.bank의 스테이킹/파워다운, 복구 계정 변경은 항상 사람을 기다립니다.

활성 키만 사용. 서명자는 검증인의 Steem 활성 키만 사용하며 그 외에는 아무것도 사용하지 않습니다. @svm.bank의 owner, active, posting 권한은 모두 검증인의 활성 키를 통해 해석됩니다. 다음과 같은 경우 시작을 거부합니다:

  • owner 키, posting 키, 마스터 비밀번호가 설정된 경우;
  • 키가 검증인의 검증된 Steem 신원과 일치하지 않는 경우;
  • 키가 계정의 owner 키 중 하나인 경우.

Go, Python, JS: 서명자는 세 가지 오라클 클라이언트 모두에 포함되며, 바이트 단위로 동일한 제안과 투표를 생성하므로 검증인이 자유롭게 섞어 쓸 수 있습니다.


3. 지분과 정확히 일치하는 서명 권한

서명자는 또한 @svm.bank의 권한을 steemvm-2의 각 검증인 본딩 지분 비율과 동일하게 유지합니다:

  • 정확한 정수 연산: 가중치 합계는 항상 정확히 10,000, 임계값은 정확히 7,500. 기존 세트는 반올림으로 10,003 / 7,503으로 표류했습니다.
  • 모두가 같은 답을 계산: 가중치는 고정된 SteemVM 블록(1,000블록마다, 약 100분)에서 가져옵니다. 각 서명자는 같은 블록에서 다시 계산하고 동일한 결과만 승인합니다.
  • 불필요한 변경 없음: 검증인이 가입/탈퇴하거나 누군가의 가중치가 0.5% 포인트 이상 움직일 때만 새 세트가 제안됩니다. Steem의 시간당 owner 변경 1회 제한이 존중됩니다.

⚠️ 첫 동기화에는 기존 세트의 승인이 필요합니다. 그때까지 @svm.bank는 여전히 기존 체인의 검증인 세트(임계값 7,503)가 제어합니다. 이를 steemvm-2 세트로 옮기려면 그 기존 세트 구성원의 승인이 필요합니다. 그러니 검증인을 곧 이동시키고 서명자를 계속 실행해 주세요. 기존 세트에서 재참여하는 검증인마다 그 전환이 가까워집니다.


4. 강화된 브리지 (10월 보안 검토)

  • 증명은 관찰된 사실별로 집계됨: 입금, 이름 등록, 지급이 예전에는 첫 증명 검증인이 보고한 것을 그대로 채택했습니다. 이제 각기 다른 버전이 별도로 집계되고, 본딩된 투표 파워의 ⅔가 지지하는 것만 승리합니다. 허위 세부사항을 보고하는 소수가 다수를 막거나 방향을 바꿀 수 없습니다. 이로써 출금 이중 지급 경로와 입금/이름 그리핑 경로가 닫힙니다.
  • 크기 제한: 메모는 Steem의 2,048바이트로 제한되고 타임스탬프가 검증됩니다. 브리지 아웃은 터무니없는 금액을 거부하고 EVM 프리컴파일을 포함한 모든 경로에서 최소값을 강제합니다.
  • 블록 끝 작업의 한계: 만료되는 오래된 입금, 출금, 등록을 블록당 제한된 수만 처리하므로, 홍수가 블록 생성을 느리게 할 수 없습니다.
  • 공정한 의무 크레딧: ⅔ 임계값이 넘은 직후에 도착한 올바른 증명도 이제 완료로 간주되며, 놓친 의무로 계산되지 않습니다.

모든 발견 사항에는 자체 회귀 테스트가 있습니다.


5. 전체 스택의 보안 갱신

  • cosmos/evm v0.7.3, 업스트림 보안 릴리스: 프리컴파일 호출 전반에 걸쳐 EVM 상태가 원자적으로 유지되고, 잔액 오버플로 경로가 닫힘.
  • ibc-go v11.2.0 및 cosmos go-ethereum 포크 v1.17.2-cosmos-1, EIP-712 수정 포함.
  • gRPC v1.84.0, OpenTelemetry 및 기타 의존성 최신화.
  • Go 1.26.9, 12개의 표준 라이브러리 보안 수정 포함.
  • Cosmos SDK v0.54.4 및 CometBFT v0.39.4, 현재 cosmos/evm이 지원하는 최신 버전.

6. 운영 도구

  • reset.sh 는 기존 검증인을 한 명령으로 steemvm-2로 이동시키며, 키와 주소를 유지합니다 (7절).
  • 신규 검증인은 한 줄로 시작. install.sh가 Docker를 설치하고, Steem 사용자명과 활성 키만 물어본 뒤 전체 설정을 실행합니다. 서버가 필요한 분을 위해 README에 DigitalOcean 추천 링크가 있으며, 신규 계정은 체험 크레딧을 받습니다.
  • 수도꼭지가 스테이크를 지원. 신규 및 복귀 검증인은 5,000 STEEM을 자동으로 받고, 4,000을 스테이크하며 나머지는 수수료용으로 남깁니다.
  • 이름 등록이 자동. 스크립트가 활성 키로 서명하여 0.001 STEEM 등록을 직접 보냅니다.
  • https://rpc.steemvmscan.com을 통한 상태 동기화. 노드가 체인을 재생하는 대신 약 1분 만에 스냅샷(1,000블록마다 제공)에서 부트스트랩합니다.
  • 라이브 피어 발견. update_peers.sh가 네트워크의 라이브 노드 목록에서 피어 목록을 만듭니다. p2p 포트가 실제로 응답하는 피어만 유지하고, 자신의 노드는 제외합니다.
  • 오라클 수정:
    • Go 오라클이 노드에서 간헐적인 EOF / 연결 재설정 오류를 더 이상 겪지 않음;
    • 상태 동기화된 노드의 EVM JSON-RPC 인덱서가 올바르게 시작됨;
    • 비밀번호로 보호된 키링이 전반적으로 지원됨.
  • 고정된 이미지. 노드와 세 오라클 모두 동일한 릴리스 태그 v0.0.6을 실행합니다.

7. 기존 검증인: reset.sh로 steemvm-2로 이동

시작하기 전에

  • 노드가 이 저장소의 Docker 설정(steemvm-node 컨테이너)으로 실행 중이어야 합니다.
  • Steem ACTIVE 개인키를 준비하세요 (5로 시작). oracle/.env에 이미 있으면 묻지 않습니다. owner 키, posting 키, 마스터 비밀번호는 절대 사용하지 마세요.
  • 키링에 암호가 있으면, steemvmd keys list가 묻는 그 암호도 준비하세요.
  • root(sudo)로 실행하세요. 노드 홈은 root 소유입니다.
  • ~/.steemvm/config/priv_validator_key.json, ~/.steemvm/config/node_key.json, 키링 또는 니모닉, oracle/.env를 백업하세요. reset.sh는 이들을 삭제하지 않지만, 백업은 항상 현명합니다.

명령

SteemVM 폴더에서:

git fetch origin
git checkout release/v0.0.6
git pull --ff-only
sudo ./reset.sh
  • git checkout이 로컬 변경에 대해 불평하면, 먼저 git stash를 실행하세요. oracle/.env와 Instructions/*.toml은 git이 추적하지 않으므로, stash해도 키나 설정은 건드리지 않습니다.
  • git pull --ff-only가 중요합니다. 오래된 로컬 release/v0.0.6이 있으면 git checkout만으로는 옛 복사본에 머뭅니다.
  • 이번 이동에는 update.sh가 아니라 reset.sh를 사용하세요. 현재 update.sh 복사본은 옛 스크립트이며 reset.sh로 넘겨주지 않습니다. 이 릴리스부터 update.sh는 스스로 넘겨줍니다.

묻는 것

  • 키링 암호(비밀번호로 보호된 경우에만). 즉시 확인되며, 틀리면 아무것도 변경하지 않고 중단됩니다.
  • Steem 활성 키(oracle/.env에 없을 경우에만). 붙여넣을 때 표시되어 확인할 수 있고, 무엇이든 보내기 전에 계정에 대해 검증됩니다. oracle/.env에 이미 있으면 묻지 않고 검증합니다.
  • YES, 변경할 모든 사항(조정할 각 .env 줄 포함)의 요약 후.

하는 일

무엇이든 건드리기 전에 먼저 확인:

  • 체크아웃의 제네시스가 네트워크가 실행하는 것과 같아야 합니다. 아니면 git pull 후 재시도.
  • 노드 이미지가 v0.0.6이어야 합니다.
  • 상태 동기화 스냅샷이 사용 가능해야 합니다.
  • oracle/.env의 모든 URL이 작동해야 합니다 (6단계 참조).

그런 다음 노드를 이동:

  • 모든 키 유지: 합의 키, 노드 키, 키링, 주소. 검증인은 같은 steem1… 주소를 유지합니다.
  • oracle/.env 조정, 교체 없이:
    • 자신의 노드가 아닌 곳을 가리키는 Node RPC/REST는 주석 처리되어 오라클이 자신의 노드를 사용;
    • Steem RPC는 앵커 블록의 기록된 ID를 반환해야 함. 죽었거나 잘못된 것은 작동하는 공개 노드로 교체되고 최소 두 개 유지;
    • 도달 불가능한 Price-API URL은 주석 처리되어 기본값 적용;
    • 옛 체인 가스 가격은 주석 처리됨(1 gwei 적용). 가격 투표는 수수료 면제가 아니며, 옛 값은 잔액을 고갈시킴;
    • Owner 키, posting 키, 비밀번호는 제거됨;
    • API 키 없는 cmc는 키가 필요 없는 CoinGecko로 전환;
    • 누락된 설정 추가(활성 키와 svm.bank 서명자 스위치 포함);
    • 오라클 키, API 키, 자신의 유효한 설정은 유지.
  • 저장소 루트 .env의 옛 이미지 핀은 주석 처리되어 v0.0.6이 실행됨.
  • 옛 체인 데이터를 지우고 steemvm-2 설치:
    • 제네시스, chain-id, EVM chain-id;
    • 옛 체인의 주소록이 없는 새 피어;
    • v0.0.6 바이너리를 가리키는 cosmovisor.
  • 팁까지 상태 동기화 후, EVM 인덱서가 올바르게 시작되도록 노드를 한 번 재시작.
  • 검증인으로 재참여:
    • Steem 계정에서 @svm.bank로 0.001 STEEM을 메모 svm-register <your address>와 함께 보내고, 검증인의 증명을 기다림;
    • 온체인에서 이름 확인;
    • 수도꼭지에서 청구하고 스테이크를 기다림;
    • Steem 공개키(신원 게이트)로 create-validator 실행, 기본 4,000 STEEM 스테이킹, 수수료용으로 최소 1 STEEM 유동성 유지.
  • v0.0.6 이미지로 오라클 재시작, svm.bank 서명자 켜짐.

보통 10~15분 걸리며, 대부분은 등록 증명을 기다리는 시간입니다.

잘 됐는지 확인

docker exec steemvm-node /root/go/bin/steemvmd status | jq '.sync_info'
docker exec steemvm-node /root/go/bin/steemvmd query staking validators --home /root/.steemvm
docker compose logs -f oracle-go          # 또는 oracle-python / oracle-js

오라클 로그에서 svm.bank signer ready 와 가격 사전 투표 및 투표를 찾으세요.

중간에 멈추면

  • 등록 또는 자금 조달 타임아웃: 다시 리셋하지 않고 마무리하려면 sudo ./reset.sh --rejoin-only 실행.
  • "genesis differs": 체크아웃이 오래됨. git pull --ff-only 실행 후 재시도.
  • "can't tell which key is your validator's": 키 이름 지정, 예: sudo VALIDATOR_KEY=<name> ./reset.sh. sudo 사용 시 변수를 sudo 뒤에 둡니다.
  • Steem 사용자명이 모니커가 아님: sudo STEEM_USERNAME=<name> ./reset.sh.
  • "oracle/.env has no ORACLE_PRIVATE_KEY" (비밀번호 보호 키링만): 스크립트가 출력하는 명령으로 내보내고, oracle/.env에 추가 후 재시도.
  • 활성 키 거부됨: 검증인 이름이 붙은 계정의 활성 개인키여야 합니다.

유용한 옵션

옵션하는 일
--rejoin-only리셋 없이 재참여(등록, 스테이크, create-validator, 오라클) 완료
--no-rejoin일반 풀 노드(예: RPC 노드)로 steemvm-2로 이동
STAKE_AMOUNT=<n>asteem다른 금액 스테이킹 (기본 4,000 STEEM)
--seed-rpc <url>다른 노드의 RPC에서 상태 동기화

피어를 최신으로 유지

검증인이 참여함에 따라 언제든 라이브 네트워크에서 피어 목록을 갱신하세요. 자신의 노드는 제외됩니다:

git pull --ff-only && sudo ./update_peers.sh --restart

8. 신규 검증인

새 Ubuntu 서버에서 한 줄이면 모든 것을 합니다:

curl -fsSL https://raw.githubusercontent.com/blazeapps007/SteemVirtualMachine-EVM/release/v0.0.6/install.sh | sudo bash

Steem 사용자명과 Steem 활성 키만 묻습니다. 그런 다음 Docker 설치, 노드 동기화, 이름 등록, 수도꼭지 청구, 검증인 생성, 오라클 시작을 합니다. 단계별 버전은 저장소 클론에서 ./new-validator.sh를 실행하세요.


9. 사용자와 개발자에게 달라지는 점

  • MetaMask에 새 네트워크 추가:
    • 네트워크 이름: SteemVM
    • RPC URL: https://evm.steemvmscan.com
    • chain ID: 81630
    • 통화 기호: STEEM
  • 옛 체인(steemvm, EVM chain-id 8163)의 잔액은 이전되지 않습니다. steemvm-2는 새로 시작하며, 앵커 블록 이후의 Steem 입금만 크레딧됩니다.
  • 브리지는 이전과 동일하게 작동: STEEM 또는 SBD를 @svm.bank로 주소를 메모에 넣어 보냅니다. 검증인의 서명자가 실행되면 브리지 아웃이 자동으로 지급됩니다.
  • 개발자에게: 프리컴파일 주소와 메시지 형식은 변경되지 않습니다: 0x…0900 브리지, 0x…0901 SBD, 0x…0902 가격 오라클. chain-id만 변경되었으니 설정에서 업데이트하세요.

TL;DR

  • 🆕 steemvm-2: EVM chain-id 81630, 기록된 Steem 앵커, 수정된 파라미터를 가진 새 체인.
  • 🤖 자동 출금: 모든 검증인의 오라클에 있는 svm.bank 서명자를 통해.
  • 🛑 이중 지급 없음: 출금당 한 번의 승인, 쓰기 전 승인 기록, 환불 기한 근처 지급 없음.
  • 🔑 활성 키만: 서명자는 owner 키, posting 키, 마스터 비밀번호를 거부.
  • ⚖️ 정확한 지분 가중 서명 권한: 항상 총 10,000, 임계값 7,500.
  • 🛡️ 강화된 브리지 및 🔒 전체 스택 보안 갱신.
  • 🧰 이동은 한 명령: git fetch origin && git checkout release/v0.0.6 && git pull --ff-only && sudo ./reset.sh.
Sort:  

High-Yield Curation by @steem-seven

Your content has been supported!

| Vote Witness @seven.wit | Meet Speak on Steem |
|---|---|---|


We are the hope!

S7VEN Banner