In case already_exists
variable is true, then we simply need to let the users know about that in a message.
We’ll be sending that message in the same way as we did in the second chapter.
user_exists_code
of Uint32
type and value 2
.True
branch of the conditions, declare a variable msg
with the following values:_tag
, value should be empty, i.e., ""
._recipient
, we want to send the message to the initial sender, so the value should be: _sender
._amount
, the value should be zero
. Since we’ve defined it as a Uint128 0
variable in the library already, use the variable name zero
._code
, use the code that we have defined in the library to indicate that the user already exists, i.e., user_exists_code
.Finally, after you have defined msg
, put this message in the list defined previously (i.e. one_msg
variable type) and then send it.
Show Solution
scilla_version 0
import BoolUtils
library SocialMediaPayment
let one_msg =
fun (msg: Message) =>
let nil_msg = Nil {Message} in
Cons {Message} msg nil_msg
let zero = Uint128 0
let not_owner_code = Uint32 1
let accepted_code = Uint32 0
(* Start typing from the line below to define the variable ‘user_exists_code’ of type Uint32 and value ‘2’*)
contract SocialMediaPayment (owner: ByStr20)
field users: Map ByStr20 String
= Emp ByStr20 String
field used_usernames: Map String Bool
= Emp String Bool
transition deposit()
sender_is_owner = builtin eq _sender owner;
match sender_is_owner with
| False =>
msg = { _tag: "";
_recipient: _sender;
_amount: zero;
code: not_owner_code};
msgs = one_msg msg;
send msgs
| True =>
accept;
msg = { _tag: "";
_recipient: _sender;
_amount: zero;
code: accepted_code};
msgs = one_msg msg;
send msgs
end
end
transition register_user (user_address: ByStr20, twitter_username: String)
user_exists <- exists users[user_address];
username_exists <- exists used_usernames[twitter_username]
already_exists = orb user_exists username_exists
match already_exists with
| True =>
(* Start typing from the line below *)
| False =>
end
end
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364