@Override public SendRequest getEmptyWalletRequest(AbstractAddress destination) throws WalletAccountException { checkAddress(destination); return NxtSendRequest.emptyWallet(this, (NxtAddress) destination); }
@Override public SendRequest getSendToRequest(AbstractAddress destination, Value amount) throws WalletAccountException { checkAddress(destination); return NxtSendRequest.to(this, (NxtAddress) destination, amount); }
@Override public void completeTransaction(SendRequest request) throws WalletAccountException { checkSendRequest(request); completeTransaction((NxtSendRequest) request); }
@Test public void testHDAccountNxt() throws MnemonicException { byte[] privateKey = nxtAccount.rootKey.getPrivateKey(); byte[] publicKey = nxtAccount.getPublicKey(); assertArrayEquals(nxtPrivateKey, privateKey); assertEquals(nxtRsAddress, nxtAccount.getPublicKeyMnemonic()); assertArrayEquals(nxtPublicKey, publicKey); NxtAddress address = (NxtAddress) nxtAccount.getReceiveAddress(); assertEquals(nxtRsAddress, address.toString()); assertEquals(nxtAccountId, address.getAccountId()); }
public void signTransaction(NxtSendRequest request) { checkArgument(request.isCompleted(), "Send request is not completed"); checkArgument(request.tx != null, "No transaction found in send request"); Transaction tx = request.tx.getRawTransaction(); byte[] privateKey; if (rootKey.isEncrypted()) { checkArgument(request.aesKey != null, "Wallet is encrypted but no decryption key provided"); privateKey = rootKey.toDecrypted(request.aesKey).getPrivateKey(); } else { privateKey = rootKey.getPrivateKey(); } tx.sign(privateKey); Arrays.fill(privateKey, (byte) 0); // clear private key }
@Test public void serializeUnencryptedNormal() throws Exception { List<Protos.Key> keys = nxtAccount.serializeKeychainToProtobuf(); NxtFamilyKey nxtKey = NxtFamilyKey.fromProtobuf(keys); NxtFamilyWallet newWallet; newWallet = new NxtFamilyWallet(nxtKey, NXT); }
public static NxtSendRequest emptyWallet(NxtFamilyWallet from, NxtAddress destination) { checkNotNull(destination.getType(), "Address is for an unknown network"); checkState(destination.getType().getFeePolicy() == FeePolicy.FLAT_FEE, "Only flat fee is supported"); Value allFundsMinusFee = from.getBalance().subtract(destination.getType().getFeeValue()); return to(from, destination, allFundsMinusFee); }
@Override public void signTransaction(SendRequest request) throws WalletAccountException { checkSendRequest(request); signTransaction((NxtSendRequest) request); }
@Override public void onConnection(BlockchainConnection blockchainConnection) { this.blockchainConnection = (NxtServerClient)blockchainConnection; subscribeToBlockchain(); subscribeIfNeeded(); }
/** * Sends coins to the given address but does not broadcast the resulting pending transaction. */ public NxtSendRequest sendCoinsOffline(NxtAddress address, Value amount) throws WalletAccountException { return sendCoinsOffline(address, amount, (KeyParameter) null); }
/** * Returns the key chain found in the given list of keys. Used for unencrypted chains */ public static NxtFamilyKey fromProtobuf(List<Protos.Key> keys) throws UnreadableWalletException { return fromProtobuf(keys, null); }
@Override public byte[] getPublicKey() { return rootKey.getPublicKey(); }
public static String addressSplitToGroups(final NxtAddress address) { return address.toString(); // already split in groups }
@Override public void onTransactionUpdate(NxtTransaction tx) { if (log.isInfoEnabled()) log.info("Got a new transaction {}", tx.getHashAsString()); lock.lock(); try { addNewTransactionIfNeeded(tx); } finally { lock.unlock(); } }
@Override public String getPublicKeyMnemonic() { return address.getRsAccount(); }
@Override public void onDisconnect() { blockchainConnection = null; queueOnConnectivity(); }
@Override public AbstractAddress newAddress(String addressStr) throws AddressMalformedException { return NxtAddress.fromString(this, addressStr); }
@Override public void addEventListener(WalletAccountEventListener listener) { addEventListener(listener, Threading.USER_THREAD); }
@Override public boolean isAddressMine(AbstractAddress address) { return this.address.equals(address); }
@Override public String toString() { return getRsAccount(); }