본 포스팅은 < 원본 :Technical Release and Changelog for v1.4.5 >의 번역본으로 Casper 캐스퍼 프로젝트에 관심이 있는 커뮤니티 투자자분들의 편의를 위해 작성되었습니다.

오타나 번역 관련 문의가 있으시다면 댓글로 부탁드립니다!

주요 일정:

메인넷으로 가는 현 v1.4.5 릴리스의 주요 마일스톤입니다.

이벤트 날짜
엔지니어링 완료 2022년 3월 1일
테스트넷 2022년 3월 17일
메인넷 2022년 4월 4일

 

주요 변경사항 (코어):

보안 퍼포먼스 & 강건성 개선사항:

  1. 시큐리티 업데이트: Casper 네트워크 v1.4.5에서 우리는 아직 노출되지 않았지만 위험한 취약점을 제 3자 라이브러리에서 수정했으며, 피싱 어택을 방지하기 위해 여러 보안 업데이트를 했습니다. 

네트워크를 멈춰세울 수 있는 제 3자의 라이브러리에서 해결되지 않은 문제점이 발견되었으며, 이는 일반적으로는 접근 불가능하지만 메모리 섹션을 갖지 않은 대체 wasm을 사용해 착취될 수 있었고, 예방적 가드레일을 통해 네이티브 로직으로 막아냈습니다.

이번 릴리스에서 대부분의 변경사항은 계정 홀더들이 다른 주체 (예: dApp)가 준비한 배치에 서명을 하도록 요구되어 인증하는 wasm 로직을 검사하지 않고 이들의 책임이 되도록 할 수 있는 액션을 승인하는 피싱 시나리오로부터의 방지책과 관련되었습니다. 정직한 dApp은 계정 홀더의 신용을 악용하지 않겠지만, 악의적 dApp은 사용자의 인증을 악용해 계정으로부터 리소스를 빼돌리고, 피시한 계정의 리소스에 영구적으로 액세스하거나, 서명된 배포 내에서 계정 홀더가 할 수 있는 모든 것을 오용할 수 있습니다.

의도는 감지할 수 없기 때문에 네트워크는 사용자가 본인 대신 다른 주체가 무언가를 집행할 수 있도록 인증함을 의도했는지 알 수 없습니다. 이전 버전에서 우리의 자세는 계정 홀더가 본인이 인증한 배포에만 서명을 하거나, 실사를 진행하고 완전히 신뢰하는 주체가 준비한 배포에만 서명을 하라는 것이었습니다.

커뮤니티의 피드백을 받고 나서, 네이티브 로직에 특정 행동을 제한 혹은 강화해 스스로를 지키려는 계정 홀더들에 대한 자세를 바꿨습니다.

● 세션 및 컨트랙트 코드 작성자가 WRITE 액세스를 포함해 전송자의 전체 액세스 권한을 유지하며 URef를 통과하는 것은 일반적인 행위입니다. 이는 항상 의도적이며 직접적인 결정이어야 하지만, 다른 사람에게 부여하기 전에만 URef가 READ로 약화될 수 있다고 (일반적으로 그래야 함) 생각하는 오해로 인해 발생하기도 합니다. 피싱 공격의 경우, 악의적 권한 상승으로 의도적으로 수행됩니다.

● 이를 방지하기 위해, 이번 릴리스에서 네이티브 호스트 로직은 앞으로 아규먼트로 체인에서 통과한 경우 계정의 메인 지갑 URef에서 WRITE 액세스 부분을 제거할 것입니다. 이는 향후 계정의 메인 지갑에 대한 모든 신규 권한 상승을 방지합니다. 그러나, 비악의적인 컨트랙트의 도입이 이러한 행위에 의존했기 때문에, 이러한 케이스를 위한 대안 패턴 도입이 필요합니다. 여기

● 이러한 행동은 계정의 메인 지갑 URef에만 적용되며; 모든 기타 URef는 변경되지 않습니다. 세션 및 컨트랙트 코드 작성자는 올바른 의사결정을 해야 하고 의도된 액세스 권한을 갖도록 다른 URef를 통과시켜야 합니다 (즉, WRITE 액세스를 의도한 때에만 URef에 부여해야 합니다). 

