이더리움
- 스마트 계약을 실행하는 블록체인 플렛폼
- 즉 다운타임, 검열, 사기 또는 제3자 간섭의 가능성 없이 (탈중앙화) 프로그래밍된 대로 정확히 실행되는 응용프로그램
이더리움 가상 머신(EVM)
- 스마트 계약을 위한 런타임 환경
- 보안을 제공하고 신뢰할 수 없는 코드를 실행하는데 중점을 둔다.
- 서비스 거부 공격을 방지하는데 특화되어 있으며, 프로그램이 서로의 상태에 액세스할 수 없도록 하여 잠재적인 간섭없이 통신이 설정될 수 있도록 한다
- 이더리움 기반의 스마트 계약을 위한 런타이 환경역할 하도록 설계
스마트 계약
- 계약의 협상이나 수행을 디지털 방식으로 확인 또는 시행 위한 프로토콜
- 제3자없이 신뢰할 수 있는 거래를 수행할 수 있다
기본문법
SPDX라이센스 식별자
- 스마트 계약에 대한 신뢰는 소스코드를 사용할 수 있는 경우 더 잘 확립
- 소스코드 사용하는 것은 저작권과 법적 문제를 다루기에 spdx라이센스 식별자 사용 권장
//SPDX-License-Identifier: MIT
pragma
- 특정 컴파일러 기능 또는 검사를 활성화하는데 사용
- pragma 지시문은 항상 소스 파일에 대해 로컬이므로 전체 프로젝트에서 활성화하려면 모든 파일에 pragma를 추가해야 한다
pragma solidity ^0.8.0;
Contract
- solidity계약은 이더리움 블록체인 특정 주소에 있는 코드(기능)와 데이터(상태)모음
- 상태 변수는 저장되는 영구 데이터
- 상태 변수를 수정할 수 있는 함수가 포함된다
- 다른 계약에서 함수를 호출하면 EVM이 상태 변수에 접근할수 없도록 한다.
- 이더리움은 특정 이벤트에서 자동으로 함수를 호출하는 개념이 없다
변수 및 데이터 타입
- 상태변수: 값이 계약 저장소에 영구적으로 저장되는 변수
- 지역변수: 함수가 실행될 때까지 값이 존재하는 변수
- 전역변수: 블록체인에 대한 정보를 얻는데 사용되는 전역 이름 공간에는 특수 변수
상태변수
//SPDX-License-Identifier: MIT
pragma solidity^0.8.0;
contract Variable{
uint state_variable // 상태변수
지역변수
//SPDX-License-Identifier: MIT
pragma solidity^0.8.0;
contract Variable{
function getResult() public pure returns(uint){
uint local_val=1;
uint result = local_val+1;
return result; //지역
}
}
//View 상태 변수를 수정하지 않고 상태 변수를 읽을때 사용
//Pure 상태를 수정하거나 상태 변수를 읽지(액세스)하지 않을때 사용해야 합니다. //일반적으로 입력 매개변수를 기반으로 작업을 수행
변수 스코프
상태 변수는 범위를 public, Internal, private로 사용가능
연산자
-
산술 연산자
-
비교 연산자
-
논리 연산자
-
비트 연산자