전체 글 55

[블록체인] 라이트닝네트워크 -cheating 방지

이전 상태로의 cheating에 대하여 비트코인은 검열이 없기에 누구도 이전 트랜잭션을 publishing하는 것을 막을 수 없다. 이러한 치팅을 막으려면 commitment transaction을 이용해야 한다. 막는 방법은 상대방이 치팅을 하려한다면, 이에 대한 고발을 할 기회를 주는 것 이렇게 치팅을 고발하게 된 피해본 사람은 채널의 모든 balance를 가져오게 된다. 참고로 commitment transaction이란 두 채널 당사자가 각자 보유하고 있는 balance에 대해, 아직 블록체인에 올리지 않은 transaction을 의미한다. 그럼 어떻게 치팅을 막아낼까? commitment transaction은 각 파트너에게 지급되는 timelock delay와 revocation secret라..

블록체인 2023.12.17

[블록체인] 라이트닝 네트워크란?

라이트닝 네트워크란 무엇일까? 기존 비트코인은 즉각적인 페이먼트가 안된다는 단점이 있었고 이를 해소하고자 라이트닝 네트워크가 탄생 라이트닝 네트워크는 비트코인 위에 올라가는 second layer이다. 라이트닝 네트워크는 블록체인 위에서 스마트 컨트랙트로 인해 실행되는 p2p네트워크이다. 블록체인도 p2p 네트워크고, 블록체인만 하고 라이트닝 네트워크는 안 할 수 있다. channel partners: 라이트닝 네트워크에서는 두 노드 사이의 financial한 관계를 채널 파트너라고 한다. payment channel: 라이트닝 네트워크로 연결한 peer끼리의 통로를 payment channel이라고 한다. 두 채널 파트너 사이에는 파트너들이 지불을 하면, balance가 암호학적 프로토콜에 의하여, 재..

블록체인 2023.12.17

[블록체인] 비트코인 메커니즘-난도조절, coinbase트랜잭션,hard fork, soft fork

Determining the difficulty 채굴 난이도는 매 2016블럭마다 다시 설정된다. 참고로 2016블럭은 대략 2주이다. 위는 새로운 난이도를 결정하는 식이다. 최근 2016블럭을 채굴하는 데 적은 시간이 걸렸다면 난도는 올라가며 최근 2016블럭을 채굴하는 데 많은 시간이 걸렸다면 난도는 감소한다. Decentralized Consensus 비트코인에는 중앙권력은 없지만, 각각의 모든 노드는 완전한 레코드라고 신뢰되는 장부에 대한 카피본을 가지고 있다. 블록체인은 중앙 권력에 의하여 만들어 지는 것은 아니지만, 모든 노드에 의하여 만들어진다. 탈중앙화된 합의는 네트워크 전역의 노드에 의하여 독립적으로 발생하느 4가지의 상호 작용으로 발생한다. 모든 노드는 각각의 transaction에 대..

블록체인 2023.12.17

[블록체인] 비트코인-머클트리(Merkle tree)

비트코인에서는 transaction을 저장하기 위해 머클 트리를 사용한다. 머클 트리 즉 머클트리란 위와 같이 트랜잭션을 해쉬한 것들을 합쳐서 해쉬하여, 정보를 저장하는 방법이다. 여기서 최상위 머클트리 루트 해쉬 값으로, 아래를 모두 구할 수 있다는 것이 아니다. 이는 아래 트랜잭션 중 하나를 누가 임의로 수정하면, 공격자가 수정했음을 알아 차려 회복할 수 있게 하는 방법이고, 이를 최상위 루트 값만 들고 있어, 저장하는 정보에 무리가 가지 않도록 하기 위해서 존재한다. HA는 Hash(TxA)를 sha256으로 해쉬한 것, 결과는 256bit이다. 즉 TxA를 해쉬한 값을 한번 더 해쉬한 게 HA이다. HA+HB는 두 스트링을 이어 붙인 것이다. 이를 통해 아래 Tx를 임의로 바꾸면 해시값이 달라지므..

블록체인 2023.12.17

[java] MVC 패턴이란? 좋은 MVC 패턴을 구현하려면?

