BlockChain>거래 개념 및 C++ 파일 빌드하기

YU YU·2021년 9월 10일
0

경일_BlockChain

목록 보기
7/24
post-thumbnail

01. 블록체인 거래 개념


01-1. 메타마스크

이더리움 메인넷을 공유한다. 오픈소스 이더리움 지갑

01-2. 메인넷 테스트넷

gas: 은행이자의 수수료

01-3. 스마트 컨트렉트

일정 조건을 만족해야만 거래가 성립하고, 돈이 오간다. 일정 조건이 만족하기 전에는 돈이 중간에 묶인다.

01-4. 거래 과정

01-5. 블록체인 네트워크 구성




02. 리눅스


우리는 코인을 리눅스로 빌드해야 한다. 왜냐하면 윈도우에서 빌드하면 다른 운영체제에서 실행이 되지 않을 수 있기 때문이다.

$ mkdir workspace를 입력해 workspace 디렉토리를 만든다.

MacOS는 X-code를 설치해준다.

$ cd workspace를 통해 디렉토리 안으로 들어간다.
$ mkdir helloworld && cd helloworld을 통해 2줄을 한번에 실행시킨다.
$ code .을 치면 비주얼스튜디오가 실행될 것이다. 리눅스 환경에서 코드를 치는것이 힘드니 코드작성만 visual studio 로 해주는 것이다.


액세스 허용을 눌러준다.
그리고 신뢰한다고 하면 된다.

그러면 다음과 같이 폴더에 WSL:UBUNTU가 옆에 ㅆ써서 나올것이다.

그리고 hello.cpp라는 파일을 만들면
다음과같은 안내창이 뜬다.


이 두가지를 설치해준다.

터미널도 이렇게 wsl 형식으로 뜬다.

03. C++을 활용한 빌드


라이트코인을 빌드하기 위해서는 먼저 cpp 을 배워야한다. C++로 코드가 바뀌어있기 때문이다. 우리는 라이트코인을 빌드하는 것이 목표이기 때문에 간단한 C++을 배워보도록 하겠다.

<DataType> <Function Name>(){
  }

의 형태로 만들어준다. 무조건 main함수는 실행이 된다.

int main(){
  return 0;
}

03-01. hello world 출력하기

#include <iostream>
#include <string>

int main(void){
  std::cout <<"hello world"<<std::endl; 
  return 0;
}
#include <iostream>
using namespace std;
//namespace는 상위 코드를 삭제할 수 있게 함.

int main(void){
    cout << "hello world!" << endl;
    return 0;
}

namespace는 상위 코드를 삭제할 수 있게 한다.

#include <stdio.h>

int main(void){
    printf("hello world!");
    return 0;
}

c와 같이 작성해도 작동한다.

03-03. 파일 빌드하기

cpp 파일을 변환해주는 걸 설치해야 한다.ㅣ
리눅스에서 패키지 다운받는것은 sudo apt-get명령어를 써야한다.
그런데 항상 최신을 쓰기 위해서 sudo apt-get update를 진행하고 쓴다.

$ sudo apt-get install build-essential gdb

$ whereis g++
$ whereis gdb

그러면 위와 같이 경로가 나오는 것을 확인해 볼 수 있다.

MacOS
sudo brew install gcc48
gcc-4.8 --version
을 이용하여 설치한다.

g++

코드를 빌드해준다. 여러 언어를 컴파일해주는 컴파일러이다. 빌드 내용을 적을 수 있게 함. 그래서 실행할 수 있는 코드로 변환시킴.
컴파일: 코드를 어셈블리어로 바꾸어주는 과정
컴파일러:전처리된 파일을 어셈블리어(기계어)로 변환해주는 역할을 하는 프로그램
출처: https://hwan-shell.tistory.com/185

gdb

파일을 디버깅해주는 역할을 한다.
g++ -o hello hello.cpp
-o: 기계어로 바꾸겠다는 것이다.
g++ -o [파일명] [번역할 파일명]을 하게되면 기계어로 작성된 바이너리 파일이 만들어진다.

그 내용을 cat hello로 보게 되면


위와 같이 외계어가 나온다.
./파일명을 입력하면 된다. ./hello를 입력하면 다음과 같이 우리가 만들었던 'hello world' 가 출력이 된다.

#include <iostream>
#include <string>

using namespace std;

int main(){
    int a,b;
    cin>>a>>b; 
    cout<<a+b<<endl;
    return 0;
}

hello.cpp파일을 위와 같이 바꾸어주고, $ g++ -o hello hello.cpp을 입력해서 파일을 만들고 ./hello를 실행하면 아무것도 뜨지 않는데, 숫자를 2개 입력해주면 그 값을 더해서 출력해준다.

03-04. 2개의 파일 빌드하기

ingoo.h라는 파일을 만들고 다음과 같이 입력해준다.

cout을 인식하지 못하는 것 같지만 인식을 하니 괜찮다. 그리고 hello.cpp파일을 다음과같이 바꾸어준다.

#include <iostream>
#include <string>
#include "ingoo.h"
using namespace std;

int main(){
   ingoo();
   int a,b;
   cin>>a>>b; 
   cout<<a+b<<endl;
   return 0;
}

그리고 다시 한번 hello을 빌드한 후 실행해본다.

03-05. 빌드를 유연하게 하기(make)

make 이용하여 빌드를 할 수 있다.

쉘스크립트로 만들수도 있다.
hello.cpp world.cpp ingoo.cpp

build.sh
g++ -o hello hello.cpp
g++ -o world world.cpp
g++ -o ingoo ingoo.cpp

그래서 make 파일을 만들면 변경된 사항만 변환하고 원하는 디렉토리에 파일을 만들어 보낼 수 있다.

빌드를 하게 되면
./helloworld/build 안에 hello world ingoo 3개의 파일을 빌드해서 만들 수 있다.
소스코드 따로 빌드파일 따로 관리할 수 있다.
기능단위별로 폴더를 나누어서 저장할 수도 있다. 이러한 까다로운 작업을 쉽게 해줄 수 있게 한다.

profile
코딩 재밌어요!

0개의 댓글