tx · 3aGqYGUhmHpimanQ8Ujifh6M5ZbNtPSxe7PPzSZJsfm2

3NBwZbvD45CscLGF78qTaDRBZ7mDBHt3Yib:  -0.01000000 Waves

2022.08.10 08:47 [2177946] smart account 3NBwZbvD45CscLGF78qTaDRBZ7mDBHt3Yib > SELF 0.00000000 Waves

{ "type": 13, "id": "3aGqYGUhmHpimanQ8Ujifh6M5ZbNtPSxe7PPzSZJsfm2", "fee": 1000000, "feeAssetId": null, "timestamp": 1660110459791, "version": 2, "chainId": 84, "sender": "3NBwZbvD45CscLGF78qTaDRBZ7mDBHt3Yib", "senderPublicKey": "3q3N8Kv49DbzNHyTB4A87UYz2DdquXCgP3GNCcD9Zj66", "proofs": [ "2a95UCq66FWEWB128nWZjZUJg7nPLnyahFEbwCU48hq6WmsthY57kZFAM6mwQfkWvF4AGypvZYEr144wLsx1phte" ], "script": "base64:AAIFAAAAAAAAAC0IAhIGCgQICAgIEgQKAggBEgQKAggIEgQKAggIEgQKAggIEgQKAgQIEgMKAQgAAAAxAAAAAAtDT05GX0lOSVRfSwIAAAALY29uZmlnX2luaXQAAAAAC0NPTkZfQU1JTl9LAgAAAAxjb25maWdfYWRtaW4AAAAADUNPTkZfT1JBQ0xFX0sCAAAADWNvbmZpZ19vcmFjbGUAAAAAE0NPTkZfQVJUV09SS19EQVBQX0sCAAAAE2NvbmZpZ19hcnR3b3JrX2RhcHAAAAAAEUNPTkZfVVNFUlNfREFQUF9LAgAAABFjb25maWdfdXNlcnNfZGFwcAAAAAAQQ09ORl9GRUVfQVNTRVRfSwIAAAAQY29uZmlnX2ZlZV9hc3NldAAAAAARQ09ORl9GRUVfQU1PVU5UX0sCAAAAEWNvbmZpZ19mZWVfYW1vdW50AAAAAA5kYXBwUnVubmluZ0tleQIAAAAUY29uZl9kYXBwX2lzX3J1bm5pbmcAAAAAEW1haW50ZW5hbmNlTVNHS2V5AgAAABRjb25mX21haW50ZW5hbmNlX21zZwAAAAALZGFwcFJ1bm5pbmcJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAAOZGFwcFJ1bm5pbmdLZXkGAAAAAA5tYWludGVuYW5jZU1TRwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAABFtYWludGVuYW5jZU1TR0tleQIAAAAAAAAAAA1zdGF0dXNfTE9DS0VEAgAAAAZMT0NLRUQAAAAAD3N0YXR1c19VTkxPQ0tFRAIAAAAIVU5MT0NLRUQAAAAADnN0YXR1c19QRU5ESU5HAgAAAAdQRU5ESU5HAAAAAA1zdGF0dXNfQ0xPU0VEAgAAAAZDTE9TRUQAAAAAEWNyZWF0b3JSZWdpc3RlcmVkAgAAAApSRUdJU1RFUkVEAAAAAA9jcmVhdG9yVmVyaWZpZWQCAAAACFZFUklGSUVEAAAAAAphcnRGbGFnZ2VkAgAAAAdGTEFHR0VEAAAAAAphcnRJbGxlZ2FsAgAAAAdJTExFR0FMAAAAAAphcnRQZW5kaW5nAgAAAA9DSEFOR0VfUkVRVUlSRUQAAAAACE5FVFdPUktTCQAETAAAAAICAAAAA0VUSAkABEwAAAACAgAAAAdQT0xZR09OBQAAAANuaWwBAAAADGtleU5GVHN0YXR1cwAAAAEAAAAFbmZ0SWQJAAEsAAAAAgkAASwAAAACAgAAAARuZnRfBQAAAAVuZnRJZAIAAAAHX3N0YXR1cwEAAAAOa2V5VHJhbnNmZXJORlQAAAACAAAABW5mdElkAAAABHR4aWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACXRyYW5zZmVyXwUAAAAFbmZ0SWQCAAAAAV8FAAAABHR4aWQAAAAAD2tleUZlZU5vbk1pbnRlZAIAAAAPY29zdF9ub25fbWludGVkAAAAAAxrZXlGZWVNaW50ZWQCAAAAC2Nvc3RfbWludGVkAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQIAAAAAAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAAD2dldEJvb2xlYW5CeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcAAAAABWFkbWluCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAC0NPTkZfQU1JTl9LAAAAAAxhcnR3b3Jrc0RhcHAJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAATQ09ORl9BUlRXT1JLX0RBUFBfSwAAAAAJdXNlcnNEYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAEUNPTkZfVVNFUlNfREFQUF9LAAAAAApvcmFjbGVBZGRyCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAADUNPTkZfT1JBQ0xFX0sAAAAAEGZlZUFjY2VwdGVkQXNzZXQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAEENPTkZfRkVFX0FTU0VUX0sAAAAAGGZlZUFjY2VwdGVkQW1vdW50Rm9yU2lnbgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEFAAAAEUNPTkZfRkVFX0FNT1VOVF9LAQAAABdnZXRTdHJpbmdGcm9tVXNlcnNCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACXVzZXJzRGFwcAUAAAADa2V5AgAAAAABAAAAGmdldFN0cmluZ0Zyb21BcnR3b3Jrc0J5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAMYXJ0d29ya3NEYXBwBQAAAANrZXkCAAAAAAEAAAAZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAKb3JhY2xlQWRkcgUAAAADa2V5AgAAAB9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQAAAAxhc3NldElzVmFsaWQAAAABAAAADGFzc2V0RGV0YWlscwMDAwkAAAAAAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACHF1YW50aXR5AAAAAAAAAAABCQAAAAAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAIZGVjaW1hbHMAAAAAAAAAAAAHCQAAAAAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAKcmVpc3N1YWJsZQcHCQAAAAAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAGaXNzdWVyBQAAAAxhcnR3b3Jrc0RhcHAHAQAAAAxpc1NpZ25BcnRORlQAAAABAAAAAmlkBAAAAAxhc3NldERldGFpbHMJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQJAQAAAAxhc3NldElzVmFsaWQAAAABBQAAAAxhc3NldERldGFpbHMBAAAACWlzUGF5bWVudAAAAAEAAAABaQMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAABNObyBwYXltZW50IGF0dGFjaGVkBAAAAAtuZnRfcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKbmZ0X2Ftb3VudAkBAAAABXZhbHVlAAAAAQgFAAAAC25mdF9wYXltZW50AAAABmFtb3VudAQAAAAPZ2F0ZXdheV9wYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBAAAAA5nYXRld2F5X2Ftb3VudAkBAAAABXZhbHVlAAAAAQgFAAAAD2dhdGV3YXlfcGF5bWVudAAAAAZhbW91bnQJAAUWAAAABAUAAAALbmZ0X3BheW1lbnQFAAAACm5mdF9hbW91bnQFAAAAD2dhdGV3YXlfcGF5bWVudAUAAAAOZ2F0ZXdheV9hbW91bnQAAAAABmlzSW5pdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEFAAAAC0NPTkZfSU5JVF9LBwEAAAAJb3duZXJPbmx5AAAAAQAAAAFpBAAAAAZjYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAphbGxvd2VkQXJyAwUAAAAGaXNJbml0CQAETAAAAAIJAAQlAAAAAQUAAAAFYWRtaW4JAARMAAAAAgkABCUAAAABBQAAAAR0aGlzBQAAAANuaWwJAARMAAAAAgkABCUAAAABBQAAAAR0aGlzBQAAAANuaWwDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAKYWxsb3dlZEFycgUAAAAGY2FsbGVyBgcBAAAADGlkQ2FsbGVyRGF0ZQAAAAEAAAABaQMJAQAAAAEhAAAAAQUAAAALZGFwcFJ1bm5pbmcJAAACAAAAAQUAAAAObWFpbnRlbmFuY2VNU0cJAAUVAAAAAwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAQAAABNnZXRDcmVhdG9yRnJvbU5GVGlkAAAAAQAAAAVuZnRpZAQAAAAHbmZ0RGF0YQkBAAAAGmdldFN0cmluZ0Zyb21BcnR3b3Jrc0J5S2V5AAAAAQkAASwAAAACAgAAAARuZnRfBQAAAAVuZnRpZAQAAAAHY3JlYXRvcgkAAZEAAAACCQAEtQAAAAIFAAAAB25mdERhdGECAAAAAV8AAAAAAAAAAAYEAAAABWFydElkCQABkQAAAAIJAAS1AAAAAgUAAAAHbmZ0RGF0YQIAAAABXwAAAAAAAAAABQkABRQAAAACBQAAAAdjcmVhdG9yBQAAAAVhcnRJZAEAAAATZ2V0Q3JlYXRvckVSQzIwQWRkcgAAAAEAAAAEYWRkcgQAAAAJZXJjMjBBZGRyCQEAAAAXZ2V0U3RyaW5nRnJvbVVzZXJzQnlLZXkAAAABCQABLAAAAAICAAAAC3VzZXJfRVJDMjBfBQAAAARhZGRyBQAAAAllcmMyMEFkZHIBAAAAEGdldENyZWF0b3JTdGF0dXMAAAABAAAABGFkZHIEAAAABnN0YXR1cwkBAAAAF2dldFN0cmluZ0Zyb21Vc2Vyc0J5S2V5AAAAAQkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAABGFkZHIFAAAABnN0YXR1cwEAAAAMZ2V0QXJ0U3RhdHVzAAAAAQAAAAVhcnRJZAQAAAAGc3RhdHVzCQEAAAAaZ2V0U3RyaW5nRnJvbUFydHdvcmtzQnlLZXkAAAABCQABLAAAAAICAAAADHVzZXJfc3RhdHVzXwUAAAAFYXJ0SWQFAAAABnN0YXR1cwEAAAAOaXNWYWxpZENyZWF0b3IAAAABAAAABnN0YXR1cwMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAABFjcmVhdG9yUmVnaXN0ZXJlZAYJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAA9jcmVhdG9yVmVyaWZpZWQBAAAACmlzVmFsaWRBcnQAAAABAAAABWFydElkAwMJAQAAAAIhPQAAAAIFAAAABWFydElkBQAAAAphcnRGbGFnZ2VkBgkBAAAAAiE9AAAAAgUAAAAFYXJ0SWQFAAAACmFydElsbGVnYWwGCQEAAAACIT0AAAACBQAAAAVhcnRJZAUAAAAKYXJ0UGVuZGluZwAAAAcAAAABaQEAAAAEaW5pdAAAAAQAAAAJYWRtaW5BZGRyAAAACm9yYWNsZUFkZHIAAAAMYXJ0d29ya3NEYXBwAAAACXVzZXJzRGFwcAMJAQAA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AAIAAAABCQABLAAAAAICAAAAE0NyZWF0b3Igc3RhdHVzIGlzIDoJAQAAABBnZXRDcmVhdG9yU3RhdHVzAAAAAQUAAAAHY3JlYXRvcgMJAQAAAAEhAAAAAQkBAAAACmlzVmFsaWRBcnQAAAABCQEAAAAMZ2V0QXJ0U3RhdHVzAAAAAQUAAAAFYXJ0SWQJAAACAAAAAQkAASwAAAACAgAAABNBcnR3b3JrIHN0YXR1cyBpcyA6CQEAAAAMZ2V0QXJ0U3RhdHVzAAAAAQUAAAAFYXJ0SWQEAAAACWVyYzIwQWRkcgkBAAAAE2dldENyZWF0b3JFUkMyMEFkZHIAAAABBQAAAAdjcmVhdG9yAwkAAAAAAAACCQABMQAAAAEFAAAACWVyYzIwQWRkcgAAAAAAAAAAAAkAAAIAAAABAgAAACxUaGlzIGFydGlzdCBkaWRuJ3QgYWxsb3cgY3Jvc3NjaGFpbiB0cmFuc2ZlcgQAAAAJbmZ0U3RhdHVzCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAMa2V5TkZUc3RhdHVzAAAAAQUAAAAFbmZ0SWQDAwkAAAAAAAACBQAAAAluZnRTdGF0dXMFAAAADXN0YXR1c19MT0NLRUQGCQAAAAAAAAIFAAAACW5mdFN0YXR1cwUAAAAOc3RhdHVzX1BFTkRJTkcJAAACAAAAAQIAAAASTkZUIGFscmVhZHkgbG9ja2VkBAAAAA9nYXNGZWVOb25NaW50ZWQJAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQUAAAAPa2V5RmVlTm9uTWludGVkBAAAAAxnYXNGZWVNaW50ZWQJAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQUAAAAMa2V5RmVlTWludGVkBAAAAAhpc01pbnRlZAMJAAAAAAAAAgUAAAAJbmZ0U3RhdHVzBQAAAA9zdGF0dXNfVU5MT0NLRUQGBwMDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAPZ2F0ZXdheV9wYXltZW50AAAAB2Fzc2V0SWQGCQEAAAACIT0AAAACCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAA9nYXRld2F5X3BheW1lbnQAAAAHYXNzZXRJZAUAAAAQZmVlQWNjZXB0ZWRB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", "height": 2177946, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: a7ZiuokMsqt4fkEypEM66ff7HoLfBXpczvTQSvtiuSv Next: 7pptHg1fqj5afMtT5LxL6hAQyWaUiMpzCpJcbYW5GLrd Diff:
OldNewDifferences
3030 let status_PENDING = "PENDING"
3131
3232 let status_CLOSED = "CLOSED"
33+
34+let creatorRegistered = "REGISTERED"
35+
36+let creatorVerified = "VERIFIED"
37+
38+let artFlagged = "FLAGGED"
39+
40+let artIllegal = "ILLEGAL"
41+
42+let artPending = "CHANGE_REQUIRED"
3343
3444 let NETWORKS = ["ETH", "POLYGON"]
3545
121131 func getCreatorFromNFTid (nftid) = {
122132 let nftData = getStringFromArtworksByKey(("nft_" + nftid))
123133 let creator = split(nftData, "_")[6]
124- creator
134+ let artId = split(nftData, "_")[5]
135+ $Tuple2(creator, artId)
125136 }
126137
127138
129140 let erc20Addr = getStringFromUsersByKey(("user_ERC20_" + addr))
130141 erc20Addr
131142 }
143+
144+
145+func getCreatorStatus (addr) = {
146+ let status = getStringFromUsersByKey(("user_status_" + addr))
147+ status
148+ }
149+
150+
151+func getArtStatus (artId) = {
152+ let status = getStringFromArtworksByKey(("user_status_" + artId))
153+ status
154+ }
155+
156+
157+func isValidCreator (status) = if ((status == creatorRegistered))
158+ then true
159+ else (status == creatorVerified)
160+
161+
162+func isValidArt (artId) = if (if ((artId != artFlagged))
163+ then true
164+ else (artId != artIllegal))
165+ then true
166+ else (artId != artPending)
132167
133168
134169 @Callable(i)
156191 else if (!(containsElement(NETWORKS, network)))
157192 then throw("Network not supported")
158193 else {
159- let $t044264465 = idCallerDate(i)
160- let id = $t044264465._1
161- let caller = $t044264465._2
162- let date = $t044264465._3
163- let $t044684545 = isPayment(i)
164- let nft_payment = $t044684545._1
165- let nft_amount = $t044684545._2
166- let gateway_payment = $t044684545._3
167- let gateway_amount = $t044684545._4
194+ let $t051385177 = idCallerDate(i)
195+ let id = $t051385177._1
196+ let caller = $t051385177._2
197+ let date = $t051385177._3
198+ let $t051805257 = isPayment(i)
199+ let nft_payment = $t051805257._1
200+ let nft_amount = $t051805257._2
201+ let gateway_payment = $t051805257._3
202+ let gateway_amount = $t051805257._4
168203 if ((nft_amount != 1))
169204 then throw("No NFT attached")
170205 else {
173208 else false)
174209 then toBase58String(value(nft_payment.assetId))
175210 else throw("Only SIGN Art NFT accepted.")
176- let creatorFromNFTId = getCreatorFromNFTid(nftId)
177- let erc20Addr = getCreatorERC20Addr(creatorFromNFTId)
178- if ((size(erc20Addr) == 0))
179- then throw("This artist didn't allow crosschain transfer")
180- else {
181- let nftStatus = getStringByKey(keyNFTstatus(nftId))
182- if (if ((nftStatus == status_LOCKED))
183- then true
184- else (nftStatus == status_PENDING))
185- then throw("NFT already locked")
186- else {
187- let gasFeeNonMinted = getIntegerByKeyFromOracle(keyFeeNonMinted)
188- let gasFeeMinted = getIntegerByKeyFromOracle(keyFeeMinted)
189- let isMinted = if ((nftStatus == status_UNLOCKED))
190- then true
191- else false
192- if (if (!(isDefined(gateway_payment.assetId)))
193- then true
194- else (toBase58String(value(gateway_payment.assetId)) != feeAcceptedAsset))
195- then throw("Wrong payment asset")
196- else if (if (isMinted)
197- then ((gateway_amount + feeAcceptedAmountForSign) > gasFeeMinted)
198- else false)
199- then throw("Wrong payment amount to unlock")
200- else if (if (!(isMinted))
201- then ((gateway_amount + feeAcceptedAmountForSign) > gasFeeNonMinted)
202- else false)
203- then throw("Wrong payment amount to mint and unlock")
204- else [StringEntry(keyNFTstatus(nftId), status_PENDING), StringEntry(((keyTransferNFT(nftId, id) + "_") + status_PENDING), ((((((((((((recipient + "_") + network) + "_") + caller) + "_") + id) + "_") + value(assetInfo(value(nft_payment.assetId))).name) + "_") + toString(date)) + "_") + toString(height)))]
205- }
206- }
211+ let $t055665647 = getCreatorFromNFTid(nftId)
212+ let creator = $t055665647._1
213+ let artId = $t055665647._2
214+ if (!(isValidCreator(getCreatorStatus(creator))))
215+ then throw(("Creator status is :" + getCreatorStatus(creator)))
216+ else if (!(isValidArt(getArtStatus(artId))))
217+ then throw(("Artwork status is :" + getArtStatus(artId)))
218+ else {
219+ let erc20Addr = getCreatorERC20Addr(creator)
220+ if ((size(erc20Addr) == 0))
221+ then throw("This artist didn't allow crosschain transfer")
222+ else {
223+ let nftStatus = getStringByKey(keyNFTstatus(nftId))
224+ if (if ((nftStatus == status_LOCKED))
225+ then true
226+ else (nftStatus == status_PENDING))
227+ then throw("NFT already locked")
228+ else {
229+ let gasFeeNonMinted = getIntegerByKeyFromOracle(keyFeeNonMinted)
230+ let gasFeeMinted = getIntegerByKeyFromOracle(keyFeeMinted)
231+ let isMinted = if ((nftStatus == status_UNLOCKED))
232+ then true
233+ else false
234+ if (if (!(isDefined(gateway_payment.assetId)))
235+ then true
236+ else (toBase58String(value(gateway_payment.assetId)) != feeAcceptedAsset))
237+ then throw("Wrong payment asset")
238+ else if (if (isMinted)
239+ then ((gateway_amount + feeAcceptedAmountForSign) > gasFeeMinted)
240+ else false)
241+ then throw("Wrong payment amount to unlock")
242+ else if (if (!(isMinted))
243+ then ((gateway_amount + feeAcceptedAmountForSign) > gasFeeNonMinted)
244+ else false)
245+ then throw("Wrong payment amount to mint and unlock")
246+ else [StringEntry(keyNFTstatus(nftId), status_PENDING), StringEntry(((keyTransferNFT(nftId, id) + "_") + status_PENDING), ((((((((((((recipient + "_") + network) + "_") + caller) + "_") + id) + "_") + value(assetInfo(value(nft_payment.assetId))).name) + "_") + toString(date)) + "_") + toString(height)))]
247+ }
248+ }
249+ }
207250 }
208251 }
209252
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let CONF_INIT_K = "config_init"
55
66 let CONF_AMIN_K = "config_admin"
77
88 let CONF_ORACLE_K = "config_oracle"
99
1010 let CONF_ARTWORK_DAPP_K = "config_artwork_dapp"
1111
1212 let CONF_USERS_DAPP_K = "config_users_dapp"
1313
1414 let CONF_FEE_ASSET_K = "config_fee_asset"
1515
1616 let CONF_FEE_AMOUNT_K = "config_fee_amount"
1717
1818 let dappRunningKey = "conf_dapp_is_running"
1919
2020 let maintenanceMSGKey = "conf_maintenance_msg"
2121
2222 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
2323
2424 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
2525
2626 let status_LOCKED = "LOCKED"
2727
2828 let status_UNLOCKED = "UNLOCKED"
2929
3030 let status_PENDING = "PENDING"
3131
3232 let status_CLOSED = "CLOSED"
33+
34+let creatorRegistered = "REGISTERED"
35+
36+let creatorVerified = "VERIFIED"
37+
38+let artFlagged = "FLAGGED"
39+
40+let artIllegal = "ILLEGAL"
41+
42+let artPending = "CHANGE_REQUIRED"
3343
3444 let NETWORKS = ["ETH", "POLYGON"]
3545
3646 func keyNFTstatus (nftId) = (("nft_" + nftId) + "_status")
3747
3848
3949 func keyTransferNFT (nftId,txid) = ((("transfer_" + nftId) + "_") + txid)
4050
4151
4252 let keyFeeNonMinted = "cost_non_minted"
4353
4454 let keyFeeMinted = "cost_minted"
4555
4656 func getStringByKey (key) = valueOrElse(getString(this, key), "")
4757
4858
4959 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
5060
5161
5262 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
5363
5464
5565 let admin = value(addressFromString(getStringByKey(CONF_AMIN_K)))
5666
5767 let artworksDapp = value(addressFromString(getStringByKey(CONF_ARTWORK_DAPP_K)))
5868
5969 let usersDapp = value(addressFromString(getStringByKey(CONF_USERS_DAPP_K)))
6070
6171 let oracleAddr = value(addressFromString(getStringByKey(CONF_ORACLE_K)))
6272
6373 let feeAcceptedAsset = getStringByKey(CONF_FEE_ASSET_K)
6474
6575 let feeAcceptedAmountForSign = getIntegerByKey(CONF_FEE_AMOUNT_K)
6676
6777 func getStringFromUsersByKey (key) = valueOrElse(getString(usersDapp, key), "")
6878
6979
7080 func getStringFromArtworksByKey (key) = valueOrElse(getString(artworksDapp, key), "")
7181
7282
7383 func getIntegerByKeyFromOracle (key) = valueOrErrorMessage(getInteger(oracleAddr, key), "Integer undefine or 0 in oracle")
7484
7585
7686 func assetIsValid (assetDetails) = if (if (if ((assetDetails.quantity == 1))
7787 then (assetDetails.decimals == 0)
7888 else false)
7989 then (assetDetails.reissuable == false)
8090 else false)
8191 then (assetDetails.issuer == artworksDapp)
8292 else false
8393
8494
8595 func isSignArtNFT (id) = {
8696 let assetDetails = value(assetInfo(id))
8797 assetIsValid(assetDetails)
8898 }
8999
90100
91101 func isPayment (i) = if ((size(i.payments) == 0))
92102 then throw("No payment attached")
93103 else {
94104 let nft_payment = value(i.payments[0])
95105 let nft_amount = value(nft_payment.amount)
96106 let gateway_payment = value(i.payments[1])
97107 let gateway_amount = value(gateway_payment.amount)
98108 $Tuple4(nft_payment, nft_amount, gateway_payment, gateway_amount)
99109 }
100110
101111
102112 let isInit = valueOrElse(getBooleanByKey(CONF_INIT_K), false)
103113
104114 func ownerOnly (i) = {
105115 let caller = toString(i.caller)
106116 let id = toBase58String(i.transactionId)
107117 let allowedArr = if (isInit)
108118 then [toString(admin), toString(this)]
109119 else [toString(this)]
110120 if (containsElement(allowedArr, caller))
111121 then true
112122 else false
113123 }
114124
115125
116126 func idCallerDate (i) = if (!(dappRunning))
117127 then throw(maintenanceMSG)
118128 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
119129
120130
121131 func getCreatorFromNFTid (nftid) = {
122132 let nftData = getStringFromArtworksByKey(("nft_" + nftid))
123133 let creator = split(nftData, "_")[6]
124- creator
134+ let artId = split(nftData, "_")[5]
135+ $Tuple2(creator, artId)
125136 }
126137
127138
128139 func getCreatorERC20Addr (addr) = {
129140 let erc20Addr = getStringFromUsersByKey(("user_ERC20_" + addr))
130141 erc20Addr
131142 }
143+
144+
145+func getCreatorStatus (addr) = {
146+ let status = getStringFromUsersByKey(("user_status_" + addr))
147+ status
148+ }
149+
150+
151+func getArtStatus (artId) = {
152+ let status = getStringFromArtworksByKey(("user_status_" + artId))
153+ status
154+ }
155+
156+
157+func isValidCreator (status) = if ((status == creatorRegistered))
158+ then true
159+ else (status == creatorVerified)
160+
161+
162+func isValidArt (artId) = if (if ((artId != artFlagged))
163+ then true
164+ else (artId != artIllegal))
165+ then true
166+ else (artId != artPending)
132167
133168
134169 @Callable(i)
135170 func init (adminAddr,oracleAddr,artworksDapp,usersDapp) = if (ownerOnly(i))
136171 then [StringEntry(CONF_AMIN_K, adminAddr), StringEntry(CONF_ORACLE_K, oracleAddr), StringEntry(CONF_ARTWORK_DAPP_K, artworksDapp), StringEntry(CONF_USERS_DAPP_K, usersDapp), BooleanEntry(CONF_INIT_K, true)]
137172 else throw("Not allowed")
138173
139174
140175
141176 @Callable(i)
142177 func setFee (feeAsset,feeAmount) = {
143178 let assetDetails = assetInfo(fromBase58String(feeAsset))
144179 let decimal = value(assetDetails).decimals
145180 let base10FeeAmount = pow(feeAmount, 0, 10, 1, decimal, HALFUP)
146181 if (ownerOnly(i))
147182 then [StringEntry(CONF_FEE_ASSET_K, feeAsset), IntegerEntry(CONF_FEE_AMOUNT_K, base10FeeAmount)]
148183 else throw("Not allowed")
149184 }
150185
151186
152187
153188 @Callable(i)
154189 func lock (recipient,network) = if (!(isInit))
155190 then throw("dApp not ready")
156191 else if (!(containsElement(NETWORKS, network)))
157192 then throw("Network not supported")
158193 else {
159- let $t044264465 = idCallerDate(i)
160- let id = $t044264465._1
161- let caller = $t044264465._2
162- let date = $t044264465._3
163- let $t044684545 = isPayment(i)
164- let nft_payment = $t044684545._1
165- let nft_amount = $t044684545._2
166- let gateway_payment = $t044684545._3
167- let gateway_amount = $t044684545._4
194+ let $t051385177 = idCallerDate(i)
195+ let id = $t051385177._1
196+ let caller = $t051385177._2
197+ let date = $t051385177._3
198+ let $t051805257 = isPayment(i)
199+ let nft_payment = $t051805257._1
200+ let nft_amount = $t051805257._2
201+ let gateway_payment = $t051805257._3
202+ let gateway_amount = $t051805257._4
168203 if ((nft_amount != 1))
169204 then throw("No NFT attached")
170205 else {
171206 let nftId = if (if (isDefined(nft_payment.assetId))
172207 then isSignArtNFT(value(nft_payment.assetId))
173208 else false)
174209 then toBase58String(value(nft_payment.assetId))
175210 else throw("Only SIGN Art NFT accepted.")
176- let creatorFromNFTId = getCreatorFromNFTid(nftId)
177- let erc20Addr = getCreatorERC20Addr(creatorFromNFTId)
178- if ((size(erc20Addr) == 0))
179- then throw("This artist didn't allow crosschain transfer")
180- else {
181- let nftStatus = getStringByKey(keyNFTstatus(nftId))
182- if (if ((nftStatus == status_LOCKED))
183- then true
184- else (nftStatus == status_PENDING))
185- then throw("NFT already locked")
186- else {
187- let gasFeeNonMinted = getIntegerByKeyFromOracle(keyFeeNonMinted)
188- let gasFeeMinted = getIntegerByKeyFromOracle(keyFeeMinted)
189- let isMinted = if ((nftStatus == status_UNLOCKED))
190- then true
191- else false
192- if (if (!(isDefined(gateway_payment.assetId)))
193- then true
194- else (toBase58String(value(gateway_payment.assetId)) != feeAcceptedAsset))
195- then throw("Wrong payment asset")
196- else if (if (isMinted)
197- then ((gateway_amount + feeAcceptedAmountForSign) > gasFeeMinted)
198- else false)
199- then throw("Wrong payment amount to unlock")
200- else if (if (!(isMinted))
201- then ((gateway_amount + feeAcceptedAmountForSign) > gasFeeNonMinted)
202- else false)
203- then throw("Wrong payment amount to mint and unlock")
204- else [StringEntry(keyNFTstatus(nftId), status_PENDING), StringEntry(((keyTransferNFT(nftId, id) + "_") + status_PENDING), ((((((((((((recipient + "_") + network) + "_") + caller) + "_") + id) + "_") + value(assetInfo(value(nft_payment.assetId))).name) + "_") + toString(date)) + "_") + toString(height)))]
205- }
206- }
211+ let $t055665647 = getCreatorFromNFTid(nftId)
212+ let creator = $t055665647._1
213+ let artId = $t055665647._2
214+ if (!(isValidCreator(getCreatorStatus(creator))))
215+ then throw(("Creator status is :" + getCreatorStatus(creator)))
216+ else if (!(isValidArt(getArtStatus(artId))))
217+ then throw(("Artwork status is :" + getArtStatus(artId)))
218+ else {
219+ let erc20Addr = getCreatorERC20Addr(creator)
220+ if ((size(erc20Addr) == 0))
221+ then throw("This artist didn't allow crosschain transfer")
222+ else {
223+ let nftStatus = getStringByKey(keyNFTstatus(nftId))
224+ if (if ((nftStatus == status_LOCKED))
225+ then true
226+ else (nftStatus == status_PENDING))
227+ then throw("NFT already locked")
228+ else {
229+ let gasFeeNonMinted = getIntegerByKeyFromOracle(keyFeeNonMinted)
230+ let gasFeeMinted = getIntegerByKeyFromOracle(keyFeeMinted)
231+ let isMinted = if ((nftStatus == status_UNLOCKED))
232+ then true
233+ else false
234+ if (if (!(isDefined(gateway_payment.assetId)))
235+ then true
236+ else (toBase58String(value(gateway_payment.assetId)) != feeAcceptedAsset))
237+ then throw("Wrong payment asset")
238+ else if (if (isMinted)
239+ then ((gateway_amount + feeAcceptedAmountForSign) > gasFeeMinted)
240+ else false)
241+ then throw("Wrong payment amount to unlock")
242+ else if (if (!(isMinted))
243+ then ((gateway_amount + feeAcceptedAmountForSign) > gasFeeNonMinted)
244+ else false)
245+ then throw("Wrong payment amount to mint and unlock")
246+ else [StringEntry(keyNFTstatus(nftId), status_PENDING), StringEntry(((keyTransferNFT(nftId, id) + "_") + status_PENDING), ((((((((((((recipient + "_") + network) + "_") + caller) + "_") + id) + "_") + value(assetInfo(value(nft_payment.assetId))).name) + "_") + toString(date)) + "_") + toString(height)))]
247+ }
248+ }
249+ }
207250 }
208251 }
209252
210253
211254
212255 @Callable(i)
213256 func confirmLock (nftId,transferId) = if (!(isInit))
214257 then throw("dApp not ready")
215258 else if (ownerOnly(i))
216259 then {
217260 let nftStatus = getStringByKey(keyNFTstatus(nftId))
218261 if ((nftStatus != status_PENDING))
219262 then throw("NFT not pending")
220263 else {
221264 let val = getStringByKey(((keyTransferNFT(nftId, transferId) + "_") + status_PENDING))
222265 let newKey = ((keyTransferNFT(nftId, transferId) + "_") + status_CLOSED)
223266 [DeleteEntry(((keyTransferNFT(nftId, transferId) + "_") + status_PENDING)), StringEntry(newKey, val), StringEntry(keyNFTstatus(nftId), status_LOCKED)]
224267 }
225268 }
226269 else throw("Not allowed")
227270
228271
229272
230273 @Callable(i)
231274 func unlock (recipient,nftId) = if (!(isInit))
232275 then throw("dApp not ready")
233276 else if (ownerOnly(i))
234277 then {
235278 let nftStatus = getStringByKey(keyNFTstatus(nftId))
236279 if ((nftStatus != status_LOCKED))
237280 then throw("NFT not locked, finalize first if pending")
238281 else [StringEntry(keyNFTstatus(nftId), status_UNLOCKED), ScriptTransfer(Address(fromBase58String(recipient)), 1, fromBase58String(nftId))]
239282 }
240283 else throw("Not allowed")
241284
242285
243286
244287 @Callable(i)
245288 func appRunning (isLive,message) = if (!(isInit))
246289 then throw("dApp not ready")
247290 else if (ownerOnly(i))
248291 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
249292 else throw("You are not allowed to change this")
250293
251294
252295
253296 @Callable(i)
254297 func deleteEntry (entry) = if (ownerOnly(i))
255298 then [DeleteEntry(entry)]
256299 else throw("no")
257300
258301

github/deemru/w8io/873ac7e 
226.36 ms