Solidity는 스마트 계약 작성을 위한 언어로 EVM에서 사용한다.
솔라나 같은 플랫폼은 Rust, C++를 사용하는데, 왜 새로운 언어를 만들었는가?
블록체인 시스템을 반영하는 구조의 언어를 만들기 위해서이다.
언어는 CPU와 메모리의 연산, 디스크나 네트워크 접근을 위해 라이브러리를 필요로 한다.
블록체인은 storage 영역까지 동일해야 한다. 게임이 디스크에 저장되는 위치는 각 컴퓨터마다 다를 수 있지만, 블록체인은 모든 컴퓨터에서 동일한 트랜잭션을 처리하고 동일한 결과를 가져온다.
하나의 컨트랙트가 다른 컴퓨터 위에서 실행되어도 결과는 동일해야 하며, 외부 변수에 의해서 결과가 달라지지 않아야 한다.
모든 데이터 수정 작업은 트랜잭션 안에서 이루어지며, 외부와 차단된 상태에서 oracle이 storage 값을 미리 변경해 놓는다. 이후의 트랜잭션은 oracle이 저장한 storage를 가져온다.
virtual machine의 종류. stack based는 스택포인터로 인해서 제일 상단에 있는 것을 기준으로 연산이 일어나는것. stack based는 사실상 레지스터 두개만 있어도 됨. 명령어가 짧아진다.
register based는 레지스터 4개를 쓴다. 모든 데이터에 접근할 수 있는 장점이 있지만 더 복잡하다.
EVM은 stack-based VM으로, 스택 포인터를 통해 상단에 있는 것들의 연산이 이루어진다.
EVM은 stack-based이며, JVM도 stack-based이다. 코드 양을 줄일 수 있는 장점이 있다.