tx · 7LyEqmsiG4g7LK8KuVQN3HaGw9fsx3YxEoueta5wasX2

3N795vwiKQc62SVUek8PJyWsM6FPXFdXjGM:  -0.01000000 Waves

2019.08.12 18:37 [628030] smart account 3N795vwiKQc62SVUek8PJyWsM6FPXFdXjGM > SELF 0.00000000 Waves

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

github/deemru/w8io/3ef1775 
33.34 ms