fix "tezos-taco-shop-payout.md"

This commit is contained in:
Lesenechal Remi 2019-12-26 13:40:45 +01:00
parent d31eec1327
commit d859a5ce5c

View File

@ -17,7 +17,7 @@ In the [previous tutorial](tutorials/get-started/tezos-taco-shop-smart-contract.
## Analyzing the current contract ## Analyzing the current contract
### **`taco-shop.ligo`** ### **`taco-shop.ligo`**
```pascaligo ```pascaligo group=a
type taco_supply is record type taco_supply is record
current_stock : nat; current_stock : nat;
max_price : tez; max_price : tez;
@ -34,7 +34,7 @@ function buy_taco (const taco_kind_index: nat ; var taco_shop_storage : taco_sho
if amount =/= current_purchase_price then if amount =/= current_purchase_price then
// we won't sell tacos if the amount isn't correct // we won't sell tacos if the amount isn't correct
fail("Sorry, the taco you're trying to purchase has a different price"); failwith("Sorry, the taco you're trying to purchase has a different price");
else else
// Decrease the stock by 1n, because we've just sold one // Decrease the stock by 1n, because we've just sold one
taco_kind.current_stock := abs(taco_kind.current_stock - 1n); taco_kind.current_stock := abs(taco_kind.current_stock - 1n);
@ -47,7 +47,7 @@ function buy_taco (const taco_kind_index: nat ; var taco_shop_storage : taco_sho
### Purchase price formula ### Purchase price formula
Pedro's Taco Shop contract currently enables customers to buy tacos, at a computed price based on a simple formula. Pedro's Taco Shop contract currently enables customers to buy tacos, at a computed price based on a simple formula.
```pascaligo ```pascaligo skip
const current_purchase_price : tez = taco_kind.max_price / taco_kind.current_stock; const current_purchase_price : tez = taco_kind.max_price / taco_kind.current_stock;
``` ```
@ -67,8 +67,8 @@ This means that after all the *purchase conditions* of our contract are met - e.
### Defining the recipient ### Defining the recipient
In order to send tokens, we will need a receiver address - which in our case will be Pedro's personal account. Additionally we'll wrap the given address as a *`contract(unit)`* - which represents either a contract with no parameters, or an implicit account. In order to send tokens, we will need a receiver address - which in our case will be Pedro's personal account. Additionally we'll wrap the given address as a *`contract(unit)`* - which represents either a contract with no parameters, or an implicit account.
```pascaligo ```pascaligo group=ex1
const ownerAddress : address = "tz1TGu6TN5GSez2ndXXeDX6LgUDvLzPLqgYV"; const ownerAddress : address = ("tz1TGu6TN5GSez2ndXXeDX6LgUDvLzPLqgYV" : address);
const receiver : contract(unit) = get_contract(ownerAddress); const receiver : contract(unit) = get_contract(ownerAddress);
``` ```
@ -78,7 +78,7 @@ const receiver : contract(unit) = get_contract(ownerAddress);
Now we can transfer the `amount` received by `buy_taco` to Pedro's `ownerAddress`. We will do so by forging a `transaction(unit, amount, receiver)` within a list of operations returned at the end of our contract. Now we can transfer the `amount` received by `buy_taco` to Pedro's `ownerAddress`. We will do so by forging a `transaction(unit, amount, receiver)` within a list of operations returned at the end of our contract.
```pascaligo ```pascaligo group=ex1
const payoutOperation : operation = transaction(unit, amount, receiver) ; const payoutOperation : operation = transaction(unit, amount, receiver) ;
const operations : list(operation) = list const operations : list(operation) = list
payoutOperation payoutOperation
@ -90,14 +90,14 @@ end;
## Finalizing the contract ## Finalizing the contract
### **`taco-shop.ligo`** ### **`taco-shop.ligo`**
```pascaligo ```pascaligo group=b
type taco_supply is record type taco_supply is record
current_stock : nat; current_stock : nat;
max_price : tez; max_price : tez;
end end
type taco_shop_storage is map(nat, taco_supply); type taco_shop_storage is map(nat, taco_supply);
const ownerAddress: address = "tz1TGu6TN5GSez2ndXXeDX6LgUDvLzPLqgYV"; const ownerAddress: address = ("tz1TGu6TN5GSez2ndXXeDX6LgUDvLzPLqgYV" : address);
function buy_taco (const taco_kind_index: nat ; var taco_shop_storage : taco_shop_storage) : (list(operation) * taco_shop_storage) is function buy_taco (const taco_kind_index: nat ; var taco_shop_storage : taco_shop_storage) : (list(operation) * taco_shop_storage) is
begin begin
@ -108,7 +108,7 @@ function buy_taco (const taco_kind_index: nat ; var taco_shop_storage : taco_sho
if amount =/= current_purchase_price then if amount =/= current_purchase_price then
// we won't sell tacos if the amount isn't correct // we won't sell tacos if the amount isn't correct
fail("Sorry, the taco you're trying to purchase has a different price"); failwith("Sorry, the taco you're trying to purchase has a different price");
else else
// Decrease the stock by 1n, because we've just sold one // Decrease the stock by 1n, because we've just sold one
taco_kind.current_stock := abs(taco_kind.current_stock - 1n); taco_kind.current_stock := abs(taco_kind.current_stock - 1n);
@ -130,7 +130,7 @@ function buy_taco (const taco_kind_index: nat ; var taco_shop_storage : taco_sho
To confirm that our contract is valid, we can dry run it. As a result we see a *new operation* in the list of returned operations to be executed subsequently. To confirm that our contract is valid, we can dry run it. As a result we see a *new operation* in the list of returned operations to be executed subsequently.
```pascaligo ```pascaligo skip
ligo dry-run taco-shop.ligo --syntax pascaligo --amount 1 buy_taco 1n "map ligo dry-run taco-shop.ligo --syntax pascaligo --amount 1 buy_taco 1n "map
1n -> record 1n -> record
current_stock = 50n; current_stock = 50n;
@ -158,12 +158,12 @@ end"
Because Pedro is a member of the (STA) Specialty Taco Association, he has decided to donate **10%** of the earnings to the STA. We'll just add a `donationAddress` to the contract, and compute a 10% donation sum from each taco purchase. Because Pedro is a member of the (STA) Specialty Taco Association, he has decided to donate **10%** of the earnings to the STA. We'll just add a `donationAddress` to the contract, and compute a 10% donation sum from each taco purchase.
```pascaligo ```pascaligo group=bonus
const ownerAddress: address = "tz1TGu6TN5GSez2ndXXeDX6LgUDvLzPLqgYV"; const ownerAddress: address = ("tz1TGu6TN5GSez2ndXXeDX6LgUDvLzPLqgYV" : address);
const donationAddress: address = "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx"; const donationAddress: address = ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" : address);
``` ```
```pascaligo ```pascaligo group=bonus
const receiver : contract(unit) = get_contract(ownerAddress); const receiver : contract(unit) = get_contract(ownerAddress);
const donationReceiver : contract(unit) = get_contract(donationAddress); const donationReceiver : contract(unit) = get_contract(donationAddress);