tx · H5ME1UH6gzgR9osALhakoc5TRBWvyLcoHBEcVwgQvfQt

3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep:  -0.01000000 Waves

2022.11.18 14:27 [2322493] smart account 3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep > SELF 0.00000000 Waves

{ "type": 13, "id": "H5ME1UH6gzgR9osALhakoc5TRBWvyLcoHBEcVwgQvfQt", "fee": 1000000, "feeAssetId": null, "timestamp": 1668770910514, "version": 2, "chainId": 84, "sender": "3N8y4wxX3JC4TdrCJBXX16SjWf6X256hrep", "senderPublicKey": "7v5L7QkXxfkirALdyqmox38QCsa9jtfAtgUfHTh34eWq", "proofs": [ "4P1x1gZnQcfinWHXXuTEDXtaozCQuEWVxyJmBZoS9ts3H5XstrQvEjefxpHFHdpRGBmMbVan4XAd2szBGDxgizHt" ], "script": "base64:BgIJCAISBQoDCAgYCQAFTVVMVDYAwIQ9AAt1c2RuQXNzZXRJZAEg93bq9/eDymXbbhPuAjvPWCmVqcHRjfJL2mzYHWKAyN4AC2JhY2tFbmRBZGRyCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzTjVTcFgyMVIzUjc1UW80ZWIzTXdGRnZXN1RVenlodmF2dgAQYWxsb3dlZFJlc291cmNlcwkAzAgCAgNPaWwJAMwIAgIDT3JlCQDMCAICBFdvb2QJAMwIAgIEU2FuZAkAzAgCAgRDbGF5CQDMCAICB09yZ2FuaWMFA25pbAAKY29udGluZW50cwkAzAgCAghBbWVyaWNhcwkAzAgCAgZFdXJvcGUJAMwIAgIEQXNpYQkAzAgCAgZBZnJpY2EJAMwIAgIHT2NlYW5pYQUDbmlsAR1rZXlTdG9yZVJlc0J5Q29udGluZW50QW5kVHlwZQIJY29udGluZW50B3Jlc1R5cGUJAKwCAgkArAICCQCsAgICIHN0b3JlUmVzb3VyY2VCeUNvbnRpbmVudEFuZFR5cGVfBQljb250aW5lbnQCAV8FB3Jlc1R5cGUAB2lkeFR5cGUAAAALaWR4UXVhbnRpdHkAAQAIaWR4UHJpY2UAAgEBaQENc2VsbFJlc291cmNlcwMOdXNlckFkZHJlc3NTdHIJY29udGluZW50CXJlc291cmNlcwMJAQIhPQIIBQFpBmNhbGxlcgULYmFja0VuZEFkZHIJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECKnNlbGxSZXNvdXJjZXMgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50cwMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFCmNvbnRpbmVudHMFCWNvbnRpbmVudAkAAgEJAKwCAgITVW5rbm93biBjb250aW5lbnQ6IAUJY29udGluZW50BAt1c2VyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQUOdXNlckFkZHJlc3NTdHIKAQVhZGRlcgIDYWNjBGVsZW0EBXBhcnRzCQC1CQIFBGVsZW0CAV8EB3Jlc1R5cGUJAJEDAgUFcGFydHMFB2lkeFR5cGUDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRBhbGxvd2VkUmVzb3VyY2VzBQdyZXNUeXBlCQACAQkArAICAhJVbmtub3duIHJlc291cmNlOiAFB3Jlc1R5cGUEBnJlc0tleQkBHWtleVN0b3JlUmVzQnlDb250aW5lbnRBbmRUeXBlAgUJY29udGluZW50BQdyZXNUeXBlBAxzdG9yZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUGcmVzS2V5AAAEAXEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwULaWR4UXVhbnRpdHkJAJQKAgkAzQgCCAUDYWNjAl8xCQEMSW50ZWdlckVudHJ5AgUGcmVzS2V5BQFxCQBkAggFA2FjYwJfMgkAawMFAXEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQVwYXJ0cwUIaWR4UHJpY2UFBU1VTFQ2BAZyZXN1bHQKAAIkbAUJcmVzb3VyY2VzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEFYWRkZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MIBQZyZXN1bHQCXzIFC3VzZG5Bc3NldElkAI1PREM=", "height": 2322493, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 2LmFCPKDWAxPQVWtiko78HQLF3RFmvWbzCSLYKGdTWK9 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let MULT6 = 1000000
5+
6+let usdnAssetId = base58'HezsdQuRDtzksAYUy97gfhKy7Z1NW2uXYSHA3bgqenNZ'
7+
8+let backEndAddr = addressFromStringValue("3N5SpX21R3R75Qo4eb3MwFFvW7TUzyhvavv")
9+
10+let allowedResources = ["Oil", "Ore", "Wood", "Sand", "Clay", "Organic"]
11+
12+let continents = ["Americas", "Europe", "Asia", "Africa", "Oceania"]
13+
14+func keyStoreResByContinentAndType (continent,resType) = ((("storeResourceByContinentAndType_" + continent) + "_") + resType)
15+
16+
17+let idxType = 0
18+
19+let idxQuantity = 1
20+
21+let idxPrice = 2
22+
23+@Callable(i)
24+func sellResources (userAddressStr,continent,resources) = if ((i.caller != backEndAddr))
25+ then throw("permission denied")
26+ else if ((size(i.payments) != 0))
27+ then throw("sellResources doesn't require any payments")
28+ else if (!(containsElement(continents, continent)))
29+ then throw(("Unknown continent: " + continent))
30+ else {
31+ let userAddress = addressFromStringValue(userAddressStr)
32+ func adder (acc,elem) = {
33+ let parts = split(elem, "_")
34+ let resType = parts[idxType]
35+ if (!(containsElement(allowedResources, resType)))
36+ then throw(("Unknown resource: " + resType))
37+ else {
38+ let resKey = keyStoreResByContinentAndType(continent, resType)
39+ let storedAmount = valueOrElse(getInteger(resKey), 0)
40+ let q = parseIntValue(parts[idxQuantity])
41+ $Tuple2((acc._1 :+ IntegerEntry(resKey, q)), (acc._2 + fraction(q, parseIntValue(parts[idxPrice]), MULT6)))
42+ }
43+ }
44+
45+ let result = {
46+ let $l = resources
47+ let $s = size($l)
48+ let $acc0 = $Tuple2(nil, 0)
49+ func $f0_1 ($a,$i) = if (($i >= $s))
50+ then $a
51+ else adder($a, $l[$i])
52+
53+ func $f0_2 ($a,$i) = if (($i >= $s))
54+ then $a
55+ else throw("List size exceeds 10")
56+
57+ $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)
58+ }
59+ (result._1 :+ ScriptTransfer(userAddress, result._2, usdnAssetId))
60+ }
61+
62+

github/deemru/w8io/026f985 
89.39 ms