● wasm 로직으로 통과한 런타임 아규먼트는 세션 및 컨트랙트 코드 작성자에 의해 정의되고, 바이트의 형태로 불투명하게 통과합니다. 아규먼트의 이름, 데이터 타입, 그리고 용도는 전적으로 수신 로직에 기반하며, 네이티브하게 결정하거나 강화될 수 없습니다. 그러나, 피싱된 계정 홀더가 ‘amount’라는 이름과 수치화된 가치를 가진 아규먼트를 다른 주체가 준비한 배포를 위한 런타임 아규먼트 중 하나로 보게 되며 서명을 요구받을 때, 명시된 수치의 가치 이상이 계정으로부터 전송되는 것을 막기 위해 집행된 것이라고 가정할 수 있습니다. 이는 그런 경우가 아니었으며; 비악의적 코드 작성자/ dApp 개발자가 예상된 컨벤션을 기대할 한편, 네이티브 집행이 없었으며, 악의적 피싱 시나리오에서는 계정 홀더가 서명한 배포에는 피셔가 원하는 무엇이든 할 수 있어 ‘amount’ 아규먼트에 디스플레이된 가치를 무시할 수 있습니다.

● 이러한 악의적인 피싱 시나리오를 방지하기 위해, 이 릴리스에서 네이티브 로직은 ‘amount’라는 수치화된 아규먼트가 특별한 의미가 있는 것으로 인식해, 명시된 금액 이상이 계정의 메인 지갑으로부터 전송되는 것을 막을 것입니다. 이는 모든 배포에 해당됩니다.

● 네이티브 전송은 계속해서 ‘amount’ 필드를 관측하고 예상된 의미를 알아챌 것입니다. wsm 없이, 방지해야 할 피싱 공격은 없었고 기능성은 그대로 유지됩니다.

● 세션 및 컨트랙트 코드 작성자는 온체인에 wasm을 저장해 추후 맥랑상 에일리어스에 의해 호출되거나, 해시 또는 패키지 및 버전에 의해 호출되도록 할 수 있습니다. 이렇게 저장된 로직은 하나 이상의 엔트리 포인트를 가질 수 있습니다. 저장된 로직의 엔트리 포인트에 대한 다이렉트 콜은 특수 배치 변수를 사용해 할 수 있습니다. 멀티 컨텍스트 wasm 집행을 위한 콜 스택을 도입하기 위해 앞선 릴리스에 추가된 기능은, 시스템의 내부적 사용을 위해 의도된 실행 경로를 이용해 (지분 증명 옥션이 민트를 호출하기 위해 필요할 때와 같이) 이와 같은 저장된 로직에 대한 다이렉트 콜이 의도된 실행 경로 대신 택하게 했고, 이는 통과한 런타임 아규먼트에 대한 URef 체크를 우회했습니다.

● 이번 릴리스는 모든 배포 변수가 내부 용도와 같은 실행 플로우를 사용하도록 로직을 수정합니다. 지븐증명 옥션이 민트를 호출하는 것과 같이 특수한 케이스 상황은 해당 커먼 플로우에서 감지되며, 비슷한 개발자 에러에 대한 가능성을 제거합니다.

마지막으로, 과도한 CLValue의 네스팅에 의한 시리얼화 기반의 잠재적 스택 오버플로우가 감지되어, 뎁스 리미트를 통해 방지되었습니다.

  1. trie leaf 사이즈를 최대 8MB로 제한: v1.5.0을 위해 곧 도입될 ‘fast-sync’ 기능은 ‘trie-leaf chunking’ 메커니즘에 굉장히 의존적입니다. 여러 피어로부터 글로벌 상태 데이터베이스를 다운로드하기 위해, fast-syncing 노드가 trie-leaves로 알려진 trie의 개별 요소를 요청할 것입니다. 요청된 leaf 중 8MB를 초과하는 leaf가 있다면, 해당 leaf는 네트워크 메시지 사이즈 제한으로 인해 청크될 것입니다. 이는 개별 trie leaf가 어떻게 영구적으로 식별되는지에 영향을 미칩니다.

trie leaf 사이즈가 8MB 제한을 초과하지 않도록 하는 것이 필수적이며, 그렇지 않으면 v1.5.0의 fast-sync 릴리스가 늦춰지고, 업그레이드 이후 잠재적인 리스크를 발생시킬 수 있습니다.

따라서 우리는 이번 v1.4.5 릴리스에 있어 trie leaf 사이즈를 최대 8MB로 제한했습니다. 밸리데이터 당 검증자의 카운트가 952 이하여야 하기 때문에 이 제한은 밸리데이터에게 영향을 미칩니다. 우리는 ‘seigniorage recipient structure’의 검증자 사이즈 계산과 8MB trie 리미트에 따라 이 숫자를 도출했습니다.

 

기능 및 개선사항:

RPC - 이벤트 스트림 - 클라이언트 & 메트릭스 -

  1. API 업데이트: 최종화된 승인 또는 오리지널 승인이 돌아올 것인지 선택하는 플래그를 추가해 get_deploy API가 향상됩니다. 이 플래그 아규먼트는 ‘finalized_approvals’입니다.

스마트 컨트랙팅 -

N/A

