특정 주소에 배포되어있는 TX로 실행가능한 코드
•
스마트 컨트랙트 소스코드는 함수와상태를표현
◦
컨트랙트는 어카운트로취급; 컨트랙트 소스코드는 블록체인에저장
◦
함수는 상태를 변경하는 함수, 상태를 변경하지 않는 함수로 분류
◦
스마트 컨트랙트는 어카운트이기 때문에 주소를 부여
◦
사용자(enduser,EOAowner)가 스마트 컨트랙트 함수를 실행하거나 상태를 읽을때 주소가 필요
•
스마트컨트랙트는사용자가실행
◦
상태를 변경하는 함수를 실행하려면 그에 맞는 TX를 생성하여 블록에 추가 (TX체결=함수의 실행)
◦
상태를 변경하지 않는 함수, 상태를 읽는 행위는 TX가 필요없음(노드에서 실행)
Solidity
•
Ethereum/Klaytn에서 지원하는 스마트 컨트랙트 언어
•
Klaytn은 Solidity버전 0.4.24, 0.5.6을 지원
•
일반적인 프로그래밍 언어와 그 문법과 사용이 유사하나 몇 가지 제약이 존재
◦
e.g., 포인터의 개념이 없기 때문에 recursive type의 선언이 불가능
Contract=Code+Data
•
Solidity 컨트랙트는 코드(함수)와 데이터(상태)로 구성
•
Solidity 함수는 코드 안에 변수로 선언된 상태를 변경하거나 불러옴
•
아래 예시에서 set, get은 함수, stored Data는 상태
contract SimpleStorage {
uint storedData; //uint = unsigned int, 상태
function set(uint x) public { // 함수, (uint x 파라미터)
storedData = x;
}
function get() public view returns (uint) { //(uint)값을 반환 받을 수 있다.
return storedData;
}
}
Solidity
복사