2022/10 15

[Blockchain] 블록체인 확장성 이슈 관련 영상 요약

아래 링크의 영상에서 블록체인의 확장성과 문제점에 대해 이야기한다. 긴 영상이 아니라서 가볍게 볼 수 있다. https://www.youtube.com/watch?v=8uF7RVF2osk https://www.youtube.com/watch?v=4CdO0olVfAA 첫번째 영상 간략한 요약: 블록 사이즈에 제한이 있다. 사이즈에 대한 공격을 피하기 위해 그 제한이 모든 블록에 적용되었다. 1MB을 넘길 수 없다. 그렇다고 해서 또 블록 사이즈를 늘리면 storage에 저장하게 될 체인의 사이즈가 상당히 커진다. 사이즈를 늘리려면 하드포크해야한다. 그리고 작은 커피값 계산까지 모두 블록에 넣어야하는지에 대한 논의도 있다. 라이트닝 네트워크에서는 이 문제를 해결한다. 두번째 영상의 간략한 요약: 투명성으로 ..

블록체인 2022.10.31

[Blockchain] Base64 인코딩과 디코딩

블록체인 관련 예제 혹은 암복호화 예제를 살펴보면 Base64인코딩과 디코딩을 진행하는 예제가 상당히 많다. Base64 인코딩과 디코딩이 어떤 개념인지에 대해서 살펴보도록 하자. 인코딩은 주로 정보의 형태, 형식을 표준화하거나, 보안, 속도, 저장 공간 절약을 위해서 다른 형태로 바꾸는 처리 방식을 말한다고 보면 된다. 아주 간단하게 말하자면 Base64 인코딩이란 Binary Data를 Text로 바꿔주는 인코딩 방식이다. Binary Data를 Character set 에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 하나의 문자열로 바꿔준다. 방식은 꽤나 간단한데 Binary Data 를 6비트씩 자른 뒤에 6비트에 해당하는 문자를 Base64 전용 색인표에서 찾아서 그것으로 바꾸어준..

블록체인 2022.10.31

[Git] git local default branch 변경과 remote default branch 변경

아래와 같은 명령어를 입력한다. git config --global init.defaultBranch 이후에 아래 명령어를 통해 바뀐 default branch name을 확인할 수 있다. git config --global init.defaultBranch 아래와 같이 보여질 것이다. 참고로 원격에 있는 github 에서도 default branch 를 변경할 수 있다. 굳이 하지 않긴 하는데 방법은 아래와 같다. settings -> 좌측 메뉴에서 branchs 선택 -> Default branch 에서 switch to another branch 선택 -> 변경

[Redis] Windows에서 wsl2에 Docker와 Redis를 설치해보자.

최근에 Windows 에서 Docker와 Redis 를 설치해서 실습할 일이 생겼는데 Windows에서 특히나 Docker도 지원이 안되고 Redis도 지원이 안되서 굳이 wsl2를 설치해주고 이것 저것 설정할 일이 많았다. 아래 블로그에서 많은 도움을 받았고 에러없고 천천히 따라하기만 하면 된다. windows 에서 wsl2 세팅하기 https://www.44bits.io/ko/post/wsl2-install-and-basic-usage windows 에서 docker 설치 https://www.lainyzine.com/ko/article/a-complete-guide-to-how-to-install-docker-desktop-on-windows-10/ wsl위에 redis 설치하기 https://de..

Database/Redis 2022.10.30

[Blockchain] [작성 중...] Bitcoin: A Peer-to-Peer Electronic Cash System - by Satoshi Nakamoto 의 번역 및 정리

비트코인 백서를 읽고 간단한 번역을 해보려고 한다. 블록체인의 워낙 근본적인 내용을 담고 있기 때문에 꼭 한번은 읽어봐야하는 논문이다. Bitcoin: A Peer-to-Peer Electronic Cash System Satochi Nakamoto satoshi@gmx.com www.bitcoin.org Abstract. 진정 순수한 의미에서의 peer 2 peer 형태의 전자 화폐는 금융 기관의 개입없이 타인에게 전송될 수 있다. 전자서명이 그 해결법 중 일부를 제시한다. 그러나 이중지불을 막기 위해서 제 3자의 개입이 필요하게 된다면 이 또한 우리가 원했던 주요한 이점이 사라지게 된다. 그래서 우리는 peer 2 peer network를 활용하여 이중지불의 해결방법을 제시하고자 한다. 네트워크는 해..

블록체인 2022.10.29

[Blockchain] 블록체인과 P2P네트워크 그리고 분산 시스템

