이더리움 메인넷을 공유한다. 오픈소스 이더리움 지갑
gas: 은행이자의 수수료
일정 조건을 만족해야만 거래가 성립하고, 돈이 오간다. 일정 조건이 만족하기 전에는 돈이 중간에 묶인다.
우리는 코인을 리눅스로 빌드해야 한다. 왜냐하면 윈도우에서 빌드하면 다른 운영체제에서 실행이 되지 않을 수 있기 때문이다.
$ mkdir workspace
를 입력해 workspace 디렉토리를 만든다.
MacOS는 X-code를 설치해준다.
$ cd workspace
를 통해 디렉토리 안으로 들어간다.
$ mkdir helloworld && cd helloworld
을 통해 2줄을 한번에 실행시킨다.
$ code .
을 치면 비주얼스튜디오가 실행될 것이다. 리눅스 환경에서 코드를 치는것이 힘드니 코드작성만 visual studio 로 해주는 것이다.
액세스 허용을 눌러준다.
그리고 신뢰한다고 하면 된다.
그러면 다음과 같이 폴더에 WSL:UBUNTU가 옆에 ㅆ써서 나올것이다.
그리고 hello.cpp라는 파일을 만들면
다음과같은 안내창이 뜬다.
이 두가지를 설치해준다.
터미널도 이렇게 wsl 형식으로 뜬다.
라이트코인을 빌드하기 위해서는 먼저 cpp 을 배워야한다. C++로 코드가 바뀌어있기 때문이다. 우리는 라이트코인을 빌드하는 것이 목표이기 때문에 간단한 C++을 배워보도록 하겠다.
<DataType> <Function Name>(){
}
의 형태로 만들어준다. 무조건 main함수는 실행이 된다.
int main(){
return 0;
}
#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와 같이 작성해도 작동한다.
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
을 이용하여 설치한다.
코드를 빌드해준다. 여러 언어를 컴파일해주는 컴파일러이다. 빌드 내용을 적을 수 있게 함. 그래서 실행할 수 있는 코드로 변환시킴.
컴파일: 코드를 어셈블리어로 바꾸어주는 과정
컴파일러:전처리된 파일을 어셈블리어(기계어)로 변환해주는 역할을 하는 프로그램
출처: https://hwan-shell.tistory.com/185
파일을 디버깅해주는 역할을 한다.
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개 입력해주면 그 값을 더해서 출력해준다.
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을 빌드한 후 실행해본다.
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개의 파일을 빌드해서 만들 수 있다.
소스코드 따로 빌드파일 따로 관리할 수 있다.
기능단위별로 폴더를 나누어서 저장할 수도 있다. 이러한 까다로운 작업을 쉽게 해줄 수 있게 한다.