tx · FKNkkU5R8MAFHYK5T3tmrYW3SSHbMoLgQD38VD4gYfbH

3N9R81xcbc2XacCpsUn4tHv2T6n77bqGm2L:  -0.01400000 Waves

2022.05.11 09:53 [2046669] smart account 3N9R81xcbc2XacCpsUn4tHv2T6n77bqGm2L > SELF 0.00000000 Waves

{ "type": 13, "id": "FKNkkU5R8MAFHYK5T3tmrYW3SSHbMoLgQD38VD4gYfbH", "fee": 1400000, "feeAssetId": null, "timestamp": 1652251992428, "version": 2, "chainId": 84, "sender": "3N9R81xcbc2XacCpsUn4tHv2T6n77bqGm2L", "senderPublicKey": "2YmkAfmy9snQ5m9gFmoTJQs2raxGNbBFkRJ3HC4Li7mL", "proofs": [ "3QdDkRZqmrHhUTobLZWn3jp5NzRcUh9fBgJFkUCcmHzyQnnDhsExdzRRrwqowCVjpfQzVTDw71pUUUMdbx8vqzW8" ], "script": "base64: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Z2V0UmVtYWluaW5nTmZ0Q291bnQAAAAABAAAAARyYW5kCQAEsQAAAAEJAQAAAA9nZXRSYW5kb21OdW1iZXIAAAABBQAAAAFpBAAAAAhwb3NpdGlvbgkAAGoAAAACBQAAAARyYW5kBQAAABRyZW1haW5pbmdOZnRMaXN0U2l6ZQQAAAARc2VsZWN0ZWROZnROdW1iZXIJAAGRAAAAAgUAAAAQcmVtYWluaW5nTmZ0TGlzdAUAAAAIcG9zaXRpb24EAAAADnNlbGVjdGVkTmZ0U3RyCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAABFzZWxlY3RlZE5mdE51bWJlcgQAAAAXdXBkYXRlZFJlbWFpbmluZ05mdExpc3QJAARRAAAAAgUAAAAQcmVtYWluaW5nTmZ0TGlzdAUAAAAIcG9zaXRpb24EAAAAH3VwZGF0ZWRSZW1haW5pbmdOZnRMaXN0QXNTdHJpbmcJAAS5AAAAAgUAAAAXdXBkYXRlZFJlbWFpbmluZ05mdExpc3QCAAAAAV8JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAABXZhbHVlAAAAAQkABCYAAAABBQAAAA1jYWxsZXJBZGRyZXNzAAAAAAAAAAABCQACWQAAAAEFAAAADnNlbGVjdGVkTmZ0U3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAAOc2VsZWN0ZWROZnRTdHICAAAACl9vd25lckFkZHIFAAAADWNhbGxlckFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEXJlbWFpbmluZ05mdENvdW50CQAAZQAAAAIJAQAAABRnZXRSZW1haW5pbmdOZnRDb3VudAAAAAAAAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAANcmVtYWluaW5nTmZ0cwUAAAAfdXBkYXRlZFJlbWFpbmluZ05mdExpc3RBc1N0cmluZwkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkAASwAAAACBQAAAA5zZWxlY3RlZE5mdFN0cgIAAAAIX3NvbGRPdXQGBQAAAANuaWwAAAABaQEAAAALc3RvcFByZXNhbGUAAAAAAwkBAAAAAiE9AAAAAggIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwgFAAAABHRoaXMAAAAFYnl0ZXMJAAACAAAAAQIAAAAfT25seSBPd25lciBDYW4gU3RvcCB0aGUgUHJlc2FsZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgIAAAANcHJlc2FsZVN0YXR1cwcFAAAAA25pbAAAAAFpAQAAAA1yZU9wZW5QcmVzYWxlAAAAAAMJAQAAAAIhPQAAAAIICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMIBQAAAAR0aGlzAAAABWJ5dGVzCQAAAgAAAAECAAAAIk9ubHkgT3duZXIgQ2FuIFJlLU9wZW4gdGhlIFByZXNhbGUJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAICAAAADXByZXNhbGVTdGF0dXMGBQAAAANuaWwAAAABaQEAAAAFY2xhaW0AAAABAAAABmFtb3VudAMJAQAAAAIhPQAAAAIICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMIBQAAAAR0aGlzAAAABWJ5dGVzCQAAAgAAAAECAAAAFE9ubHkgT3duZXIgQ2FuIENsYWltCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQUAAAAJY2xhaW1BZGRyCQAAaAAAAAIFAAAABmFtb3VudAUAAAADd3ZzBQAAAAR1bml0BQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleX33yj4=", "height": 2046669, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2uvfcc1ehxggKEeDkQpyNFEeV5EDfk2Ps1HHPbviKAQL Next: CffXqaZiMoeZ5RxbW4ojqiWzhHwzNg2qn36ZNkYykxxZ Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let maxTokenAmountForPresale = 10000000
55
6-let tokenId = base58'ASSET1'
6+let tokenId = base58'CrA3Jiqb3ev7zQ7rHWHvKCHx8iVZnK9tkfJdqsaLMkWD'
77
88 let claimAddr = base58'3N3fEf4mmVyYcbeuHYmZvXuJjoXjH5WRuEV'
99
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let maxTokenAmountForPresale = 10000000
55
6-let tokenId = base58'ASSET1'
6+let tokenId = base58'CrA3Jiqb3ev7zQ7rHWHvKCHx8iVZnK9tkfJdqsaLMkWD'
77
88 let claimAddr = base58'3N3fEf4mmVyYcbeuHYmZvXuJjoXjH5WRuEV'
99
1010 let wvs = 100000000
1111
1212 let tokenUnitPrice = 5
1313
1414 let denominator = 10000000
1515
1616 let decimalsInToken = 100
1717
1818 func tryGetInteger (key) = {
1919 let val = match getInteger(this, key) {
2020 case b: Int =>
2121 b
2222 case _ =>
2323 0
2424 }
2525 val
2626 }
2727
2828
2929 func tryGetString (key) = {
3030 let val = match getString(this, key) {
3131 case b: String =>
3232 b
3333 case _ =>
3434 ""
3535 }
3636 val
3737 }
3838
3939
4040 func tryGetBoolean (key) = match getBoolean(this, key) {
4141 case b: Boolean =>
4242 b
4343 case _ =>
4444 false
4545 }
4646
4747
4848 func getCurrentTokenAmountBoughtFromPresale (addr) = {
4949 let val = tryGetInteger((addr + "_tokenPresale"))
5050 val
5151 }
5252
5353
5454 func getRemainingPresaleTokenAmount () = {
5555 let val = match getInteger(this, "remainingPresaleTokenAmount") {
5656 case b: Int =>
5757 b
5858 case _ =>
5959 maxTokenAmountForPresale
6060 }
6161 val
6262 }
6363
6464
6565 func getPresaleStatus () = match getBoolean(this, "presaleStatus") {
6666 case b: Boolean =>
6767 b
6868 case _ =>
6969 true
7070 }
7171
7272
7373 func getTotalNftCount () = {
7474 let val = match getInteger(this, "totalNftCount") {
7575 case b: Int =>
7676 b
7777 case _ =>
7878 0
7979 }
8080 val
8181 }
8282
8383
8484 func getRemainingNftCount () = {
8585 let val = match getInteger(this, "remainingNftCount") {
8686 case b: Int =>
8787 b
8888 case _ =>
8989 0
9090 }
9191 val
9292 }
9393
9494
9595 func getRemainingNfts () = {
9696 let val = match getString(this, "remainingNfts") {
9797 case b: String =>
9898 b
9999 case _ =>
100100 ""
101101 }
102102 val
103103 }
104104
105105
106106 func getNftSoldOutOrNot (nftId) = match getBoolean(this, (nftId + "_soldOut")) {
107107 case b: Boolean =>
108108 b
109109 case _ =>
110110 false
111111 }
112112
113113
114114 func getRandomNumber (i) = {
115115 let rand = ((((i.transactionId + i.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
116116 sha256(rand)
117117 }
118118
119119
120120 @Callable(i)
121121 func buyTokensFromPresale (buyAmount) = {
122122 let callerAddress = toBase58String(i.caller.bytes)
123123 let pmt = value(i.payments[0])
124124 let amount = pmt.amount
125125 if (!(getPresaleStatus()))
126126 then throw("Presale Stopped by the Owner")
127127 else if ((buyAmount > getRemainingPresaleTokenAmount()))
128128 then throw("Exceeded Remaining Token Amount Dedicated for Presale")
129129 else if (((fraction(buyAmount, tokenUnitPrice, denominator) * wvs) > amount))
130130 then throw("Not enough payments in waves")
131131 else [IntegerEntry((callerAddress + "_tokenPresale"), (buyAmount + getCurrentTokenAmountBoughtFromPresale(callerAddress))), IntegerEntry("remainingPresaleTokenAmount", (getRemainingPresaleTokenAmount() - buyAmount)), StringEntry((callerAddress + "_presaleAddresses"), callerAddress), ScriptTransfer(value(addressFromString(callerAddress)), (buyAmount * decimalsInToken), tokenId)]
132132 }
133133
134134
135135
136136 @Callable(i)
137137 func mintNftByOwner (name,collectionId,metadata) = {
138138 let callerAddress = toBase58String(i.caller.bytes)
139139 if ((i.caller != this))
140140 then throw("Only Dapp Owner Can Mint")
141141 else {
142142 let nft = Issue(name, metadata, 1, 0, false)
143143 let nftId = calculateAssetId(nft)
144144 let nftIdStr = toBase58String(nftId)
145145 [nft, 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)]
146146 }
147147 }
148148
149149
150150
151151 @Callable(i)
152152 func buyNftsFromPresale () = {
153153 let callerAddress = toBase58String(i.caller.bytes)
154154 if (!(getPresaleStatus()))
155155 then throw("Presale Stopped by the Owner")
156156 else if ((getRemainingNftCount() == 0))
157157 then throw("Nfts are not available for buying - all are sold")
158158 else {
159159 let remainingNftList = split(getRemainingNfts(), "_")
160160 let remainingNftListSize = getRemainingNftCount()
161161 let rand = toInt(getRandomNumber(i))
162162 let position = (rand % remainingNftListSize)
163163 let selectedNftNumber = remainingNftList[position]
164164 let selectedNftStr = getStringValue(this, selectedNftNumber)
165165 let updatedRemainingNftList = removeByIndex(remainingNftList, position)
166166 let updatedRemainingNftListAsString = makeString(updatedRemainingNftList, "_")
167167 [ScriptTransfer(value(addressFromString(callerAddress)), 1, fromBase58String(selectedNftStr)), StringEntry((selectedNftStr + "_ownerAddr"), callerAddress), IntegerEntry("remainingNftCount", (getRemainingNftCount() - 1)), StringEntry("remainingNfts", updatedRemainingNftListAsString), BooleanEntry((selectedNftStr + "_soldOut"), true)]
168168 }
169169 }
170170
171171
172172
173173 @Callable(i)
174174 func stopPresale () = if ((i.caller.bytes != this.bytes))
175175 then throw("Only Owner Can Stop the Presale")
176176 else [BooleanEntry("presaleStatus", false)]
177177
178178
179179
180180 @Callable(i)
181181 func reOpenPresale () = if ((i.caller.bytes != this.bytes))
182182 then throw("Only Owner Can Re-Open the Presale")
183183 else [BooleanEntry("presaleStatus", true)]
184184
185185
186186
187187 @Callable(i)
188188 func claim (amount) = if ((i.caller.bytes != this.bytes))
189189 then throw("Only Owner Can Claim")
190190 else [ScriptTransfer(Address(claimAddr), (amount * wvs), unit)]
191191
192192
193193 @Verifier(tx)
194194 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
195195

github/deemru/w8io/3ef1775 
65.40 ms