-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsc-wallet.tz
127 lines (126 loc) · 4.61 KB
/
sc-wallet.tz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
{ parameter
(or (lambda %relay_direct unit (list operation))
(or (pair %relay_check key signature bytes)
(or (pair %set_condition_with_signature key bytes signature)
(pair %set_condition
key
(lambda (pair bytes bytes) (pair (list operation) bytes))
bytes
timestamp)))) ;
storage
(pair (address %owner)
(big_map %conditions
key
(pair (lambda (pair bytes bytes) (pair (list operation) bytes)) bytes timestamp))) ;
code { UNPAIR ;
IF_LEFT
{ SENDER ;
DUP 3 ;
CAR ;
SWAP ;
COMPARE ;
NEQ ;
IF { PUSH string "Not the owner" ; FAILWITH } {} ;
SWAP ;
UNIT ;
DIG 2 ;
SWAP ;
EXEC ;
PAIR }
{ IF_LEFT
{ UNPAIR 3 ;
DUP 4 ;
CDR ;
DUP 2 ;
GET ;
IF_NONE
{ DROP 4 ; PUSH string "Session not found" ; FAILWITH }
{ UNPAIR 3 ;
DUP 3 ;
NOW ;
COMPARE ;
GT ;
IF { DROP 7 ; PUSH string "This session has expired" ; FAILWITH }
{ DUP 6 ;
DIG 5 ;
DUP 6 ;
CHECK_SIGNATURE ;
NOT ;
IF { DROP 6 ; PUSH string "Wrong signature" ; FAILWITH }
{ SWAP ;
DIG 4 ;
PAIR ;
DUP 2 ;
SWAP ;
EXEC ;
UNPAIR ;
DUP 6 ;
DIG 6 ;
CDR ;
DIG 5 ;
DIG 4 ;
DIG 5 ;
PAIR 3 ;
SOME ;
DIG 4 ;
UPDATE ;
UPDATE 2 ;
SWAP ;
PAIR } } } }
{ IF_LEFT
{ UNPAIR 3 ;
DUP 2 ;
UNPACK
(pair key (lambda (pair bytes bytes) (pair (list operation) bytes)) bytes timestamp) ;
IF_NONE
{ DROP 4 ; PUSH string "Wrong bytes" ; FAILWITH }
{ UNPAIR 4 ;
DIG 5 ;
DIG 6 ;
DUP 7 ;
CHECK_SIGNATURE ;
NOT ;
IF { DROP 6 ; PUSH string "Wrong signature" ; FAILWITH }
{ DUP 6 ;
CAR ;
DIG 5 ;
HASH_KEY ;
IMPLICIT_ACCOUNT ;
ADDRESS ;
COMPARE ;
NEQ ;
IF { DROP 5 ; PUSH string "The key does not match the owner" ; FAILWITH }
{ DUP 5 ;
DIG 5 ;
CDR ;
DIG 5 ;
DIG 5 ;
DIG 5 ;
PAIR 3 ;
SOME ;
DIG 3 ;
UPDATE ;
UPDATE 2 ;
NIL operation ;
PAIR } } } }
{ UNPAIR 4 ;
SENDER ;
DUP 6 ;
CAR ;
SWAP ;
COMPARE ;
NEQ ;
IF { PUSH string "Not the owner" ; FAILWITH } {} ;
DUP 5 ;
DIG 5 ;
CDR ;
DIG 5 ;
DIG 5 ;
DIG 5 ;
PAIR 3 ;
SOME ;
DIG 3 ;
UPDATE ;
UPDATE 2 ;
NIL operation ;
PAIR } } } } }