전체 글 130

[게임 분석] 완다와 거상(Shadow of the Colossus, 2018)

게임 트레일러 완다와 거상(2018) 완다와 거상(2018)은 2005년에 발매된 완다와 거상의 리메이크 작품입니다. 주인공 완다가 모노를 살리기 위해 금지된 땅으로 들어가 16개의 거상을 부수는 내용입니다. [아래 내용은 게임의 스포일러를 포함하고 있습니다.] 고요한 필드 완다와 거상은 기본적으로 맵의 중심부에서 시작하여 거상으로 이동하고, 거상을 쓰러트리는 것을 반복하도록 디자인되었습니다. 이 과정의 상단 부분을 차지하는 거상으로 이동하는 부분에는 플레이어를 방해하는 요소가 거의 존재하지 않습니다. 일반적으로 맵을 자유롭게 이동하도록 만들어진 오픈월드 게임의 경우 각 지역에 다양한 요소들, 예를 들어 적들과 NPC들을 배치하여 플레이어가 필드에서 끊임없이 상호작용 하도록 제작됩니다. 하지만 완다와 거..

[비트코인 구조] 스크립트(Script)와 Opcode, P2PK

미리 알아야 할 내용들 [비트코인 구조] 잠금 스크립트(scriptPubkey)와 해제 스크립트(scriptSig) 기초 미리 알아야 할 내용들 [비트코인 구조] 비트코인 트랜잭션(Transaction) 기초 미리 알면 좋은 내용들 [블록체인 용어] 블록체인(Block Chain) 블록체인이란 발생한 거래들을 블록에 담고 블록들을 연 kwjdnjs.tistory.com 스크립트(Script)와 Opcode, P2PK 비트코인은 스크립트라고 부르는 프로그래밍 언어를 사용합니다. 이 스크립트는 잠금 스크립트와 해제 스크립트를 구성하는 데 사용됩니다. 스크립트는 Opcode라고 부르는 명령어 집합으로 구성되어 있습니다. 따라서 가장 먼저 opcode에 대해서 알아보겠습니다. 1. Opcode Opcode는 o..

[비트코인 구조] UTXO

미리 알아야 할 내용들 [비트코인 구조] 잠금 스크립트(scriptPubkey)와 해제 스크립트(scriptSig) 기초 미리 알아야 할 내용들 [비트코인 구조] 비트코인 트랜잭션(Transaction) 기초 미리 알면 좋은 내용들 [블록체인 용어] 블록체인(Block Chain) 블록체인이란 발생한 거래들을 블록에 담고 블록들을 연 kwjdnjs.tistory.com UTXO UTXO는 Unspent Transaction Outputs의 약자로 아직 사용되지 않은 비트코인 트랜잭션의 출력을 의미합니다. 조금 더 자세하게 살펴보겠습니다. 이전 글에서 트랜잭션의 입력은 이전 트랜잭션의 출력이며, 입력과 출력을 구성하는 과정에서 잠금 스크립트와 해제 스크립트를 사용한다는 내용에 대해 알아봤었습니다. 즉, U..

[비트코인 구조] 잠금 스크립트(scriptPubkey)와 해제 스크립트(scriptSig) 기초

미리 알아야 할 내용들 [비트코인 구조] 비트코인 트랜잭션(Transaction) 기초 미리 알면 좋은 내용들 [블록체인 용어] 블록체인(Block Chain) 블록체인이란 발생한 거래들을 블록에 담고 블록들을 연결하여 나눠가짐으로써 탈중앙화 된 단일 장부를 유지하는 것입니다. 먼저 kwjdnjs.tistory.com [비트코인 기본 구조] 5. 채굴(Mining) 작업증명에는 많은 시간과 비용이 들어갑니다. 따라서 중앙화 되지 않고 분산화된 네트워크에서 이러한 작업을 수행하도록 독려하려면 인센티브가 필요합니다. 작업증명에 성공한 노드에게 kwjdnjs.tistory.com [비트코인 암호학] 4.1 디지털 서명 디지털 서명은 공개키 암호화를 이용하여 전송된 데이터를 증명하는 방법입니다. 예를 들어 A가..

[비트코인 구조] DER 형식 서명(Signature) 생성

미리 알아야 할 내용들 '비트코인/암호학' 카테고리의 글 목록 평범한 대학생의 블록체인 기술 관련 블로그 입니다. kwjdnjs.tistory.com [비트코인 암호학] 4.1 디지털 서명 디지털 서명은 공개키 암호화를 이용하여 전송된 데이터를 증명하는 방법입니다. 예를 들어 A가 B에게 비트코인을 이체하려고 한다면, 먼저 A는 공개된 네트워크를 통해 비트코인이 들어있는 kwjdnjs.tistory.com [비트코인 암호학] 4.2 ECDSA - 1 지금까지 알아봤던 내용들을 정리해보겠습니다. 먼저 타원곡선과 점 덧셈 그리고 유한체 타원곡선과 스칼라 곱셈에 대해 살펴봤습니다. 이후 이 내용들을 토대로 다음과 같이 secp256k1에서 정 kwjdnjs.tistory.com [비트코인 암호학] 4.3 EC..

