이번 글은 다른 참고자료를 보지 않고 알고있는 내용을 주저리주저리 쓰기 때문에 조금 잘못된 내용이 있을 수도 있습니다.
Solidity는 이더리움 상에서 스마트 컨트랙트를 만들기 위해 사용하는 언어라고 알고 있으면 된다.
그렇다면 스마트 컨트랙트가 뭔지 간단하게 알아보자.
Smart Contract
스마트 컨트랙트는 계약서에 써있는 내용을 코드적으로 수행한다고 보면된다. 무슨 말이냐면, 간단하게 A와 B와 C가 D에게 생일 선물로 각각 10,000원씩 모아서 준다고 가정해보자. 스마트컨트랙트는 조건이 충족되면 수행되는 코드이기 때문에 코드로
"if A,B,C 모두 만원씩 넣었으면 -> D에게 3만원 전송" 과 같이 특정 조건이 달성되면 자동으로 수행된다.
그렇다면 이러한 것을 왜 코드로써 구현해야할까?
우리는 만약 A가 돈을 넣지 않아 약속을 지키지 않으면 직접 A에게 찾아가서 이유를 물을 수 있을 것이다.
그러나 블록체인은 철저하게 온라인이며, 온라인상에서 만난 사람을 전부 직접 찾아가 책임을 물을 수 없을 것이다.
따라서 우리가 "계약" 이라는 것을 해야한다면, 온라인에서 서로가 서로를 모르는 상태에서는 거의 불가능하다.
때문에 비트코인은 단순한 돈을 다른 지갑으로 송금하는 것말고 다른 기능을 제공하지 않는다.
그렇게해서 등장한 것이 스마트 컨트랙트라는 개념이다. "투자금이 얼마가 모였을 때 투자를 받는 회사에 투자금을 전송하라" 와 같은 계약 내용을 코드로써 만들어 놔 조건이 충족되지 않으면 계약을 취소시킬 수도 있으며 조건이 만족되면 자동으로 이행돼 온라인 상에서 익명성을 가지고도 "계약"이라는 행위를 할 수 있게된다.
그러나 스마트 컨트랙트도 결국 사람이 작성하는 코드이기 때문에 허점이 있기 마련이다. DAO 해킹 사태를 보면 스마트 컨트랙트에서
환불이 계속되는 취약점이 있어 엄청난 양의 이더리움이 공격자의 지갑으로 보내져 큰 혼란이 있었던 사건도 있다. 이 사건으로 이더리움은 탈중앙화 철학을 포기하고 롤백하여 하드포크되었고, 순정으로 블록체인을 유지하고 있는 것이 바로 이더리움 클래식이다.
아무튼 이러한 스마트 컨트랙트의 등장은 엄청난 기술의 등장이었고, 이 때문에 이더리움이 많은 주목을 받았다.
이 스마트컨트랙트를 구현할 수 있는 프로그래밍 언어가 솔리디티로, 앞으로 당분간은 솔리디티 언어에 대해 작성할 것 같다.
'Blockchain > Solidity' 카테고리의 다른 글
Solidity : memory와 storage, 그리고 문자열 비교하기 (0) | 2023.06.01 |
---|---|
Solidity : 함수 및 Modifier (0) | 2023.06.01 |
Solidity : 가시성 지정자 (0) | 2023.05.31 |
Solidity 자료형에 대해서 알아보자 (0) | 2023.05.31 |
Solidity에 대해 간단한 코드로 알아보기(GPL과 MIT) (0) | 2023.05.31 |