본문 바로가기
전공공부/블록체인공학

Solidity - 예약어

by 으노으뇨 2021. 11. 29.
728x90
반응형
SMALL

Solidity 라고하는 언어에서도 사용하는 예약어가 있다.

통화관련 예약어

1. wei : 가장작은 단위

- 1000배씩 올라감 : kwei(1wei*1000), mwei(1kei*1000), gwei(1mwei*1000) 등등

2. 1이더 : 10의 18승 wei( 10^18 wei)

시간 관련 예약어
예약어 의미
second 1초
minute 60초
hour 60분
day 24시간
week 7일
year 365일
블록관련 속성 변수
변수 의미
block.blockhash(uint blockNumber)
retrun (bytes32)
지정 블록의 해시값 리턴
현재 블록을 제외한 최신 256개의 블록에만 사용가능
block.coinbase(address) 현재 블록 채굴자의 계정주소 반환
block.difficult(uint) 현재 블록 난이도 반환
uint 형태로 반환
block.gaslimit(uint) 현재 블록 가스 제한량 반환
uint 형태로 반환
block.number(uint) 현재 블록 번호 반환
uint 형태로 반환
msg.gas(uint) 남은 가스량 반환
블록관련 속성 변수
변수 의미
tx.gasprice(uint) 해당거래 uint 형태로 가스 가격반환
tx.origin(address) 거래 발신자 반환
block.timestamp(uint) 현재 블록의 타임스탬프
msg.value(uint) 메시지와 같이 보낸 wei
this 현재 계약
에러처리 함수
에러 처리 함수 의미
assert(bool 조건) 내부 에러를 나타냄
조건을 만족하지 않으면 에러발생
require(bool 조건) 입력 또는 외부 구성요소 에러를 나타냄
revert() 에러 발생 시 상태를 거래 전으로 되돌림
수학함수와 암호함수
함수 의미
addmod(uint x, uint y, uint z)
returns (uint) 
(x+y)%z 리턴
mulmod(uint x, uint y, uint z)
returns(uint) 
(x*y)%z 리턴
keccak256(data)
returns(bytes32)
keccak256 해시 계산(이더리움 SHA3 해시값)
sha256(data)
returns(bytes32)
sha-256 해시 계산

연습문제

pragma solidity ^0.4.18;

contract Stringtypeinput {

    struct St {
        uint no;
        string name;

    }
    st[] public st;

    function createSt(uint_no, string_name) {
        st.push(St(_no, _name));
    }
}

해당 St라는 배열에 번호와 이름을 생성시키는 함수를 실행해 볼것이다.

작성을하였으면 디플로이 버튼을 눌러준다.

그럼 하단에 우리가 직접 입력을 할수 있는 빈칸이 생성되어요

이제 배열에 값들을 넣어봅시당

1과 김은호, 2와 홍길동, 3과 김유신 모드 각각 작성해주고 트랜잭트를 해줍니다.

그리고 st라는 배열에서 각 순서에 맞게 출력이 나타나는지 확인해줍시다. 주의할점은 인덱스는 항상 0에서 시작됩니다

만약 해당하는 인덱스값이 없다면 아래와 같은 오류를 마주치게 됩니다


두번째로, 코드가 삽입되어있는 함수에서 getSt라는 함수를 통해 해당 값을 가져오는 기능을 구현해보자.

    function getSt(uint _num) public view returns (uint noo, string namee) {
        noo = st[_num].no;
        namee = st[_num].namel
    }

라는 함수를 추가해준다.

동일하게 디플로이를 해준다.

새로운 함수가 생성되었습니다.

새로운 계약을 만들었으니 위와 동일한 값들을 넣어주겠습니다.

그리고 getSt를 통해 값들을 확인해 보겠습니다!

get함수를 통해 얻어지는 값들입니다. 

728x90
반응형
LIST

댓글