tx · 8U52z4b6U2VPdBERpdMWGQt9rmTkBve2RZrEDJK2SLBf 3MrrWZRXFipBPwYy79PVBEVrR7oYW62jf8m: -0.01000000 Waves 2022.05.11 20:08 [2047284] smart account 3MrrWZRXFipBPwYy79PVBEVrR7oYW62jf8m > SELF 0.00000000 Waves
{ "type": 13, "id": "8U52z4b6U2VPdBERpdMWGQt9rmTkBve2RZrEDJK2SLBf", "fee": 1000000, "feeAssetId": null, "timestamp": 1652288894021, "version": 2, "chainId": 84, "sender": "3MrrWZRXFipBPwYy79PVBEVrR7oYW62jf8m", "senderPublicKey": "AaHNopvbKHuDBasQJKhbMwM4d2XpUNjcJRJtfjEDbXQx", "proofs": [ "4m6LBND2HfMv7GUFYqcsABfGv7NwbRTtEdnSA95sXHFM9v6ere3UoJU3PeF2Gz9V7UiepAUdX91XEq6Xv5ga3xGj" ], "script": "base64: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ZnRMaXN0CQAEtQAAAAIJAQAAABBnZXRSZW1haW5pbmdOZnRzAAAAAAIAAAABXwQAAAAUcmVtYWluaW5nTmZ0TGlzdFNpemUJAQAAABRnZXRSZW1haW5pbmdOZnRDb3VudAAAAAAEAAAABHJhbmQJAASxAAAAAQkBAAAAD2dldFJhbmRvbU51bWJlcgAAAAEFAAAAAWkEAAAACHBvc2l0aW9uCQAAagAAAAIFAAAABHJhbmQFAAAAFHJlbWFpbmluZ05mdExpc3RTaXplBAAAABFzZWxlY3RlZE5mdE51bWJlcgkAAZEAAAACBQAAABByZW1haW5pbmdOZnRMaXN0BQAAAAhwb3NpdGlvbgQAAAAOc2VsZWN0ZWROZnRTdHIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAEXNlbGVjdGVkTmZ0TnVtYmVyBAAAABd1cGRhdGVkUmVtYWluaW5nTmZ0TGlzdAkABFEAAAACBQAAABByZW1haW5pbmdOZnRMaXN0BQAAAAhwb3NpdGlvbgQAAAAfdXBkYXRlZFJlbWFpbmluZ05mdExpc3RBc1N0cmluZwkABLkAAAACBQAAABd1cGRhdGVkUmVtYWluaW5nTmZ0TGlzdAIAAAABXwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAADWNhbGxlckFkZHJlc3MAAAAAAAAAAAEJAAJZAAAAAQUAAAAOc2VsZWN0ZWROZnRTdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAA5zZWxlY3RlZE5mdFN0cgIAAAAKX293bmVyQWRkcgUAAAANY2FsbGVyQWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARcmVtYWluaW5nTmZ0Q291bnQJAABlAAAAAgkBAAAAFGdldFJlbWFpbmluZ05mdENvdW50AAAAAAAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA1yZW1haW5pbmdOZnRzBQAAAB91cGRhdGVkUmVtYWluaW5nTmZ0TGlzdEFzU3RyaW5nCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQABLAAAAAIFAAAADnNlbGVjdGVkTmZ0U3RyAgAAAAhfc29sZE91dAYFAAAAA25pbAAAAAFpAQAAAAtzdG9wUHJlc2FsZQAAAAADCQEAAAACIT0AAAACCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzCAUAAAAEdGhpcwAAAAVieXRlcwkAAAIAAAABAgAAAB9Pbmx5IE93bmVyIENhbiBTdG9wIHRoZSBQcmVzYWxlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACAgAAAA1wcmVzYWxlU3RhdHVzBwUAAAADbmlsAAAAAWkBAAAADXJlT3BlblByZXNhbGUAAAAAAwkBAAAAAiE9AAAAAggIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwgFAAAABHRoaXMAAAAFYnl0ZXMJAAACAAAAAQIAAAAiT25seSBPd25lciBDYW4gUmUtT3BlbiB0aGUgUHJlc2FsZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgIAAAANcHJlc2FsZVN0YXR1cwYFAAAAA25pbAAAAAFpAQAAAAVjbGFpbQAAAAEAAAAGYW1vdW50AwkBAAAAAiE9AAAAAggIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwgFAAAABHRoaXMAAAAFYnl0ZXMJAAACAAAAAQIAAAAUT25seSBPd25lciBDYW4gQ2xhaW0JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABBQAAAAljbGFpbUFkZHIJAABoAAAAAgUAAAAGYW1vdW50BQAAAAN3dnMFAAAABHVuaXQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5WDinDA==", "height": 2047284, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: VAAjUJzmudDhdHHhxxTYksgqHMB6a3nUvk3MPqLBZxo Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let maxTokenAmountForPresale = 10000000 | |
5 | + | ||
6 | + | let tokenId = base58'DJxQ2KqhzD9KyfvCAgbTnGAgDEqCHkkYYz9bZcRmatGa' | |
7 | + | ||
8 | + | let claimAddr = base58'3N3fEf4mmVyYcbeuHYmZvXuJjoXjH5WRuEV' | |
9 | + | ||
10 | + | let wvs = 100000000 | |
11 | + | ||
12 | + | let tokenUnitPrice = 5 | |
13 | + | ||
14 | + | let denominator = 10000000 | |
15 | + | ||
16 | + | let decimalsInToken = 100 | |
17 | + | ||
18 | + | func tryGetInteger (key) = { | |
19 | + | let val = match getInteger(this, key) { | |
20 | + | case b: Int => | |
21 | + | b | |
22 | + | case _ => | |
23 | + | 0 | |
24 | + | } | |
25 | + | val | |
26 | + | } | |
27 | + | ||
28 | + | ||
29 | + | func tryGetString (key) = { | |
30 | + | let val = match getString(this, key) { | |
31 | + | case b: String => | |
32 | + | b | |
33 | + | case _ => | |
34 | + | "" | |
35 | + | } | |
36 | + | val | |
37 | + | } | |
38 | + | ||
39 | + | ||
40 | + | func tryGetBoolean (key) = match getBoolean(this, key) { | |
41 | + | case b: Boolean => | |
42 | + | b | |
43 | + | case _ => | |
44 | + | false | |
45 | + | } | |
46 | + | ||
47 | + | ||
48 | + | func getCurrentTokenAmountBoughtFromPresale (addr) = { | |
49 | + | let val = tryGetInteger((addr + "_tokenPresale")) | |
50 | + | val | |
51 | + | } | |
52 | + | ||
53 | + | ||
54 | + | func getRemainingPresaleTokenAmount () = { | |
55 | + | let val = match getInteger(this, "remainingPresaleTokenAmount") { | |
56 | + | case b: Int => | |
57 | + | b | |
58 | + | case _ => | |
59 | + | maxTokenAmountForPresale | |
60 | + | } | |
61 | + | val | |
62 | + | } | |
63 | + | ||
64 | + | ||
65 | + | func getPresaleStatus () = match getBoolean(this, "presaleStatus") { | |
66 | + | case b: Boolean => | |
67 | + | b | |
68 | + | case _ => | |
69 | + | true | |
70 | + | } | |
71 | + | ||
72 | + | ||
73 | + | func getTotalNftCount () = { | |
74 | + | let val = match getInteger(this, "totalNftCount") { | |
75 | + | case b: Int => | |
76 | + | b | |
77 | + | case _ => | |
78 | + | 0 | |
79 | + | } | |
80 | + | val | |
81 | + | } | |
82 | + | ||
83 | + | ||
84 | + | func getRemainingNftCount () = { | |
85 | + | let val = match getInteger(this, "remainingNftCount") { | |
86 | + | case b: Int => | |
87 | + | b | |
88 | + | case _ => | |
89 | + | 0 | |
90 | + | } | |
91 | + | val | |
92 | + | } | |
93 | + | ||
94 | + | ||
95 | + | func getRemainingNfts () = { | |
96 | + | let val = match getString(this, "remainingNfts") { | |
97 | + | case b: String => | |
98 | + | b | |
99 | + | case _ => | |
100 | + | "" | |
101 | + | } | |
102 | + | val | |
103 | + | } | |
104 | + | ||
105 | + | ||
106 | + | func getNftSoldOutOrNot (nftId) = match getBoolean(this, (nftId + "_soldOut")) { | |
107 | + | case b: Boolean => | |
108 | + | b | |
109 | + | case _ => | |
110 | + | false | |
111 | + | } | |
112 | + | ||
113 | + | ||
114 | + | func getRandomNumber (i) = { | |
115 | + | let rand = ((((i.transactionId + i.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height)) | |
116 | + | sha256(rand) | |
117 | + | } | |
118 | + | ||
119 | + | ||
120 | + | @Callable(i) | |
121 | + | func buyTokensFromPresale (buyAmount) = { | |
122 | + | let callerAddress = toBase58String(i.caller.bytes) | |
123 | + | let pmt = value(i.payments[0]) | |
124 | + | let amount = pmt.amount | |
125 | + | if (!(getPresaleStatus())) | |
126 | + | then throw("Presale Stopped by the Owner") | |
127 | + | else if ((buyAmount > getRemainingPresaleTokenAmount())) | |
128 | + | then throw("Exceeded Remaining Token Amount Dedicated for Presale") | |
129 | + | else if (((fraction(buyAmount, tokenUnitPrice, denominator) * wvs) > amount)) | |
130 | + | then throw("Not enough payments in waves") | |
131 | + | else [IntegerEntry((callerAddress + "_tokenPresale"), (buyAmount + getCurrentTokenAmountBoughtFromPresale(callerAddress))), IntegerEntry("remainingPresaleTokenAmount", (getRemainingPresaleTokenAmount() - buyAmount)), StringEntry((callerAddress + "_presaleAddresses"), callerAddress), ScriptTransfer(value(addressFromString(callerAddress)), (buyAmount * decimalsInToken), tokenId)] | |
132 | + | } | |
133 | + | ||
134 | + | ||
135 | + | ||
136 | + | @Callable(i) | |
137 | + | func mintNftByOwner (name,collectionId,metadata) = { | |
138 | + | let callerAddress = toBase58String(i.caller.bytes) | |
139 | + | if ((i.caller != this)) | |
140 | + | then throw("Only Dapp Owner Can Mint") | |
141 | + | else { | |
142 | + | let nft = Issue(name, metadata, 1, 0, false) | |
143 | + | let nftId = calculateAssetId(nft) | |
144 | + | let nftIdStr = toBase58String(nftId) | |
145 | + | [nft, StringEntry((nftIdStr + "_metadata"), metadata), StringEntry((nftIdStr + "_assetId"), nftIdStr), StringEntry((nftIdStr + "_ownerAddr"), callerAddress), StringEntry(((nftIdStr + "_collectionId_") + collectionId), nftIdStr), IntegerEntry("totalNftCount", (getTotalNftCount() + 1)), IntegerEntry("remainingNftCount", (getRemainingNftCount() + 1)), StringEntry(toString((getTotalNftCount() + 1)), nftIdStr), StringEntry("remainingNfts", ((getRemainingNfts() + toString((getTotalNftCount() + 1))) + "_")), BooleanEntry((nftIdStr + "_soldOut"), false)] | |
146 | + | } | |
147 | + | } | |
148 | + | ||
149 | + | ||
150 | + | ||
151 | + | @Callable(i) | |
152 | + | func buyNftsFromPresale () = { | |
153 | + | let callerAddress = toBase58String(i.caller.bytes) | |
154 | + | if (!(getPresaleStatus())) | |
155 | + | then throw("Presale Stopped by the Owner") | |
156 | + | else if ((getRemainingNftCount() == 0)) | |
157 | + | then throw("Nfts are not available for buying - all are sold") | |
158 | + | else { | |
159 | + | let remainingNftList = split(getRemainingNfts(), "_") | |
160 | + | let remainingNftListSize = getRemainingNftCount() | |
161 | + | let rand = toInt(getRandomNumber(i)) | |
162 | + | let position = (rand % remainingNftListSize) | |
163 | + | let selectedNftNumber = remainingNftList[position] | |
164 | + | let selectedNftStr = getStringValue(this, selectedNftNumber) | |
165 | + | let updatedRemainingNftList = removeByIndex(remainingNftList, position) | |
166 | + | let updatedRemainingNftListAsString = makeString(updatedRemainingNftList, "_") | |
167 | + | [ScriptTransfer(value(addressFromString(callerAddress)), 1, fromBase58String(selectedNftStr)), StringEntry((selectedNftStr + "_ownerAddr"), callerAddress), IntegerEntry("remainingNftCount", (getRemainingNftCount() - 1)), StringEntry("remainingNfts", updatedRemainingNftListAsString), BooleanEntry((selectedNftStr + "_soldOut"), true)] | |
168 | + | } | |
169 | + | } | |
170 | + | ||
171 | + | ||
172 | + | ||
173 | + | @Callable(i) | |
174 | + | func stopPresale () = if ((i.caller.bytes != this.bytes)) | |
175 | + | then throw("Only Owner Can Stop the Presale") | |
176 | + | else [BooleanEntry("presaleStatus", false)] | |
177 | + | ||
178 | + | ||
179 | + | ||
180 | + | @Callable(i) | |
181 | + | func reOpenPresale () = if ((i.caller.bytes != this.bytes)) | |
182 | + | then throw("Only Owner Can Re-Open the Presale") | |
183 | + | else [BooleanEntry("presaleStatus", true)] | |
184 | + | ||
185 | + | ||
186 | + | ||
187 | + | @Callable(i) | |
188 | + | func claim (amount) = if ((i.caller.bytes != this.bytes)) | |
189 | + | then throw("Only Owner Can Claim") | |
190 | + | else [ScriptTransfer(Address(claimAddr), (amount * wvs), unit)] | |
191 | + | ||
192 | + | ||
193 | + | @Verifier(tx) | |
194 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
195 | + |
github/deemru/w8io/169f3d6 18.81 ms ◑