스마트 컨트랙트를 작성하기 위한 고수준 객체 지향 프로그래밍 언어
이더리움 뿐 아니라 BNB Chain, Polygone, Avalanche 등 EVM 기반 블록체인에서 사용됨
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MyContract {
uint public count;
function increment() public {
count += 1;
}
}
pragma : 컴파일러 버전 명시(^0.8.0은 0.8 이상)contract : 스마트 컨트랙트 선언unit : 부호 없는 정수형 (기본:uint256)public : 외부에서도 접근 가능한 변수/함수uint age = 25;
string name = "Alice";
bool isActive = true;
address owner = msg.sender;
| 키워드 | 설명 |
|---|---|
public | 누구나 접근 가능 |
private | 해당 컨트랙트 내부에서만 사용 가능 |
internal | 상속받은 컨트랙트에서도 접근 가능 |
external | 외부 호출 전용 (내부 호출 불가) |
function add(uint a, uint b) public pure returns (uint) {
return a + b;
}
view : 상태변수 읽기만 가능 (Gas 없음)pure : 상태 변수 접근 불가 (계산만 함)payable : 이더 송금 수신 가능 함수// 이더 받기
receive() external payable {}
// 이더 보내기
payable(receiver).transfer(1 ether);
| 속성 | 설명 |
|---|---|
msg.sender | 트랜잭션을 보낸 주소 |
msg.value | 전송된 이더 값 (단위: wei) |
event Sent(address indexed from, address to, uint amount);
function send(address to, uint amount) public {
emit Sent(msg.sender, to, amount);
}
emit : 이벤트 로그 발행indexed : 특정 값으로 필터링 가능if (x > 10) {
// ...
}
for (uint i = 0; i < 10; i++) {
// ...
}
대부분의 C 계열 문법 사용 가능