ligo/src/test/contracts/replaceable_id.ligo
2019-12-17 14:18:09 +00:00

35 lines
1.0 KiB
Plaintext

// storage type
type storage_t is address;
// entry points parameter types
type change_addr_pt is address
type message_t is list (operation) ;
type pass_message_pt is (unit -> message_t)
type contract_return_t is (list(operation) * storage_t)
type entry_point_t is
| Change_address of change_addr_pt
| Pass_message of pass_message_pt
function change_address (const param : change_addr_pt;
const s : storage_t) : contract_return_t is
begin
if sender =/= s then failwith("Unauthorized sender")
else skip
end with ((nil : list(operation)), param)
function pass_message ( const param: pass_message_pt;
const s : storage_t ) : contract_return_t is
begin
if sender =/= s then failwith("Unauthorized sender") else skip ;
var message : pass_message_pt := param ;
end with (param(unit),s)
function main(const param : entry_point_t; const s : storage_t) : contract_return_t is
block {skip} with
case param of
| Change_address (p) -> change_address(p,s)
| Pass_message (p) -> pass_message(p,s)
end