fix "tezos-taco-shop-payout.md"
This commit is contained in:
parent
d31eec1327
commit
d859a5ce5c
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user