//block.js const { Console } = require('console') const fs = require('fs') const merkle = require('merkle') class Block{ constructor(header, body){ this.header = header this.body = body } } class BlockHeader { constructor (version, previousHash, timestamp, merkleRoot, bit, nonce){ this.version = version this.previousHash = previousHash this.timestamp = timestamp this.merkleRoot = merkleRoot this..
PoS(Proof of Stake) : 지분(Stake) 증명 개념과 배경 지분증명은 작업이 아닌 더 많은 Stake(지분, 자산, 해당 코인)을 가지고 있을 수록 그에 비례하여 블록에 대한 권한이 더 많이 부여되는 것입니다. 왜 많은 개발자들이 PoW에서 PoS를 선호하게 되었냐면, 채굴난이도가 날이 갈수록 기하급수로 올라가고 고사양 장비, 전력소모, 지속적인 해시파워를 유지해야 하는데 이것에 단가가 점점 높아져 개인 채굴자들이 채굴을 할 수 없게 되었기 때문에 노드들이 PoS에 관심을 두게 되었습니다. 장단점 장점 해시파워가 많이 필요하지 않아 경제적이며 친환경적 블록 생산자의 탈중앙화로 안정성 확보 블록생성에 Stake를 담보로 잡아야 하기 때문에 덤핑 방지 단점 모두 이자를 받을 생각으로만 코인을..
VSCode의 터미널 default는 powershell로 설정되어 있습니다. (ctrl + ` ) 명령어로 터미널을 열수 있으며, 열리지 않으면 우측 상단에 Terminal > New Terminal 로 열 수 있습니다. Settings.json에서 직접 편집해서 변경하기 좌측 상단 또는 하단에 설정을 찾아 열어줍니다. 아무 거나 상관 없으니 settings.json을 찾아서 열어줍니다. 위와 같이 "terminal.integrated.shell.windows": "cmd.exe" 를 추가해줍니다.
이진트리 자식 노드가 최대 2개인 트리 순회 방법 preorder : 루트 - 왼쪽 - 오른쪽 inorder : 왼쪽 - 루트 - 오른쪽 postorder : 왼쪽 - 오른쪽 - 루트 배열로 구현 한다면 자식의 인덱스는 /2, 부모의 인덱스는 *2 이다. 어디에서 사용될까? 1. 효율적인 검색과 정렬을 위해 사용된다. 이진 탐색 트리와 이진 힙 구현에 사용한다. 이진 탐색 트리에서 탐색의 시간 복잡도는 logN이다. 2. 데이터를 분기 구조로 표현할 때 사용한다. 해시트리(머클트리) 데이터의 간편하고 확실한 인증을 위해 사용한다. 아래의 노드들을 해싱하면서 합쳐서 부모 노드를 만들어 가면서 루트 노드인 하나의 데이터로 만들어 주는 것이다. 루트 노드의 해시 값을 알면 데이터가 바꼈는지 검증할 수 있다. ..
머클 트리란 무엇인가요? 머클 트리(Merkle tree)의 개념은 80년대 초 공개 키 암호방식 연구 결과로 잘 알려진 컴퓨터 과학자 랄프 머클(Ralph Merkle)이 제안했습니다. 머클 트리는 일련의 데이터 온전성을 효과적으로 검증하는 데 사용되는 구조입니다. 이는 특별히 피어 투 피어 네트워크 맥락에서 참가자가 정보를 공유하고 독립적으로 검증해야 하는 경우와 관련됩니다. 머클 트리 구조의 핵심에는 해시 함수가 있습니다. 머클 트리는 어떻게 작동하나요? 여러분이 커다란 파일을 다운로드하고 싶다고 해보겠습니다. 여러분은 보통 오픈 소스 소프트웨어를 통해 다운로드하고자 하는 파일의 해시가 개발자에 의해 공개된 것과 일치하는지 확인할 것입니다. 두 해시가 일치한다면 여러분은 컴퓨터에 존재하는 파일이 개..
Pow(Proof of Work) - 작업 증명 장점 : 답을 찾아낸 노드(개인)가 이익을 가져가는 구조 모든 노드들이 서로 부정행위가 방지되도록 경계하는 구조로 탈중앙화가 가능. 최초의 제안된 비트코인의 합의 알고리즘으로 해쉬(Hash)함수를 통해서 블록체인을 형성하고, 임의로 조작하기 힘든 강력한 보안성을 확보. 단점 : 조건을 만족하는 답(해쉬 값)을 찾기 위해 맏개한 컴퓨팅 파워가 필요해 많은 전력, 에너지가 낭비됨. 트랜잭션이 완료되기까지 많은 시간이 걸리고 느리다. 관련 블록체인 : 비트코인, 이더리움, IOTA, 라이트코인, 비트코인캐시, 비트코인골드, 모네로 문제(특정 조건을 만족하는 해쉬값 찾기 특정 길이 특정 해쉬값 이하의 해쉬값 찾기)를 주고, 조건을 만족하는 답을 찾아낸 노드에게 보..
구글링을 아무리 하여도 내가 원하는 폰트 변경 글이 하나도 없다... 근데 사람이 간절하면 이뤄진다고 하던가 어떻게 하다보니 스스로 찾게 되어 이렇게 공유하려 합니다. 나같은 사람은 어디에나 있고 검색을 하려고 하기 때문에.. 사건의 발달은 이렇습니다. 알파벳 소문자 ( l )과 vertical bar( | )이 구별이 되지 않아서 오타도 그렇고 가독성부분에서도 너무 날 괴롭게 해서 바꾸고 싶었습니다. 그래서 이것저것 눌러보다 보니 발견 저 위에 주황색 이미티콘 같은 걸 누르면 속성이 뜹니다. 코딩 폰트로 으뜸이라 불리는 consolas가 있습니다. 저거로 바꿉시다. 드디어 구별이 되네요 다들 그나마 덜 고통 받는 코딩을 합시다 화이팅!
먼저 달력 코딩에 앞서 선구자들이 우매한 우리들을 위해 만들어둔 명령어들을 살펴보겠습니다. 1. $cal 시스템에 설정된 달력을 출력하는 명령어 옵션 없이 실행시키면 현재 시스템 날짜로 기록된 달(month)을 출력함 $ cal [옵션] [[month] year] 옵션 설명 -j 1월 1일부터 날짜를 계산하여 출력 -y 올해의 달력을 출력 2. date 시스템의 날짜오 시간을 표시하거나 변경하는 명령어 $ date [옵션] [MMDDhhmm[CC][YY][.SS] or $ date [옵션] [+FORMAT] 옵션 설명 -s 시간 설정 순서 'hh:mm:ss' -y 올해 달력 출력 3. clear 터미널 Display에 표시된 내용들을 지우는 명령어 $ clear 4. tty 현재 사용하고 있는 단말기 장..