-
유한 상태 기계(Finite-State Machine,FSM)와 블록체인에서의 구현Programming/BlockChain 2022. 10. 30. 21:56
블록체인 상에서 스마트 컨트랙트를 개발할 때 시스템 다이내믹스, 각 오퍼레이션의 상태 변화를 보여주는 역동성을 보여주기 위하여 UML 유한 상태 머신 혹은 FSM 다이어그램을 사용하는데.
여기서 유한 상태 머신(Finite-State Machine,FSM)이란, 정규 컴퓨터 공학과 수학에서 창안한 것으로 프로그램과 전자 논리 회로를 설계하는데 쓰이는 수학적 모델로 "상태 기계"라고도 불리며 스마트 컨트랙트에서 활용 되는 FSM 다이어그램은 조건과 시간에 따라 변화해가는 스마트 컨트랙트의 상태 변화를 나타낼 수 있으며, 중요한 역할을 한다고 볼 수 있다.
이러한 유한 상태 기계는 유한 오토마톤 또는 복수형의 유한 오토마타라고도 하는데 이름 그대로 유한한 개수의 상태를 가지는 오토마타, 기계를 뜻하며 추상 기계라고도 불리우는 듯 하는데, 한번에 하나의 상태를 가질 수 있으며 시간의 흐름과 여러 조건에 따라 변화하는 현재 상태(Current State)란 임의의 상태를 칭한다. 여기서 다른 상태로 변화하는 것을 전이(Transition)이라 칭한다. 이러한 현재 상태로 부터 가능한 전이 상태, 이를 유발하는 조건의 집합이 FSM으로써 정의된다.
스마트 컨트랙트에서 구현 되는 조건과 규칙은 실제의 것들과 프로세스에 기반하는 케이스가 대다수이다. 투표 스마트 컨트랙트를 예로 들어 보자면, 투표를 위한 의장, 참여자로 나뉘어 참여 투표자는 미리 등록 및 투표를 진행하는데 여기에 필요한 규칙을 세우고 이러한 규칙에 맞추어 투표 상태 변화에 따른 FSM 설계를 해야한다.
ex) 생성 --(T=0)--> 등록 --(T+10일)--> 투표 --(T+11일)--> 종료의 식으로 구성되며 중간의 T는 각 단계의 지속 시간 설정 나타내는 것이고 그러므로 현재 설계는 시간에 따른 상태의 변화, 즉 Time Based Transitions이며 중간의 생성, 등록과 같은 상태들이 FSM의 구성요소라 할 수 있다.
이러한 설계를 솔리디티 코드로 구현하자면, 투표를 할 수 있는 코드와 권한을 부여하고 수정 할 수 있는 의장 객체, 여러 상태를 저장하는 열거형 객체 그리고 현재 상태를 검증하는 함수와 함수 내부의 조건문을 둬서 조건이 맞지 않는 트랜잭션은 되돌리는 기능을 하며 그 외에 투표를 집계하여 어느 것이 승리하였는지 식별 하는 함수를 작성한다.이렇게 되면 현재 상태와 전이 상태를 기록하고 시스템 다이내믹스를 구현하여 스마트 컨트랙트 시스템에 역동성을 부여하게 된다. 반대로 그렇지 못한 경우, 정적으로 상태가 변하고 끝나는 것에서 그치는 게 되니 FSM 다이어그램 설계를 통한 스마트 컨트랙트의 구현은 실세계에서의 여러 케이스들을 더 잘 표현하고 구현 할 수 있도록 해준다.
-References-
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%95%9C_%EC%83%81%ED%83%9C_%EA%B8%B0%EA%B3%84