Ethereum - Solidity의 단위, 변수 및 함수

2023. 6. 3. 16:13BlockChain/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 수
msg.gas (uint)  사용 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