728x90 반응형 SMALL 전공공부/블록체인공학17 Solidity 조건문과 반복문 1.조건문 if ~ else if ~ else if ~ ... else ..? ..: ..; (삼항 연산) switch ~ case 사용 불가 switch/case 나 goto 문은 지원하지 않는다. 자동 형변환 (type conversion)도 지원하지 않는다 : ex) if(true){...} (0) if(1){...} (x) 2. 반복문 for(초기치 ; 조건 ; 증감치) { statement ; ... } while(조건) {statement ; ... } do { statement ; ... } while(조건); 반복문의 제어 continue : 만약 이 문법을 만나면 아래코드로 진행하지않고 다시 반복문 처음으로 돌아가라 라는 뜻이다. break : 조건에 의해 브레이크를 만나면 반복문을 탈출.. 2021. 11. 29. Solidity - 예약어 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.d.. 2021. 11. 29. Solidity 구조체 1. 구조체 개요 정의 구조체 : 서로 다른 자료형을 하나의 이름으로 묶는 자료형 이더리움의 데이터베이스를 활용하기 위해서 구조체 정의 및 구조체 배열 사용 필요 표현 구조체 표현 구조체 이름 [ ] 배열이름 ; 구조체 이름 [ ] public 배열이름; 배열과 유사하다고 보면된다. Struct 구조체 이름 { 자료형 변수명; .. 자료형 변수명; } 즉 구조체 이름 [ ] 배열이름 구조체 개요 구조체 배열 표현 일반적 : 구조체 변수 선언 후 값 삽입 배열 : .push 사용, 이 경우, 대다수 동적배열을 사용하기 때문에 배열의 맨마지막에 넣어주기위해 사용한다. 그래서 구조체 배열을 표현하는 방법으로는 방법 1: 구조체 이름 [] 배열이름; 구조체이름 변수 = 구조체이름(맴버값들); 배열이름.push(.. 2021. 11. 22. Solidity - 배열 및 데이터삭제, 타입 캐스트 1) 개요 배열 자료형이 같은 데이터를 같은 이름으로 묶은 자료 구조 종류 정적 배열 배열 요소의 크기를 지정 예) uint[5] test; 동적 배열 배열 요소의 크기를 지정하지 않고 동적으로 변환 uint[] test; PUBLIC 배열 동적배열의 경우, 다른 계정에서, 배열을 읽을 수 있도록 지정 예) uint[] public test; 자료형을 쓰고 [ ] 를 이용해서 배열을 만들 수 있다. 2) 표현 자료형[크기] 배열이름 ; 자료형[] 배열이름; 자료형[] public 배열이름 예제 //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.6.10; contract Arrayval { uint [5] test1; //정적배열 uint [] test2.. 2021. 11. 15. Solidity 함수의 타입제어 : view와 pure 함수의 호출범위 public 내부 계약 또는 외부 계약 호출 시 사용 가능 internal 내부 계약 또는 상속 계약에서 호출 가능 V 아무것도 적지 않으면 기본적으로 internal임 (default) private 계약 안에서만 호출 가능 external 외부 계약 호출 시에만 사용 가능, 같은 함수 내부에서는 호출 불가 함수의 호출 범위를 Visibility 라고 한다. Visibility를 설정하지 않으면, "경고" 가 나오면 internal로 처리됨! //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.6.10; contract Callsize { uint a = 1; uint b = 2; function test() view returns (u.. 2021. 11. 11. Solidity 함수의 입력 매개변수와 반환값 1) 입력 매개변수 입력 매개변수가 없는 경우 : function 함수명( ) ... 반환값이 없는 경우 function 함수명() public view{ ... } 반환값이 있는 경우 function 함수명 () public view returns (반환값의 자료형){ ... return 반환값; } 입력 매개변수가 있는 경우 : function 함수명( 자료형 변수이름, ... ) ... 반환값이 없는 경우 function 함수명(자료형 변수 이름, ...) public view { ... } 반환값이 있는 경우 function 함수명(자료형 변수 이름, ...) public view returns (반환값의 자료형){ ... return 반환값 ; } 2) 반환값의 종류 1. 정수 2. 실수 3. .. 2021. 11. 11. Solidity 데이터타입과 연산자(3) 연산자 연산자종류 총 6개 종류의 연산자가있다. 기존의 연산자와 유사하다. 예를들어 대입 연산자는 a = a + 1 를 a+=1 로 함축해서 대입시키는 것이다. 이 6가지에 대해 설명하겠다. 1. 산술연산자 + 더하기 - 빼기 * 곲하기 / 나누기 % 나머지 ** 지수연산 예제 //SPDX-License-Identifier: UNLICENSED pragma solidity ^0.6.10; contract Plus { function plus() public pure returns (uint) { uint a = 1; uint b = 2; return a + b * 2; } function rest() public pure returns (uint) { return 4 % 3; } } 산술연산을 통해 ui.. 2021. 11. 5. Solidity 데이터타입과 연산자(2) 데이터타입에 대해 공부해보겠다. 1. 정수 2. 소수 3. 주소 1. 정수 정의 : 정수형타입 부호가 있는 정수 : int8, int16. int24, ... int256 부호가 없는 정수 : uint8, uint16 ... uint256 8의 배수를 붙여 선언 - int, uint 사용시 int256, uint256을 선언한 것임(int, uint 에 다른것을 선언하지 않으면 기본값 256이 선언된것) 예제 pragema solidity ^0.4.18; contract test{ function arith1() public pure returns (uint){ uint a = 1; uint b = 2; return a+b; } } 예제를 통해 스마트컨트랙트를 만들어보았다. 아리쓰1이라는 힘수를 선언했고.. 2021. 11. 5. Solidity 데이터타입과 연산자 1. Solidity 데이터타입 기본 데이터 타입 -논리 -정수 -소수 -실수 등등 복합 데이터 타입 -문자열 -배열 -구조체 기존 자바? 와 비슷하게 데이터타입이있다. 솔리디티는 저장하는 위치는 스마트계약을 작성하였을때, 저장하는 위치가 다르다. 스토리지 저장 영구적으로 저장됨 gas소모량이 큼 - 변수 대부분은 스토리지에 저장 메모리 저장 휘발성 저장 gas 소모량이 적음 - 메모리에 저장하고싶으면 메모리에 저장하겠다고 함수나 메서드를 작성해야함 - 함수의 인수나 반환값은 메모리에 저장된다. 상태변수 Contract 상위에 선언된 변수로써 Contract에 속한 변수이다. 클래스의 멤버 변수와 동일하다.(어떤 함수에 속한 변수가 아님) 저장 위치는 스토리지 이다. 지역변수 함수에 속한 변수 (함수가 .. 2021. 11. 4. Solidity개발(2) https://remix.ethereum.org/ 접속하여 개발을 해보자 Remix - Ethereum IDE remix.ethereum.org 스마트컨트랙트 만들기 - 코드 적어보기(1) 1. 새로 test.sol 파일을 만들어준다 2. 내용을 넣어준다. pragma solidity ^0.4.18; contract test{ string private stateVariable = "Hi"; function getHw() public view returns(string){ return stateVariable; } } 이때 이것을 입력하면 컴파일 오류가 뜬다. 이유는 pragma 버전을 너무 낮게 작성한것이다. 현재는 0.8인데 0.4버전을 선언하니까 컴파일러가 오류로 받아들이는 것이다. 그럼 컴파일버전.. 2021. 10. 31. 이더리움 - solidity개발 solidity 개발을 위한 프로그램 geth (go ethereum) - 이더리움 클라이언트 소프트웨어 - 이더리움 블록체인 네트워크 구축을 위하여 사용 - Go언어 기반으로 이더리움 노드 구현 및 작동을 위한 인터페이스 제공 채굴자나 개발자들의 프로그램 인터페이스 역할 (geth를 통해 이더리움 블록체인의 노드로 참여/스마트컨트랙트 작성/트랜잭션 브로드캐스팅 가능) - 블록전체에 대한 거래내역 탐색가능 - 블록 검증 가능 그러나 geth를 사용하기 위해서는 설치과정을 좀 진행해야한다. geth는 이더리움네트워크를 구축하는데 굉장히 좋지만 복잡하므로 Remix를 이용해서 블록체인의 스마트컨트랙트를 작성할 것이다. 개쓰나 레믹스 외에도 솔리디티 개발을 위한 프로그램은 다음과 같다. 구분 내용 parity.. 2021. 10. 28. 스마트컨트랙트(2) 스마트컨트랙트에서 알아야할 내용 Solidity 1. 스마트컨트랙트 구현을 위한 컨트랙트 기반의 고급 프로그래밍 언어 2. C++,파이썬, 자바스크립트의 영향을 받아 만들어짐 3. EVM에서 구동되도록 설계되었다. 가상머신 - 이더리음 블록체인 네트워크의 노드들이 공유하는 가상머신 - 거대한 분산컴퓨터 ABI - application Binary Interface - 컨트랙트의 함수와 매개변수들을 JSON형식으로 나타낸 리스트 스마트컨트랙트 코드 예시 pragma solidity ^version //(버전 프라그마) // 계약선언 contract HelloWorld{ //상태변수 선언 string public greetingl //생성자 function HelloWorld(String _greeting).. 2021. 10. 23. 이전 1 2 다음 728x90 반응형 LIST