노트: 다가올 v1.4.5 릴리스에 우리는 전반적인 보안 업데이트를 더했으며, 향후 v1.5.0 버전을 지원하기 위한 몇 가지 변경사항을 추가했습니다. 이러한 사항은 기존 및 신규 스마트 컨트랙트에 다음과 같은 후속 영향을 미칠 수 있습니다.

 

  1. 사용자의 CSPR을 전송하고자 하는 모든 스마트 컨트랙트는 요건대로 ‘amount’ 아규먼트를 반드시 포함하도록 로직을 업데이트해야 하며, 타입은 U512 또는 u64입니다.
  2. v1.4.5에서 호스트는 런타임 아규먼트에서 작성 허가를 발견할 때마다 제거해 메인 지갑의 uref를 자동으로 떨어뜨릴 것입니다. 이에 따라 메인 지갑을 스마트 컨트랙트로의 아규먼트로 통과시키는 등의 특정 패턴은 더 이상 작동하지 않을 것입니다. 이들이 메인 지갑을 이용할 경우 (기본적으로 읽기, 작성 허가가 주어짐) 작성 부분은 자동으로 제거됩니다.
  3. ‘최대 저장 가치’ 사이즈는 v1.4.5에서 8MB로 제한되어, 신규 스마트 컨트랙트가 8MB보다 큰 값을 만들려 하는 경우 해당 컨트랙트의 실행이 실패하게 됩니다. 

 

위 사항의 영향을 받은 모든 컨트랙트는 리팩터링, 리컴파일링을 거쳐 다시 배포되어야 합니다. 여기서 예시와 가이드를 확인하세요.

알려진 문제(코어):

현재 릴리스와 관련된 중대한 또는 우선순위 문제, 퇴행은 없습니다. 

그러나, 사용자들은 부록 섹션에 적힌 업그레이드 관련 디테일을 직접 읽어보는 것이 좋습니다.

 

릴리스 범위 (코어 - 내부):

릴리스 1.4.5에 대한 전체 범위는 1.4.5_Scope에서 액세스할 수 있습니다.

작업 요청:

Casper 메인넷 네트워크의 다양한 사용자를 위한 예상 조치 및 참고 사항은 아래 표를 통해 확인하세요.

       
밸리데이터, 거래소 & 노드 운영자 ● 업그레이드 지침 리뷰 및 업그레이드

● 업그레이드 상태 확인

● 메인넷에서 v1.4.5가 운영되는 동안, 953 이상의 위임자 셋을 가진 밸리데이터는 계속해서 이를 유지할 수 있지만, 메인넷이 v1.5.0으로 업그레이드되기 전까지 신규 위임자를 받을 수 없습니다.

● 952 이하의 위임자를 가진 밸리데이터는 임계값에 도달할 때까지 신규 위임자를 받을 수 있습니다.

● 밸리데이터에게 위임하려는 위임자 중 952 리미트에 도달한 자는 cspr.live의 위임 위저드를 사용할 때 하드스톱에 걸리게 됩니다.

● 모든 기존 위임자/밸리데이터 기능은 유지되며, 이에 따라 위임자는 계속해서 같은 밸리데이터에 대한 스테이크를 늘릴 수 있지만, 밸리데이터에 대한 신규 위임자는 500cspr의 제한이 있습니다.

























업그레이드 지침

























● 업그레이드 경로 1.4.4 -> 1.4.5, 캐스퍼 노드 및 클라이언트
dApp 개발자/ 컨트랙트 작성자/ 거래소 ● 일부 컨트랙트는 재컴파일된 후 배포되어야 합니다.

반드시 최신 Signer를 크롬 스토어로부터 설치해야 합니다.
JavaScript 2.9.1

Signer_Version 1.4.11
 

향후 작업 (코어):

여기에는 로드맵과 다음 릴리스를 위해 진행중인 작업 및 cspr.live 변경사항이 있습니다.

 

 

* 해당 포스팅은 투자 관련 정보 공유의 목적으로 포스팅된 글이며 투자 권유가 아닙니다. 그러므로 개인 투자의 책임은 모두 본인에게 있으니 참고하셔서 투자하시기 바랍니다.

 

잘못된 정보 혹은 재미있게 보셨다면 댓글 부탁드립니다.

보다 빠른 정보는 텔레그램 채널과 채팅방, 카카오톡 채팅방을 통해 받아보세요 :)

민티드랩 텔레그램 공지방 : https://t.me/minted_labs

민티드랩 텔레그램 채팅방 : https://t.me/minted_chat

카카오톡 오픈 채팅방 : http://open.kakao.com/o/gDtWugpb (입장코드 : 3309k)

캐스퍼랩스 한국 공식 텔레그램 공지방 : https://t.me/casperKoreaAnnounce

캐스퍼랩스 한국 공식 텔레그램 채팅방 : https://t.me/casperblockchainkorea

+ Recent posts