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:
Old | New | Differences | |
---|---|---|---|
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 ◑![]()