오늘 여유가 생겨서 블록체인 관련 글을 몇 가지 읽어봤는데 굉장히 잘 설명된 글이 있어서 블로그에 소개하고자 한다. 간단하게 알아볼 수 있는 좋은 내용으로 블록체인에서의 P2P 네트워크에 대해서 간략하게 알아보도록 하겠다. 참고로 영문을 읽으면서 옮겨 적어서 조금은 문맥이 딱딱하게 느껴질 수도 있다. 우선 P2P 의 개념에 대해서 알아보자. (첫번째 링크 참고) 최근의 client-server의 구조는 웹사이트의 페이지와 데이터베이스, 미디어 등을 저장하는 서버가 있는 구성이다. 그리고 클라이언트는 이에 대한 access 를 요청하는 형태로 이루어진다. 분산화된 P2P 시스템은 좀 더 커뮤니티 중심적인 면이 크다. 이 모델에서는 서버는 없고 모든 요소가 하나의 작은 서버라고 볼 수 있다. 모든 노드들이 ..

블록체인 2022.10.29

[Java] Method Reference 사용법

Method reference 라는 기능이 있다. 알고보면 원래 눈에 익은 기능인데 그 이름이 Method Reference 라고 불리는지 몰랐을 뿐이다. 아래와 같이 표현할 수 있는 것을 Method Reference 라고 한다. 메소드 레퍼런스는 아래의 세가지 종류가 있다고 한다. 1. static 메소드 레퍼런스 2. instance 메소드 레퍼런스 3. Constructor 메소드 레퍼런스 메소드 레퍼런스는 ClassName::MethodName 형식으로 입력하면 된다. 메소드를 호출하는 것이지만 괄호가 생략되는 것이다. 그래서 사용하기 전에 메소드의 인자와 리턴 타입을 알고 있어야 한다고 한다. 또한 주로 람다실을 작성할때 많이 사용한다고 한다. static 메소드 레퍼런스는 역시 static ..

Java 2022.10.28

[Java] JIT 컴파일러란? (Just in time compiler)

Java에서 JIT 컴파일러라는 단어를 들어보았을 것이다. 들어보긴 했는데 시간이 지나면서 기억하고 있던 개념이 맞는지 희미해져서 이참에 내용 정리를 해보려고 한다. 기존 컴퓨터 프로그램을 만드는 방법은 두 가지가 있는데 그게 바로 인터프리트 방식과 정적 컴파일 방식이다. 인터프리트 방식은 실행 중에 언어를 읽으면서 대응되는 기계어 코드를 실행하는 것이고 정적 컴파일은 실행하기 전에 이미 프로그램 코드를 기계어로 번역을 마쳐놓는 방식이다. 우선 Just in time Compiler 라는 뜻이고 위에서 언급한 두 가지 방식을 혼합한 방식이라고 생각하면 된다. 실행 시점에 인터프리트 방식으로 기계어 코드를 생성하는데 그 코드를 캐싱해서 같은 함수가 여러 번 불릴 때 매번 기계어 코드를 생성하는 것을 방지한..

Java 2022.10.28

[Blockchain] MerkleTree 코드 분석 및 구현 with Java

최근 개인 프로젝트를 진행하면서 Merkle Tree를 직접 구현해서 사용할 일이 생겼다. 파일 공유 서비스를 만들고 있는데 기존에 있었던 Merkle Tree 의 개념은 대용량 파일을 전송할때 응용해볼까 생각하고 있고 그 외에 개인적으로 MerkleTree 개념 자체를 새롭게 응용해서 FileTree라는걸 만들어볼까 생각하고 있다. 우선 개념부터 살펴보자. Merkle Tree는 일종의 해쉬 트리라고도 말할 수 있는데 개념이 워낙 간단해서 그냥 각 트리의 노드에 Hash값을 저장하는데 left와 right 자식의 Hash값을 더하여 Hash한 값을 그 부모가 다시 갖고 있는 구조이다. 즉 이렇게 거슬러 올라가면 root에 가서는 한개의 Hash 값이 나올 것이고 이 값은 leaf부터 hashing을 하..

블록체인 2022.10.27

[Java] 함수형 인터페이스

함수형 인터페이스는 오직 1개의 추상 메소드를 갖는 인터페이스를 말한다. Java8 부터 인터페이스가 구현체는 물론 Default Method 까지 포함할 수 있다고 한다. 그런데 이러한 요소들이 얼마나 있는지와는 관계없이 추상 메서드가 딱 하나 있다면 그걸 함수형 인터페이스라고 부른다고 한다. @FunctionalInterface 어노테이션을 사용해서 조건에 맞는지 검사할 수 있다. 또한 Java에서 기본적으로 제공하는 Functional Interface가 있다고 한다. 사실 실제로 Functional Interface 를 직접 만들어서 사용하는 경우는 드물고 이미 만들어져있는걸 주로 사용한다고 한다. 어디선가 한번쯤은 들어밨을 법한 Functional Interface들은 아래와 같다. 1. Pre..

Java 2022.10.24
반응형