[비트코인 구조] 개인키(Private key), 공개키(Public key), 주소(Address) 생성

미리 알아야 할 내용들 '비트코인/암호학' 카테고리의 글 목록 평범한 대학생의 블록체인 기술 관련 블로그 입니다. kwjdnjs.tistory.com [비트코인 암호학] 3.1 공개키 암호화 타원곡선을 이용해 디지털 서명을 하고 검증하기 위해서는 공개키(Public key)와 개인키(Private key)가 필요합니다. 공개키와 개인키로 디지털 서명을 하는 방법에 대해 설명하기 전에 먼저 공개키 kwjdnjs.tistory.com [비트코인 암호학] 3.2 공개키와 개인키 지금까지 유한체 타원곡선을 다루면서 다음과 같은 변수들을 정리했었습니다. a와 b는 타원곡선 방정식의 값으로 지금까지 a=0, b=7을 사용했습니다. p는 유한체의 위수입니다. G는 타원곡선 위 kwjdnjs.tistory.com [비..

[비트코인 구조] 인코딩(Encoding) - Base58Check, Bech32

인코딩(Encoding) - Base58Check, Bech32 인코딩(Encoding)은 데이터를 저장할 때 데이터의 양을 줄이기 위해 특별한 규칙에 따라 압축하는 것을 말합니다. 인코딩된 데이터를 불러와 원본으로 변환하는 과정은 디코딩(Decoding)이라고 합니다. 현재 비트코인에서 사용하는 주요 인코딩에는 Base58Check, Bech32가 있습니다. Base58Check Base58Check는 Base58을 비트코인에 사용하기 위해 수정한 방식으로, 숫자와 대문자, 소문자 일부를 사용하는 인코딩 방식입니다. 일반적으로 많이 쓰이는 Base64와는 달리 쉽게 혼동할 수 있는 문자인 0(영)과 O(오), I(아이), l(엘) 등이 제외되었습니다. Bech32 Bech32는 비트코인 네이티브 세그윗..

[비트코인 구조] 비트코인 해시 함수(sha-256, hash256, hash160)

비트코인 해시 함수(sha-256, hash256, hash160) 해시 함수는 입력 데이터를 고정된 길이의 해시값으로 변환하는 함수를 말합니다. 비트코인에서는 기본적인 해시 함수인 sha-256과 이를 응용한 hash256, hash160을 사용하고 있습니다. 비트코인에서 사용하는 해시 함수는 다음과 같은 특징을 가지고 있습니다. 고정된 길이의 출력 같은 입력에 대한 같은 출력 역연산 불가능 해시 함수를 이용하면 어떤 길이의 입력이 들어오더라도 항상 같은 길이의 출력 값을 얻어낼 수 있습니다. 또한 같은 입력값이라면 항상 같은 결괏값을 출력합니다. 예를 들어 'Hello'를 sha-256 함수를 이용해 해시값을 얻어내면 항상 '185f8db32271fe25f561a6fc938b2e264306ec304e..

[비트코인 구조] 빅 엔디안(Big endian)과 리틀 엔디안(Little endian)

빅 엔디안(Big endian)과 리틀 엔디안(Little endian) 엔디안(Endian)은 바이트가 저장되는 순서입니다. 빅 엔디안은 일반적으로 사람이 읽는 순서로, 리틀 엔디안 빅 엔디안의 역순으로 저장합니다. 예를 들어 0xFD1234을 빅 엔디안으로 저장하면 0xFD1234으로 저장하고, 리틀 엔디안으로 저장하면 1바이트(16진수 2자리씩) 역순으로 0x3412FD와 같이 저장하게 됩니다. 빅 엔디안을 읽을 때에는 앞에서부터 순서대로 0xFD1234으로 읽으면 됩니다. 반대로 리틀 엔디안의 경우 뒤에서 부터 0xFD1234으로 읽어야 합니다. 값: 0xFD1234 빅 엔디안: 0xFD1234 리틀 엔디안: 0x3412FD 비트코인에서는 리틀 엔디안과 빅 엔디안이 혼재되어 나타납니다. 따라서 어..

[비트코인 구조] 비트코인 트랜잭션(Transaction) 기초

미리 알면 좋은 내용들 [블록체인 용어] 블록체인(Block Chain) 블록체인이란 발생한 거래들을 블록에 담고 블록들을 연결하여 나눠가짐으로써 탈중앙화 된 단일 장부를 유지하는 것입니다. 먼저 탈중앙화 된 단일 장부에 대해 알아보겠습니다. 오프라인 kwjdnjs.tistory.com [비트코인 암호학] 4.1 디지털 서명 디지털 서명은 공개키 암호화를 이용하여 전송된 데이터를 증명하는 방법입니다. 예를 들어 A가 B에게 비트코인을 이체하려고 한다면, 먼저 A는 공개된 네트워크를 통해 비트코인이 들어있는 kwjdnjs.tistory.com 비트코인 트랜잭션(Transaction) 기초 블록체인에서 블록은 거래인 트랜잭션들을 담고 있습니다. 단순하게 표현하면 다음과 같이 표현할 수 있습니다. 그리고 각각..