tx · HhAovsposfMehZQ7sh4Yv25AMGx2SjViioSD4nWfd26F

3N5fU7EcRcUgewh4E7y5XyaGWHCYp9LmUpJ:  -0.01000000 Waves

2019.08.29 18:15 [652674] smart account 3N5fU7EcRcUgewh4E7y5XyaGWHCYp9LmUpJ > SELF 0.00000000 Waves

{ "type": 13, "id": "HhAovsposfMehZQ7sh4Yv25AMGx2SjViioSD4nWfd26F", "fee": 1000000, "feeAssetId": null, "timestamp": 1567091675517, "version": 1, "sender": "3N5fU7EcRcUgewh4E7y5XyaGWHCYp9LmUpJ", "senderPublicKey": "Gmc2mU67saGu7XexbQkJ3gWn7xp1TkuUsR3Cd6iVXKsJ", "proofs": [ "4P664TratY6syfc8Up2SFfeyw3uh12n3xqxvYAbP7rC5PdAKwo7gooRuynqbWbKPk9HXHECyLiXHZ2yrwspUiTke" ], "script": "base64:AAIDAAAAAAAAAAAAAAAfAAAAAA1pc3N1ZXJBc3NldElkAQAAACD0eZ4pzmE2GGkDfc3UmxZk8rETA0WusGsvgc3HlTIZPgAAAAARaW52ZXN0bWVudEFzc2V0SWQBAAAAIEU/7QUAyvwgJvv+SrCfWZsPWPh74F3HCsShjmh/H0z2AAAAABhpbnZlc3RtZW50QXNzZXRJZElzV2F2ZXMHAAAAAA5vd25lclB1YmxpY0tleQEAAAAgU7xBwdSKxww3nnZDhiNIx5vNYkfkAJJo8h9oZ3mxNxgAAAAADG93bmVyQWRkcmVzcwkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQUAAAAOb3duZXJQdWJsaWNLZXkAAAAAEm93bmVyQWRkcmVzc1N0cmluZwIAAAAjM05BWWRzQ3J0cTV4NXllQWZjQzQ1YzFYZzZ2M1M4TG9pd2kAAAAAEWFjY291bnRUaGF0QWxsb3dzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUsuKbPrsJRAk2hWi4lia9MhdtRoVBFCA1AAAAABVhY2NvdW50VGhhdEFsbG93REFwcHMJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVR+ZQJfWyfFbW//7FjY3Cz3zzwo/8TmrxYAAAAAC2Fzc2V0RGlnaXRzAAAAAAAAAAPoAAAAABBzdW1BY2NvdW50QXNzZXRzAAAAAAAADbugAAAAAAxpc3N1ZXJBc3NldHMAAAAAAAABhqAAAAAACnN0YXJ0QmxvY2sAAAAAAAAJ73QAAAAAEmluY3JlYXNlUHJpY2VCbG9jawAAAAAAAAoKPQAAAAAIZW5kQmxvY2sAAAAAAAAKCj0AAAAABXByaWNlAAAAAAADMFhgAAAAAAtwcmljZVNlY29uZAAAAAAAAzBYYAAAAAANc29mdENhcEFtb3VudAAAAAACVAvkAAAAAAANaGFyZENhcEFtb3VudAAAAAALMvvBAAAAAAASa2V5U3VtQW1vdW50UHJlZml4AgAAAApzdW1BbW91bnQgAAAAABZrZXlTdW1QYWlkQW1vdW50UHJlZml4AgAAAAtwYWlkQW1vdW50IAAAAAASa2V5U3VtQXNzZXRzUHJlZml4AgAAAApzdW1Bc3NldHMgAAAAABVrZXlBbGxvd0FjY291bnRQcmVmaXgCAAAABmFsbG93IAAAAAANa2V5RGlzdEFzc2V0cwIAAAAGYXNzZXRzAAAAABJrZXlDb2xsZWN0ZWRBbW91bnQCAAAABmFtb3VudAAAAAAJa2V5SXNzdWVyAgAAAAZpc3N1ZXIAAAAACXBBZGRyZXNzMQkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM05DVkRhVDFBU2JSZDQyaEJTdzRFRzZvakdWUkd0dk1pejEAAAAACXBBZGRyZXNzMgkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM01zMmtUQXhkcmNYRHh3ZWRmYk5qU2k2ZXdHQ1VxdDNoZVoAAAAACXBBZGRyZXNzMwkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM042b2dubTd4blFTRmlvd25TMURmMUxhY0pVUVh2ZkRGTGUAAAAACXBBZGRyZXNzNAkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM010VkNtTjlNWmJXZjlxeGlNRm9FUEJyZGMyZkxwM1N2dUMAAAAACXBBZGRyZXNzNQkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM011V0c4Z3NUSzRSUUJzbTk3c01DdVVYVzk5SnZSeHdZU2cBAAAAH2dldEludmVzdG1lbnRBc3NldElkRm9yVHJhbnNmZXIAAAACAAAAB2lzV2F2ZXMAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHaXNXYXZlcwcFAAAAB2Fzc2V0SWQFAAAABHVuaXQAAAACAAAAAWkBAAAAB2RlcG9zaXQAAAAABAAAAAxjdXJyZW50UHJpY2UDCQAAZgAAAAIFAAAAEmluY3JlYXNlUHJpY2VCbG9jawUAAAAGaGVpZ2h0BQAAAAVwcmljZQUAAAALcHJpY2VTZWNvbmQEAAAADWFjY291bnRBbW91bnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAASa2V5Q29sbGVjdGVkQW1vdW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAADCQAAZgAAAAIFAAAACnN0YXJ0QmxvY2sFAAAABmhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAA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AAAAAgUAAAANY3VycmVudEFzc2V0cwkAAGkAAAACCQAAaAAAAAIFAAAAB3BheW1lbnQFAAAAC2Fzc2V0RGlnaXRzBQAAAAxjdXJyZW50UHJpY2UEAAAAEG5ld0FjY291bnRBc3NldHMJAABlAAAAAgUAAAANYWNjb3VudEFzc2V0cwkAAGkAAAACCQAAaAAAAAIFAAAAB3BheW1lbnQFAAAAC2Fzc2V0RGlnaXRzBQAAAAxjdXJyZW50UHJpY2UEAAAAEG5ld0FjY291bnRBbW91bnQJAABkAAAAAgUAAAANYWNjb3VudEFtb3VudAUAAAAHcGF5bWVudAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAABJrZXlTdW1BbW91bnRQcmVmaXgFAAAACmN1cnJlbnRLZXkFAAAACW5ld0Ftb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAABJrZXlTdW1Bc3NldHNQcmVmaXgFAAAACmN1cnJlbnRLZXkFAAAACW5ld0Fzc2V0cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANa2V5RGlzdEFzc2V0cwUAAAAQbmV3QWNjb3VudEFzc2V0cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAASa2V5Q29sbGVjdGVkQW1vdW50BQAAABBuZXdBY2NvdW50QW1vdW50BQAAAANuaWwAAAABaQEAAAAKd2l0aGRyYXdhbAAAAAAEAAAAC2lzREFwcEFsbG93BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAAFWFjY291bnRUaGF0QWxsb3dEQXBwcwkABCUAAAABBQAAAAR0aGlzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAADCQAAAAAAAAIFAAAAC2lzREFwcEFsbG93AAAAAAAAAAAACQAAAgAAAAECAAAAQldpdGhkcmF3YWxzIGFyZSBub3QgYXZhaWxhYmxlIHVudGlsIHRoZSBpc3N1ZXIgcGFzc2VzIHZlcmlmaWNhdGlvbgQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAG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", "chainId": 84, "height": 652674, "spentComplexity": 0 } View: original | compacted Prev: none Next: EDapjYpwWQ75e8gzvTLF86CrXf3XrcWFwfoyhKLYk2Q3 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let issuerAssetId = base58'HTL3BjrjDrHuRyJvs3sf3Mc1FHCLngEHbDueChPPoen9'
5+
6+let investmentAssetId = base58'5fKfiTswyAVob2DvFVwnqznqG4cz1PLNayBip9WUu8eh'
7+
8+let investmentAssetIdIsWaves = false
9+
10+let ownerPublicKey = base58'6dsLPP2XcCrMBAmC282ArSQkcdRsGwoALZoZchLK5MKM'
11+
12+let ownerAddress = addressFromPublicKey(ownerPublicKey)
13+
14+let ownerAddressString = "3NAYdsCrtq5x5yeAfcC45c1Xg6v3S8Loiwi"
15+
16+let accountThatAllows = Address(base58'3N6DwWxT82nGJUwBwd7L514r2u71gr7WhwJ')
17+
18+let accountThatAllowDApps = Address(base58'3N1SPvLZgv6FMfe5WNUtnPzt3okYxcJhYnR')
19+
20+let assetDigits = 1000
21+
22+let sumAccountAssets = 900000
23+
24+let issuerAssets = 100000
25+
26+let startBlock = 651124
27+
28+let increasePriceBlock = 657981
29+
30+let endBlock = 657981
31+
32+let price = 53500000
33+
34+let priceSecond = 53500000
35+
36+let softCapAmount = 10000000000
37+
38+let hardCapAmount = 48100000000
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+let pAddress1 = addressFromString("3NCVDaT1ASbRd42hBSw4EG6ojGVRGtvMiz1")
55+
56+let pAddress2 = addressFromString("3Ms2kTAxdrcXDxwedfbNjSi6ewGCUqt3heZ")
57+
58+let pAddress3 = addressFromString("3N6ognm7xnQSFiownS1Df1LacJUQXvfDFLe")
59+
60+let pAddress4 = addressFromString("3MtVCmN9MZbWf9qxiMFoEPBrdc2fLp3SvuC")
61+
62+let pAddress5 = addressFromString("3MuWG8gsTK4RQBsm97sMCuUXW99JvRxwYSg")
63+
64+func getInvestmentAssetIdForTransfer (isWaves,assetId) = if ((isWaves == false))
65+ then assetId
66+ else unit
67+
68+
69+@Callable(i)
70+func deposit () = {
71+ let currentPrice = if ((increasePriceBlock > height))
72+ then price
73+ else priceSecond
74+ let accountAmount = match getInteger(this, keyCollectedAmount) {
75+ case a: Int =>
76+ a
77+ case _ =>
78+ 0
79+ }
80+ if ((startBlock > height))
81+ then throw(((("The Tokensale works between " + toString(startBlock)) + " and ") + toString(endBlock)))
82+ else if (if ((height > endBlock))
83+ then true
84+ else (accountAmount >= hardCapAmount))
85+ then throw("The required amount has already been accumulated. If you are an investor, you can withdraw your funds.")
86+ else {
87+ let payment = match i.payment {
88+ case p: AttachedPayment =>
89+ let isPaymentOk = match p.assetId {
90+ case assetId: ByteVector =>
91+ if (!(investmentAssetIdIsWaves))
92+ then (assetId == investmentAssetId)
93+ else false
94+ case _ =>
95+ (investmentAssetIdIsWaves == true)
96+ }
97+ if (isPaymentOk)
98+ then p.amount
99+ else throw("Invalid asset ID of investment")
100+ case _ =>
101+ throw("Payment must be attached")
102+ }
103+ let currentKey = toBase58String(i.caller.bytes)
104+ let isAccountAllow = match getInteger(accountThatAllows, currentKey) {
105+ case a: Int =>
106+ a
107+ case _ =>
108+ -255
109+ }
110+ if ((-1 > isAccountAllow))
111+ then throw("Your account has no right to send funds.")
112+ else {
113+ let accountAssets = match getInteger(this, keyDistAssets) {
114+ case a: Int =>
115+ a
116+ case _ =>
117+ sumAccountAssets
118+ }
119+ if ((0 > (accountAssets - ((payment * assetDigits) / currentPrice))))
120+ then throw((("Payment is too big. Maximum possible payment is " + toString(((accountAssets * currentPrice) / assetDigits))) + " wavelet"))
121+ else {
122+ let currentAmount = match getInteger(this, (keySumAmountPrefix + currentKey)) {
123+ case a: Int =>
124+ a
125+ case _ =>
126+ 0
127+ }
128+ let newAmount = (currentAmount + payment)
129+ let currentAssets = match getInteger(this, (keySumAssetsPrefix + currentKey)) {
130+ case a: Int =>
131+ a
132+ case _ =>
133+ 0
134+ }
135+ let newAssets = (currentAssets + ((payment * assetDigits) / currentPrice))
136+ let newAccountAssets = (accountAssets - ((payment * assetDigits) / currentPrice))
137+ let newAccountAmount = (accountAmount + payment)
138+ WriteSet([DataEntry((keySumAmountPrefix + currentKey), newAmount), DataEntry((keySumAssetsPrefix + currentKey), newAssets), DataEntry(keyDistAssets, newAccountAssets), DataEntry(keyCollectedAmount, newAccountAmount)])
139+ }
140+ }
141+ }
142+ }
143+
144+
145+
146+@Callable(i)
147+func withdrawal () = {
148+ let isDAppAllow = match getInteger(accountThatAllowDApps, toString(this)) {
149+ case a: Int =>
150+ a
151+ case _ =>
152+ 0
153+ }
154+ if ((isDAppAllow == 0))
155+ then throw("Withdrawals are not available until the issuer passes verification")
156+ else {
157+ let currentKey = toBase58String(i.caller.bytes)
158+ let currentAssets = match getInteger(this, (keySumAssetsPrefix + currentKey)) {
159+ case a: Int =>
160+ a
161+ case _ =>
162+ 0
163+ }
164+ let currentAmount = match getInteger(this, (keySumAmountPrefix + currentKey)) {
165+ case a: Int =>
166+ a
167+ case _ =>
168+ 0
169+ }
170+ let accountAmount = match getInteger(this, keyCollectedAmount) {
171+ case a: Int =>
172+ a
173+ case _ =>
174+ 0
175+ }
176+ let accountAssets = match getInteger(this, keyDistAssets) {
177+ case a: Int =>
178+ a
179+ case _ =>
180+ 0
181+ }
182+ let investmentAssetIdForTransfer = getInvestmentAssetIdForTransfer(investmentAssetIdIsWaves, investmentAssetId)
183+ if (!(if ((height > endBlock))
184+ then true
185+ else (accountAmount >= hardCapAmount)))
186+ then throw(("The Tokensale end on block " + toString(endBlock)))
187+ else if (if (if ((currentKey == ownerAddressString))
188+ then (accountAmount >= softCapAmount)
189+ else false)
190+ then (isDAppAllow == 1)
191+ else false)
192+ then {
193+ let currentIssuerPaidAssets = match getInteger(this, keyIssuer) {
194+ case a: Int =>
195+ a
196+ case _ =>
197+ 0
198+ }
199+ if ((currentIssuerPaidAssets == 0))
200+ then ScriptResult(WriteSet([DataEntry(keyIssuer, (accountAssets + issuerAssets))]), TransferSet([ScriptTransfer(ownerAddress, (accountAssets + issuerAssets), issuerAssetId), ScriptTransfer(ownerAddress, accountAmount, investmentAssetIdForTransfer)]))
201+ else throw("The issuer has already taken its share!")
202+ }
203+ else if ((currentAmount == 0))
204+ then throw("Don't have money")
205+ else if (if ((accountAmount >= softCapAmount))
206+ then (isDAppAllow == 1)
207+ else false)
208+ then ScriptResult(WriteSet([DataEntry((keySumAmountPrefix + currentKey), 0), DataEntry((keySumAssetsPrefix + currentKey), 0)]), TransferSet([ScriptTransfer(i.caller, currentAssets, issuerAssetId)]))
209+ else ScriptResult(WriteSet([DataEntry((keySumAmountPrefix + currentKey), 0), DataEntry((keySumAssetsPrefix + currentKey), 0)]), TransferSet([ScriptTransfer(i.caller, currentAmount, investmentAssetIdForTransfer)]))
210+ }
211+ }
212+
213+
214+@Verifier(tx)
215+func verify () = match tx {
216+ case tx: SetScriptTransaction =>
217+ let pKey1Signed = if (isDefined(getInteger(extract(pAddress1), toBase58String(tx.id))))
218+ then 1
219+ else 0
220+ let pKey2Signed = if (isDefined(getInteger(extract(pAddress2), toBase58String(tx.id))))
221+ then 1
222+ else 0
223+ let pKey3Signed = if (isDefined(getInteger(extract(pAddress3), toBase58String(tx.id))))
224+ then 1
225+ else 0
226+ let pKey4Signed = if (isDefined(getInteger(extract(pAddress4), toBase58String(tx.id))))
227+ then 1
228+ else 0
229+ let pKey5Signed = if (isDefined(getInteger(extract(pAddress5), toBase58String(tx.id))))
230+ then 1
231+ else 0
232+ (((((pKey1Signed + pKey2Signed) + pKey3Signed) + pKey4Signed) + pKey5Signed) >= 3)
233+ case _ =>
234+ false
235+}
236+

github/deemru/w8io/3ef1775 
35.16 ms