coase contracts in new ligo
This commit is contained in:
parent
5ae00aeb01
commit
a2caec9939
@ -10,7 +10,8 @@ type card_patterns is map(card_pattern_id , card_pattern)
|
|||||||
|
|
||||||
type card_id is nat
|
type card_id is nat
|
||||||
type card is record [
|
type card is record [
|
||||||
card_owner : address
|
card_owner : address ;
|
||||||
|
card_pattern : card_pattern_id ;
|
||||||
]
|
]
|
||||||
type cards is map(card_id , card)
|
type cards is map(card_id , card)
|
||||||
|
|
||||||
@ -33,9 +34,27 @@ type action_transfer is record [
|
|||||||
|
|
||||||
type action is
|
type action is
|
||||||
| Buy_single of action_buy_single
|
| Buy_single of action_buy_single
|
||||||
// | Sell of action_sell
|
// | Sell of action_sell_single
|
||||||
// | Transfer of action_transfer
|
// | Transfer of action_transfer
|
||||||
|
|
||||||
|
// function sell_single(const action : action_sell_single ; const s : storage_type) : (list(operation) * storage_type) is
|
||||||
|
// begin
|
||||||
|
// const card : card = get_force(action.card_to_sell , s.cards) ;
|
||||||
|
// if (card.card_owner =/= source) then fail "This card doesn't belong to you" else skip ;
|
||||||
|
// const card_pattern : card_pattern = get_force(card.card_pattern , s.card_patterns) ;
|
||||||
|
// card_pattern.quantity := abs(card_pattern.quantity - 1n);
|
||||||
|
// const card_patterns : card_patterns = s.card_patterns ;
|
||||||
|
// card_patterns[card.card_pattern] := card_pattern ;
|
||||||
|
// s.card_patterns := card_patterns ;
|
||||||
|
// const cards : cards = s.cards ;
|
||||||
|
// remove action.card_to_sell from map cards ;
|
||||||
|
// s.cards := cards ;
|
||||||
|
// const price : tez = card_pattern.coefficient * card_pattern.quantity ;
|
||||||
|
// const receiver : contract(unit) = get_contract(source) ;
|
||||||
|
// const op : operation = transaction(price , unit , receiver) ;
|
||||||
|
// const operations : list(operation) = list op end ;
|
||||||
|
// end with (operations , s)
|
||||||
|
|
||||||
function buy_single(const action : action_buy_single ; const s : storage_type) : (list(operation) * storage_type) is
|
function buy_single(const action : action_buy_single ; const s : storage_type) : (list(operation) * storage_type) is
|
||||||
begin
|
begin
|
||||||
// Check funds
|
// Check funds
|
||||||
@ -53,6 +72,7 @@ function buy_single(const action : action_buy_single ; const s : storage_type) :
|
|||||||
const cards : cards = s.cards ;
|
const cards : cards = s.cards ;
|
||||||
cards[s.next_id] := record
|
cards[s.next_id] := record
|
||||||
card_owner = source ;
|
card_owner = source ;
|
||||||
|
card_pattern = action.card_to_buy ;
|
||||||
end ;
|
end ;
|
||||||
s.cards := cards ;
|
s.cards := cards ;
|
||||||
s.next_id := s.next_id + 1n ;
|
s.next_id := s.next_id + 1n ;
|
||||||
|
@ -19,10 +19,12 @@ open Ast_simplified
|
|||||||
let card owner =
|
let card owner =
|
||||||
ez_e_a_record [
|
ez_e_a_record [
|
||||||
("card_owner" , owner) ;
|
("card_owner" , owner) ;
|
||||||
|
("card_pattern" , e_a_nat 0) ;
|
||||||
]
|
]
|
||||||
|
|
||||||
let card_ty = t_record_ez [
|
let card_ty = t_record_ez [
|
||||||
("card_owner" , t_address) ;
|
("card_owner" , t_address) ;
|
||||||
|
("card_pattern" , t_nat) ;
|
||||||
]
|
]
|
||||||
|
|
||||||
let card_ez owner = card (e_a_address owner)
|
let card_ez owner = card (e_a_address owner)
|
||||||
|
@ -28,7 +28,7 @@ let expect ?(options = make_options ()) program entry_point input expected =
|
|||||||
let content () = Format.asprintf "Entry_point: %s" entry_point in
|
let content () = Format.asprintf "Entry_point: %s" entry_point in
|
||||||
error title content in
|
error title content in
|
||||||
trace run_error @@
|
trace run_error @@
|
||||||
Ligo.easy_run_typed_simplified ~debug_michelson:true ?amount:options.amount entry_point program input in
|
Ligo.easy_run_typed_simplified ~debug_michelson:false ?amount:options.amount entry_point program input in
|
||||||
let expect_error =
|
let expect_error =
|
||||||
let title () = "expect result" in
|
let title () = "expect result" in
|
||||||
let content () = Format.asprintf "Expected %a, got %a"
|
let content () = Format.asprintf "Expected %a, got %a"
|
||||||
|
Loading…
Reference in New Issue
Block a user