제가 이해한 내용으로 정리합니다.
스마트 계약
- 스마트 컨트랙트
- 두 계약 당사자 간에 이뤄지는 합의 스마트 계약의 이용
- 간단한 거래 뿐 아니라 블록체인을 이용하여 여러가지 처리 가능하다.
- 자체 블록체인이 아닌, 기존의 블록체인을 이용해 스마트 계약으로 블록체인을 활용하는 것
- Solidity는 스마트 계약을 구축하기 위한 프로그래밍 언어
- 스마트 계약을 사용해 자체 토큰도 생성 가능하다.
- 심지어 Peg도 할 수 있음!!
solidity & 스마트 계약 작성
Solidity는 정적 타입 언어.
Solidity의 확장자는
.sol
스마트 계약의 목적 : 데이터를 저장하고 데이터를 반환할 수 있게 하기.
- 정보 받기
- 정보 저장
- 정보 반환
이곳에서 진행했다. –>
remix.ethereum.org
practice.sol
요약
- 카멜케이스 쓰는 것 같다. 세미콜론도 사용한다.
//
: 주석pragm
: 사용중인 solidity의 버전을 나타내는 구문contrac
: 계약 타입 선언uin
: 정수타입 : 뒤의 숫자는strin
: 문자열boo
: 참 / 거짓public
: 매우 중요! : 함수에 가시성 부여함. 계약 외부에서도 함수 호출을 가능하게 한다. (다른 계약에서도 이 함수를 호출해야 하기 때문)view
: 상태를 수정할 수 없다는 것을 알리는 전역 제어자(Global Modifier)- EVM : 이더리움 가상 머신 10.
어떤 코드를 작성할 것인가!?
solidity!
매우매우 기본
-
라이센스 명시 없으면 밑줄 생겨서 넣었음.
-
Solidity 불러오기
pragma solidity >=0.7.0 <0.9.0;
pragma
: 사용중인 Solidity의 버전을 나타내는 구문pragma solidity >=0.7.0 <0.9.0;
: 0.7 버전 이상, 0.9 미만
function set(uint x) public {
storeData = x;
} // 저 public 을 넣어야 한다.
public
: 계약 외부에서도 함수 호출을 가능하게 한다. (다른 계약에서도 이 함수를 호출해야 하기 때문)private
: 외부에서 액세스 하지 못하게 한다.view
: 만약 없다면 데이터에 뭔가 반환된다.-
retunrs
: 가시성 부여 & 상태 유지 & 반환 + 무엇을 return 받을 것인지 ``(%자료형)` 명시
function get() public view returns (uint) {
return storeData;
}
연습 코드
// practice1.sol
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract simpleStorage {
// 우선 정수만 저장해본다.
uint storeData;
// 1. 정수를 저장하기 위한 함수 setting
function set(uint x) public {
storeData = x;
}
// 2. 정보를 회수하기 위한 함수 getting
function get() public view returns (uint) {
return storeData;
}
}
연습코드 컴파일 & 배포
컴파일
DEPLOY & RUN TRANSACTIONS
- 추후 고급 스마트 계약에서 VALUE, wei, ether 를 확인할 것임
성공한 모습
- 계약에 성공하면 Gas 가 사용된다.
- 주소 또한 확인 할 수 있다.
이곳에서 작성한 함수를 IDE에서 버튼을 이용, 사용할 수 있게 되었다.
== 정보를 저장하는 Dapp 완성!
get으로 확인 :
가스비가 좀 무서운걸