tx · DjjB63KBwwjyNei8C8AUzn4VjNJuN6TR5rx9aPAGQJs9

3N4JcxmF8htX88u6FyzHaL5Hv8pd9vY87St:  -0.01000000 Waves

2020.09.22 10:34 [1188226] smart account 3N4JcxmF8htX88u6FyzHaL5Hv8pd9vY87St > SELF 0.00000000 Waves

{ "type": 13, "id": "DjjB63KBwwjyNei8C8AUzn4VjNJuN6TR5rx9aPAGQJs9", "fee": 1000000, "feeAssetId": null, "timestamp": 1600760158850, "version": 2, "chainId": 84, "sender": "3N4JcxmF8htX88u6FyzHaL5Hv8pd9vY87St", "senderPublicKey": "536wG8HnWgXVUHmeVeFqv4agH1yn6bg2uyaPB61GEFuj", "proofs": [ "sU7zK5Mojh3H1JQQjeLpzFsCzrUuCE1YGRepRH23kCihmWKFt8HkGfNBbP6D3suHoTMt9AtYYavkT1tXg6G5S5g" ], "script": "base64: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", "height": 1188226, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let LESSON = base58'GgA8mL3SEYvuhYoZFd418Li4bqXAasGbYCKJshTt2MGU'
5+
6+let PAR7 = base58'EtV3CXQ4wqm28WPB1KaBv5B9ke2bpXRZMutYNEJUQcXm'
7+
8+let JPYN = base58'CCA3xSCed22LYv22gZ646XjKQikbGYRe49StqbrSkNEK'
9+
10+let USDN = base58'3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC'
11+
12+let PAR7PAY = base58'BCqo4hvDBB2dzmidJQKkVtQtkgEQVVwMy1jjV4R4tNB4'
13+
14+let lessonOwnerPublicKey = base58'FU4wEpLzTjfekkKGGSaXKgBmP1LNJu6ewSw82z6AjoXH'
15+
16+let pending = 0
17+
18+let start = 1
19+
20+let end = 2
21+
22+@Callable(i)
23+func buyTicket (ticketPrice) = {
24+ let pmt = i.payments[0]
25+ let rateAmount = (pmt.amount / ticketPrice)
26+ if ((pmt.assetId != PAR7))
27+ then throw("works with PAR7 only")
28+ else {
29+ let buyCurrentKey = toBase58String(i.caller.bytes)
30+ let buyCurrentAmount = match getInteger(this, buyCurrentKey) {
31+ case a: Int =>
32+ a
33+ case _ =>
34+ 0
35+ }
36+ let buyNewAmount = (buyCurrentAmount + rateAmount)
37+[IntegerEntry(("buy_" + buyCurrentKey), buyNewAmount), ScriptTransfer(i.caller, rateAmount, LESSON)]
38+ }
39+ }
40+
41+
42+
43+@Callable(i)
44+func lessonSubscription (lessonId) = {
45+ let pmt = i.payments[0]
46+ let pmtId = pmt.assetId
47+ let studentAddress = toBase58String(i.caller.bytes)
48+ let lessonCurrentKey = ((lessonId + "_") + studentAddress)
49+ let lessonFeeCurrentKey = ((("fee_" + lessonId) + "_") + studentAddress)
50+ let ticketId = toBase58String(value(pmtId))
51+ let ticketCurrentKey = ((ticketId + "_") + studentAddress)
52+ let ticketCurrentAmount = match getInteger(this, ticketCurrentKey) {
53+ case a: Int =>
54+ a
55+ case _ =>
56+ 0
57+ }
58+ let ticketNewAmount = (ticketCurrentAmount + pmt.amount)
59+[IntegerEntry(lessonCurrentKey, pending), IntegerEntry(lessonFeeCurrentKey, pmt.amount), IntegerEntry(ticketCurrentKey, ticketNewAmount)]
60+ }
61+
62+
63+
64+@Callable(i)
65+func lessonStart (lessonId,studentAddress) = {
66+ let lessonCurrentKey = ((lessonId + "_") + studentAddress)
67+[IntegerEntry(lessonCurrentKey, start)]
68+ }
69+
70+
71+
72+@Callable(i)
73+func lessonFinish (lessonId,studentAddress) = {
74+ let ticketId = toBase58String(value(LESSON))
75+ let lessonFeeCurrentKey = ((("fee_" + lessonId) + "_") + studentAddress)
76+ let paymentAmount = match getInteger(this, lessonFeeCurrentKey) {
77+ case a: Int =>
78+ a
79+ case _ =>
80+ 0
81+ }
82+ let ownerKey = toBase58String(i.caller.bytes)
83+ let ownerAmount = match getInteger(this, ownerKey) {
84+ case a: Int =>
85+ a
86+ case _ =>
87+ 0
88+ }
89+ let newOwnerAmount = (ownerAmount + paymentAmount)
90+ let lessonCurrentKey = ((lessonId + "_") + studentAddress)
91+ let ticketCurrentKey = ((ticketId + "_") + studentAddress)
92+ let ticketCurrentAmount = match getInteger(this, ticketCurrentKey) {
93+ case a: Int =>
94+ a
95+ case _ =>
96+ 0
97+ }
98+ let ticket = fromBase58String(ticketId)
99+[IntegerEntry(ownerKey, newOwnerAmount), IntegerEntry(lessonCurrentKey, end), Burn(LESSON, paymentAmount)]
100+ }
101+
102+
103+
104+@Callable(i)
105+func ownerWithdraw () = {
106+ let ownerKey = toBase58String(i.caller.bytes)
107+ let currentAmount = match getInteger(this, ownerKey) {
108+ case a: Int =>
109+ a
110+ case _ =>
111+ 0
112+ }
113+ if ((0 > currentAmount))
114+ then throw("Can't withdraw negative amount")
115+ else [IntegerEntry(ownerKey, 0), ScriptTransfer(i.caller, currentAmount, PAR7)]
116+ }
117+
118+
119+@Verifier(tx)
120+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], lessonOwnerPublicKey)
121+

github/deemru/w8io/873ac7e 
18.37 ms