728x90

전체 글 169

Docker 세팅

- 도커 설치 링크 : https://www.docker.com/get-started/ Developers - Docker Developer productivity tools and a local Kubernetes environment. www.docker.com - 도커는 가상머신과 같이 하드웨어를 가상화하는 것이 아니라, 리눅스 운영체제에서 지원하는 다양한 기능을 사용해 컨테이너(하나의 프로세스)를 실행하기 위한 별도의 환경(파일 시스템)을 준비하고, 리눅스 네임스페이스와 다양한 커널 기능을 조합해 프로세스를 특별하게 실행시켜준다. 이는 가상머신과 같이 하드웨어를 가상화하는 것이 아니라, 운영체제 상에서 지원하는 방법을 통해 하나의 프로세스(컨테이너)를 실행하기 위한 별도의 환경을 구축하는 일을 지..

Docker 2022.07.06

블록체인 개념 정리#4

- PoS는 토큰을 많이 소지하고 있으면 중앙화의 위험이 있다. 이같은 이유 떄문에 보통의 코인들은 PoW로 시작하여 토큰이 고르게 분배되면 PoS로 전환하는 방법을 채택한다. - 하지만 클레이튼은 BFT를 채택했다. 이유는 간단히 말하면 "빨라서" 이다. 하지만 BFT는 확장성의 문제가 있다. 클레이튼은 이 문제를 해결했다. - 클레이튼은 N개의 노트 가운데 S개의 부분 노드 집합을 확률적으로 선택한다. Committe(부분집합) 선택은 VRF(verifiable random function)으로 구해진 무작위 값에 기반한다. 매 블록마다 새 Committe를 뽑아 BFT를 실행하여 확장성을 개선했다. - 블록체인 상태 - 블록체인은 트랜잭션으로 변화하는 State Machine이다. (컴파일러 개론의..

Block Chain ETC 2022.07.04

최대 연속 부분 구간 합[c++]

// 최대 연속 부분 구간 합 문제 // [-7, 4, -3 ,6, 3 ,-8, 3, 4]의 최대 구간 합은 idx1 ~ idx4 즉, 10이다. // 분할 정복과 동적계획법 두 가지 풀이 // 6 -1 -2 -3 3 4 일 경우 idx0 ~ idx5와 idx4 ~ idx5의 구간 합이 같지만 더 짧은 길이 구간을 반환할 것 // 입력 예 6 \n 6 -1 -2 -3 3 4 (크기6 값6개) // 7 \n -7 4 -3 6 3 -8 3 4 // 출력 예 7 (maxSum) // 10 #include #include int MIN = 0; using namespace std; // 동적계획법 O(n) // a[i]를 오른쪽 끝으로 갖는 최대합구간을 maxAt(i)라고 하면 // maxAt(i) = max(..

Coding Test ETC 2022.07.01

블록체인 개념 정리#3

- 암호 - 고전적인 암호의 대표적인 예로 카이사르 암호(Caesar cipher)가 있다. 이는 알파벳을 key 값만큼 밀어서 치환하는 기법이다. ex) E(A, key=3) => D - 암호에는 크게 대칭키암호와 비대칭키(공개키)암호로 분류된다. 블록체인에서는 공개키 암호를 사용한다. 암호화에 사용되는 키는 공개키(PK), 복호화에 사용되는 키는 비밀키(SK) 라고 한다. - 이러한 비대칭키 암호의 목적은 "누구든지 암호화할 수 있지만 비밀키를 아는 사람만 복호화할 수 있어야한다" 이다. 비밀키로부터 공개키를 도출하는 것은 쉽지만, 공개키로부터 비밀키를 찾는 것은 매우 어렵다. - 여기에 해쉬를 넣어서 무결성을 확인할 수 도 있다. - 그렇다면 이러한 공개키 암호가 블록체인에 어떻게 사용될까? - 비..

Block Chain ETC 2022.07.01

블록체인 개념 정리#2

- 일반적으로 블록의 해시값은 해당 블록의 생성일시, 버전, 비츠(bits), 루트해시, 이전 블록의 해시, 그리고 논스(nonce)라고 불리는 임시값 등을 조합한 후 해시로 변환하여 생성한다. 해당 블록의 생성일시, 버전, 난이도, 루트해시와 이전 블록의 해시값은 이미 확정되어 정해진 값을 가지고 있지만, 논스라는 임시값이 달라짐에 따라 해시 연산 결과로 생성되는 블록 해시값도 다양하게 나올 수 있다. - 합의 알고리즘 - PoW, PoS 합의 알고리즘은 많이 들어 봤지만, BFT-variants는 처음 들어보는 합의 알고리즘이었다. PoW는 네트워크를 비동기화 상태에 두어도 합의를 여전히 이끌어낼 수 있다는 장점이 있다. 하지만 연산비용이 너무 비싸다는 점이 있다. PoS는 누구든지 참여할 수는 없다..

Block Chain ETC 2022.06.30

블록체인 개념 정리#1

- 블록체인이란 정보를 블록 단위로 저장하여 저장된 블록을 체인 형태로 묶은 저장 기술이다. - LinkedList와 똑같은 방식으로 구현되있다. 하지만 기억하는 방법다르다. 블록체인에서는 해시함수로 이를 기억한다. - 해시함수 - 해시(Hash) 함수란 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. - 해시 함수는 하나의 데이터에서 단 하나의 해시가 도출된다. - 사용 예로는 URL을 줄여주는 것이 있다. ex) www.bit.ly/A42B5 => 원래 길었던 URL을 해시변환을 통해서 짧게 줄여줌 - SHA-256, Keccak 등의 해시 함수가 있는데 같은함수로 다른 데이터를 해시했을 경우, 다른함수로 같은 데이터를 해시했을 경우 모두 다른 값이 나온다. 하지만 모두 256비트 ..

Block Chain ETC 2022.06.30

Solidity 문법 정리

- 라이센스 : 스마트 컨트랙트에 대한 신뢰를 높이고, 저작권과 같은 문제를 해소하기 위해 코드 최상단에 라이센스를 명시한다. (아래 예시말고도 다양한 라이센스 존재) ex) // SPDX-License-Identifier: MIT - solidity compile version : 특정 컴파일러의 버전을 표기할 때 사용, 0, "Token is not on sale"); // 구매자가 돈이 충분하지 않은 경우 require(price msg.sender) slimeBaseAddress.safeTransferFrom(tokenOwner, msg.sender, _tokenId); // 판매 했으므로 가격 초기화 slimeTokenPrices[_tokenId] = 0; } - 자료형 : (1) bool (2..

Block Chain ETC 2022.06.29

음식 메뉴 정하기 [c++]

// 음식 메뉴 정하기 // N명의 친구들이 M가지 종류음식에 대해 먹을 수 있는지를 나타내는 리스트 friendEdibleList // 모든 친구들이 식사를 하기 위해 최소한으로 만들어야할 음식의 갯수를 정하는 문제 #include #include #define FOR(i, n) for(int i = 0; i > n >> m; // 행 크기 resize friendEdibleList.resize(n + 1); int a; FOR(i, n) { FOR(j, m) { cin >> a; friendEdibleList[i].push_back(a); } } cout

Coding Test ETC 2022.06.29