CS

CS/블록체인

[블록체인] 7. 비트코인 네트워크

비트코인 네트워크는 p2p 네트워크이다.비트코인 네트워크를 구성하는 개체를 '노드' 라고 하며, 이 '노드'는 적절한 하드웨어 + 비트코인 프로그램이다.간단히 말하면 컴퓨터에서 돌아가는 비트코인 프로그램을 노드라고 한다고 보면 된다.그리고 대표적인 비트코인 프로그램이 사카시 나카모토가 만든 '비트코인 코어' 이다.(참고로 지금은 비트코인 코어 프로젝트에서 사카시 나카모토는 빠졌고, 20명도 안되는 개발자 그룹에 의해 유지되고 있다.우리도 다양한 이슈를 제기하는 방식으로 프로젝트에 간접적으로 참여할 수도 있다.) 노드의 종류는 다음과 같다. - Full Node비트코인을 통해서 모든 것을 다 할 수 있는 노드제네시스 블록부터 지금까지 생성된 모든 블록 체인과 트랜잭션 정보를 갖고 있는 노드이다.따라서 Fu..

CS/운영체제

[운영체제] 1. 시스템 콜

시스템 콜시스템 콜은 컴퓨터 프로그램이 운영체제가 제공하는 서비스를 제공 받을 때 사용하는 인터페이스이다. 대부분의 CPU는 커널 모드(kernel mode)와 사용자 모드(user mode)를 갖고 있다.CPU 내부에는 PSW (Program Status Word) 라고 하는 레지스터가 있고, 이 레지스터의 여러가지 비트들 중 하나가 CPU의 모드를 결정한다. CPU가 커널 모드로 동작하게 되면, CPU에 정의된 instruction set 에 있는 모든 명령어를 실행할 수 있게 되고, 하드웨어의 모든 기능을 사용할 수 있게 된다.그리고 운영체제는 커널모드에서 동작한다. 따라서 운영체제는 모든 하드웨어 기능을 사용할 수 있다. 반면 우리가 흔히 사용하는 프로그램들은 사용자 모드에서 동작한다.사용자 모드..

CS/기초데이터베이스

[데이터베이스] 6. 개념적 데이터베이스 설계

ERD를 사용하여 개념적 데이터베이스 설계를 시작해보자.요구사항을 기반으로 개념적 데이터베이스를 설계하다보면 다양한 선택지를 놓고 고민하게 된다. 어떤 개념을 엔티티로 모델링할지, 속성으로 모델링할지 고민할 수 있고,엔티티와 관계 중 어떤 형태로 모델링할지 고민할 수도 있고,관계들을 구분하는데 있어서 이진 관계, 삼진 관계, 집단화 중 어떤 것을 사용할 지 고민할 수도 있다. 또한 ER 모델을 설계할 때는 데이터에 담긴 여러가지 의미(비즈니스 로직 등)를 함께 나타내도록 설계해야 하므로 다양한 제약조건을 걸게 되는데, 내가 어떤 형태로 ERD를 그리냐에 따라 비즈니스 로직에 맞는 제약조건을 걸 수 없게 되기도 한다. 이제 다양한 예시 상황을 보면서 어떤 개념적 데이터베이스 설계를 취할지 고민해보자.  E..

CS/기초데이터베이스

[데이터베이스] 5. 다양한 관계 (동일 엔티티 셋 내 관계, 약개체, ISA 계층, 집단화)

같은 엔티티 집합 속 다른 역할 관계 엔티티가 관계를 맺을 때는 꼭 다른 엔티티 셋에 있는 엔티티끼리 관계를 맺지 않아도 괜찮다.이 그림은 같은 employees 엔티티 셋 안에서 상사와 부하 직원 사이의 보고(reports to) 관계를 나타낸다.이때 '보고 관계' 테이블에는 누가 상사이고 누가 부하직원인지 역할(role)을 명시해야하므로, 두 employees 의 ssn을 각각 상급자의 ssn, 부하직원의 ssn으로 재정의한 어트리뷰트를 갖는다.  약개체 (Weak Entities)약개체는 관계를 맺고 있는 다른 엔티티(소유자 엔티티)의 PK에 의해서만 식별이 가능한 엔티티를 말한다.이때 소유자 엔티티와 약개체는 반드시 1:N 관계를 가지며, 약개체는 그 관계에 대해 전체 참여해야 한다.  이 그림을..

CS/오토마타

[오토마타] 2. Language, Grammar

Language우리가 사용하는 자연어나 프로그래밍 언어에는 공통점이 있지만, 이를 명확하게 규정하는 것이 쉽지 않다.따라서 우리가 사용하는 언어를 더 쉽고 엄밀하게 다루기 위해서, 언어를 수학을 통해 추상화 해보려고 한다.그리고 이렇게 추상화된 언어를 Formal Language 라고 한다. alphabet 알파벳 ∑ = symbols 로 구성된 공집합이 아닌 유한집합 ∑ = {a, b} => 이 알파벳을 사용하여 만드는 언어는 a, b 로만 구성될 수 있다.∑ = {0, 1} => 이 알파벳을 사용하여 만드는 언어는 0, 1 로만 구성될 수 있다. String유한한 길이를 갖는 symbols의 나열 (무한히 나열한 것은 아니다.)위 예시에서의 알파벳을 사용하여 문자열을 구성한다면 다음과 같은 문자열을 ..

