@Override public BitAddress getReceiveAddress() { return currentAddress(RECEIVE_FUNDS); }
@Override public BitAddress getChangeAddress() { return currentAddress(CHANGE); }
public BitAddress getRefundAddress() { return currentAddress(REFUND); }
public BitAddress getAddress(SimpleHDKeyChain.KeyPurpose purpose, boolean isManualAddressManagement) { BitAddress receiveAddress = null; if (isManualAddressManagement) { receiveAddress = getLastUsedAddress(purpose); } if (receiveAddress == null) { receiveAddress = currentAddress(purpose); } return receiveAddress; }
/** * Get a fresh address by marking the current receive address as used. It will throw * {@link Bip44KeyLookAheadExceededException} if we requested too many addresses that * exceed the BIP44 look ahead threshold. */ public BitAddress getFreshReceiveAddress() throws Bip44KeyLookAheadExceededException { lock.lock(); try { if (!canCreateFreshReceiveAddress()) { throw new Bip44KeyLookAheadExceededException(); } keys.getKey(RECEIVE_FUNDS); return currentAddress(RECEIVE_FUNDS); } finally { lock.unlock(); walletSaveNow(); } }
@Test public void issuedKeys() throws Bip44KeyLookAheadExceededException { List<BitAddress> issuedAddresses = new ArrayList<>(); assertEquals(0, pocket.getIssuedReceiveAddresses().size()); assertEquals(0, pocket.keys.getNumIssuedExternalKeys()); issuedAddresses.add(0, pocket.currentAddress(KeyChain.KeyPurpose.RECEIVE_FUNDS)); BitAddress freshAddress = pocket.getFreshReceiveAddress(); assertEquals(freshAddress, pocket.currentAddress(KeyChain.KeyPurpose.RECEIVE_FUNDS)); assertEquals(1, pocket.getIssuedReceiveAddresses().size()); assertEquals(1, pocket.keys.getNumIssuedExternalKeys()); assertEquals(issuedAddresses, pocket.getIssuedReceiveAddresses()); issuedAddresses.add(0, pocket.currentAddress(KeyChain.KeyPurpose.RECEIVE_FUNDS)); freshAddress = pocket.getFreshReceiveAddress(); assertEquals(freshAddress, pocket.currentAddress(KeyChain.KeyPurpose.RECEIVE_FUNDS)); assertEquals(2, pocket.getIssuedReceiveAddresses().size()); assertEquals(2, pocket.keys.getNumIssuedExternalKeys()); assertEquals(issuedAddresses, pocket.getIssuedReceiveAddresses()); }