tx · HbtV2BCKiYaCA2pm2mHdLAevT6Gr5LsSAvLZNaSMoe8e

3N72X4SpkNvXqi3ruDJgYdDmVJe8nRqj7zU:  -0.01400000 Waves

2020.09.22 09:31 [1188162] smart account 3N72X4SpkNvXqi3ruDJgYdDmVJe8nRqj7zU > SELF 0.00000000 Waves

{ "type": 13, "id": "HbtV2BCKiYaCA2pm2mHdLAevT6Gr5LsSAvLZNaSMoe8e", "fee": 1400000, "feeAssetId": null, "timestamp": 1600756321730, "version": 2, "chainId": 84, "sender": "3N72X4SpkNvXqi3ruDJgYdDmVJe8nRqj7zU", "senderPublicKey": "Ej9UfgzgHeDPtoinwmZaL71Jv5CgK2QzWZZYyQUbpByz", "proofs": [ "3kSRY7bSpKmxQjJmjDLCgQxGKf7G3D1cSRybYPPUck7jpmr3HQUz13aXt7d1z1rM3X7jgv6Vn7SWtwGoSSJVcTyK" ], "script": "base64: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", "height": 1188162, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6GZCrvWEsrpCLjbiqyrwTyVpoo3Sn3DwM8zsvjCmrVC5 Next: FQPEEDaiWPyVykCD9HxepXSqBxhX51ComXSDmGPX2Ymj Diff:
OldNewDifferences
1414 let end = 2
1515
1616 @Callable(i)
17-func buyTicket (swapAmount) = {
17+func buyTicket (ticketPrice) = {
1818 let pmt = i.payments[0]
19- let rateAmount = (pmt.amount / swapAmount)
19+ let rateAmount = (pmt.amount / ticketPrice)
2020 if ((pmt.assetId != PAR7))
2121 then throw("works with PAR7 only")
2222 else {
3838 func lessonSubscription (lessonId) = {
3939 let pmt = i.payments[0]
4040 let pmtId = pmt.assetId
41- let ticketId = toBase58String(value(pmtId))
4241 let studentAddress = toBase58String(i.caller.bytes)
4342 let lessonCurrentKey = ((lessonId + "_") + studentAddress)
43+ let lessonFeeCurrentKey = ((("fee_" + lessonId) + "_") + studentAddress)
44+ let ticketId = toBase58String(value(pmtId))
4445 let ticketCurrentKey = ((ticketId + "_") + studentAddress)
4546 let ticketCurrentAmount = match getInteger(this, ticketCurrentKey) {
4647 case a: Int =>
4950 0
5051 }
5152 let ticketNewAmount = (ticketCurrentAmount + pmt.amount)
52-[IntegerEntry(lessonCurrentKey, pending), IntegerEntry(ticketCurrentKey, ticketNewAmount)]
53+[IntegerEntry(lessonCurrentKey, pending), IntegerEntry(lessonFeeCurrentKey, pmt.amount), IntegerEntry(ticketCurrentKey, ticketNewAmount)]
5354 }
5455
5556
5657
5758 @Callable(i)
58-func lessonStart (lessonID,studentAddress,ticketId,paymentAmount) = {
59- let buyCurrentKey = ((ticketId + "_") + studentAddress)
60- let buyCurrentAmount = match getInteger(this, buyCurrentKey) {
59+func lessonStart (lessonId,studentAddress) = {
60+ let lessonCurrentKey = ((lessonId + "_") + studentAddress)
61+[IntegerEntry(lessonCurrentKey, start)]
62+ }
63+
64+
65+
66+@Callable(i)
67+func lessonFinish (lessonId,studentAddress) = {
68+ let ticketId = toBase58String(value(LESSON))
69+ let lessonFeeCurrentKey = ((("fee_" + lessonId) + "_") + studentAddress)
70+ let paymentAmount = match getInteger(this, lessonFeeCurrentKey) {
6171 case a: Int =>
6272 a
6373 case _ =>
6474 0
6575 }
66- let buyNewAmount = (buyCurrentAmount - paymentAmount)
67- let lessonCurrentKey = ((lessonID + "_") + studentAddress)
68-[IntegerEntry(buyCurrentKey, buyNewAmount), IntegerEntry(lessonCurrentKey, start)]
69- }
70-
71-
72-
73-@Callable(i)
74-func lessonFinish (lessonId,ticketId,studentAddress,paymentAmount,ticketAmount) = {
7576 let ownerKey = toBase58String(i.caller.bytes)
7677 let ownerAmount = match getInteger(this, ownerKey) {
7778 case a: Int =>
8990 0
9091 }
9192 let ticket = fromBase58String(ticketId)
92-[IntegerEntry(ownerKey, newOwnerAmount), IntegerEntry(lessonCurrentKey, end), Burn(ticket, ticketAmount)]
93+[IntegerEntry(ownerKey, newOwnerAmount), IntegerEntry(lessonCurrentKey, end), Burn(LESSON, paymentAmount)]
9394 }
9495
9596
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let LESSON = base58'GgA8mL3SEYvuhYoZFd418Li4bqXAasGbYCKJshTt2MGU'
55
66 let PAR7 = base58'EtV3CXQ4wqm28WPB1KaBv5B9ke2bpXRZMutYNEJUQcXm'
77
88 let lessonOwnerPublicKey = base58'Ej9UfgzgHeDPtoinwmZaL71Jv5CgK2QzWZZYyQUbpByz'
99
1010 let pending = 0
1111
1212 let start = 1
1313
1414 let end = 2
1515
1616 @Callable(i)
17-func buyTicket (swapAmount) = {
17+func buyTicket (ticketPrice) = {
1818 let pmt = i.payments[0]
19- let rateAmount = (pmt.amount / swapAmount)
19+ let rateAmount = (pmt.amount / ticketPrice)
2020 if ((pmt.assetId != PAR7))
2121 then throw("works with PAR7 only")
2222 else {
2323 let buyCurrentKey = toBase58String(i.caller.bytes)
2424 let buyCurrentAmount = match getInteger(this, buyCurrentKey) {
2525 case a: Int =>
2626 a
2727 case _ =>
2828 0
2929 }
3030 let buyNewAmount = (buyCurrentAmount + rateAmount)
3131 [IntegerEntry(("buy_" + buyCurrentKey), buyNewAmount), ScriptTransfer(i.caller, rateAmount, LESSON)]
3232 }
3333 }
3434
3535
3636
3737 @Callable(i)
3838 func lessonSubscription (lessonId) = {
3939 let pmt = i.payments[0]
4040 let pmtId = pmt.assetId
41- let ticketId = toBase58String(value(pmtId))
4241 let studentAddress = toBase58String(i.caller.bytes)
4342 let lessonCurrentKey = ((lessonId + "_") + studentAddress)
43+ let lessonFeeCurrentKey = ((("fee_" + lessonId) + "_") + studentAddress)
44+ let ticketId = toBase58String(value(pmtId))
4445 let ticketCurrentKey = ((ticketId + "_") + studentAddress)
4546 let ticketCurrentAmount = match getInteger(this, ticketCurrentKey) {
4647 case a: Int =>
4748 a
4849 case _ =>
4950 0
5051 }
5152 let ticketNewAmount = (ticketCurrentAmount + pmt.amount)
52-[IntegerEntry(lessonCurrentKey, pending), IntegerEntry(ticketCurrentKey, ticketNewAmount)]
53+[IntegerEntry(lessonCurrentKey, pending), IntegerEntry(lessonFeeCurrentKey, pmt.amount), IntegerEntry(ticketCurrentKey, ticketNewAmount)]
5354 }
5455
5556
5657
5758 @Callable(i)
58-func lessonStart (lessonID,studentAddress,ticketId,paymentAmount) = {
59- let buyCurrentKey = ((ticketId + "_") + studentAddress)
60- let buyCurrentAmount = match getInteger(this, buyCurrentKey) {
59+func lessonStart (lessonId,studentAddress) = {
60+ let lessonCurrentKey = ((lessonId + "_") + studentAddress)
61+[IntegerEntry(lessonCurrentKey, start)]
62+ }
63+
64+
65+
66+@Callable(i)
67+func lessonFinish (lessonId,studentAddress) = {
68+ let ticketId = toBase58String(value(LESSON))
69+ let lessonFeeCurrentKey = ((("fee_" + lessonId) + "_") + studentAddress)
70+ let paymentAmount = match getInteger(this, lessonFeeCurrentKey) {
6171 case a: Int =>
6272 a
6373 case _ =>
6474 0
6575 }
66- let buyNewAmount = (buyCurrentAmount - paymentAmount)
67- let lessonCurrentKey = ((lessonID + "_") + studentAddress)
68-[IntegerEntry(buyCurrentKey, buyNewAmount), IntegerEntry(lessonCurrentKey, start)]
69- }
70-
71-
72-
73-@Callable(i)
74-func lessonFinish (lessonId,ticketId,studentAddress,paymentAmount,ticketAmount) = {
7576 let ownerKey = toBase58String(i.caller.bytes)
7677 let ownerAmount = match getInteger(this, ownerKey) {
7778 case a: Int =>
7879 a
7980 case _ =>
8081 0
8182 }
8283 let newOwnerAmount = (ownerAmount + paymentAmount)
8384 let lessonCurrentKey = ((lessonId + "_") + studentAddress)
8485 let ticketCurrentKey = ((ticketId + "_") + studentAddress)
8586 let ticketCurrentAmount = match getInteger(this, ticketCurrentKey) {
8687 case a: Int =>
8788 a
8889 case _ =>
8990 0
9091 }
9192 let ticket = fromBase58String(ticketId)
92-[IntegerEntry(ownerKey, newOwnerAmount), IntegerEntry(lessonCurrentKey, end), Burn(ticket, ticketAmount)]
93+[IntegerEntry(ownerKey, newOwnerAmount), IntegerEntry(lessonCurrentKey, end), Burn(LESSON, paymentAmount)]
9394 }
9495
9596
9697
9798 @Callable(i)
9899 func ownerWithdraw () = {
99100 let ownerKey = toBase58String(i.caller.bytes)
100101 let currentAmount = match getInteger(this, ownerKey) {
101102 case a: Int =>
102103 a
103104 case _ =>
104105 0
105106 }
106107 if ((0 > currentAmount))
107108 then throw("Can't withdraw negative amount")
108109 else [IntegerEntry(ownerKey, 0), ScriptTransfer(i.caller, currentAmount, PAR7)]
109110 }
110111
111112
112113 @Verifier(tx)
113114 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], lessonOwnerPublicKey)
114115

github/deemru/w8io/3ef1775 
37.67 ms