PDAO위키
최근 변경
최근 토론
임의 문서
도구
최근 변경
State Machine
(편집 요청)
[알림]
문서를 편집할 권한이 없기 때문에 편집 요청으로 이동되었습니다.
편집 권한이 부족합니다. 로그인된 사용자 OR geoip:KR(이)여야 합니다. 해당 문서의
ACL 탭
을 확인하시기 바랍니다.
닫기
RAW 편집
미리보기
== 동기 == 스마트 컨트랙트는 배포 후 코드 수정이 불가능하다. 그런데 경매, 에스크로, 거버넌스 등 대부분 온체인 비즈니스 로직은 '''여러 단계를 순서대로 거치는 생애주기'''를 가진다. 경매에서 정산이 끝난 뒤 입찰을 넣거나 에스크로에서 입금 전에 물건 수령을 확인하는 것은 허용되면 안 된다. 이러한 "잘못된 시점에 잘못된 함수가 호출되는" 버그는 전통 소프트웨어에서는 패치로 해결할 수 있지만 불변(immutable)한 스마트 컨트랙트에서는 자금 손실로 직결된다.[*3 Atzei, Nicola; Bartoletti, Massimo; Cimoli, Tiziana (2017). [[https://link.springer.com/chapter/10.1007/978-3-662-54455-6_8|A Survey of Attacks on Ethereum Smart Contracts (SoK)]]. ''Principles of Security and Trust''. Springer. pp. 164–186.] State Machine 패턴은 이 문제를 해결하기 위해 설계되었다. 이 패턴이 해결하는 핵심 문제는 다음과 같다. * '''단계 간 순서 강제''' - 정의되지 않은 경로로의 상태 전이를 구조적으로 차단한다. * '''함수 호출 시점 제어''' - 각 함수가 실행 가능한 상태를 컴파일 타임에 선언하여, 잘못된 시점의 호출을 런타임에서 revert한다. * '''시간 조건 자동 적용''' - 블록체인에 cron이 없는 환경에서 시간 경과에 따른 단계 전환을 트랜잭션 호출 시점에 자동 반영한다. * '''감사 용이성''' - 상태와 전이를 다이어그램으로 시각화할 수 있어 코드 리뷰와 보안 감사가 용이해진다.[*1]
요약
문서 편집을
저장
하면 당신은 기여한 내용을
CC BY-SA 4.0
으로 배포하고 기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다. 이
동의는 철회할 수 없습니다.
비로그인 상태로 편집합니다. 로그인하지 않은 상태로 문서 편집을 저장하면, 편집 역사에 본인이 사용하는 IP(216.73.217.42) 주소 전체가 영구히 기록됩니다.
저장
닫기
Liberty
|
the tree