Closed maxhiker closed 1 year ago
Is it normal behavior? Tested on isolated server 0.8.2.rc2
Actors: user: account with enough balance contract Operator, balance zero contract Treasury, balance unlimited
Flow: Operator borrow some amount from Treasury, accept it, then return it back.
user: (Operator.TestCashFlow-->{ Treasury.MoneyAsked( howmany: x )-->*.AddFunds( _amount: x ); Treasury.AddFunds( _amount: x ) })
Error: The balance is too low to transfer all the funds in the messages: balance = 0, amount to transfer = 2
scilla_version 0
library Operator
let one_msg = fun (msg : Message) => let nil_msg = Nil {Message} in Cons {Message} msg nil_msg
let zero128 = Uint128 0 let two128 = Uint128 2
contract Operator ( init_treasury_addr: ByStr20 )
field treasury_addr: ByStr20 = init_treasury_addr
transition TestCashFlow() var_treasury_addr <- treasury_addr;
( borrow from treasury ) msg = { _tag : "SendMoney"; _recipient: var_treasury_addr; _amount: zero128; amount: two128 }; msgs = one_msg msg; send msgs;
( return to treasury ) msg = { _tag : "AddFunds"; _recipient: var_treasury_addr; _amount: two128 }; msgs = one_msg msg; send msgs
end
transition AddFunds() accept end
library Treasury
contract Treasury ( )
transition MoneyAsked(amount: Uint128) msg = { _tag : "AddFunds"; _recipient: _sender; _amount: amount }; msgs = one_msg msg; send msgs end
Is it normal behavior? Tested on isolated server 0.8.2.rc2
Actors: user: account with enough balance contract Operator, balance zero contract Treasury, balance unlimited
Flow: Operator borrow some amount from Treasury, accept it, then return it back.
user: (Operator.TestCashFlow-->{ Treasury.MoneyAsked( howmany: x )-->*.AddFunds( _amount: x ); Treasury.AddFunds( _amount: x ) })
Error: The balance is too low to transfer all the funds in the messages: balance = 0, amount to transfer = 2
Operator contract:
scilla_version 0
library Operator
let one_msg = fun (msg : Message) => let nil_msg = Nil {Message} in Cons {Message} msg nil_msg
let zero128 = Uint128 0 let two128 = Uint128 2
contract Operator ( init_treasury_addr: ByStr20 )
field treasury_addr: ByStr20 = init_treasury_addr
transition TestCashFlow() var_treasury_addr <- treasury_addr;
( borrow from treasury ) msg = { _tag : "SendMoney"; _recipient: var_treasury_addr; _amount: zero128; amount: two128 }; msgs = one_msg msg; send msgs;
( return to treasury ) msg = { _tag : "AddFunds"; _recipient: var_treasury_addr; _amount: two128 }; msgs = one_msg msg; send msgs
end
transition AddFunds() accept end
Treasury contract:
scilla_version 0
library Treasury
let one_msg = fun (msg : Message) => let nil_msg = Nil {Message} in Cons {Message} msg nil_msg
contract Treasury ( )
transition MoneyAsked(amount: Uint128) msg = { _tag : "AddFunds"; _recipient: _sender; _amount: amount }; msgs = one_msg msg; send msgs end
transition AddFunds() accept end