Merge pull request #568 from lbryio/get_unused_address

get_unused_address / get_new_address
This commit is contained in:
Alex Grin 2017-03-27 13:06:36 -04:00 committed by GitHub
commit 23f1cf9c82
4 changed files with 55 additions and 11 deletions

View file

@ -9,12 +9,12 @@ at anytime.
## [Unreleased]
### Added
*
* Create wallet_unused_address API command
*
*
### Changed
*
* wallet_new_address API command always returns new address
*
*

View file

@ -293,10 +293,10 @@ Returns:
]
```
## file_seed
## file_set_status
```text
Start or stop seeding a file
Start or stop downloading a file
Args:
'status': (str) "start" or "stop"
@ -636,3 +636,15 @@ Returns:
Could contain more than one public key if multisig.
```
## wallet_unused_address
```text
Return an address containing no balance, will create
a new address if there is none.
Args:
None
Returns:
(str) Unused wallet address in base58
```

View file

@ -418,12 +418,12 @@ class Wallet(object):
def update_peer_address(self, peer, address):
self.peer_addresses[peer] = address
def get_new_address_for_peer(self, peer):
def get_unused_address_for_peer(self, peer):
def set_address_for_peer(address):
self.current_address_given_to_peer[peer] = address
return address
d = self.get_new_address()
d = self.get_unused_address()
d.addCallback(set_address_for_peer)
return d
@ -974,13 +974,22 @@ class LBRYumWallet(Wallet):
lambda result: Decimal(result['confirmed']) + Decimal(result.get('unconfirmed', 0.0)))
return d
# Always create and return a brand new address
@defer.inlineCallbacks
def get_new_address(self):
addr = self.wallet.create_new_address(account=None)
yield self._save_wallet()
defer.returnValue(addr)
# Return an address with no balance in it, if
# there is none, create a brand new address
@defer.inlineCallbacks
def get_unused_address(self):
addr = self.wallet.get_unused_address(account=None)
if addr is None:
addr = self.wallet.create_new_address()
d = defer.succeed(addr)
d.addCallback(self._save_wallet)
return d
yield self._save_wallet()
defer.returnValue(addr)
def get_block(self, blockhash):
return self._run_cmd_as_defer_to_thread('getblock', blockhash)
@ -1113,7 +1122,7 @@ class LBRYumWallet(Wallet):
def list_addresses(self):
return self._run_cmd_as_defer_succeed('listaddresses')
def _save_wallet(self, val):
def _save_wallet(self, val=None):
self.wallet.storage.write()
return defer.succeed(val)
@ -1198,7 +1207,7 @@ class LBRYcrdAddressQueryHandler(object):
return fields
if self.query_identifiers[0] in queries:
d = self.wallet.get_new_address_for_peer(self.peer)
d = self.wallet.get_unused_address_for_peer(self.peer)
d.addCallback(create_response)
return d
if self.address is None:

View file

@ -1985,6 +1985,29 @@ class Daemon(AuthJSONRPCServer):
d.addCallback(lambda address: self._render_response(address))
return d
@AuthJSONRPCServer.auth_required
def jsonrpc_wallet_unused_address(self):
"""
Return an address containing no balance, will create
a new address if there is none.
Args:
None
Returns:
(str) Unused wallet address in base58
"""
def _disp(address):
log.info("Got unused wallet address: " + address)
return defer.succeed(address)
d = self.session.wallet.get_unused_address()
d.addCallback(_disp)
d.addCallback(lambda address: self._render_response(address))
return d
@AuthJSONRPCServer.auth_required
def jsonrpc_send_amount_to_address(self, amount, address):
"""