Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.64 KB | None | 0 0
  1. () recv_external(slice in_msg) impure {
  2.  
  3.   ;; var fake = in_msg~load_bits(309);
  4.   var signature = in_msg~load_bits(512);
  5.  
  6.   ;; read external message, but only seqno+pubkey
  7.   var cs = in_msg; ;; <s s
  8.   var cellStart = in_msg;
  9.   var cs = cellStart~load_ref().begin_parse();
  10.   var msg_seqno = cs~load_uint(32);
  11.  
  12.   dump_stack();
  13.  
  14.   var stored_seqno = get_data().begin_parse().preload_uint(32);
  15.  
  16.   ;; throw_unless(33, msg_seqno == stored_seqno);
  17.  
  18.   accept_message();
  19.  
  20.   if (stored_seqno == 0 ) {
  21.     ;; create wallet, executed only once
  22.  
  23.     var ds = get_data().begin_parse();
  24.     var (stored_seqno, public_key) = (ds~load_uint(32), ds~load_uint(256));
  25.     ds.end_parse();
  26.  
  27.     throw_unless(34, check_signature(slice_hash(in_msg), signature, public_key));
  28.  
  29.     var cs = in_msg;
  30.     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());
  31.     set_data(begin_cell().store_uint(stored_seqno + 1, 32).store_uint(k, 8).store_dict(pubkeys).end_cell());  
  32.    
  33.   }
  34.   else {
  35.       ;; throw_unless(34, 1 == 2);
  36.       var cs = in_msg;
  37.       var msg_seqno = cs~load_uint(32);
  38.       var action = cs~load_uint(8);
  39.  
  40.       dump_stack();
  41.  
  42.       var ds = get_data().begin_parse();
  43.       var (stored_seqno, stored_k, stored_pubkeys) = (ds~load_uint(32), ds~load_uint(8), ds~load_dict());
  44.       ds.end_parse();
  45.  
  46.       var orders = new_dict();
  47.       orders~udict_set_builder(32, 1, begin_cell().store_uint(1, 32));
  48.      
  49.       set_data(begin_cell().store_uint(msg_seqno, 32).store_uint(33, 8).store_dict(stored_pubkeys).store_dict(orders).end_cell());
  50.  
  51.    
  52.   }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement