tx · AChkaCwQUR2B4P5wYBR4DmWSjX2JjJc3QZ4eLWt7Yhhd

3MtcfWq1yTGtDbDRzmh2UjwEU5amdpnykoe:  -0.03400000 Waves

2022.10.25 14:26 [2287849] smart account 3MtcfWq1yTGtDbDRzmh2UjwEU5amdpnykoe > SELF 0.00000000 Waves

{ "type": 13, "id": "AChkaCwQUR2B4P5wYBR4DmWSjX2JjJc3QZ4eLWt7Yhhd", "fee": 3400000, "feeAssetId": null, "timestamp": 1666697244046, "version": 2, "chainId": 84, "sender": "3MtcfWq1yTGtDbDRzmh2UjwEU5amdpnykoe", "senderPublicKey": "C9QXYzLcToZAzpsStzfUHxz9rf7gkrJd6f2beNTVN7Ax", "proofs": [ "3ZcuqBBEqQAtLCf3f96xda77ukrkegs2XtuR2ahALcH3J8ete7De9kPAFLQyFB79GzPEhkncvoEVQ7Fx3ScVGR9Z" ], "script": "base64:BgIZCAISBAoCCAgSCAoGCAgICAgBEgUKAwgIARcADWtfaW5pdGlhbGl6ZWQCDWtfaW5pdGlhbGl6ZWQAFGtfY29vcmRpbmF0b3JBZGRyZXNzAhRrX2Nvb3JkaW5hdG9yQWRkcmVzcwASa19hZG1pbl9wdWJsaWNfa2V5AhJrX2FkbWluX3B1YmxpY19rZXkAD2tfYWRtaW5fYWRkcmVzcwIPa19hZG1pbl9hZGRyZXNzABBrX3ByaXplc19hZGRyZXNzAhBrX3ByaXplc19hZGRyZXNzABVrX25mdF9jcmVhdG9yX2FkZHJlc3MCFWtfbmZ0X2NyZWF0b3JfYWRkcmVzcwANa190b2tlbl9wYXJhbQINa190b2tlbl9wYXJhbQAMa190b2tlbl90eXBlAgxrX3Rva2VuX3R5cGUAC2tfbWV0YV90eXBlAgtrX21ldGFfdHlwZQAOa190eXBlX2NvdW50ZXICDmtfdHlwZV9jb3VudGVyAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwITQ29vcmRpbmF0b3Igbm90IHNldAEMYWRtaW5BZGRyZXNzAAkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX2FkbWluX2FkZHJlc3MBDmFkbWluUHVibGljS2V5AAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABRJrX2FkbWluX3B1YmxpY19rZXkBC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwERbmZ0Q3JlYXRvckFkZHJlc3MACQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUVa19uZnRfY3JlYXRvcl9hZGRyZXNzAhZObyBORlQgY3JlYXRvciBhZGRyZXNzAQ1wcml6ZXNBZGRyZXNzAAkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBC2Nvb3JkaW5hdG9yAAUQa19wcml6ZXNfYWRkcmVzcwIVTm8gUHJpemVzIGFkZHJlc3Mgc2V0AQ5nZXRNZXRhVHlwZUtleQEFX3R5cGUJAKwCAgkArAICBQtrX21ldGFfdHlwZQIBXwUFX3R5cGUBD2dldFRva2VuVHlwZUtleQEIX3Rva2VuSWQJAKwCAgkArAICBQxrX3Rva2VuX3R5cGUCAV8FCF90b2tlbklkARBnZXRUb2tlblBhcmFtS2V5AQhfdG9rZW5JZAkArAICCQCsAgIFDWtfdG9rZW5fcGFyYW0CAV8FCF90b2tlbklkARFnZXRUeXBlQ291bnRlcktleQEFX3R5cGUJAKwCAgkArAICBQ5rX3R5cGVfY291bnRlcgIBXwUFX3R5cGUBC2dldE1ldGFUeXBlAQVfdHlwZQQDa2V5CQEOZ2V0TWV0YVR5cGVLZXkBBQVfdHlwZQQIdHlwZURhdGEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQNrZXkJAKwCAgIOVW5rbm93biB0eXBlOiAFBV90eXBlBAZwYXJzZWQJALUJAgUIdHlwZURhdGECASwEBG5hbWUJAJEDAgUGcGFyc2VkAAAEC2Rlc2NyaXB0aW9uCQCRAwIFBnBhcnNlZAABBAxuZnRJbWFnZUxpbmsJAJEDAgUGcGFyc2VkAAIECmNvbGxlY3Rpb24JAJEDAgUGcGFyc2VkAAMECXR5cGVWYWx1ZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUGcGFyc2VkAAQCEkludmFsaWQgdHlwZSB2YWx1ZQkAlwoFBQRuYW1lBQtkZXNjcmlwdGlvbgUMbmZ0SW1hZ2VMaW5rBQpjb2xsZWN0aW9uBQl0eXBlVmFsdWUBDmdldFR5cGVDb3VudGVyAQVfdHlwZQQDa2V5CQERZ2V0VHlwZUNvdW50ZXJLZXkBBQVfdHlwZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAAIaXRlcmF0b3IJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKBQNuaWwDAWkBCmluaXRpYWxpemUCDF9jb29yZGluYXRvchJfbmZ0Q3JlYXRvckFkZHJlc3MDCQELaW5pdGlhbGl6ZWQACQACAQITQWxyZWFkeSBpbml0aWFsaXplZAkAzAgCCQELU3RyaW5nRW50cnkCBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwUMX2Nvb3JkaW5hdG9yCQDMCAIJAQtTdHJpbmdFbnRyeQIFFWtfbmZ0X2NyZWF0b3JfYWRkcmVzcwUSX25mdENyZWF0b3JBZGRyZXNzCQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rX2luaXRpYWxpemVkBgUDbmlsAWkBDWNyZWF0ZU5mdFR5cGUGBV9uYW1lDF9kZXNjcmlwdGlvbg1fbmZ0SW1hZ2VMaW5rC19jb2xsZWN0aW9uBV90eXBlCl90eXBlVmFsdWUDCQECIT0CCAUBaQZjYWxsZXIJAQxhZG1pbkFkZHJlc3MACQACAQIgSW52YWxpZCBjcmVhdGVOZnRUeXBlIHBhcmFtZXRlcnMEBHR5cGUJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQVfbmFtZQIBLAUMX2Rlc2NyaXB0aW9uAgEsBQ1fbmZ0SW1hZ2VMaW5rAgEsBQtfY29sbGVjdGlvbgIBLAkApAMBBQpfdHlwZVZhbHVlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5nZXRNZXRhVHlwZUtleQEFBV90eXBlBQR0eXBlBQNuaWwBaQEEbWludAMKX3JlY2lwaWVudAVfdHlwZQdfYW1vdW50AwMDCQECIT0CCAUBaQZjYWxsZXIJAQ1wcml6ZXNBZGRyZXNzAAYJAGYCBQdfYW1vdW50AAoGCQBmAgAABQdfYW1vdW50CQACAQIXSW52YWxpZCBtaW50IHBhcmFtZXRlcnMECyR0MDM2NDUzNzI2CQELZ2V0TWV0YVR5cGUBBQVfdHlwZQQEbmFtZQgFCyR0MDM2NDUzNzI2Al8xBAtkZXNjcmlwdGlvbggFCyR0MDM2NDUzNzI2Al8yBAxuZnRJbWFnZUxpbmsIBQskdDAzNjQ1MzcyNgJfMwQKY29sbGVjdGlvbggFCyR0MDM2NDUzNzI2Al80BAl0eXBlVmFsdWUIBQskdDAzNjQ1MzcyNgJfNQQQcmVjaXBpZW50QWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKX3JlY2lwaWVudAQLdHlwZUNvdW50ZXIJAQ5nZXRUeXBlQ291bnRlcgEFBV90eXBlCgEGZG9NaW50AgRfYWNjBl9pbmRleAMJAGcCBQdfYW1vdW50BQZfaW5kZXgECyR0MDQwMDY0MDMwBQRfYWNjBAZyZXN1bHQIBQskdDA0MDA2NDAzMAJfMQQDaWRzCAULJHQwNDAwNjQwMzACXzIEC3N0YWtlZE5GVElkBAckbWF0Y2gwCQD8BwQJARFuZnRDcmVhdG9yQWRkcmVzcwACCWNyZWF0ZU5GVAkAzAgCCQCsAgIJAKwCAgUEbmFtZQIDICMgCQCkAwEJAGQCBQt0eXBlQ291bnRlcgUGX2luZGV4CQDMCAIFC2Rlc2NyaXB0aW9uCQDMCAIFDG5mdEltYWdlTGluawkAzAgCBQpjb2xsZWN0aW9uBQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXgFByRtYXRjaDAFAXgJAAIBAi9Tb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgdGhlIGNyZWF0aW9uIG9mIE5GVAMJAAACBQtzdGFrZWRORlRJZAULc3Rha2VkTkZUSWQEBF9pZHMJAM0IAgUDaWRzBQtzdGFrZWRORlRJZAQHX3Jlc3VsdAkAzggCBQZyZXN1bHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUQcmVjaXBpZW50QWRkcmVzcwABCQDZBAEFC3N0YWtlZE5GVElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9nZXRUb2tlblR5cGVLZXkBBQtzdGFrZWRORlRJZAUFX3R5cGUJAMwIAgkBDEludGVnZXJFbnRyeQIJARBnZXRUb2tlblBhcmFtS2V5AQULc3Rha2VkTkZUSWQFCXR5cGVWYWx1ZQUDbmlsCQCUCgIFB19yZXN1bHQFBF9pZHMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FBF9hY2MEBnJlc3VsdAoAAiRsBQhpdGVyYXRvcgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBmRvTWludAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgkAlAoCCQDOCAIIBQZyZXN1bHQCXzEJAMwIAgkBDEludGVnZXJFbnRyeQIJARFnZXRUeXBlQ291bnRlcktleQEFBV90eXBlCQBkAgULdHlwZUNvdW50ZXIFB19hbW91bnQFA25pbAgFBnJlc3VsdAJfMgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJAQ5hZG1pblB1YmxpY0tleQDJ6Z6g", "height": 2287849, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let k_initialized = "k_initialized"
5+
6+let k_coordinatorAddress = "k_coordinatorAddress"
7+
8+let k_admin_public_key = "k_admin_public_key"
9+
10+let k_admin_address = "k_admin_address"
11+
12+let k_prizes_address = "k_prizes_address"
13+
14+let k_nft_creator_address = "k_nft_creator_address"
15+
16+let k_token_param = "k_token_param"
17+
18+let k_token_type = "k_token_type"
19+
20+let k_meta_type = "k_meta_type"
21+
22+let k_type_counter = "k_type_counter"
23+
24+func coordinator () = valueOrErrorMessage(addressFromString(getStringValue(this, k_coordinatorAddress)), "Coordinator not set")
25+
26+
27+func adminAddress () = addressFromString(getStringValue(coordinator(), k_admin_address))
28+
29+
30+func adminPublicKey () = fromBase58String(getStringValue(coordinator(), k_admin_public_key))
31+
32+
33+func initialized () = valueOrElse(getBoolean(this, k_initialized), false)
34+
35+
36+func nftCreatorAddress () = addressFromStringValue(valueOrErrorMessage(getString(this, k_nft_creator_address), "No NFT creator address"))
37+
38+
39+func prizesAddress () = addressFromString(valueOrErrorMessage(getString(coordinator(), k_prizes_address), "No Prizes address set"))
40+
41+
42+func getMetaTypeKey (_type) = ((k_meta_type + "_") + _type)
43+
44+
45+func getTokenTypeKey (_tokenId) = ((k_token_type + "_") + _tokenId)
46+
47+
48+func getTokenParamKey (_tokenId) = ((k_token_param + "_") + _tokenId)
49+
50+
51+func getTypeCounterKey (_type) = ((k_type_counter + "_") + _type)
52+
53+
54+func getMetaType (_type) = {
55+ let key = getMetaTypeKey(_type)
56+ let typeData = valueOrErrorMessage(getString(this, key), ("Unknown type: " + _type))
57+ let parsed = split(typeData, ",")
58+ let name = parsed[0]
59+ let description = parsed[1]
60+ let nftImageLink = parsed[2]
61+ let collection = parsed[3]
62+ let typeValue = valueOrErrorMessage(parseInt(parsed[4]), "Invalid type value")
63+ $Tuple5(name, description, nftImageLink, collection, typeValue)
64+ }
65+
66+
67+func getTypeCounter (_type) = {
68+ let key = getTypeCounterKey(_type)
69+ valueOrElse(getInteger(this, key), 0)
70+ }
71+
72+
73+let iterator = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
74+
75+@Callable(i)
76+func initialize (_coordinator,_nftCreatorAddress) = if (initialized())
77+ then throw("Already initialized")
78+ else [StringEntry(k_coordinatorAddress, _coordinator), StringEntry(k_nft_creator_address, _nftCreatorAddress), BooleanEntry(k_initialized, true)]
79+
80+
81+
82+@Callable(i)
83+func createNftType (_name,_description,_nftImageLink,_collection,_type,_typeValue) = if ((i.caller != adminAddress()))
84+ then throw("Invalid createNftType parameters")
85+ else {
86+ let type = ((((((((_name + ",") + _description) + ",") + _nftImageLink) + ",") + _collection) + ",") + toString(_typeValue))
87+[StringEntry(getMetaTypeKey(_type), type)]
88+ }
89+
90+
91+
92+@Callable(i)
93+func mint (_recipient,_type,_amount) = if (if (if ((i.caller != prizesAddress()))
94+ then true
95+ else (_amount > 10))
96+ then true
97+ else (0 > _amount))
98+ then throw("Invalid mint parameters")
99+ else {
100+ let $t036453726 = getMetaType(_type)
101+ let name = $t036453726._1
102+ let description = $t036453726._2
103+ let nftImageLink = $t036453726._3
104+ let collection = $t036453726._4
105+ let typeValue = $t036453726._5
106+ let recipientAddress = addressFromStringValue(_recipient)
107+ let typeCounter = getTypeCounter(_type)
108+ func doMint (_acc,_index) = if ((_amount >= _index))
109+ then {
110+ let $t040064030 = _acc
111+ let result = $t040064030._1
112+ let ids = $t040064030._2
113+ let stakedNFTId = match invoke(nftCreatorAddress(), "createNFT", [((name + " # ") + toString((typeCounter + _index))), description, nftImageLink, collection], nil) {
114+ case x: String =>
115+ x
116+ case _ =>
117+ throw("Something went wrong during the creation of NFT")
118+ }
119+ if ((stakedNFTId == stakedNFTId))
120+ then {
121+ let _ids = (ids :+ stakedNFTId)
122+ let _result = (result ++ [ScriptTransfer(recipientAddress, 1, fromBase58String(stakedNFTId)), StringEntry(getTokenTypeKey(stakedNFTId), _type), IntegerEntry(getTokenParamKey(stakedNFTId), typeValue)])
123+ $Tuple2(_result, _ids)
124+ }
125+ else throw("Strict value is not equal to itself.")
126+ }
127+ else _acc
128+
129+ let result = {
130+ let $l = iterator
131+ let $s = size($l)
132+ let $acc0 = $Tuple2(nil, nil)
133+ func $f0_1 ($a,$i) = if (($i >= $s))
134+ then $a
135+ else doMint($a, $l[$i])
136+
137+ func $f0_2 ($a,$i) = if (($i >= $s))
138+ then $a
139+ else throw("List size exceeds 10")
140+
141+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
142+ }
143+ $Tuple2((result._1 ++ [IntegerEntry(getTypeCounterKey(_type), (typeCounter + _amount))]), result._2)
144+ }
145+
146+
147+@Verifier(tx)
148+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], adminPublicKey())
149+

github/deemru/w8io/169f3d6 
23.80 ms