tx · HyNUHjzno83UksEhY4w9MNb8aQcm4k7CmREXDdmD4UYg

3PHUMZkr66B38WxHV1boULaEjjF7giGgVy7:  -0.00900000 Waves

2023.09.19 15:31 [3828047] smart account 3PHUMZkr66B38WxHV1boULaEjjF7giGgVy7 > SELF 0.00000000 Waves

{ "type": 13, "id": "HyNUHjzno83UksEhY4w9MNb8aQcm4k7CmREXDdmD4UYg", "fee": 900000, "feeAssetId": null, "timestamp": 1695126681362, "version": 2, "chainId": 87, "sender": "3PHUMZkr66B38WxHV1boULaEjjF7giGgVy7", "senderPublicKey": "8XKsuJqSe6FsspUz3sPvdADeLpP7e1tfiWx5tt6e674g", "proofs": [ "4QpBNyXRUPoSE1Lm1DMeYFm7NbfLqykMnp2VkR7JFZyuZJcoCaujwXf8sN6P1yii1ZhARpSwZ1EBTeBFiGDqDE5m" ], "script": "base64:BgILCAISAwoBCBIAEgASARdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwACFHN0YXRpY19vcmFjbGVBZGRyZXNzARhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAhVzdGF0aWNfYnJlZWRlckFkZHJlc3MBFnN0YXRpY0tleV9pdGVtc0FkZHJlc3MAAhNzdGF0aWNfaXRlbXNBZGRyZXNzARJzdGF0aWNLZXlfZXh0cmFGZWUAAg9zdGF0aWNfZXh0cmFGZWUBF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAIUc3RhdGljX2ZlZUFnZ3JlZ2F0b3IACXdlYXJhYmxlcwkAzAgCAghBUlQtQ0FQRQkAzAgCAgdBUlQtSEFUCQDMCAICCkFSVC1YU0NBUkYJAMwIAgIMQVJULVhTV0VBVEVSBQNuaWwBD2tleUFydGVmYWN0RHVjawIGZHVja0lkCHdlYXJhYmxlCQCsAgIJAKwCAgUGZHVja0lkAgFfBQh3ZWFyYWJsZQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEMdHJ5R2V0U3RyaW5nAQNrZXkJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIFBHRoaXMFA2tleQEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEIYXNTdHJpbmcBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAUGc3RyaW5nCQACAQIcd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IFN0cmluZwEJZ2V0T3JhY2xlAAkBB0FkZHJlc3MBCQDZBAEJAQx0cnlHZXRTdHJpbmcBCQEXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAARFnZXRCcmVlZGVyQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBGHN0YXRpY0tleV9icmVlZGVyQWRkcmVzcwABD2dldEl0ZW1zQWRkcmVzcwAJAQdBZGRyZXNzAQkA2QQBCQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCCQEJZ2V0T3JhY2xlAAkBFnN0YXRpY0tleV9pdGVtc0FkZHJlc3MAARBnZXRGZWVBZ2dyZWdhdG9yAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUACQEXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQdwYXltZW50AwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhlXQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAlmZWVBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDUwKQIJAQlnZXRPcmFjbGUACQESc3RhdGljS2V5X2V4dHJhRmVlAAMJAQIhPQIIBQdwYXltZW50BmFtb3VudAUJZmVlQW1vdW50CQACAQkArAICCQCsAgICHFdDQVA6IFBsZWFzZSBhdHRhY2ggZXhhY3RseSAJAKQDAQUJZmVlQW1vdW50AhMgYW1vdW50IG9mIHdhdmVsZXRzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARBnZXRGZWVBZ2dyZWdhdG9yAAUJZmVlQW1vdW50BQR1bml0BQNuaWwBEnRyeUdldENvc21ldGljSXRlbQEEaXRlbQQDa2V5CQCsAgICEGRpcmVjdF9jb3NtZXRpY18FBGl0ZW0EByRtYXRjaDAJAJoIAgkBD2dldEl0ZW1zQWRkcmVzcwAFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEFBHVuaXQBCHdlYXJJdGVtAg9hc3NldElkV2VhckFibGUGZHVja0lkBAxhcnRlZmFjdE5hbWUJAQhhc1N0cmluZwEJAPwHBAkBD2dldEl0ZW1zQWRkcmVzcwACFGNoZWNrQXJ0ZWZhY3REZXRhaWxzCQDMCAIFD2Fzc2V0SWRXZWFyQWJsZQUDbmlsBQNuaWwDCQAAAgUMYXJ0ZWZhY3ROYW1lBQxhcnRlZmFjdE5hbWUDAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUJd2VhcmFibGVzBQxhcnRlZmFjdE5hbWUJAQEhAQkBCWlzRGVmaW5lZAEJARJ0cnlHZXRDb3NtZXRpY0l0ZW0BBQxhcnRlZmFjdE5hbWUHCQACAQIbV1JJVEQ6IFVuc3VwcG9ydGVkIHdlYXJhYmxlBAphcnRlZmFjdElkCQEMdHJ5R2V0U3RyaW5nAQkBD2tleUFydGVmYWN0RHVjawIFBmR1Y2tJZAUMYXJ0ZWZhY3ROYW1lBAlib29zdER1Y2sDCQAAAgUMYXJ0ZWZhY3ROYW1lAgpBUlQtWFNDQVJGCQD8BwQJAQ9nZXRJdGVtc0FkZHJlc3MAAg9tYW5pcHVsYXRlQm9vc3QJAMwIAgBFCQDMCAIFBmR1Y2tJZAUDbmlsBQNuaWwFA25pbAMJAAACBQlib29zdER1Y2sFCWJvb3N0RHVjawMJAQIhPQIFCmFydGVmYWN0SWQCAAkAAgEJAKwCAgIaRHVjayBpcyBhbHJlYWR5IHdlYXJpbmcgYSAFDGFydGVmYWN0TmFtZQkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5QXJ0ZWZhY3REdWNrAgUGZHVja0lkBQxhcnRlZmFjdE5hbWUFD2Fzc2V0SWRXZWFyQWJsZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwFpAQ9jb25maWd1cmVPcmFjbGUBBm9yYWNsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCmFkbWluIG9ubHkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAUGb3JhY2xlBQNuaWwBaQEOd2Vhckl0ZW1Ub0R1Y2sABAxmaXJzdFBheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQNc2Vjb25kUGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABBAx2YWxpZFBheW1lbnQJARZjaGVja0FkZGl0aW9uYWxQYXltZW50AQkAkQMCCAUBaQhwYXltZW50cwACBAZkdWNrSWQJANgEAQkBBXZhbHVlAQgFDGZpcnN0UGF5bWVudAdhc3NldElkBA1zZWNvbmRBc3NldElkCQDYBAEJAQV2YWx1ZQEIBQ1zZWNvbmRQYXltZW50B2Fzc2V0SWQDAwkBAiE9AggFDGZpcnN0UGF5bWVudAZhbW91bnQAAQYJAQIhPQIIBQ1zZWNvbmRQYXltZW50BmFtb3VudAABCQACAQIaV1JJVEQ6IE5GVCBpcyBub3QgYXR0YWNoZWQECGNoaWxkcmVuCQEFYXNJbnQBCQD8BwQJARFnZXRCcmVlZGVyQWRkcmVzcwACFnZhbGlkYXRlQW5kR2V0Q2hpbGRyZW4JAMwIAgUGZHVja0lkBQNuaWwFA25pbAMJAAACBQhjaGlsZHJlbgUIY2hpbGRyZW4JAM4IAgkAzggCCQEId2Vhckl0ZW0CBQ1zZWNvbmRBc3NldElkBQZkdWNrSWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEIBQxmaXJzdFBheW1lbnQHYXNzZXRJZAUDbmlsBQx2YWxpZFBheW1lbnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQd2VhclhJdGVtc1RvRHVjawAEDHZhbGlkUGF5bWVudAkBFmNoZWNrQWRkaXRpb25hbFBheW1lbnQBCQCRAwIIBQFpCHBheW1lbnRzAAEDCQBmAgADCQCQAwEIBQFpCHBheW1lbnRzCQACAQIxV1dYSVREOiBQbGVhc2UgYXR0YWNoIGF0IGxlYXN0IDEgaXRlbSBhbmQgMSBkdWNrIQMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAcJAAIBAjFXV1hJVEQ6IFlvdSBjYW4gb25seSBhdHRhY2ggNSBpdGVtcyBhbmQgb25lIGR1Y2shCgEKaGFuZGxlSXRlbQIDYWNjB3BheW1lbnQEBWluZGV4CQDPCAIIBQFpCHBheW1lbnRzBQdwYXltZW50AwkAAAIFBWluZGV4AAAEBmR1Y2tJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAwkBAiE9AggFB3BheW1lbnQGYW1vdW50AAEJAAIBAhtXUklURDogRHVjayBpcyBub3QgYXR0YWNoZWQECGNoaWxkcmVuCQEFYXNJbnQBCQD8BwQJARFnZXRCcmVlZGVyQWRkcmVzcwACFnZhbGlkYXRlQW5kR2V0Q2hpbGRyZW4JAMwIAgUGZHVja0lkBQNuaWwFA25pbAMJAAACBQhjaGlsZHJlbgUIY2hpbGRyZW4JAM4IAgUDYWNjCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCAUHcGF5bWVudAdhc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAM4IAgUDYWNjCQEId2Vhckl0ZW0CCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJANgEAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAQdhc3NldElkCQDOCAIKAAIkbAgFAWkIcGF5bWVudHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCmhhbmRsZUl0ZW0CBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYFDHZhbGlkUGF5bWVudAA2rmYd", "height": 3828047, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HxgZgKhdJJBYa8KG5PUamUS2mRBFWUtcyNkdUmVcu3U2 Next: CAvbc8NeA4qoLJ6v4F6KRXomYJ1BpNFoYMekx9WfovTP Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func staticKey_oracleAddress () = "static_oracleAddress"
55
66
77 func staticKey_breederAddress () = "static_breederAddress"
88
99
1010 func staticKey_itemsAddress () = "static_itemsAddress"
1111
1212
1313 func staticKey_extraFee () = "static_extraFee"
1414
1515
1616 func staticKey_feeAggregator () = "static_feeAggregator"
1717
1818
1919 let wearables = ["ART-CAPE", "ART-HAT", "ART-XSCARF", "ART-XSWEATER"]
2020
2121 func keyArtefactDuck (duckId,wearable) = ((duckId + "_") + wearable)
2222
2323
2424 func tryGetStringExternal (address,key) = match getString(address, key) {
2525 case a: String =>
2626 a
2727 case _ =>
2828 ""
2929 }
3030
3131
3232 func tryGetString (key) = tryGetStringExternal(this, key)
3333
3434
3535 func asInt (value) = match value {
3636 case int: Int =>
3737 int
3838 case _ =>
3939 throw("wrong type, expected: Int")
4040 }
4141
4242
4343 func asString (value) = match value {
4444 case string: String =>
4545 string
4646 case _ =>
4747 throw("wrong type, expected: String")
4848 }
4949
5050
5151 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
5252
5353
5454 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
5555
5656
5757 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
5858
5959
6060 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
6161
6262
6363 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
6464 then throw("WCAP: Please attach waves")
6565 else {
6666 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
6767 if ((payment.amount != feeAmount))
6868 then throw((("WCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
6969 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
7070 }
7171
7272
7373 func tryGetCosmeticItem (item) = {
7474 let key = ("direct_cosmetic_" + item)
7575 match getInteger(getItemsAddress(), key) {
7676 case a: Int =>
7777 a
7878 case _ =>
7979 unit
8080 }
8181 }
8282
8383
8484 func wearItem (assetIdWearAble,duckId) = {
8585 let artefactName = asString(invoke(getItemsAddress(), "checkArtefactDetails", [assetIdWearAble], nil))
8686 if ((artefactName == artefactName))
8787 then if (if (!(containsElement(wearables, artefactName)))
8888 then !(isDefined(tryGetCosmeticItem(artefactName)))
8989 else false)
9090 then throw("WRITD: Unsupported wearable")
9191 else {
9292 let artefactId = tryGetString(keyArtefactDuck(duckId, artefactName))
9393 let boostDuck = if ((artefactName == "ART-XSCARF"))
9494 then invoke(getItemsAddress(), "manipulateBoost", [69, duckId], nil)
9595 else nil
9696 if ((boostDuck == boostDuck))
9797 then if ((artefactId != ""))
9898 then throw(("Duck is already wearing a " + artefactName))
9999 else [StringEntry(keyArtefactDuck(duckId, artefactName), assetIdWearAble)]
100100 else throw("Strict value is not equal to itself.")
101101 }
102102 else throw("Strict value is not equal to itself.")
103103 }
104104
105105
106106 @Callable(i)
107107 func configureOracle (oracle) = if ((i.caller != this))
108108 then throw("admin only")
109109 else [StringEntry(staticKey_oracleAddress(), oracle)]
110110
111111
112112
113113 @Callable(i)
114114 func wearItemToDuck () = {
115115 let firstPayment = value(i.payments[0])
116116 let secondPayment = value(i.payments[1])
117117 let validPayment = checkAdditionalPayment(i.payments[2])
118118 let duckId = toBase58String(value(firstPayment.assetId))
119119 let secondAssetId = toBase58String(value(secondPayment.assetId))
120120 if (if ((firstPayment.amount != 1))
121121 then true
122122 else (secondPayment.amount != 1))
123123 then throw("WRITD: NFT is not attached")
124124 else {
125125 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [duckId], nil))
126126 if ((children == children))
127127 then ((wearItem(secondAssetId, duckId) ++ [ScriptTransfer(i.caller, 1, firstPayment.assetId)]) ++ validPayment)
128128 else throw("Strict value is not equal to itself.")
129129 }
130130 }
131131
132132
133133
134134 @Callable(i)
135135 func wearXItemsToDuck () = {
136136 let validPayment = checkAdditionalPayment(i.payments[1])
137137 if ((3 > size(i.payments)))
138138 then throw("WWXITD: Please attach at least 1 item and 1 duck!")
139139 else if ((size(i.payments) > 7))
140140 then throw("WWXITD: You can only attach 5 items and one duck!")
141141 else {
142142 func handleItem (acc,payment) = {
143143 let index = indexOf(i.payments, payment)
144144 if ((index == 0))
145145 then {
146146 let duckId = toBase58String(value(payment.assetId))
147147 if ((payment.amount != 1))
148148 then throw("WRITD: Duck is not attached")
149149 else {
150150 let children = asInt(invoke(getBreederAddress(), "validateAndGetChildren", [duckId], nil))
151151 if ((children == children))
152152 then (acc ++ [ScriptTransfer(i.caller, 1, payment.assetId)])
153153 else throw("Strict value is not equal to itself.")
154154 }
155155 }
156156 else (acc ++ wearItem(toBase58String(value(payment.assetId)), toBase58String(value(i.payments[1].assetId))))
157157 }
158158
159159 ({
160160 let $l = i.payments
161161 let $s = size($l)
162162 let $acc0 = nil
163163 func $f0_1 ($a,$i) = if (($i >= $s))
164164 then $a
165165 else handleItem($a, $l[$i])
166166
167167 func $f0_2 ($a,$i) = if (($i >= $s))
168168 then $a
169169 else throw("List size exceeds 6")
170170
171171 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6)
172172 } ++ validPayment)
173173 }
174174 }
175175
176176

github/deemru/w8io/3ef1775 
25.39 ms