일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- IP
- ES6 모듈
- Relational Database
- #유니티
- CSS Specificity
- npm
- caverjs
- 블록체인
- Factory 함수
- 2티어 아키텍처
- SQL
- skip ci
- 3티어 아키텍처
- Hybrid Blockchain
- javascript
- Factory Functions
- #1인게임개발
- 텍스트 가운데 정렬
- UTXO
- NoSQL
- CLI
- 명시도
- 안정 정렬
- short-circuiting
- http 모듈
- Private Blockchain
- react
- CSS
- solidity
- 불안정 정렬
- Today
- Total
목록전체 글 (97)
짹뚜 스튜디오

caver-js-ext-kas를 활용해서 클레이튼의 블록, 트랜잭션, 계정 정보들을 응답해주는 API 서버를 만들어보았다. API 서버는 클레이튼 바오밥 네트워크와 연결해서 구현했다. (https://github.com/JJakDDo/klaytnAPI) GitHub - JJakDDo/klaytnAPI Contribute to JJakDDo/klaytnAPI development by creating an account on GitHub. github.com 가장 먼저 해야 할 일은 KAS를 사용하기 위해 API 인증 키를 받아야 한다. https://www.klaytnapi.com/ko/landing/main 여기에 접속하고 가입해서 인증키를 받을 수 있다. 그 다음 프로젝트에 KAS 모듈을 설치해야 한..
블록체인은 중앙 서버가 없고 참여한 개인의 컴퓨터가 서버의 역할을 하는데 이렇게 블록체인 네트워크에 참여한 개개인의 서버를 노드라고 한다. 종류 풀 노드 풀 (full) 노드는 블록체인에 존재하는 모든 거래 기록을 보관하는 노드이다. 풀 노드는 모든 거래 정보를 가지고 있기 때문에 현재 트랜잭션 유효한지 검증이 가능하고, 블록을 생성하고 생성된 블록에 조작이 없는지 검증하고, 가지고 있는 데이터들을 새롭게 연결된 풀 노드에게 전달한다. 라이트 노드 라이트 노드는 풀 노드와는 다르게 모든 데이터를 가지고 있지 않고 거래 기록의 요약본이 있는 블록 헤더들만 가지고 있다. 그래서 저장 공간이 많이 필요하지 않다. 그러나 모든 데이터를 가지고 있지 않기 때문에 트랜잭션을 검증할 수 없기 때문에 SPV (Simp..
일상생활에서 사용하는 금융 기록들은 금융 기관에서 모두 관리하고 있다. 그러나 비트코인 같은 경우에는 블록체인을 활용해서 하나의 기관이 금융 거래 기록을 관리하는 것이 아닌 네트워크에 참여하고 있는 모든 사람들 (노드들)이 관리하게 된다. 모두가 거래 기록을 저장할 수 있을 때 저장되는 기록들에 잘못된 정보가 없는지를 확인하는 작업이 필요하다. 비트코인의 경우에는 PoW (작업 증명)이라는 합의 알고리즘을 사용해서 블록체인에 블록을 연결할 때 노드들의 합의를 받아온다. PoW에서 작업이란 컴퓨터 연산을 뜻하는데 해시값이 특정한 값보다 작아지게 만드는 nonce 값을 찾아내는 일이다. 그리고 이 작업을 가장 빨리한 노드에게 블록을 생성할 권한을 주고 그에 대한 보상을 준다. 이러한 과정을 채굴이라고 한다...
거래에서 가장 중요한 것이 이중 지불이 되지 않아야 한다. A가 백만 원을 가지고 있는데 B와 C 동시에 백만 원을 입금할 수 없어야 한다. 중앙에서 관리를 하면 순차적으로 진행해서 B에게 백만 원을 입금하고 나서 C에게 백만 원을 입금할 때 잔액부족으로 이중 지불을 쉽게 방지할 수 있지만 비트코인과 같은 탈중앙화 시스템에서는 이것을 관리해주는 중앙이 없다. 그래서 비트코인은 이중 지불을 막기 위해서 UTXO를 사용한다. UTXO UTXO는 Unspent Transaction Outputs의 줄임말로 거래 내역 중 아직 소비하지 않은 거래 정보를 얘기한다. 비트코인은 이더리움과는 다르게 계정이나 잔고가 없고 UTXO의 합으로 비트코인을 얼마나 소유하고 있는지를 알 수 있다. UTXO는 각각의 코인들이 저..
Public Blockchain 이름에서 알 수 있듯이 개방형 블록체인으로 누구나 노드가 되어서 블록체인 네트워크에 참여할 수 있다. 그렇기 때문에 참여한 모두가 트랜잭션을 생성하고 모든 거래 내역을 열람할 수 있다. Public Blockchain은 네트워크에 참여한 모든 노드들이 서로 검증을 하기 때문에 신뢰도가 높지만 트랜잭션을 모든 노드들에게 공유하고 검증을 받아야 하기 때문에 처리속도는 느리다. Private Blockchain Public Blockchain과는 반대되는 개념으로 승인받은 사람들만 블록체인 네트워크에 참여할 수 있다. 중앙에서 블록체인 네트워크를 관리하기 때문에 Blockchain의 목적인 탈중앙은 아니지만 Blockchain의 데이터 분산 저장 기술과 보안성은 유지하기 때문에..
블록체인이란 데이터 분산 처리 기술로 네트워크에 참여한 모든 사람들이 동일한 데이터를 저장하고 공유하는 기술이다. 데이터가 블록이라는 형태로 저장되어있고 그러한 블록들이 체인처럼 연결되어있다 해서 블록체인이라고 부른다. 컴퓨터 자료구조 중 Linked List와 유사한 형태이다. 블록체인은 분산 저장한다. 즉, 동일한 데이터를 모든 노드들 (컴퓨터) 이 가지고 있다. 그래서 데이터의 위조 또는 변조가 어렵다. 만약 데이터를 하나의 서버에서만 관리를 한다면 그 하나의 서버만 공격을 해서 데이터를 위조를 할 수 있지만 (단일 실패 지점), 블록체인에서는 모든 사람들이 가지고 있는 데이터들을 모두 위조를 해야 하기 때문에 사실상 불가능하다. 중앙 관리자가 필요하지 않다. 탈중앙화라고도 얘기한다. 데이터를 검증..
소수란 1 보다 큰 정수 중 약수로 1과 자기 자신만을 가지는 정수이다. 그러므로 임의의 정수가 소수인지를 판별하기 위해서는 2부터 n-1까지의 정수로 나누기를 해서 나머지가 0이 나오는지 안 나오는지로 확인할 수 있다. function isPrime(n){ for(let i = 2; i < n; i++){ if(n % 2 === 0){ return false; } } return true; } 하지만 위 방식으로 하면 시간복잡도가 O(n)이 나온다. 다른 접근 방식으로는 약수의 중심을 구하는 공식을 이용하면 된다. 어느 한 정수의 약수들 중에서 두 개의 약수를 곱해서 해당 정수가 나오는 값끼리 한 쌍으로 묶었을 때 하나의 약수는 무조건 해당 정수의 제곱근보다 작은 수이다. 예를 들어 정수 50의 약수는..
Session 기반의 인증은 매 HTTP 요청마다 해당 요청을 한 유저를 확인하기 위해 Session DB를 확인해야 하는 작업을 해줘야 한다. 모든 유저들에 대해 이러한 작업을 매번 하기에는 서버에 부담을 줄 수가 있다. 이러한 단점을 보완하기 위해 나온 것이 토큰 기반의 인증으로 JWT라고 한다. JWT (JSON Web Token) 유저가 ID와 비밀번호로 임의의 웹사이트에 로그인을 시도하면 해당 ID와 비밀번호가 서버로 보내진다. 그리고 서버에서는 ID와 비밀번호를 확인해서 비밀번호가 맞다면 Session과는 다르게 DB에 Session ID를 생성하지 않는다. 대신에 유저의 정보와 Signature 알고리즘을 통해서 Signed 정보를 문자열의 형태로 클라이언트에 보낸다. 여기서 Signed 된..
HTTP의 특징 중 하나는 Stateless (무상태성)이다. 즉 서버에서 하나의 HTTP 요청을 받고 응답을 보내면 서버는 해당 클라이언트에 대한 정보를 가지고 있지 않다. 그래서 HTTP 요청을 할 때마다 클라이언트가 누구인지를 알려줘야 한다. 이러한 방법 중 하나가 Session이다. Session 유저가 ID와 비밀번호로 임의의 웹사이트에 로그인을 시도하면 해당 ID와 비밀번호가 서버로 보내진다. 그리고 서버에서는 ID와 비밀번호를 확인해서 비밀번호가 맞다면 Session DB에 해당 유저를 생성한다. Session DB에는 Session ID도 함께 저장이 된다. 그리고 서버에서 응답을 할 때 Session ID를 쿠키로 보내져서 클라이언트에 저장된다. 다음 HTTP 요청 때 Session ID..
TCP (Transmission Control Protocol) IP의 단점으로는 packet이 제대로 도착했는지 확인할 수 있는 방법이 없다는 것이다. 이러한 단점을 보완하기 위해 TCP가 사용된다. TCP는 packet들이 잘 도착했는지 검증을 해주고 만약 도착하지 않은 packet들이 있다면 다시 요청을 해서 전달받는다. 특징 연결 지향형: 두 컴퓨터가 연결이 된 후에 데이터를 전송한다. 데이터 전달 보증: 데이터 전송이 성공적이면 이에 대한 응답을 보낸다. 만약 목적지에 packet의 일부분이 도착하지 않았다면, 해당 packet들을 다시 요청한다. 순서 보장: packet들이 순서대로 도착하는 것을 보장한다. UDP (User Databram Protocol) IP에 port 번호와 checks..