forked from LBRYCommunity/lbry-sdk
added jsonrpc_account_send and dropped torba[server]
This commit is contained in:
parent
561215db8a
commit
0c999083cc
6 changed files with 69 additions and 16 deletions
13
.travis.yml
13
.travis.yml
|
@ -10,8 +10,8 @@ jobs:
|
|||
name: "pylint lbrynet"
|
||||
install:
|
||||
- pip install pylint
|
||||
- pip install git+https://github.com/lbryio/torba.git#egg=torba[server]
|
||||
- pip install -e .[wallet-server]
|
||||
- pip install git+https://github.com/lbryio/torba.git#egg=torba
|
||||
- pip install -e .
|
||||
script: pylint lbrynet
|
||||
|
||||
- &tests
|
||||
|
@ -19,7 +19,7 @@ jobs:
|
|||
name: "Unit Tests w/ Python 3.7"
|
||||
install:
|
||||
- pip install coverage
|
||||
- pip install git+https://github.com/lbryio/torba.git#egg=torba[server]
|
||||
- pip install git+https://github.com/lbryio/torba.git#egg=torba
|
||||
- pip install -e .[test]
|
||||
script:
|
||||
- HOME=/tmp coverage run -p --source=lbrynet -m unittest discover -v tests.unit.wallet
|
||||
|
@ -97,6 +97,13 @@ jobs:
|
|||
osx_image: xcode9.4
|
||||
language: generic
|
||||
env: OS=mac
|
||||
install:
|
||||
- pip3 install pyinstaller
|
||||
- git clone https://github.com/lbryio/torba.git --depth 1
|
||||
- sed -i -e "s/'plyvel',//" torba/setup.py
|
||||
- cd torba && pip3 install -e . && cd ..
|
||||
- python scripts/set_build.py
|
||||
- pip3 install -e .
|
||||
|
||||
cache:
|
||||
directories:
|
||||
|
|
|
@ -1439,7 +1439,7 @@ class Daemon(AuthJSONRPCServer):
|
|||
return self.get_account_or_error(account_id).get_max_gap()
|
||||
|
||||
@requires("wallet")
|
||||
def jsonrpc_account_fund(self, to_account, from_account, amount='0.0',
|
||||
def jsonrpc_account_fund(self, to_account=None, from_account=None, amount='0.0',
|
||||
everything=False, outputs=1, broadcast=False):
|
||||
"""
|
||||
Transfer some amount (or --everything) to an account from another
|
||||
|
@ -1448,8 +1448,8 @@ class Daemon(AuthJSONRPCServer):
|
|||
be used together with --everything).
|
||||
|
||||
Usage:
|
||||
account_fund (<to_account> | --to_account=<to_account>)
|
||||
(<from_account> | --from_account=<from_account>)
|
||||
account_fund [<to_account> | --to_account=<to_account>]
|
||||
[<from_account> | --from_account=<from_account>]
|
||||
(<amount> | --amount=<amount> | --everything)
|
||||
[<outputs> | --outputs=<outputs>]
|
||||
[--broadcast]
|
||||
|
@ -1466,8 +1466,8 @@ class Daemon(AuthJSONRPCServer):
|
|||
(map) transaction performing requested action
|
||||
|
||||
"""
|
||||
to_account = self.get_account_or_error(to_account, 'to_account')
|
||||
from_account = self.get_account_or_error(from_account, 'from_account')
|
||||
to_account = self.get_account_or_default(to_account, 'to_account')
|
||||
from_account = self.get_account_or_default(from_account, 'from_account')
|
||||
amount = self.get_dewies_or_error('amount', amount) if amount else None
|
||||
if not isinstance(outputs, int):
|
||||
raise ValueError("--outputs must be an integer.")
|
||||
|
@ -1478,6 +1478,35 @@ class Daemon(AuthJSONRPCServer):
|
|||
outputs=outputs, broadcast=broadcast
|
||||
)
|
||||
|
||||
@requires(WALLET_COMPONENT, conditions=[WALLET_IS_UNLOCKED])
|
||||
async def jsonrpc_account_send(self, amount, addresses, account_id=None, broadcast=False):
|
||||
"""
|
||||
Send the same number of credits to multiple addresses.
|
||||
|
||||
Usage:
|
||||
account_send <amount> <addresses>... [--account_id=<account_id>] [--broadcast]
|
||||
|
||||
Options:
|
||||
--account_id=<account_id> : (str) account to fund the transaction
|
||||
--broadcast : (bool) actually broadcast the transaction, default: false.
|
||||
|
||||
Returns:
|
||||
"""
|
||||
|
||||
amount = self.get_dewies_or_error("amount", amount)
|
||||
if not amount:
|
||||
raise NullFundsError
|
||||
elif amount < 0:
|
||||
raise NegativeFundsError()
|
||||
|
||||
for address in addresses:
|
||||
decode_address(address)
|
||||
|
||||
account = self.get_account_or_default(account_id)
|
||||
result = await account.send_to_addresses(amount, addresses, broadcast)
|
||||
self.analytics_manager.send_credits_sent()
|
||||
return result
|
||||
|
||||
@requires(WALLET_COMPONENT)
|
||||
def jsonrpc_address_is_mine(self, address, account_id=None):
|
||||
"""
|
||||
|
|
|
@ -180,3 +180,24 @@ class Account(BaseAccount):
|
|||
|
||||
def get_channel_count(self, **constraints):
|
||||
return self.ledger.db.get_channel_count(account=self, **constraints)
|
||||
|
||||
async def send_to_addresses(self, amount, addresses, broadcast=False):
|
||||
tx_class = self.ledger.transaction_class
|
||||
tx = await tx_class.create(
|
||||
inputs=[],
|
||||
outputs=[
|
||||
tx_class.output_class.pay_pubkey_hash(amount, self.ledger.address_to_hash160(address))
|
||||
for address in addresses
|
||||
],
|
||||
funding_accounts=[self],
|
||||
change_account=self
|
||||
)
|
||||
|
||||
if broadcast:
|
||||
await self.ledger.broadcast(tx)
|
||||
else:
|
||||
await self.ledger.release_outputs(
|
||||
[txi.txo_ref.txo for txi in tx.inputs]
|
||||
)
|
||||
|
||||
return tx
|
||||
|
|
|
@ -6,6 +6,7 @@ apt-get -qq update
|
|||
apt-get -qq install -y git
|
||||
|
||||
git clone https://github.com/lbryio/torba.git --depth 1
|
||||
sed -i -e "s/'plyvel',//" torba/setup.py
|
||||
git clone https://github.com/twisted/twisted.git --depth 1 --branch twisted-18.7.0
|
||||
sed -i -e '172,184{s/^/#/}' twisted/src/twisted/python/_setup.py
|
||||
|
||||
|
|
9
setup.py
9
setup.py
|
@ -5,11 +5,6 @@ from setuptools import setup, find_packages
|
|||
BASE = os.path.dirname(__file__)
|
||||
README_PATH = os.path.join(BASE, 'README.md')
|
||||
|
||||
SERVER_REQUIRES = (
|
||||
'msgpack',
|
||||
'torba[server]',
|
||||
)
|
||||
|
||||
setup(
|
||||
name=__name__,
|
||||
version=__version__,
|
||||
|
@ -38,6 +33,7 @@ setup(
|
|||
'jsonrpc',
|
||||
'cryptography',
|
||||
'protobuf==3.6.1',
|
||||
'msgpack',
|
||||
'jsonschema',
|
||||
'ecdsa',
|
||||
'torba',
|
||||
|
@ -50,13 +46,12 @@ setup(
|
|||
'six'
|
||||
],
|
||||
extras_require={
|
||||
'wallet-server': SERVER_REQUIRES,
|
||||
'test': (
|
||||
'mock>=2.0,<3.0',
|
||||
'faker==0.8.17',
|
||||
'pytest',
|
||||
'pytest-asyncio',
|
||||
'pytest-xprocess',
|
||||
) + SERVER_REQUIRES,
|
||||
)
|
||||
}
|
||||
)
|
||||
|
|
2
tox.ini
2
tox.ini
|
@ -4,7 +4,7 @@ envlist = py37-integration
|
|||
[testenv]
|
||||
deps =
|
||||
coverage
|
||||
../torba[server]
|
||||
../torba
|
||||
extras = test
|
||||
changedir = {toxinidir}/tests
|
||||
setenv =
|
||||
|
|
Loading…
Reference in a new issue