[면접 준비] Solidity / Smart Contract / Node

2021. 12. 15. 20:31Etc/Interview

솔리디티(Solidity)란?

 

솔리디티는 블록체인 플랫폼에서 스마트 컨트랙트 구현을 위해 사용되는 컨트랙트 기반의 계약 지향 프로그래밍 언어로, Ethereum Virtual Machine(EVM)에서 구동되도록 설계되었으며, C++/Python/JavaScript의 영향을 받아 만들어졌습니다.

 

컨트랙트란 일종의 계약서인데 블록체인이 돈(신용)을 다루는 기술이다보니 계약의 이행을 자동으로 해주는게 '스마트 컨트렉트'이다. 예를들어 어떤 물건을 코인을 받고 보내주기로 했을 때 물건을 받고 물건 받은 사람이 '받았음' 버튼을 누르면 물건을 판 사람한테 코인이 가게끔 하는 방식이다.

얼핏 보면 안전거래랑 비슷하지만 안전거래는 중간에 수수료를 떼가는 회사가 있는데 이건 그냥 블록체인 네트웍 상에서 일어나는 일이라서 중간에 회사같은게 없어도 이런 거래를 할 수 있는 것이다.

다시 '컨트렉트 기반 랭기지'로 돌아와서 솔리디티는 쉽게 말하면 '스마트 컨트랙트'라는 계약서를 만드는 랭기지라고 할 수 있다. 이더리움 버추얼 머신(Ethereum Virtual Machine)에서 작동하게끔 디자인된 언어라고 한다.


스마트 컨트랙트(Smart Contract)란?

 

스마트 컨트랙트는 코드를 통해 계약의 내용과 실행 조건을 사전에 설정한 후 해당 조건이 충족되면 블록체인 네트워크에서 자동으로 계약을 이행하는 기능을 말한다.
이는 온라인 거래 중 중개자 없이 코드만으로 법적 효력을 지닌 계약 이행이 가능하다는 이야기이다.

 

* 장점과 단점

- 장점

  • 자율성 : 제 3의 중개자의 진행이 필요 없으므로 기본적으로 계약에 대해 완전한 통제권을 부여함
  • 신뢰 : 문서가 암호화 되어 보안 유지가 이루어지는 공유 원장에 안전하게 저장되기 때문에 문서를 훔치거나 잃어버릴 수 없음
  • 비용 절감 : 중개자가 필요 없어져 수수료와 같은 비용을 절감할 수 있음
  • 안전성 : 올바르게 구현된 스마트 컨트랙트는 해킹하기 어렵고, 스마트 컨트랙트를 위한 환경은 복잡한 암호화로 보호되므로 사용자의 문서를 안전하게 보호함

- 단점

  • 초기 계약 설정이 잘못되면 문제가 발생할 수 있음
  • 코드로 동작하기에 시스템의 결함에 따라 문제가 발생할 수 있음
  • 조건이 만족하는 기준과 근거가 명확하지 않을 경우가 있음

블록체인에서 노드(Node)란?

 

네트워크에서 연결 포인트 혹은 데이터 전송의 종점, 재분배점 등을 의미한다.

블록체인은 중앙 집중형 서버에 거래 기록을 보관 및 관리하지 않고, 거래에 참여하는 개개인의 서버들이 모여 네트워크를 유지 및 관리하는데, 이 개개인의 서버(참여자)를 노드라고 한다.