반응형
◆ 이더리움 가상 머신
▶ 솔리디티는 이더리움 가상 머신(EVM)을 대상으로 하는 프로그래밍 언어
▶ 이더리움 블록 체인은 스마트 계약으로 알려진 코드를 작성하고 실행함으로써 그것의 기능을 확장하도록 함
▶ EVM은 스마트 계약의 일부인 코드를 실행하는데 스마트 계약은 솔리디티로 작성되지만 EVM은 솔리디티의 고수준 구조를 이해하지 못함
▶ EVM은 바이트코드라고 하는 저수준 인스트럭션을 이해
▶ EVM이 솔리디티 코드를 이해하게 하려면 솔리디티 코드를 바이트코드로 컴파일해야 하는데 솔리디티 컴파일러 또는 sole라고 하는 컴파일러가 이 역할을 담당
▶ 솔리디티 코드의 작성부터 EVM에서 실행하는 과정
◆ 솔리디티
▶ 정적타입
▶ 객체 지향 언어
▶ 한 번에 실행되어야 하는 기호는?
▶ 확장자는 sol
▶ 구성
● pragma
● comment
● import
● 계약
● 라이브러리
● 인터페이스
▶ pragma
● 컴파일러 버전 지정 지시자
pragma solidity 버전;
● 가장 상단에 작성하는 것이 관례
● 버전 번호는 메이저 빌드 번호(앞의 2 자리) 와 마이너 빌드 번호(마지막 1 자리)로 구성
● 버전 앞에 ^를 추가하면 메이저 빌드 번호의 최종 버전을 의미
▶ import
● 다른 솔리디티 파일 사용
● import 파일명;
▶ 주석
● // - 단일 행 주석
● /* ~ */ - 여러 줄 주석
● ///, /** */ - 문서화 주석
▶ 계약
● 솔리디티의 주목적은 이더리움을 위한 스마트 계약을 작성하는 것
● 스마트 계약은 EVM의 배포와 실행의 기본 단위
● 계약을 구성하는 요소
- 상태 변수
- 구조체
- 열거형
- 함수
- 수정자
- 이벤트
// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;
//계약
contract GeneralStructure {
//상태 변수
int public stateIntVariable; // vriable of integer type
string stateStringVariable; //variable of string type
address personIdentifier; // variable of address type
myStruct human; // variable of structure type
bool constant hasIncome = true; //variable of constant nature
//구조체
struct myStruct {
string name; //variable fo type string
uint myAge; // variable of unsigned integer type
bool isMarried; // variable of boolean type
uint[] bankAccountsNumbers; // variable - dynamic array of unsigned integer
}
//수정자
modifier onlyBy(){
if (msg.sender == personIdentifier) {
_;
}
}
// 이벤트
event ageRead(address, int );
//열거형
enum gender {male, female}
//함수
function getAge (address _personIdentifier) onlyBy() payable external returns (uint) {
human = myStruct("Ritesh",10,true,new uint[](3)); //using struct myStruct
gender _gender = gender.male; //using enum
emit ageRead(personIdentifier, stateIntVariable);
}
}
* 계약 생성
-> 생성자를 호출 : new 계약이름();
SampleContract sample = new SampleContract();
-> 다른 계약을 가지고 생성
SampleContract copy = SampleContract(sample);
*생성자 => 솔리디티에서는 선택사항으로 생성자를 만들지 않으면 매개변수가 없는 생성자를 만들어서 포함시킨다. 그리고 배포될 때 한 번 만 실행 된다
반응형
'IT 초보코딩의 세계 > 블록체인' 카테고리의 다른 글
블록체인 탈중앙화 앱(네트워크 컨트랙트, 메타 마스크 설정) 4장 (0) | 2023.08.16 |
---|---|
블록체인 탈중앙화 앱(리믹스 솔리디티를 이용한 Dapp 구현) 3장 (1) | 2023.06.28 |
블록체인 탈중앙화 앱(탈중앙화, Dapp) 3장 (8) | 2023.06.23 |
블록체인이란?(블록체인과 이더리움 아키텍쳐) 2장 (8) | 2023.06.08 |
블록체인이란?(블록체인과 분산원장 기술, 거래과정, 특징) 1장 (8) | 2023.06.07 |
댓글