diff --git a/src/sakia/core/wallet.py b/src/sakia/core/wallet.py index cbe23f9d422b93c40c8078cfd11b5cec3bdf3f3d..fa73835d7c8e080517725e03b7074a9472c129af 100644 --- a/src/sakia/core/wallet.py +++ b/src/sakia/core/wallet.py @@ -175,18 +175,18 @@ class Wallet(QObject): :return: The list of inputs to use in the transaction document """ - value = 0 amount, amount_base = reduce_base(amount, 0) cache = self.caches[community.currency] current_base = amount_base - sources = [] - buf_sources = list(cache.available_sources) while current_base >= 0: + value = 0 + sources = [] + buf_sources = list(cache.available_sources) for s in [src for src in cache.available_sources if src['base'] == current_base]: value += s['amount'] * pow(10, s['base']) sources.append(s) buf_sources.remove(s) - if value >= amount: + if value >= amount * pow(10, amount_base): overhead = value - int(amount) overhead, overhead_max_base = reduce_base(overhead, 0) if overhead_max_base >= current_base: diff --git a/src/sakia/tests/unit/core/test_wallet.py b/src/sakia/tests/unit/core/test_wallet.py index 787efe255d05b65151587da0155f11636578f036..875ea5889a374b4eb6399c82394ec77874fb90b4 100644 --- a/src/sakia/tests/unit/core/test_wallet.py +++ b/src/sakia/tests/unit/core/test_wallet.py @@ -72,8 +72,8 @@ class TestWallet(unittest.TestCase, QuamashTest): self.assertEqual(tx.inputs[1].source, "D") self.assertEqual(tx.inputs[1].index, 4) self.assertEqual(len(tx.outputs), 1) - self.assertEqual(tx.outputs[0].amount, 1) - self.assertEqual(tx.outputs[0].base, 2) + self.assertEqual(tx.outputs[0].amount, 100) + self.assertEqual(tx.outputs[0].base, 0) self.assertEqual(pypeg2.compose(tx.outputs[0].conditions, output.Condition), "SIG(FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn)") self.assertEqual(len(tx.unlocks), 2) @@ -94,5 +94,5 @@ Unlocks: 0:SIG(0) 1:SIG(0) Outputs: -1:2:SIG(FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn) +100:0:SIG(FADxcH5LmXGmGFgdixSes6nWnC4Vb4pRUBYT81zQRhjn) Comment:""" + " \n")