MVC란 model, view, controller를 의미하는 것 model(domain)이란 데이터베이스에서 정보를 가져오는 것, 더불어 oop에서는 model 내부에서 값을 가지고 값을 처리하는 기능까지 한다. * controller는 model에서 받은 데이터를 가공해 view에게 전달하거나, view에서 받은 데이터를 가공해 model에 전달해준다. view란 controller에서 받은 정보를 사용자에게 보여주는 것. 이와 더불어 service가 존재한다. service 서비스 layer란 어플리케이션의 비즈니스 로직을 말하며, 즉 도메인을 보호하는 레이어 이다. 좋은 MVC 패턴 Model 내부에 Controller와 View에 의존하지 않아야 한다. View는 Model에만 의존해야 하고, ..

java 2023.11.24

public void static main(String args)의 의미

main함수는 public이어야한다 메인함수는 어디서나 접근 가능한 함수여야 한다. 만약 private나 protected라면 그게 불가능하므로 public이다. static static은 앞에 static을 붙여주고 heap은 new 생성자 등으로 만든다. 메인 함수는 gabage collector에 죽으면 프로그램이 망가지니 static으로 설정된다. void 메인함수가 끝나면 프로그램이 종료되기에 return값이 있어서는 안된다. String args[] 메인 함수는 처음으로 실행되는 함수이기에, 외부로부터 값을 받아올 수 있어야 한다. 그래서 외부에서 받아오기 위해 String args[]를 사용하는 것이다. 이 때 배열인 이유는 여러 값을 받아올 수도 있기에

java 2023.11.24

깃허브 사용

자주 사용하는 깃허브 명령어를 정리해봤다.git init폴더를 생성하고 그 폴더 안에서 git init을 하면 이 폴더는 깃저장소가 된다.git clone 사용자명@호스트:/원격/저장소/경로원격 저장소 복사git remote -v원격 저장소 가져왔는 지 확인커밋(commit)Git에서 commit이란, 프로젝트의 현재 상태를 나타내는 체크포인트 또는 스냅샷으로 생각할 수 있다.git status깃으로 현재 작업중인 상태나, 파일 추가 여부를 확인할 수 있다.Staging Area단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장한다.git add 파일명git add를 통해 파일을 staging Area에 넣을 수 있다.예시git add한번에 추가git add hello1.py hello2.pygit co..

GitHub 2023.11.24

[블록체인] 이더리움이란?

이더리움 기존의 비트 코인은 스크립트 언어로만 제한해 둬서 튜링 컴플리트 하지 모하며, smart contract가 존재하지만, 이 또한 매우 제한되어 있었다. 이에 이더리움은 튜링 컴플리트하며, 자유로운 smart contract를 추구하면서 나타났다. 이더리움도 비트코인과 마찬가지로 탈중앙화를 추구한다. 이더리움은 블록체인에 암호화폐와 더불어 거래 기록과 소프트웨어를 저장한다. 분산된 튜링 시스템: 합의에 이르는 네트워크에 의하여 스마트 컨트랙트가 실행된다. 블록체인의 보호 안에서 존재하는 튜링머신: 컨트랙트 상태를 블록체인에 저장하여 누구도 이를 수정, 부인할 수 없게 한다. 이더리움은 범용 컴퓨터(world computer)이다. 상태 수가 무한으로 갈 수 있으며(= state marchine),..

블록체인 2023.11.24

DAO, DTO, VA란?

DTO(Data Transfer Object)의미계층간의 데이터 전송을 위한 객체이고 오직 getter, setter만 존재한다.값의 불변성을 위해 constructor로만 값을 주고, setter를 제거해 값을 바꿀 수 없게 할 수 도 있다.어떠한 비즈니스 로직도 가지면 안된다.model에서 service로 데이터를 보낼때, 값이 변하지 않도록 객체로 감싸서 보내는 것.사용하는 이유도메인 모델을 계층간 전송에 사용하면, 도메인과 뷰가 강하게 연결될 수 있다. 뷰의 요구사항 변경에 의해 도메인 코드 변경은 전체 변경을 야기해 좋지 못하다. 따라서 DTO를 사용하여 결합성을 느슨하게 하는 것.예시여기서 getter만 추가하면 된다!VO(Value Object)도메인에서 한 개 또는 그 이상의 속성들을 묶어..

java 2023.11.03