bitcoinj 로 내가 사용할 비트코인 지갑을 만들어보자 (2) - bitcoinj-dev
오늘은 테스트넷에서 사용하는 비트코인 지갑을 만들어 보겠습니다.
#1.Eclipse를 실행합니다.
만들어진 bitcoin-test 프로젝트에서 새로운 자바 class 파일을 생성합니다.
#2. 지갑을 만들어 봅니다.
#2.1. 테스트넷에 접속하는 NetworkParameters 메소드를 만듭니다.
public NetworkParameters getTestNetParam() {
return MainNetParams.fromID(MainNetParams.ID_TESTNET);
}
MainNetParams.ID_TESTNET 은 비트코인 테스트넷에 접속하도록 해줍니다.
#2.2. 지갑을 초기화하는 메소드를 만듭니다.
public Wallet initialWallet(NetworkParameters params) {
return new Wallet(params);
}
Wallet 객체를 생성합니다. Wallet 객체는 NetworkParameters 를 인수로 받아들입니다.
지갑은 seed로 부터 생성할 수 있습니다. 여기서는 NetworkParameters 로 만듭니다.
이제 지갑 주소와 관련된 정보를 만들어 봅니다.
#2.3. 지갑 주소 생성 및 관련된 정보 만들기
public Map< String, String> processWallet(Wallet wallet) {
HashMap< String, String> map = new HashMap< String, String>();
DeterministicSeed seed = wallet.getActiveKeyChain().getSeed();
seed.setCreationTimeSeconds(System.currentTimeMillis());
String creationtime = Utils.dateTimeFormat(seed.getCreationTimeSeconds());
String seedHex = seed.toHexString();
List< String> mnemonics = seed.getMnemonicCode();
String address = wallet.currentReceiveAddress().toBase58();
String balance = wallet.getBalance().getValue()+" BTC";
map.put("Address", address);
map.put("Balance", balance );
map.put("Seed", seedHex);
map.put("Creationtime", creationtime);
map.put("Mnemonics", Utils.join(mnemonics));
return map;
}
지갑 정보 및 관련 정보를 저장하기 위한 HashMap 객체를 생성합니다.
그리고 wallet으로 부터 Seed를 가져옵니다.
DeterministicSeed seed = wallet.getActiveKeyChain().getSeed();
Seed로 부터 Seed 값, 생성 시간, 니모닉 정보를 읽어 들여 String 변수에 할당합니다.
String creationtime = Utils.dateTimeFormat(seed.getCreationTimeSeconds()); String seedHex = seed.toHexString(); List<String> mnemonics = seed.getMnemonicCode();
지갑 주소와 지갑의 잔고는 Wallet으로 부터 읽어들입니다.
String address = wallet.currentReceiveAddress().toBase58(); String balance = wallet.getBalance().getValue()+" BTC";
지갑 주소는 Base58 형식으로 읽어들입니다.
잔고는 Coin의 현재 잔고입니다. 잔고는 테스트넷에서 승인이 결과 값입니다.
현재 전송 중인 Coin의 잔고는 보이지 않습니다.
읽어들인 모든 값을 HashMap에 저장합니다.
map.put("Address", address); map.put("Balance", balance ); map.put("Seed", seedHex); map.put("Creationtime", creationtime); map.put("Mnemonics", Utils.join(mnemonics));
#2.4 main 메소드에서 화면으로 출력합니다.
public static void main(String[] args) {
try {
MyWallet myWallet = new MyWallet();
Wallet wallet = myWallet.initialWallet(myWallet.getTestNetParam());
Map<String, String> map = myWallet.processWallet(wallet);
System.out.println("Address : \t" + map.get("Address"));
System.out.println("Balance : \t" + map.get("Balance"));
System.out.println("Seed : \t" + map.get("Seed"));
System.out.println("Creationtime : \t" + map.get("Creationtime"));
System.out.println("Mnemonics : \t" + map.get("Mnemonics"));
}
catch (Exception ex) {
ex.printStackTrace();
}
}
#3. 실행 결과 보기
Eclipse에서 완성된 프로그램 소스를 저장한 후에, 실행을 합니다.(Ctrl + F11)
화면에 주소, 잔고, 시드, 생성 시간, 그리고 니모닉이 출력됩니다.
- 다음에는 비트코인 HD 지갑을 사용하는 방법에 대해서 살펴보겠습니다.
오 능력자십니다.
감사합니다. 즐거운 하루 되세요.