프로그래밍/블록체인 5

비트코인 잠금 / 해제 스크립트관련 정리

잠금 스크립트(scriptpubey)와 해제스크립트(scriptsig)를 구글에 검색하면 해시위키 링크가 나오고 아래와 같이 정의 되어 있다. 잠금 스크립트는 누군가에게 비트코인을 줄 때 사용하고 해제 스크립트는 내가 받은 비트코인을 소비할 때 사용한다. 비트코인을 주면 주는 것이고, 줬으면 그냥 받는 것이지, 그것을 소비할때 해제스크립트를 사용한다는 말이 무슨 말일까? 이를 이해하려면 먼저, 블록체인 네트워크 특성에 대해 이해해야 한다. 블록체인 네트워크에서는 누군가에게 돈을 보낼때에는, 송금 내용이 담긴 트랙잭션을 네트워크상에 전파함으로서 진행이 된다. 누군가의 계좌로 돈을 입금해주고 잔액관리를 하는 은행계좌와 같이 생각하면 안되고, 비트코인 네트워크상에 송신자:A, 수신자:B, 금액:XX. 등의 정..

암호화 방식 총정리(feat.비트코인)

흔히 알려져 있는 암호화 방식을 총정리 해보고자 한다. 1.먼저 암호화방식은 양방향과 단방향으로 나뉠 수 있다. 양방향이라는 것은 한쪽방향에서는 암호화를 하고 한쪽방향에서는 복호화를 하는 방식을 말한다. 단방향이라는 것은 복호화는 없이 암호화만 진행하는 것을 말한다. 1)단방향에서 어떻게 복호화가 없을수가 있지? 라고 생각할 수 있으나, 단방향의 방식은 단순하다. 예를들어) 사용자가 회원가입을 할때 비밀번호를 저장함에 있어 특정 암호화키를 사용하여 암호화된 hash 값으로 데이터베이스 서버에 저장을 한다. 그 이후 로그인을 할 때마다 해당 값을 복호화하여 비교 하는 것이 아니라, 로그인 할 때도 입력값을 같은 암호화키를 통해 hash로 만든뒤, 데이터베이스에 있는 hash와 비교하는 절차를 거친다. 이렇..

이더리움 노드와 EVM

이더리움 EVM이란 dAPP(스마트컨트랙트)이 구동되는 이더리움 내 가상머신(Virtual Machine)이다. 이더리움블록체인상에 배포되는 프로그램에서 발생하는 로직들을 처리하고 계산하는 계산기(cpu/computer) 역할을 한다. 또한 JAVA의 JVM에 대해 아는 사람이라면 JVM처럼, EVM은 솔리디티라는 언어를 컴파일하면 생성되는 바이트코드를 운영체제와 상관없이 이더리움 네트워크 내에서 실행하도록 하는 역할을 한다. 보통 처음 블록체인을 공부하기 시작하면, 비트코인의 아키텍처에 대한 자료가 많다. 그런데, 비트코인에는 이 가상머신이라는 개념이 별도로 존재하지는 않는다. 스마트컨트랙트 같은 하나의 프로그램이 구동되는 방식이 아니라, 돈을 주고 받는 트랜잭션만 처리하고 각 노드들이 그것을 기록하는..

이더리움 dapp 개발환경 구성

이더리움 dapp이란 이더리움가상머신(EVM)상에서 돌아가는 애플리케이션을 의미한다. 이를 개발하기 위한 개발환경구성은 사실 2가지만 진행하면 된다. solidity언어의 프레임워크인 truffle설치와 그것을 테스트 해볼 수 있는, 로컬블록체인의 EVM환경인 가나슈 설치. 1.node.js 설치 -이더리움의 dapp의 개발언어는 통상 solidity를 사용한다. solidity는 javascript 기반 언어로서, 이를 사용하기 위한 패키지 및 개발환경 구성을 위해 node.js를 설치한다. node.js설치시 npm(Node Packaged Manager-자바에 메이븐과 같은 라이브러리 관리툴로 보면된다.)이 자동적으로 추가 설치되는데, 이 패키지 툴을 통해 truffle도 설치할 예정. -truff..

이더리움 노드 구성 및 실행 방법

이더리움 블록체인은 수많은 노드들로 구성되어있다. 이 글에서는 내 PC에서 그 노드 중 하나를 구성하는 방법을 설명하고, 계정생성, 채굴 같은 해당 노드의 인스턴스를 컨트롤 할 수 있는 클라이언트의 구성방식을 설명하고자 한다. 1.먼저 구글에 geth download 검색을 통해 geth를 설치하자. geth는 이더리움재단에서 제공하는 클라이언트 이자, 노드실행을 위한 명령 CLI(명령도구) 라고 보면 된다. 설치된 geth경로를 환경변수에서 잡아주고, cmd창을 켜 geth라고 쳐보자. geth를 실행시킴과 동시에 노드가 생성되고, 블록동기화가 시작된다. 이더리움의 수많은 노드들이 공유하고 있는 블록데이터들을 내려받기 시작하는 것이다. geth 실행과 동시에 내 PC에 이더리움 노드가 만들어진 것이다...