Block-Chain/Solidity
-
Enum & Interface & Library & ImportBlock-Chain/Solidity 2023. 4. 24. 17:51
Solidity의 Enum, 인터페이스, 라이브러리, 임포트에 대해 정리하였습니다. enum은 사람이 읽을 수 있게, 개발자에 의해 정의된 상수세트 타입입니다. 특정한 상태/조건을 나타내기 위해 사용합니다. 한 개의 enum당 256개까지 저장할 수 있고, 0~255까지 부여(uint8 = 0 ~ 255) -> 상수세트이기에 enum은 uint로 변환하여 사용 가능 enum{ } Ex) enum CarStatus { TurnOff, TurnOn, Driving, Stop } CarStatus public carStatus; constructor() { carStatus = CarStatus.TurnOff; } event carCurrentStatus(CarStatus _carStatus,..
-
Send EthereumBlock-Chain/Solidity 2023. 4. 4. 17:12
코인 이더리움을 송신하는 방법 및 관련 개념에 대해 정리하였습니다. 코인 이더리움을 보내는 3가지 방법은 send, transfer, call이 있습니다. 키워드 Payable은 코인과 상호작용(송금)시 필요한 키워드입니다. 주로 함수, 주소, 생성자에 붙여 사용됩니다. msg.value는 송금보낸 코인의 값입니다. send : 2300 gas를 소비. 성공여부를 true 또는 false로 리턴 transfer : 2300 gas를 소비. 실패시 에러를 발생 call : 가변적인 gas 소비(gas값 지정 가능). 성공여부를 true 또는 false로 리턴 Ex) event howMuch(uint256 _value); function sendNow(address payable ..
-
Modifier & SPDXBlock-Chain/Solidity 2023. 3. 22. 15:30
Solidity의 모디파이어와 SPDX에 대해 정리하였습니다. return 부분에 타입뿐만 아니라 변수값도 같이 명시함으로써 추후 변수명을 새로 명시할 필요가 없습니다. Ex) function add1(uint256 _num1, uint256 _num2) public pure returns (uint256){ uint256 total = _num1 + _num2; return total; } function add2(uint256 _num1, uint256 _num2) public pure returns (uint256 total){ total = _num1 + _num2; return total; } 여러 함수에 반복적으로 쓰이는 코드를 줄이기 위해 사용..
-
에러 핸들러Block-Chain/Solidity 2023. 3. 7. 16:25
Solidity의 에러 핸들링 방법에 대해 정리하였습니다. 세 가지 에러 핸들러(assert, revert, require)는 정의된 조건에 부합하지 않으면, 에러를 발생시키는 함수입니다. assert : 특정한 조건에 부합하지 않으면(false일 때) 에러를 발생시키고, gas를 다 소비한다 : 테스트용으로 사용 - 형태 : assert(조건문) revert : 조건없이 에러를 발생시키고, gas를 환불 시켜준다. - 형태 : revert("에러 메세지") require : 특정한 조건에 부합하지 않으면(false일 때) 에러를 발생시키고, gas를 환불 시켜준다. - 형태 : require(조건문, "에러 메세지") < 솔리디티 내의 함수 실행 프로세..
-
조건문 & 반복문Block-Chain/Solidity 2023. 2. 15. 14:21
Solidity의 조건문과 반복문에 대해 정리하였습니다. Solidity에도 다른 언어와 마찬가지로 조건문이 있습니다. 문법은 JavaScript와 동일합니다. 조건문 형식 if(if가 발동 되는 조건){ if 내용 } else if(else if가 발동 되는 조건){ else if 내용 } ... else{ if, else if 가 발동이 안되면 else 내용 } Ex) string private result = ""; function isIt5or3or1(uint256 _number) public returns(string memory){ if(_number == 5){ result = "Yes, it is 5"; return result; } else if(_number == 3..
-
Mapping & Array & struct(구조체)Block-Chain/Solidity 2023. 1. 16. 23:40
Solidity의 Mapping(맵핑), Array(배열), struct(구조체)에 대해 정리하였습니다. Mapping은 상자와 같으며 Key 와 Value값으로 이루어져 있습니다. Mapping 정의 방법 mapping(키의 타입 => 값의 타입) 접근제한자 변수이름 Ex) contract lecture17 { mapping(uint256 => uint256) private list; function setList(uint256 _key, uint256 _value) public { list[_key] = _value; } function getListElement(uint256 _key) public view returns(uint256) { return list[_key]; }..
-
상속 & 이벤트Block-Chain/Solidity 2023. 1. 5. 13:26
Solidity의 상속과 이벤트에 대해 정리하였습니다. A컨트랙의 변수 및 함수를 B컨트랙이 접근 및 사용하기 위해 상속이 사용됩니다. is 키워드를 이용해 상속 contract 컨트랙트1 is 컨트랙트2 { } Ex) contract son_contract_name is father_contract_name {} 양식를 이용해 상속 contract Father { string public familyName = "Kim"; string public givenName = "Jung"; uint256 public money = 100; constructor(string memory _givenName) { givenName = _givenName; } function getFamilyN..
-
InstanceBlock-Chain/Solidity 2022. 12. 28. 16:41
Solidity의 Instance에 대해 정리하였습니다. Instance란 한 스마트 컨트랙트의 인스턴스(분신)를 말합니다. Instance는 한 스마트 컨트랙트에서 다른 스마트 컨트랙트에 접근하기 위해 사용됩니다. But, Instance는 한 스마트 컨트랙트 전부를 가져오는 것이기 때문에 Gas가 많이 소비되어 비추천하는 방식임. 인스턴스 생성 방법 new 인스턴스이름(); Ex) B 컨트랙트에서 A컨트랙트 함수에 접근 // SPDX-License-Identifier:GPL-30 pragma solidity >= 0.7.0 < 0.9.0; contract A { uint256 public a = 5; function change(uint256 _value) public { a ..