CS/오토마타

[오토마타] 1. 기본적인 수학적인 지식

오토마타를 공부할 때는 집합, 그래프, 증명 기법과 관련된 기본적인 이산 수학 지식이 필요하다.관련된 수학 지식을 가볍게 정리하는 것으로 정리를 시작해본다. (정리 예정.. 사실 정리하다가 브라우저가 갑자기 꺼져서 날아감 ㅠㅠ)

CS/블록체인

[블록체인] 6. Proof-of-Work (Consensus Protocol & Native Currency)

비잔틴 장군 문제 (Byzantine Generals Problem)비잔틴 장군 문제는 분산 시스템을 공부할 때 나오는 유명한 문제로, 1980년에 발표된 람포트라는 컴퓨터 과학자의 논문에서 처음 소개되었다. 그림과 같이 여러 장군들이 하나의 성을 점령하기 위해 일제히 공격을 하려고 한다.그리고 각각의 장군들은 메신저를 보내 메세지를 전달하는 방식으로 통신해야 한다.(현대로 치면 네트워크를 통해서 메세지를 전달하는 것과 같다. 속도는 훨씬 느리겠지만..) 그런데 이 장군들 사이에 스파이가 있다고 해보자.안 그래도 실시간으로 동시에 공격하려면 적절하게 의견을 합의해야하는데, 스파이까지 고려하면서 스파이가 아닌 장군들이 같은 의견을 공유하는 것은 쉽지 않을 것이다.비잔틴 장군 문제는 스파이를 제외하고 정직한..

CS/기초데이터베이스

[데이터베이스] 4. Key Constraints, Participation Constraints

이번 글에서는 두 엔티티가 맺는 관계에 걸 수 있는 다양한 제약조건에 대해 정리해본다. Key Constraints키 제약조건은 다른 엔티티와의 관계에 참여함에 있어서 최대 하나의 엔티티와만 관계를 맺을 수 있음을 나타내는 제약조건이다.즉, 지금 현재 엔티티의 키가 다른 엔티티의 키와 관계를 맺을 때 하나의 엔티티하고만 관계를 맺을 수 있다는 것이다.키 제약조건은 관계를 그을 때 화살표로 나타냄으로써 명시할 수 있다.   그림과 같은 관게를 보자.그림은 직원이 부서를 관리하는 관계를 나타내고 있다.이때 부서는 Manage 라는 관계에 대해 키 제약조건이 걸려있다. 이는 부서가 Manage 관계에 참여함에 있어서 최대 1개의 엔티티하고만 Manage 관계를 맺는다는 것을 의미한다.자연어로 표현한다면, 부서..

CS/블록체인

[블록체인] 5. 트랜잭션 포맷

비트코인의 트랜잭션은 하나 이상의 input 과 하나 이상의 output 으로 구성되어있다.비트코인 인풋은 이전 트랜잭션의 아웃풋으로부터 비트코인을 가져온다는 의미이다. 전통적인 은행 시스템에서 돈을 보내는 과정을 생각해보자.내가 국민은행 계좌에 10만원을 갖고 있을 때, 친구의 카카오뱅크 계좌로 5만원을 보낸다고 하면,나는 국민은행 계좌에 로그인해서 국민은행 서버에게 카카오뱅크 계좌로 5만원을 보내라는 트랜잭션을 지시하면 된다.그러면 은행 서버는 이 트랜잭션을 지시하는 사람이 정말 그 계좌의 주인이 맞는지 확인할 것이다. (otp 등 인증수단)그리고 이 확인 절차가 통과되었을 때, 계좌의 잔액을 확인한 뒤, 잔액이 충분하다면 돈이 실제로 이동한다. 전통적인 은행 시스템에서 돈을 보낼 때는, 오로지 현재..

CS/블록체인

[블록체인] 4. 디지털 서명과 비트코인 주소

디지털 서명비트코인에서는 비대칭키 암호화를 이용해 디지털 서명을 남긴다.비대칭키는 공개키와 비밀키라는 2가지 키를 사용한다.이 두가지 키는 랜넘 넘버로부터 만들 수 있다. (우리는 암호학을 공부하는 게 아니므로 구체적인 방법은 넘어가자)이때 비대칭키 암호화 방식은 지난 글에서도 정리한 적 있듯이, 두 가지 용도로 사용될 수 있다.  첫 번째는 공개키로 메세지를 암호화 한 뒤, 비밀키로 이를 해독하는 것이다.만약 앨리스가 밥에게 밥만 알아볼 수 있는 내용으로 암호문을 보내고자 한다면, 밥이 제공하는 공개키로 메세지를 암호화해서 밥에게 보내면 된다. 그 메세지는 밥이 가진 비밀키로만 해독할 수 있기 때문이다.  두 번째는 비밀키로 데이터에 서명을 남긴 뒤, 공개키로 이를 검증하는 것이다.비트코인에서는 이 용..

에버듀
'CS' 카테고리의 글 목록 (6 Page)