bitcoinj 로 내가 사용할 비트코인 지갑을 만들어보자 (2) - bitcoinj-dev

in kr •  6 years ago  (edited)

오늘은 테스트넷에서 사용하는 비트코인 지갑을 만들어 보겠습니다.

#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 지갑을 사용하는 방법에 대해서 살펴보겠습니다.
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

오 능력자십니다.

감사합니다. 즐거운 하루 되세요.