🔑 코인 투자 추천 링크 🔑
[NEW] 누구나 쉽게 따라하는 솔리디티 강의(솔리디티 버전 0.8.13)
5. 배열, 열거형(enum), 구조체(calldata,memory)
8. 이벤트(events), 생성자(constructor), 상속
10. 인터페이스(interface), payable, 이더전송,받기 관련
11. Fallback, Call, Delegate(솔리디티 업그레이드 기법)
12. 함수 선택자(function selector), 다른 컨트랙트 사용 및 생성기법
13. Try Catch, Import(임포트), Library(라이브러리)
14. ABI 디코드, hash 함수, 서명검증, 가스최적화
* 블록체인 전문가들도 놓치기 쉬운 비트코인, 이더리움의 핵심가치 강의
1. Variable (변수)
- 솔리디티에서는 3가지 변수 타입이 존재한다.
1) local (지역변수)
- 함수 안에 선언됨
- 블록체인에 기록되지 않음
2) state (상태변수)
- 함수 밖에 선언됨
- 블록체인에 기록됨(저장됨)
3) global (전역변수)
- 블록체인에 관한 정보를 제공함
소스파일
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Variables {
// State variables are stored on the blockchain.
string public text = "Hello";
uint public num = 123;
function doSomething() public {
// Local variables are not saved to the blockchain.
uint i = 456;
// Here are some global variables
uint timestamp = block.timestamp; // Current block timestamp
address sender = msg.sender; // address of the caller
}
}
2. Constants(상수)
- constants(상수)는 수정될 수 없는 변수.
- constants로 하드 코딩된 값(value)은 가스 비용을 절약해 줌.
- 대문자로 코딩하는걸 추천.
소스파일
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Constants {
// coding convention to uppercase constant variables
address public constant MY_ADDRESS = 0x777788889999AaAAbBbbCcccddDdeeeEfFFfCcCc;
uint public constant MY_UINT = 123;
}
3. Immutable (불변)
- constants와 유사함.
- immutable 변수는 생성자(constructor) 안에 선언될 수 있으나 값이 수정될 순 없음.
4. 상태변수를 읽고 쓰기
- 상태변수(state variable)을 write(쓰거나) update(업데이트) 하기 위해서는 트랜잭션(transaction)을 보내야 함. (가스비 발생)
- 트랜잭션(transaction) 비용 (가스비) 없이 상태변수를 읽을 수 있음.
- 아래 예제의 마지막 함수 get()에서 view 속성을 부여하여(트랜잭션요청없이) num의 상태변수를 가스비 없이 읽을 수 있음.
소스파일
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract SimpleStorage {
// State variable to store a number
uint public num;
// You need to send a transaction to write to a state variable.
function set(uint _num) public {
num = _num;
}
// You can read from a state variable without sending a transaction.
function get() public view returns (uint) {
return num;
}
}
예제파일 소스 : https://solidity-by-example.org/
블록체인 교육 문의는 아래 링크 참고 바랍니다.
댓글