2017-07-24 17:06:56 +04:00
|
|
|
# (pair signed_weather_data actual_level)
|
2017-07-18 19:38:20 +04:00
|
|
|
parameter (pair signature nat);
|
2017-07-24 17:06:56 +04:00
|
|
|
# (pair (under_key over_key) (pair weather_service_key (pair rain_level days_in_future)))
|
2017-07-18 19:38:20 +04:00
|
|
|
storage (pair (pair (contract unit unit) (contract unit unit)) (pair nat key));
|
2017-07-24 17:06:56 +04:00
|
|
|
return unit;
|
|
|
|
code {DUP; DUP;
|
2017-07-24 14:28:41 +04:00
|
|
|
CAR; DUP; DIP{CDR; H}; CAR; PAIR;
|
2017-07-24 17:06:56 +04:00
|
|
|
SWAP; CDDDR; CHECK_SIGNATURE; # Check if the data has been correctly signed
|
2017-07-24 14:28:41 +04:00
|
|
|
IF {} {FAIL} # If signature is not correct, end the execution
|
2017-07-24 17:06:56 +04:00
|
|
|
DUP; DUP; DUP; DIIIP{CDR}; # Place storage type on bottom of stack
|
|
|
|
DIIP{CDAR}; # Place contracts below numbers
|
2017-07-24 14:28:41 +04:00
|
|
|
DIP{CADR}; # Get actual rain
|
2017-07-24 17:06:56 +04:00
|
|
|
CDDAR; # Get rain threshold
|
|
|
|
CMPLT; IF {CAR} {CDR}; # Select contract to receive tokens
|
|
|
|
BALANCE; UNIT; TRANSFER_TOKENS; # Setup and execute transfer
|
|
|
|
PAIR}; # Save storage
|