diff --git a/nitro.nimble b/nitro.nimble index 9ff9566..854228d 100644 --- a/nitro.nimble +++ b/nitro.nimble @@ -5,7 +5,7 @@ description = "Nitro state channels" requires "nim >= 1.2.6 & < 2.0.0" requires "nimcrypto >= 0.5.4 & < 0.6.0" -requires "questionable >= 0.6.2 & < 0.7.0" +requires "questionable >= 0.6.3 & < 0.7.0" requires "upraises >= 0.1.0 & < 0.2.0" requires "secp256k1" requires "stint" diff --git a/nitro/wallet/wallet.nim b/nitro/wallet/wallet.nim index c723ceb..8d698ed 100644 --- a/nitro/wallet/wallet.nim +++ b/nitro/wallet/wallet.nim @@ -150,16 +150,16 @@ func pay*(wallet: var Wallet, asset: EthAddress, receiver: Destination, amount: UInt256): ?!SignedState = - if var state =? wallet.state(channel): - if var balances =? state.outcome.balances(asset): - ?balances.move(wallet.destination, receiver, amount) - state.outcome.update(asset, balances) - wallet.updateChannel(SignedState(state: state)) - success wallet.channels.?[channel].get - else: - failure "asset not found" - else: - failure "channel not found" + without var state =? wallet.state(channel): + return failure "channel not found" + + without var balances =? state.outcome.balances(asset): + return failure "asset not found" + + ?balances.move(wallet.destination, receiver, amount) + state.outcome.update(asset, balances) + wallet.updateChannel(SignedState(state: state)) + success wallet.channels.?[channel].get func pay*(wallet: var Wallet, channel: ChannelId, @@ -192,13 +192,13 @@ func acceptPayment*(wallet: var Wallet, if not payment.isSignedBy(sender): return failure "missing signature on payment" - if updatedBalances =? payment.state.outcome.balances(asset): - var expectedState: State = wallet.channels.?[channel].?state.get - expectedState.outcome.update(asset, updatedBalances) - if payment.state != expectedState: - return failure "payment has unexpected changes in state" - else: + without updatedBalances =? payment.state.outcome.balances(asset): return failure "payment misses balances for asset" + var expectedState: State = wallet.channels.?[channel].?state.get + expectedState.outcome.update(asset, updatedBalances) + if payment.state != expectedState: + return failure "payment has unexpected changes in state" + wallet.channels[channel] = payment success()