libbitcoin 라이브러리는 Bitcoin 어플리케이션을 제작하기위한 크로스 플랫폼 C++ 라이브러리입니다.
libbitcoin 라이브러리를 사용하여 Private 키, Public 키, Bitcoin address를 생성해보도록 하겠습니다.
libbitcoin 라이브러리를 설치하기전에 먼저 secp256k1 라이브러리를 설치해야 하니 다음과 같은 순서로 설치를 하도록 하겠습니다.
각 라이브러리의 설치는 해당 github의 내용을 참고로 설치하시면 됩니다.
secp256k1 : https://github.com/libbitcoin/secp256k1
libbitcoin : https://github.com/libbitcoin/libbitcoin
secp256k1 라이브러리 설치
$ git clone https://github.com/libbitcoin/secp256k1 $cd secp256k1 $ ./autogen.sh $ ./configure $ make $ ./tests $ sudo make install # optional |
libbitcoin 라이브러리 설치
$ git clone https://github.com/libbitcoin/libbitcoin $ cd libbitcoin $ ./autogen.sh $ ./configure $ make $ sudo make install $ sudo ldconfig |
만약 위의 자동스크립트로 설치가 되지않으면 다음 순서로 해보시기 바랍니다.
$ g++ version # g++ 버전 확인 # 만약 g++ 버전이 낮다면 업그레이드 $ sudo apt-get install g++-4.8 $ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50 $ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 $ sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-4.8 50 $ sudo apt-get install build-essential autoconf automake libtool pkg-config git $ sudo apt-get install libboost-all-dev $ wget https://raw.githubusercontent.com/libbitcoin/libbitcoin/version3/install.sh $ chmod +x install.sh $ sudo ./install.sh |
정상적으로 설치가 된다면 다음과 같이 확인 가능합니다.
ihpark92@ubuntu:~/work$ ls -la /usr/local/include 합계 48 drwxr-xr-x 3 root root 4096 Mar 2 23:23 . drwxr-xr-x 13 root root 4096 Feb 24 22:32 .. drwxr-xr-x 3 root root 4096 Mar 2 23:23 bitcoin -rw-r--r-- 1 root root 25517 Mar 2 23:17 secp256k1.h -rw-r--r-- 1 root root 4700 Mar 2 23:17 secp256k1_recovery.h |
다음과 같이 소스코드를 작성합니다.
#include <bitcoin/bitcoin.hpp> #include <string> #include <iostream> using namespace bc; int main(void) { data_chunk seed(16); pseudo_random_fill(seed); ec_secret secretKey = bitcoin_hash(seed); std::string hexKey = encode_base16(secretKey); std::cout << "secret key: " << hexKey << std::endl; wallet::ec_private privateKey(secretKey); std::cout << "Private key: " << privateKey.encoded() << std::endl; wallet::ec_public publicKey = privateKey.to_public(); std::cout << "Public Key: " << publicKey.encoded() << std::endl; wallet::payment_address paymentAddress = publicKey.to_payment_address(); std::cout << "Bitcoin address: " << paymentAddress.encoded() << std::endl; return 0; } |
다음과 같이 코드를 컴파일한후에 실행합니다.
$ g++ -std=c++11 -o key key.cpp $(pkg-config --cflags libbitcoin --libs libbitcoin) |
다음과 같이 매번 랜덤한 secret key를 사용하여 Private 키를 생성하고, 이것을 기반으로 Public 키, BItcoin address를 생성합니다.
Private 키는 K 또는 L 접두어를 가지는 WIF 압축형임을 알수 있습니다.
Public 키는 02, 03 접두어를 가지는 압축 공개키임을 알수 있습니다.
그리고 Bitcoin adress는 1로 시작하는것을 볼수 있습니다.
'비트코인 > Libbitcoin 프로그래밍' 카테고리의 다른 글
Libbitcoin 라이브러리를 사용하여 HD 지갑의 마스터키와 개인키/공개키 생성하기 (0) | 2018.03.21 |
---|---|
Libbitcoin 라이브러리를 사용하여 Private 키 포맷변환하기 (0) | 2018.03.21 |
첫번째 Libbitcoin 프로그램 (0) | 2018.03.19 |
Libbitcoin 라이브러리 (0) | 2018.03.19 |
libbitcoin 라이브러리를 사용하여 HD 지갑의 키 생성해보기 (0) | 2018.03.03 |