Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- () recv_external(slice in_msg) impure {
- ;; var fake = in_msg~load_bits(309);
- var signature = in_msg~load_bits(512);
- ;; read external message, but only seqno+pubkey
- var cs = in_msg; ;; <s s
- var cellStart = in_msg;
- var cs = cellStart~load_ref().begin_parse();
- var msg_seqno = cs~load_uint(32);
- dump_stack();
- var stored_seqno = get_data().begin_parse().preload_uint(32);
- ;; throw_unless(33, msg_seqno == stored_seqno);
- accept_message();
- if (stored_seqno == 0 ) {
- ;; create wallet, executed only once
- var ds = get_data().begin_parse();
- var (stored_seqno, public_key) = (ds~load_uint(32), ds~load_uint(256));
- ds.end_parse();
- throw_unless(34, check_signature(slice_hash(in_msg), signature, public_key));
- var cs = in_msg;
- var (msg_seqno, sender_pubkey_ref, action, k, pubkeys) = (cs~load_uint(32), cs~load_ref(), cs~load_uint(8), cs~load_uint(8), cs~load_dict());
- set_data(begin_cell().store_uint(stored_seqno + 1, 32).store_uint(k, 8).store_dict(pubkeys).end_cell());
- }
- else {
- ;; throw_unless(34, 1 == 2);
- var cs = in_msg;
- var msg_seqno = cs~load_uint(32);
- var action = cs~load_uint(8);
- dump_stack();
- var ds = get_data().begin_parse();
- var (stored_seqno, stored_k, stored_pubkeys) = (ds~load_uint(32), ds~load_uint(8), ds~load_dict());
- ds.end_parse();
- var orders = new_dict();
- orders~udict_set_builder(32, 1, begin_cell().store_uint(1, 32));
- set_data(begin_cell().store_uint(msg_seqno, 32).store_uint(33, 8).store_dict(stored_pubkeys).store_dict(orders).end_cell());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement