Ethereum - Solidity의 단위, 변수 및 함수
2023. 6. 3. 16:13ㆍBlockChain/Ethereum
솔리디티 문서를 참고해서 작성하였다.
https://solidity-kr.readthedocs.io/ko/latest/units-and-global-variables.html#id5
단위 및 전역 변수 — Solidity 0.5.10 documentation
이더 단위 Ether를 더 작은 단위로 변환하기 위해 숫자리터럴 뒤에 wei, finney, szabo, ether 라는 접미사가 붙을 수 있습니다. Ether통화를 나타내는 숫자리터럴에 접미사가 붙지 않으면 Wei가 붙어있다
solidity-kr.readthedocs.io
1. 단위
솔리디티는 자체적으로 단위 변환을 해주는 `키워드`들이 있다.
이더 단위(통화 단위)
단위 | 값 | 1 wei 기준 | 1 ether 기준 |
1 ether | 10 ^ 18 | 1 ether = 10 ^ 18 wei | 1 ether = 1 ether |
1 wei | 1, 기본 단위(default) | 1 wei = 1(wei) | 1 ether = 10 ^ 18 wei |
1 gwei | 10 ^ 9 | 1 gwei = 10 ^ 9 wei | 1 ether = 10 ^ 9 gwei |
1 finney | 10 ^ 15 | 1 finney = 10 ^ 15 wei | 1 ether = 10 ^ 3 finney |
1 szabo | 10 ^ 12 | 1 szabo = 10 ^ 12 wei | 1 ether = 10 ^ 6 szabo |
시간 단위
단위 | 값 |
1 seconds | 1 == 1 seconds |
1 minutes | 1 minutes == 60 seconds |
1 hours | 1 hours == 60 minutes |
1 days | 1 days == 24 hours |
1 weeks | 1 weeks == 7 days |
1 years | 1 years == 365 days |
※ 시간을 나타내는 단위는 변수뒤에 붙일 수 없다.
function example () public pure {
uint 256 a = 1;
a days // 불가능
a * 1 days // 가능
}
2. 변수 및 함수
솔리디티의 전역에는 특수한 변수, 함수가 존재하며 주로 블록체인 정보를 제공한다.
변수와 속성
block
메서드(리턴) 및 속성 | 설명 |
block.blockhash(uint blockNumber) returns(bytes32) | 반환값 : 주어진 블록의 해시 - 현재 블록을 제외한 가장 최근 256 개의 블록에 대해서 작동 |
block.coinbase ( address) | 현재 블록 채굴자의 address |
block.difficulty (uint) | 현재 블록의 난이도 |
block.gaslimit (uint) | 현재 블록 gaslimit |
block.number (uint) | 현재 블록의 번호 |
block.timestamp (uint) | 현재 블록 타임스탬프 |
msg
속성 | 설명 |
msg.data (bytes) | calldata |
msg.sender (address) | 컨트랙트 코드 실행자 |
msg.sig (bytes4) | calldata의 첫 4바이트 ( 함수 식별자 ) |
msg.value (uint) | 메세지와 함께 전송된 wei 수 |
사용 X, gaslimit()로 대체되었다. |
tx
속성 | 설명 |
tx.gasprice (uint) | 트랜잭션 가스 가격 |
tx.origin (address) | 트랜잭션의 발신자 (full call chain) |
기타
함수 및 속성 | 설명 |
gasleft() returns (uint256) | 잔여 가스 |
now (uint) | 현재 블록 타임스탬프(= block.timestamp) |
3. 에러 처리 함수
함수 | 설명 |
assert(조건문) | 조건이 false일 경우 에러를 발생(내부 에러에 사용) |
require(조건문) | 조건이 false일 경우 에러를 발생(입력 또는 외부 에러에 사용) |
revert() | 무조건 에러를 발생시킨다. |
4. 수학 및 암호화 함수
아래의 각 인자는 tightly packed를 뜻하며 이는 들어온 인자를 모두 붙여서 계산한다.
메서드 | 설명 |
addmod(uint x, uint, y, uint k) returns (unit) | ( x + y ) % k 를 계산해준다. |
mulmod(uint x, uint y, uint k) returns (uint) | ( x * y ) % k 를 계산해준다. |
keccak256(...) returns (bytes32) | 인자의 Ethereum-SHA-3 해시를 계산한다. |
sha256(...) returns (bytes32) | 인자의 SHA-256 해시를 계산한다. |
sha3(...) returns (bytes32) | keccak256과 같은 역할을 한다. |
ripemd160(...) returns (bytes20) | 인자의 RIPEMD-160 해시를 계산한다. |
ecrecover (bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address) | 서명으로부터 address와 연관된 공개키를 복구하며, 오류시엔 0을 반환한다. |
5. Address 관련 속성 및 메서드
속성 및 메서드 | 설명 |
<address>.balance (uint256) | Address의 잔액 |
<address>.transfer (uint256 amount) | amount를 Address로 전송한다. (실패시 에러반환) |
<address>.send (uint256 amount) returns (bool) | amount를 Address로 전송한다. (실패시 false 반환) |
<address>.call (...) returns (bool) | 로우 레벨 수준의 call을 실행한다. (실패시 false 반환) |
<address>.callcode(...) returns (bool) | 로우 레벨 수준의 callcode을 실행한다. (실패시 false 반환) |
<address>.delegatecall(...) returns (bool) | 로우 레벨 수준의 delegatecall을 실행한다. (실패시 false 반환) |
6. 컨트랙트 관련 변수
변수 | 설명 |
this | 현재의 컨트랙트, Address로 명시적 변환이 가능 |
selfdestruct (address recipient) | 현재의 컨트랙트를 파기하고 자금을 주어진 Address로 전송합니다. |
suicide(address recipient) | = selfdestruct |
'BlockChain > Ethereum' 카테고리의 다른 글
Ethereum - Truffle (0) | 2023.05.27 |
---|---|
Ethereum - Smart Contract(스마트 컨트랙트, 계약) (0) | 2023.05.27 |
Ethereum - EVM(Ethereum Virtual Machine)와 가스(Gas) (0) | 2023.05.27 |
Ethereum - Ganache(가나쉬) (1) | 2023.05.26 |
Ethereum과 Web3 (0) | 2023.05.25 |