tx · GfRo2tTEW6eQnYjECDL3f5P4En8N2tsgPXcS6qngnN4u

3MtmUyQTfTB4pH1Mf2Yi33dwhtQAEknrcnt:  -0.01000000 Waves

2019.08.29 17:09 [652601] smart account 3MtmUyQTfTB4pH1Mf2Yi33dwhtQAEknrcnt > SELF 0.00000000 Waves

{ "type": 13, "id": "GfRo2tTEW6eQnYjECDL3f5P4En8N2tsgPXcS6qngnN4u", "fee": 1000000, "feeAssetId": null, "timestamp": 1567087781550, "version": 1, "sender": "3MtmUyQTfTB4pH1Mf2Yi33dwhtQAEknrcnt", "senderPublicKey": "6y9ipqDLXNURRUcNNEAWUKHCBRZzn4YVXUfWtFnkDwh3", "proofs": [ "Df2nhcjo9JNKpcj6EnZruicbpX3VPzu6YxFzjkxUtwBByFGL1nzrVRaES5Y1NuucaoPY4CFUCWcFeLcdWc5i2K2" ], "script": "base64:AAIDAAAAAAAAAAAAAAAaAAAAAA1pc3N1ZXJBc3NldElkAQAAACDETBy6ROA274jE5Isp39EmY7v1asuG1kMr5GOcCWD8uAAAAAARaW52ZXN0bWVudEFzc2V0SWQBAAAAIKUSt2QTaYe7I8TmazUtP5W5UKTGKYykO9ISPNm6lmgwAAAAABhpbnZlc3RtZW50QXNzZXRJZElzV2F2ZXMHAAAAAA5vd25lclB1YmxpY0tleQEAAAAgaJQF4eFpQ6qh+w+zHn5iJbOtYLF2ydoX4NxRJWUK9m8AAAAADG93bmVyQWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAOb3duZXJQdWJsaWNLZXkAAAAAEm93bmVyQWRkcmVzc1N0cmluZwIAAAAjM04yeUFMRlNwYjNOa1BISDlXcWFETVQxS0xKMllhSFRnYngAAAAAEWFjY291bnRUaGF0QWxsb3dzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUsuKbPrsJRAk2hWi4lia9MhdtRoVBFCA1AAAAABVhY2NvdW50VGhhdEFsbG93REFwcHMJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVR+ZQJfWyfFbW//7FjY3Cz3zzwo/8TmrxYAAAAAC2Fzc2V0RGlnaXRzAAAAAAAAD0JAAAAAABBzdW1BY2NvdW50QXNzZXRzAAAAAAAI8NGAAAAAAAxpc3N1ZXJBc3NldHMAAAAAAAL68IAAAAAACnN0YXJ0QmxvY2sAAAAAAAAJ9TYAAAAAEmluY3JlYXNlUHJpY2VCbG9jawAAAAAAAAn9PwAAAAAIZW5kQmxvY2sAAAAAAAAJ/T8AAAAABXByaWNlAAAAAAAF9eEAAAAAAAtwcmljZVNlY29uZAAAAAAABfXhAAAAAAANc29mdENhcEFtb3VudAAAAAACVAvkAAAAAAANaGFyZENhcEFtb3VudAAAAAADfhHWAAAAAAASa2V5U3VtQW1vdW50UHJlZml4AgAAAApzdW1BbW91bnQgAAAAABZrZXlTdW1QYWlkQW1vdW50UHJlZml4AgAAAAtwYWlkQW1vdW50IAAAAAASa2V5U3VtQXNzZXRzUHJlZml4AgAAAApzdW1Bc3NldHMgAAAAABVrZXlBbGxvd0FjY291bnRQcmVmaXgCAAAABmFsbG93IAAAAAANa2V5RGlzdEFzc2V0cwIAAAAGYXNzZXRzAAAAABJrZXlDb2xsZWN0ZWRBbW91bnQCAAAABmFtb3VudAAAAAAJa2V5SXNzdWVyAgAAAAZpc3N1ZXIBAAAAH2dldEludmVzdG1lbnRBc3NldElkRm9yVHJhbnNmZXIAAAACAAAAB2lzV2F2ZXMAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHaXNXYXZlcwcFAAAAB2Fzc2V0SWQFAAAABHVuaXQAAAACAAAAAWkBAAAAB2RlcG9zaXQAAAAABAAAAAxjdXJyZW50UHJpY2UDCQAAZgAAAAIFAAAAEmluY3JlYXNlUHJpY2VCbG9jawUAAAAGaGVpZ2h0BQAAAAVwcmljZQUAAAALcHJpY2VTZWNvbmQEAAAADWFjY291bnRBbW91bnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAASa2V5Q29sbGVjdGVkQW1vdW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAADCQAAZgAAAAIFAAAACnN0YXJ0QmxvY2sFAAAABmhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABxUaGUgVG9rZW5zYWxlIHdvcmtzIGJldHdlZW4gCQABpAAAAAEFAAAACnN0YXJ0QmxvY2sCAAAABSBhbmQgCQABpAAAAAEFAAAACGVuZEJsb2NrAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAhlbmRCbG9jawYJAABnAAAAAgUAAAANYWNjb3VudEFtb3VudAUAAAANaGFyZENhcEFtb3VudAkAAAIAAAABAgAAAGZUaGUgcmVxdWlyZWQgYW1vdW50IGhhcyBhbHJlYWR5IGJlZW4gYWNjdW11bGF0ZWQuIElmIHlvdSBhcmUgYW4gaW52ZXN0b3IsIHlvdSBjYW4gd2l0aGRyYXcgeW91ciBmdW5kcy4EAAAAB3BheW1lbnQEAAAAByRtYXRjaDAIBQAAAAFpAAAAB3BheW1lbnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0F0dGFjaGVkUGF5bWVudAQAAAABcAUAAAAHJG1hdGNoMAQAAAALaXNQYXltZW50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", "chainId": 84, "height": 652601, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let issuerAssetId = base58'EDGDvUPUgW1erYoGwxb2eRrXZzCmD168TvLW5FDBqjWX'
5+
6+let investmentAssetId = base58'C7NpjX1zJ1JrSGw8AvpBwfwUHU44a2u6mhCjdkJgXgrT'
7+
8+let investmentAssetIdIsWaves = false
9+
10+let ownerPublicKey = base58'83EK9PgnufWqLmdKkp1U1KTeK93nYCmvgTzwJdjz9Ptz'
11+
12+let ownerAddress = addressFromPublicKey(ownerPublicKey)
13+
14+let ownerAddressString = "3N2yALFSpb3NkPHH9WqaDMT1KLJ2YaHTgbx"
15+
16+let accountThatAllows = Address(base58'3N6DwWxT82nGJUwBwd7L514r2u71gr7WhwJ')
17+
18+let accountThatAllowDApps = Address(base58'3N1SPvLZgv6FMfe5WNUtnPzt3okYxcJhYnR')
19+
20+let assetDigits = 1000000
21+
22+let sumAccountAssets = 150000000
23+
24+let issuerAssets = 50000000
25+
26+let startBlock = 652598
27+
28+let increasePriceBlock = 654655
29+
30+let endBlock = 654655
31+
32+let price = 100000000
33+
34+let priceSecond = 100000000
35+
36+let softCapAmount = 10000000000
37+
38+let hardCapAmount = 15000000000
39+
40+let keySumAmountPrefix = "sumAmount "
41+
42+let keySumPaidAmountPrefix = "paidAmount "
43+
44+let keySumAssetsPrefix = "sumAssets "
45+
46+let keyAllowAccountPrefix = "allow "
47+
48+let keyDistAssets = "assets"
49+
50+let keyCollectedAmount = "amount"
51+
52+let keyIssuer = "issuer"
53+
54+func getInvestmentAssetIdForTransfer (isWaves,assetId) = if ((isWaves == false))
55+ then assetId
56+ else unit
57+
58+
59+@Callable(i)
60+func deposit () = {
61+ let currentPrice = if ((increasePriceBlock > height))
62+ then price
63+ else priceSecond
64+ let accountAmount = match getInteger(this, keyCollectedAmount) {
65+ case a: Int =>
66+ a
67+ case _ =>
68+ 0
69+ }
70+ if ((startBlock > height))
71+ then throw(((("The Tokensale works between " + toString(startBlock)) + " and ") + toString(endBlock)))
72+ else if (if ((height > endBlock))
73+ then true
74+ else (accountAmount >= hardCapAmount))
75+ then throw("The required amount has already been accumulated. If you are an investor, you can withdraw your funds.")
76+ else {
77+ let payment = match i.payment {
78+ case p: AttachedPayment =>
79+ let isPaymentOk = match p.assetId {
80+ case assetId: ByteVector =>
81+ if (!(investmentAssetIdIsWaves))
82+ then (assetId == investmentAssetId)
83+ else false
84+ case _ =>
85+ (investmentAssetIdIsWaves == true)
86+ }
87+ if (isPaymentOk)
88+ then p.amount
89+ else throw("Invalid asset ID of investment")
90+ case _ =>
91+ throw("Payment must be attached")
92+ }
93+ let currentKey = toBase58String(i.caller.bytes)
94+ let isAccountAllow = match getInteger(accountThatAllows, currentKey) {
95+ case a: Int =>
96+ a
97+ case _ =>
98+ -255
99+ }
100+ if ((-1 > isAccountAllow))
101+ then throw("Your account has no right to send funds.")
102+ else {
103+ let accountAssets = match getInteger(this, keyDistAssets) {
104+ case a: Int =>
105+ a
106+ case _ =>
107+ sumAccountAssets
108+ }
109+ if ((0 > (accountAssets - ((payment * assetDigits) / currentPrice))))
110+ then throw((("Payment is too big. Maximum possible payment is " + toString(((accountAssets * currentPrice) / assetDigits))) + " wavelet"))
111+ else {
112+ let currentAmount = match getInteger(this, (keySumAmountPrefix + currentKey)) {
113+ case a: Int =>
114+ a
115+ case _ =>
116+ 0
117+ }
118+ let newAmount = (currentAmount + payment)
119+ let currentAssets = match getInteger(this, (keySumAssetsPrefix + currentKey)) {
120+ case a: Int =>
121+ a
122+ case _ =>
123+ 0
124+ }
125+ let newAssets = (currentAssets + ((payment * assetDigits) / currentPrice))
126+ let newAccountAssets = (accountAssets - ((payment * assetDigits) / currentPrice))
127+ let newAccountAmount = (accountAmount + payment)
128+ WriteSet([DataEntry((keySumAmountPrefix + currentKey), newAmount), DataEntry((keySumAssetsPrefix + currentKey), newAssets), DataEntry(keyDistAssets, newAccountAssets), DataEntry(keyCollectedAmount, newAccountAmount)])
129+ }
130+ }
131+ }
132+ }
133+
134+
135+
136+@Callable(i)
137+func withdrawal () = {
138+ let isDAppAllow = match getInteger(accountThatAllowDApps, toString(this)) {
139+ case a: Int =>
140+ a
141+ case _ =>
142+ 0
143+ }
144+ if ((isDAppAllow == 0))
145+ then throw("Withdrawals are not available until the issuer passes verification")
146+ else {
147+ let currentKey = toBase58String(i.caller.bytes)
148+ let currentAssets = match getInteger(this, (keySumAssetsPrefix + currentKey)) {
149+ case a: Int =>
150+ a
151+ case _ =>
152+ 0
153+ }
154+ let currentAmount = match getInteger(this, (keySumAmountPrefix + currentKey)) {
155+ case a: Int =>
156+ a
157+ case _ =>
158+ 0
159+ }
160+ let accountAmount = match getInteger(this, keyCollectedAmount) {
161+ case a: Int =>
162+ a
163+ case _ =>
164+ 0
165+ }
166+ let accountAssets = match getInteger(this, keyDistAssets) {
167+ case a: Int =>
168+ a
169+ case _ =>
170+ 0
171+ }
172+ let investmentAssetIdForTransfer = getInvestmentAssetIdForTransfer(investmentAssetIdIsWaves, investmentAssetId)
173+ if (!(if ((height > endBlock))
174+ then true
175+ else (accountAmount >= hardCapAmount)))
176+ then throw(("The Tokensale end on block " + toString(endBlock)))
177+ else if (if (if ((currentKey == ownerAddressString))
178+ then (accountAmount >= softCapAmount)
179+ else false)
180+ then (isDAppAllow == 1)
181+ else false)
182+ then {
183+ let currentIssuerPaidAssets = match getInteger(this, keyIssuer) {
184+ case a: Int =>
185+ a
186+ case _ =>
187+ 0
188+ }
189+ if ((currentIssuerPaidAssets == 0))
190+ then ScriptResult(WriteSet([DataEntry(keyIssuer, (accountAssets + issuerAssets))]), TransferSet([ScriptTransfer(ownerAddress, (accountAssets + issuerAssets), issuerAssetId), ScriptTransfer(ownerAddress, accountAmount, investmentAssetIdForTransfer)]))
191+ else throw("The issuer has already taken its share!")
192+ }
193+ else if ((currentAmount == 0))
194+ then throw("Don't have money")
195+ else if (if ((accountAmount >= softCapAmount))
196+ then (isDAppAllow == 1)
197+ else false)
198+ then ScriptResult(WriteSet([DataEntry((keySumAmountPrefix + currentKey), 0), DataEntry((keySumAssetsPrefix + currentKey), 0)]), TransferSet([ScriptTransfer(i.caller, currentAssets, issuerAssetId)]))
199+ else ScriptResult(WriteSet([DataEntry((keySumAmountPrefix + currentKey), 0), DataEntry((keySumAssetsPrefix + currentKey), 0)]), TransferSet([ScriptTransfer(i.caller, currentAmount, investmentAssetIdForTransfer)]))
200+ }
201+ }
202+
203+
204+@Verifier(tx)
205+func verify () = match tx {
206+ case tx: SetScriptTransaction =>
207+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
208+ case _ =>
209+ false
210+}
211+

github/deemru/w8io/873ac7e 
17.42 ms