※ 기본적인 프로그래밍 지식이 있다는 전제하에 작성함.
Solidity
계약 지향 프로그래밍 언어로 이더리움과 가은 블록체인 플랫폼의 스마트 컨트랙트(Smart Contract)를 통한 Dapp개발 및 구현에 사용됨
가장 기본적으로 아래와 같은 방식으로 구현함
아래와 같이 contract 내에 코드를 고도화하여 계약을 체결하고 이행
예제.sol 파일
// 솔리디티 버전 0.6.0
pragma solidity ^0.6.0;
// 컨트랙트 - 모든 코드 실행은 컨트랙트 내에서 실행됨
contract Counter{
// count 변수선언
uint count;
// 생성자 생성
constructor() public{
count = 0;
}
// 함수선언 #1
function getCount() public view returns(uint){
return count;
}
// 함수선언 #2
function incrementCount() public{
count = count + 1;
}
}
자료형
'★'은 처음 접할 수 있는 자료형
툴은 기본적으로'Remix IDE'사용
Boolean
1. Boolean - True/False
정수형
2.1 uint(unsigned int) - 양수만 저장, int보다 더 많이 저장가능
2.2 int - 양수 음수 저장 가능
문자형
3.1 bytes - 동적 크기 바이트 배열
3.2 String - 동적 크기 인코딩된(UTF-8) 문자열
※ Solidity에서 String을 쓸때는 가스비용이 더 들기 때문에
32Byte이상일 때만 'String'을 쓰고, 32Byte이내면 'Byte1' ~ 'Byte32' 사용 권장(글자당 영어는 1바이트, 한글은 2바이트)
example2.sol
pragma solidity ^0.6.0;
contract Counter{
uint count;
string test;
bytes32 test2;
constructor() public{
count = 0;
test = "Hello World";
test2 = "Hello2";
}
function getCount() public view returns(uint){
return count;
}
function getbytes() public view returns(string memory){
return test;
}
function getstring() public view returns(bytes32){
return test2;
}
function incrementCount() public{
count = count + 1;
}
}
★ 주소
address - 20bytes 이더리움 계정 주소
자신의 주소 반환
pragma solidity ^0.5.0;
contract PayableTest {
address public myadd;
constructor() public{
myadd = msg.sender;
}
function getadd() public view returns(address){
return myadd;
}
}
★ enum
5.1 enum
pragma solidity ^0.5.0;
contract test {
enum FreshJuiceSize{ SMALL, MEDIUM, LARGE }
FreshJuiceSize choice;
FreshJuiceSize constant defaultChoice = FreshJuiceSize.MEDIUM;
function setLarge() public {
choice = FreshJuiceSize.LARGE;
}
function setSmall() public {
choice = FreshJuiceSize.SMALL;
}
function getChoice() public view returns (FreshJuiceSize) {
return choice;
}
function getDefaultChoice() public pure returns (uint) {
return uint(defaultChoice);
}
}
SetLarge누르면 Choice 가 'Large'로 변경
SetSmall누르면 Choice가 'Small'로 변경
구조체
pragma solidity ^0.8.10;
contract pay2{
string[] public test;
struct Book{
string title;
string author;
uint book_id;
}
Book book;
function setBook(string memory _title, string memory _author, uint _book_id) public {
book = Book(_title, _author, _book_id);
}
function getBook() public view returns(string memory){
return book.title;
}
}
'보안 및 블록체인 > 블록체인' 카테고리의 다른 글
솔리디티(Solidity) 기본 언어/문법 정리 #3, 이더리움 Dapp개발을 위해 - [블록체인] (0) | 2022.01.21 |
---|---|
블록체인 채굴 / 작업 증명 알고리즘 원리 및 개념정리- [블록체인] (0) | 2022.01.18 |
솔리디티(Solidity) 기본 언어/문법 정리 #2, 이더리움 Dapp개발을 위해 - [블록체인] (0) | 2022.01.12 |
ICO, IEO, STO 상장방식 개념정리 - [블록체인] (0) | 2021.12.30 |
NFT? ERC? NFT 개념정리 및 전망정리 - [블록체인] (0) | 2021.12.29 |