tx · 7C3QYF3pVtDLk8mNDjp3RSoMpk6kAA8GeZ2oCgMN7JsZ
3NBwZbvD45CscLGF78qTaDRBZ7mDBHt3Yib: -0.00800000 Waves
2022.08.10 09:17 [2177976] smart account 3NBwZbvD45CscLGF78qTaDRBZ7mDBHt3Yib > SELF 0.00000000 Waves
{
"type": 13,
"id": "7C3QYF3pVtDLk8mNDjp3RSoMpk6kAA8GeZ2oCgMN7JsZ",
"fee": 800000,
"feeAssetId": null,
"timestamp": 1660112261998,
"version": 2,
"chainId": 84,
"sender": "3NBwZbvD45CscLGF78qTaDRBZ7mDBHt3Yib",
"senderPublicKey": "3q3N8Kv49DbzNHyTB4A87UYz2DdquXCgP3GNCcD9Zj66",
"proofs": [
"5LcuzXUBPQZSTkbWi3LTEG5g9yL88co4X25bMVeC1r8y2nhJ97ANosTtGbhCXkTsBPHufWsxHqWgcenT3jJ28T1Q"
],
"script": "base64:BgItCAISBgoECAgICBIECgIIARIECgIICBIECgIICBIECgIICBIECgIECBIDCgEIMgAHdmVyc2lvbgIDMS4wAAtDT05GX0lOSVRfSwILY29uZmlnX2luaXQAC0NPTkZfQU1JTl9LAgxjb25maWdfYWRtaW4ADUNPTkZfT1JBQ0xFX0sCDWNvbmZpZ19vcmFjbGUAE0NPTkZfQVJUV09SS19EQVBQX0sCE2NvbmZpZ19hcnR3b3JrX2RhcHAAEUNPTkZfVVNFUlNfREFQUF9LAhFjb25maWdfdXNlcnNfZGFwcAAQQ09ORl9GRUVfQVNTRVRfSwIQY29uZmlnX2ZlZV9hc3NldAARQ09ORl9GRUVfQU1PVU5UX0sCEWNvbmZpZ19mZWVfYW1vdW50AA5kYXBwUnVubmluZ0tleQIUY29uZl9kYXBwX2lzX3J1bm5pbmcAEW1haW50ZW5hbmNlTVNHS2V5AhRjb25mX21haW50ZW5hbmNlX21zZwALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUOZGFwcFJ1bm5pbmdLZXkGAA5tYWludGVuYW5jZU1TRwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBRFtYWludGVuYW5jZU1TR0tleQIAAA1zdGF0dXNfTE9DS0VEAgZMT0NLRUQAD3N0YXR1c19VTkxPQ0tFRAIIVU5MT0NLRUQADnN0YXR1c19QRU5ESU5HAgdQRU5ESU5HAA1zdGF0dXNfQ0xPU0VEAgZDTE9TRUQAEWNyZWF0b3JSZWdpc3RlcmVkAgpSRUdJU1RFUkVEAA9jcmVhdG9yVmVyaWZpZWQCCFZFUklGSUVEAAphcnRGbGFnZ2VkAgdGTEFHR0VEAAphcnRJbGxlZ2FsAgdJTExFR0FMAAphcnRQZW5kaW5nAg9DSEFOR0VfUkVRVUlSRUQACE5FVFdPUktTCQDMCAICA0VUSAkAzAgCAgdQT0xZR09OBQNuaWwBDGtleU5GVHN0YXR1cwEFbmZ0SWQJAKwCAgkArAICAgRuZnRfBQVuZnRJZAIHX3N0YXR1cwEOa2V5VHJhbnNmZXJORlQCBW5mdElkBHR4aWQJAKwCAgkArAICCQCsAgICCXRyYW5zZmVyXwUFbmZ0SWQCAV8FBHR4aWQAD2tleUZlZU5vbk1pbnRlZAIPY29zdF9ub25fbWludGVkAAxrZXlGZWVNaW50ZWQCC2Nvc3RfbWludGVkAQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwAFYWRtaW4JAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQULQ09ORl9BTUlOX0sADGFydHdvcmtzRGFwcAkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBBRNDT05GX0FSVFdPUktfREFQUF9LAAl1c2Vyc0RhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQURQ09ORl9VU0VSU19EQVBQX0sACm9yYWNsZUFkZHIJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQUNQ09ORl9PUkFDTEVfSwAQZmVlQWNjZXB0ZWRBc3NldAkBDmdldFN0cmluZ0J5S2V5AQUQQ09ORl9GRUVfQVNTRVRfSwAYZmVlQWNjZXB0ZWRBbW91bnRGb3JTaWduCQEPZ2V0SW50ZWdlckJ5S2V5AQURQ09ORl9GRUVfQU1PVU5UX0sBF2dldFN0cmluZ0Zyb21Vc2Vyc0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUJdXNlcnNEYXBwBQNrZXkCAAEaZ2V0U3RyaW5nRnJvbUFydHdvcmtzQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQxhcnR3b3Jrc0RhcHAFA2tleQIAARlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQpvcmFjbGVBZGRyBQNrZXkCH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUBDGFzc2V0SXNWYWxpZAEMYXNzZXREZXRhaWxzAwMDCQAAAggFDGFzc2V0RGV0YWlscwhxdWFudGl0eQABCQAAAggFDGFzc2V0RGV0YWlscwhkZWNpbWFscwAABwkAAAIIBQxhc3NldERldGFpbHMKcmVpc3N1YWJsZQcHCQAAAggFDGFzc2V0RGV0YWlscwZpc3N1ZXIFDGFydHdvcmtzRGFwcAcBDGlzU2lnbkFydE5GVAECaWQEDGFzc2V0RGV0YWlscwkBBXZhbHVlAQkA7AcBBQJpZAkBDGFzc2V0SXNWYWxpZAEFDGFzc2V0RGV0YWlscwEJaXNQYXltZW50AQFpAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnQgYXR0YWNoZWQEC25mdF9wYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAECm5mdF9hbW91bnQJAQV2YWx1ZQEIBQtuZnRfcGF5bWVudAZhbW91bnQED2dhdGV3YXlfcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABBA5nYXRld2F5X2Ftb3VudAkBBXZhbHVlAQgFD2dhdGV3YXlfcGF5bWVudAZhbW91bnQJAJYKBAULbmZ0X3BheW1lbnQFCm5mdF9hbW91bnQFD2dhdGV3YXlfcGF5bWVudAUOZ2F0ZXdheV9hbW91bnQABmlzSW5pdAkBC3ZhbHVlT3JFbHNlAgkBD2dldEJvb2xlYW5CeUtleQEFC0NPTkZfSU5JVF9LBwEJb3duZXJPbmx5AQFpBAZjYWxsZXIJAKUIAQgFAWkGY2FsbGVyBAJpZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAphbGxvd2VkQXJyAwUGaXNJbml0CQDMCAIJAKUIAQUFYWRtaW4JAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkApQgBBQR0aGlzBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUKYWxsb3dlZEFycgUGY2FsbGVyBgcBDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABE2dldENyZWF0b3JGcm9tTkZUaWQBBW5mdGlkBAduZnREYXRhCQEaZ2V0U3RyaW5nRnJvbUFydHdvcmtzQnlLZXkBCQCsAgICBG5mdF8FBW5mdGlkBAdjcmVhdG9yCQCRAwIJALUJAgUHbmZ0RGF0YQIBXwAGBAVhcnRJZAkAkQMCCQC1CQIFB25mdERhdGECAV8ABQkAlAoCBQdjcmVhdG9yBQVhcnRJZAETZ2V0Q3JlYXRvckVSQzIwQWRkcgEEYWRkcgQJZXJjMjBBZGRyCQEXZ2V0U3RyaW5nRnJvbVVzZXJzQnlLZXkBCQCsAgICC3VzZXJfRVJDMjBfBQRhZGRyBQllcmMyMEFkZHIBEGdldENyZWF0b3JTdGF0dXMBBGFkZHIEBnN0YXR1cwkBF2dldFN0cmluZ0Zyb21Vc2Vyc0J5S2V5AQkArAICAgx1c2VyX3N0YXR1c18FBGFkZHIFBnN0YXR1cwEMZ2V0QXJ0U3RhdHVzAgVhcnRJZARhZGRyBAZzdGF0dXMJARpnZXRTdHJpbmdGcm9tQXJ0d29ya3NCeUtleQEJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUFYXJ0SWQCAV8FBGFkZHIFBnN0YXR1cwEOaXNWYWxpZENyZWF0b3IBBnN0YXR1cwMJAAACBQZzdGF0dXMFEWNyZWF0b3JSZWdpc3RlcmVkBgkAAAIFBnN0YXR1cwUPY3JlYXRvclZlcmlmaWVkAQppc1ZhbGlkQXJ0AQZzdGF0dXMDAwkBAiE9AgUGc3RhdHVzBQphcnRGbGFnZ2VkCQECIT0CBQZzdGF0dXMFCmFydElsbGVnYWwHCQECIT0CBQZzdGF0dXMFCmFydFBlbmRpbmcHBwFpAQRpbml0BAlhZG1pbkFkZHIKb3JhY2xlQWRkcgxhcnR3b3Jrc0RhcHAJdXNlcnNEYXBwAwkBCW93bmVyT25seQEFAWkJAMwIAgkBC1N0cmluZ0VudHJ5AgULQ09ORl9BTUlOX0sFCWFkbWluQWRkcgkAzAgCCQELU3RyaW5nRW50cnkCBQ1DT05GX09SQUNMRV9LBQpvcmFjbGVBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIFE0NPTkZfQVJUV09SS19EQVBQX0sFDGFydHdvcmtzRGFwcAkAzAgCCQELU3RyaW5nRW50cnkCBRFDT05GX1VTRVJTX0RBUFBfSwUJdXNlcnNEYXBwCQDMCAIJAQxCb29sZWFuRW50cnkCBQtDT05GX0lOSVRfSwYFA25pbAkAAgECC05vdCBhbGxvd2VkAWkBBnNldEZlZQIIZmVlQXNzZXQJZmVlQW1vdW50BAxhc3NldERldGFpbHMJAOwHAQkA2QQBBQhmZWVBc3NldAQHZGVjaW1hbAgJAQV2YWx1ZQEFDGFzc2V0RGV0YWlscwhkZWNpbWFscwQPYmFzZTEwRmVlQW1vdW50CQBsBgUJZmVlQW1vdW50AAAACgABBQdkZWNpbWFsBQZIQUxGVVADCQEJb3duZXJPbmx5AQUBaQkAzAgCCQELU3RyaW5nRW50cnkCBRBDT05GX0ZFRV9BU1NFVF9LBQhmZWVBc3NldAkAzAgCCQEMSW50ZWdlckVudHJ5AgURQ09ORl9GRUVfQU1PVU5UX0sFD2Jhc2UxMEZlZUFtb3VudAUDbmlsCQACAQILTm90IGFsbG93ZWQBaQEEbG9jawIJcmVjaXBpZW50B25ldHdvcmsDCQEBIQEFBmlzSW5pdAkAAgECDmRBcHAgbm90IHJlYWR5AwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUITkVUV09SS1MFB25ldHdvcmsJAAIBAhVOZXR3b3JrIG5vdCBzdXBwb3J0ZWQECyR0MDUxODM1MjIyCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQskdDA1MTgzNTIyMgJfMQQGY2FsbGVyCAULJHQwNTE4MzUyMjICXzIEBGRhdGUIBQskdDA1MTgzNTIyMgJfMwQLJHQwNTIyNTUzMDIJAQlpc1BheW1lbnQBBQFpBAtuZnRfcGF5bWVudAgFCyR0MDUyMjU1MzAyAl8xBApuZnRfYW1vdW50CAULJHQwNTIyNTUzMDICXzIED2dhdGV3YXlfcGF5bWVudAgFCyR0MDUyMjU1MzAyAl8zBA5nYXRld2F5X2Ftb3VudAgFCyR0MDUyMjU1MzAyAl80AwkBAiE9AgUKbmZ0X2Ftb3VudAABCQACAQIPTm8gTkZUIGF0dGFjaGVkBAVuZnRJZAMDCQEJaXNEZWZpbmVkAQgFC25mdF9wYXltZW50B2Fzc2V0SWQJAQxpc1NpZ25BcnRORlQBCQEFdmFsdWUBCAULbmZ0X3BheW1lbnQHYXNzZXRJZAcJANgEAQkBBXZhbHVlAQgFC25mdF9wYXltZW50B2Fzc2V0SWQJAAIBAhtPbmx5IFNJR04gQXJ0IE5GVCBhY2NlcHRlZC4ECyR0MDU1ODk1NjcxCQETZ2V0Q3JlYXRvckZyb21ORlRpZAEFBW5mdElkBAdjcmVhdG9yCAULJHQwNTU4OTU2NzECXzEEBWFydElkCAULJHQwNTU4OTU2NzECXzIDCQEBIQEJAQ5pc1ZhbGlkQ3JlYXRvcgEJARBnZXRDcmVhdG9yU3RhdHVzAQUHY3JlYXRvcgkAAgEJAKwCAgITQ3JlYXRvciBzdGF0dXMgaXMgOgkBEGdldENyZWF0b3JTdGF0dXMBBQdjcmVhdG9yAwkBASEBCQEKaXNWYWxpZEFydAEJAQxnZXRBcnRTdGF0dXMCBQVhcnRJZAUHY3JlYXRvcgkAAgEJAKwCAgITQXJ0d29yayBzdGF0dXMgaXMgOgkBDGdldEFydFN0YXR1cwIFBWFydElkBQdjcmVhdG9yBAllcmMyMEFkZHIJARNnZXRDcmVhdG9yRVJDMjBBZGRyAQUHY3JlYXRvcgMJAAACCQCxAgEFCWVyYzIwQWRkcgAACQACAQIsVGhpcyBhcnRpc3QgZGlkbid0IGFsbG93IGNyb3NzY2hhaW4gdHJhbnNmZXIECW5mdFN0YXR1cwkBDmdldFN0cmluZ0J5S2V5AQkBDGtleU5GVHN0YXR1cwEFBW5mdElkAwMJAAACBQluZnRTdGF0dXMFDXN0YXR1c19MT0NLRUQGCQAAAgUJbmZ0U3RhdHVzBQ5zdGF0dXNfUEVORElORwkAAgECEk5GVCBhbHJlYWR5IGxvY2tlZAQPZ2FzRmVlTm9uTWludGVkCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEFD2tleUZlZU5vbk1pbnRlZAQMZ2FzRmVlTWludGVkCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEFDGtleUZlZU1pbnRlZAQIaXNNaW50ZWQDCQAAAgUJbmZ0U3RhdHVzBQ9zdGF0dXNfVU5MT0NLRUQGBwMDCQEBIQEJAQlpc0RlZmluZWQBCAUPZ2F0ZXdheV9wYXltZW50B2Fzc2V0SWQGCQECIT0CCQDYBAEJAQV2YWx1ZQEIBQ9nYXRld2F5X3BheW1lbnQHYXNzZXRJZAUQZmVlQWNjZXB0ZWRBc3NldAkAAgECE1dyb25nIHBheW1lbnQgYXNzZXQDAwUIaXNNaW50ZWQJAGYCBQ5nYXRld2F5X2Ftb3VudAkAZAIFDGdhc0ZlZU1pbnRlZAUYZmVlQWNjZXB0ZWRBbW91bnRGb3JTaWduBwkAAgECHldyb25nIHBheW1lbnQgYW1vdW50IHRvIHVubG9jawMDCQEBIQEFCGlzTWludGVkCQBmAgUOZ2F0ZXdheV9hbW91bnQJAGQCBQ9nYXNGZWVOb25NaW50ZWQFGGZlZUFjY2VwdGVkQW1vdW50Rm9yU2lnbgcJAAIBAidXcm9uZyBwYXltZW50IGFtb3VudCB0byBtaW50IGFuZCB1bmxvY2sJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleU5GVHN0YXR1cwEFBW5mdElkBQ5zdGF0dXNfUEVORElORwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkBDmtleVRyYW5zZmVyTkZUAgUFbmZ0SWQFAmlkAgFfBQ5zdGF0dXNfUEVORElORwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUJcmVjaXBpZW50AgFfBQduZXR3b3JrAgFfBQZjYWxsZXICAV8FAmlkAgFfCAkBBXZhbHVlAQkA7AcBCQEFdmFsdWUBCAULbmZ0X3BheW1lbnQHYXNzZXRJZARuYW1lAgFfCQCkAwEFBGRhdGUCAV8JAKQDAQUGaGVpZ2h0BQNuaWwBaQELY29uZmlybUxvY2sCBW5mdElkCnRyYW5zZmVySWQDCQEBIQEFBmlzSW5pdAkAAgECDmRBcHAgbm90IHJlYWR5AwkBCW93bmVyT25seQEFAWkECW5mdFN0YXR1cwkBDmdldFN0cmluZ0J5S2V5AQkBDGtleU5GVHN0YXR1cwEFBW5mdElkAwkBAiE9AgUJbmZ0U3RhdHVzBQ5zdGF0dXNfUEVORElORwkAAgECD05GVCBub3QgcGVuZGluZwQDdmFsCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIJAKwCAgkBDmtleVRyYW5zZmVyTkZUAgUFbmZ0SWQFCnRyYW5zZmVySWQCAV8FDnN0YXR1c19QRU5ESU5HBAZuZXdLZXkJAKwCAgkArAICCQEOa2V5VHJhbnNmZXJORlQCBQVuZnRJZAUKdHJhbnNmZXJJZAIBXwUNc3RhdHVzX0NMT1NFRAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkBDmtleVRyYW5zZmVyTkZUAgUFbmZ0SWQFCnRyYW5zZmVySWQCAV8FDnN0YXR1c19QRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIFBm5ld0tleQUDdmFsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlORlRzdGF0dXMBBQVuZnRJZAUNc3RhdHVzX0xPQ0tFRAUDbmlsCQACAQILTm90IGFsbG93ZWQBaQEGdW5sb2NrAglyZWNpcGllbnQFbmZ0SWQDCQEBIQEFBmlzSW5pdAkAAgECDmRBcHAgbm90IHJlYWR5AwkBCW93bmVyT25seQEFAWkECW5mdFN0YXR1cwkBDmdldFN0cmluZ0J5S2V5AQkBDGtleU5GVHN0YXR1cwEFBW5mdElkAwkBAiE9AgUJbmZ0U3RhdHVzBQ1zdGF0dXNfTE9DS0VECQACAQIpTkZUIG5vdCBsb2NrZWQsIGZpbmFsaXplIGZpcnN0IGlmIHBlbmRpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleU5GVHN0YXR1cwEFBW5mdElkBQ9zdGF0dXNfVU5MT0NLRUQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFCXJlY2lwaWVudAABCQDZBAEFBW5mdElkBQNuaWwJAAIBAgtOb3QgYWxsb3dlZAFpAQphcHBSdW5uaW5nAgZpc0xpdmUHbWVzc2FnZQMJAQEhAQUGaXNJbml0CQACAQIOZEFwcCBub3QgcmVhZHkDCQEJb3duZXJPbmx5AQUBaQkAzAgCCQEMQm9vbGVhbkVudHJ5AgUOZGFwcFJ1bm5pbmdLZXkFBmlzTGl2ZQkAzAgCCQELU3RyaW5nRW50cnkCBRFtYWludGVuYW5jZU1TR0tleQUHbWVzc2FnZQUDbmlsCQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwFpAQtkZWxldGVFbnRyeQEFZW50cnkDCQEJb3duZXJPbmx5AQUBaQkAzAgCCQELRGVsZXRlRW50cnkBBQVlbnRyeQUDbmlsCQACAQICbm8Akpv/tw==",
"height": 2177976,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: 7XiEN4uKoQpYjibfhBEPAK5stvmfCK6gKo6vJxdKE94g
Next: 6YaVbxpLSqPwhWiE4KsT1NeAREGiniRXsjQsB1Xcdspq
Diff:
Old | New | | Differences |
---|
1 | | - | {-# STDLIB_VERSION 5 #-} |
---|
| 1 | + | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | let a = "config_init" |
---|
| 4 | + | let a = "1.0" |
---|
5 | 5 | | |
---|
6 | | - | let b = "config_admin" |
---|
| 6 | + | let b = "config_init" |
---|
7 | 7 | | |
---|
8 | | - | let c = "config_oracle" |
---|
| 8 | + | let c = "config_admin" |
---|
9 | 9 | | |
---|
10 | | - | let d = "config_artwork_dapp" |
---|
| 10 | + | let d = "config_oracle" |
---|
11 | 11 | | |
---|
12 | | - | let e = "config_users_dapp" |
---|
| 12 | + | let e = "config_artwork_dapp" |
---|
13 | 13 | | |
---|
14 | | - | let f = "config_fee_asset" |
---|
| 14 | + | let f = "config_users_dapp" |
---|
15 | 15 | | |
---|
16 | | - | let g = "config_fee_amount" |
---|
| 16 | + | let g = "config_fee_asset" |
---|
17 | 17 | | |
---|
18 | | - | let h = "conf_dapp_is_running" |
---|
| 18 | + | let h = "config_fee_amount" |
---|
19 | 19 | | |
---|
20 | | - | let i = "conf_maintenance_msg" |
---|
| 20 | + | let i = "conf_dapp_is_running" |
---|
21 | 21 | | |
---|
22 | | - | let j = valueOrElse(getBoolean(this, h), true) |
---|
| 22 | + | let j = "conf_maintenance_msg" |
---|
23 | 23 | | |
---|
24 | | - | let k = valueOrElse(getString(this, i), "") |
---|
| 24 | + | let k = valueOrElse(getBoolean(this, i), true) |
---|
25 | 25 | | |
---|
26 | | - | let l = "LOCKED" |
---|
| 26 | + | let l = valueOrElse(getString(this, j), "") |
---|
27 | 27 | | |
---|
28 | | - | let m = "UNLOCKED" |
---|
| 28 | + | let m = "LOCKED" |
---|
29 | 29 | | |
---|
30 | | - | let n = "PENDING" |
---|
| 30 | + | let n = "UNLOCKED" |
---|
31 | 31 | | |
---|
32 | | - | let o = "CLOSED" |
---|
| 32 | + | let o = "PENDING" |
---|
33 | 33 | | |
---|
34 | | - | let p = "REGISTERED" |
---|
| 34 | + | let p = "CLOSED" |
---|
35 | 35 | | |
---|
36 | | - | let q = "VERIFIED" |
---|
| 36 | + | let q = "REGISTERED" |
---|
37 | 37 | | |
---|
38 | | - | let r = "FLAGGED" |
---|
| 38 | + | let r = "VERIFIED" |
---|
39 | 39 | | |
---|
40 | | - | let s = "ILLEGAL" |
---|
| 40 | + | let s = "FLAGGED" |
---|
41 | 41 | | |
---|
42 | | - | let t = "CHANGE_REQUIRED" |
---|
| 42 | + | let t = "ILLEGAL" |
---|
43 | 43 | | |
---|
44 | | - | let u = ["ETH", "POLYGON"] |
---|
| 44 | + | let u = "CHANGE_REQUIRED" |
---|
45 | 45 | | |
---|
46 | | - | func v (w) = (("nft_" + w) + "_status") |
---|
| 46 | + | let v = ["ETH", "POLYGON"] |
---|
| 47 | + | |
---|
| 48 | + | func w (x) = (("nft_" + x) + "_status") |
---|
47 | 49 | | |
---|
48 | 50 | | |
---|
49 | | - | func x (w,y) = ((("transfer_" + w) + "_") + y) |
---|
| 51 | + | func y (x,z) = ((("transfer_" + x) + "_") + z) |
---|
50 | 52 | | |
---|
51 | 53 | | |
---|
52 | | - | let z = "cost_non_minted" |
---|
| 54 | + | let A = "cost_non_minted" |
---|
53 | 55 | | |
---|
54 | | - | let A = "cost_minted" |
---|
| 56 | + | let B = "cost_minted" |
---|
55 | 57 | | |
---|
56 | | - | func B (C) = valueOrElse(getString(this, C), "") |
---|
| 58 | + | func C (D) = valueOrElse(getString(this, D), "") |
---|
57 | 59 | | |
---|
58 | 60 | | |
---|
59 | | - | func D (C) = valueOrElse(getInteger(this, C), 0) |
---|
| 61 | + | func E (D) = valueOrElse(getInteger(this, D), 0) |
---|
60 | 62 | | |
---|
61 | 63 | | |
---|
62 | | - | func E (C) = valueOrElse(getBoolean(this, C), false) |
---|
| 64 | + | func F (D) = valueOrElse(getBoolean(this, D), false) |
---|
63 | 65 | | |
---|
64 | 66 | | |
---|
65 | | - | let F = value(addressFromString(B(b))) |
---|
| 67 | + | let G = value(addressFromString(C(c))) |
---|
66 | 68 | | |
---|
67 | | - | let G = value(addressFromString(B(d))) |
---|
| 69 | + | let H = value(addressFromString(C(e))) |
---|
68 | 70 | | |
---|
69 | | - | let H = value(addressFromString(B(e))) |
---|
| 71 | + | let I = value(addressFromString(C(f))) |
---|
70 | 72 | | |
---|
71 | | - | let I = value(addressFromString(B(c))) |
---|
| 73 | + | let J = value(addressFromString(C(d))) |
---|
72 | 74 | | |
---|
73 | | - | let J = B(f) |
---|
| 75 | + | let K = C(g) |
---|
74 | 76 | | |
---|
75 | | - | let K = D(g) |
---|
| 77 | + | let L = E(h) |
---|
76 | 78 | | |
---|
77 | | - | func L (C) = valueOrElse(getString(H, C), "") |
---|
| 79 | + | func M (D) = valueOrElse(getString(I, D), "") |
---|
78 | 80 | | |
---|
79 | 81 | | |
---|
80 | | - | func M (C) = valueOrElse(getString(G, C), "") |
---|
| 82 | + | func N (D) = valueOrElse(getString(H, D), "") |
---|
81 | 83 | | |
---|
82 | 84 | | |
---|
83 | | - | func N (C) = valueOrErrorMessage(getInteger(I, C), "Integer undefine or 0 in oracle") |
---|
| 85 | + | func O (D) = valueOrErrorMessage(getInteger(J, D), "Integer undefine or 0 in oracle") |
---|
84 | 86 | | |
---|
85 | 87 | | |
---|
86 | | - | func O (P) = if (if (if ((P.quantity == 1)) |
---|
87 | | - | then (P.decimals == 0) |
---|
| 88 | + | func P (Q) = if (if (if ((Q.quantity == 1)) |
---|
| 89 | + | then (Q.decimals == 0) |
---|
88 | 90 | | else false) |
---|
89 | | - | then (P.reissuable == false) |
---|
| 91 | + | then (Q.reissuable == false) |
---|
90 | 92 | | else false) |
---|
91 | | - | then (P.issuer == G) |
---|
| 93 | + | then (Q.issuer == H) |
---|
92 | 94 | | else false |
---|
93 | 95 | | |
---|
94 | 96 | | |
---|
95 | | - | func Q (R) = { |
---|
96 | | - | let P = value(assetInfo(R)) |
---|
97 | | - | O(P) |
---|
| 97 | + | func R (S) = { |
---|
| 98 | + | let Q = value(assetInfo(S)) |
---|
| 99 | + | P(Q) |
---|
98 | 100 | | } |
---|
99 | 101 | | |
---|
100 | 102 | | |
---|
101 | | - | func S (T) = if ((size(T.payments) == 0)) |
---|
| 103 | + | func T (U) = if ((size(U.payments) == 0)) |
---|
102 | 104 | | then throw("No payment attached") |
---|
103 | 105 | | else { |
---|
104 | | - | let U = value(T.payments[0]) |
---|
105 | | - | let V = value(U.amount) |
---|
106 | | - | let W = value(T.payments[1]) |
---|
107 | | - | let X = value(W.amount) |
---|
108 | | - | $Tuple4(U, V, W, X) |
---|
| 106 | + | let V = value(U.payments[0]) |
---|
| 107 | + | let W = value(V.amount) |
---|
| 108 | + | let X = value(U.payments[1]) |
---|
| 109 | + | let Y = value(X.amount) |
---|
| 110 | + | $Tuple4(V, W, X, Y) |
---|
109 | 111 | | } |
---|
110 | 112 | | |
---|
111 | 113 | | |
---|
112 | | - | let Y = valueOrElse(E(a), false) |
---|
| 114 | + | let Z = valueOrElse(F(b), false) |
---|
113 | 115 | | |
---|
114 | | - | func Z (T) = { |
---|
115 | | - | let aa = toString(T.caller) |
---|
116 | | - | let R = toBase58String(T.transactionId) |
---|
117 | | - | let ab = if (Y) |
---|
118 | | - | then [toString(F), toString(this)] |
---|
| 116 | + | func aa (U) = { |
---|
| 117 | + | let ab = toString(U.caller) |
---|
| 118 | + | let S = toBase58String(U.transactionId) |
---|
| 119 | + | let ac = if (Z) |
---|
| 120 | + | then [toString(G), toString(this)] |
---|
119 | 121 | | else [toString(this)] |
---|
120 | | - | if (containsElement(ab, aa)) |
---|
| 122 | + | if (containsElement(ac, ab)) |
---|
121 | 123 | | then true |
---|
122 | 124 | | else false |
---|
123 | 125 | | } |
---|
124 | 126 | | |
---|
125 | 127 | | |
---|
126 | | - | func ac (T) = if (!(j)) |
---|
127 | | - | then throw(k) |
---|
128 | | - | else $Tuple3(toBase58String(T.transactionId), toBase58String(T.caller.bytes), lastBlock.timestamp) |
---|
| 128 | + | func ad (U) = if (!(k)) |
---|
| 129 | + | then throw(l) |
---|
| 130 | + | else $Tuple3(toBase58String(U.transactionId), toBase58String(U.caller.bytes), lastBlock.timestamp) |
---|
129 | 131 | | |
---|
130 | 132 | | |
---|
131 | | - | func ad (ae) = { |
---|
132 | | - | let af = M(("nft_" + ae)) |
---|
133 | | - | let ag = split(af, "_")[6] |
---|
134 | | - | let ah = split(af, "_")[5] |
---|
135 | | - | $Tuple2(ag, ah) |
---|
| 133 | + | func ae (af) = { |
---|
| 134 | + | let ag = N(("nft_" + af)) |
---|
| 135 | + | let ah = split(ag, "_")[6] |
---|
| 136 | + | let ai = split(ag, "_")[5] |
---|
| 137 | + | $Tuple2(ah, ai) |
---|
136 | 138 | | } |
---|
137 | 139 | | |
---|
138 | 140 | | |
---|
139 | | - | func ai (aj) = { |
---|
140 | | - | let ak = L(("user_ERC20_" + aj)) |
---|
141 | | - | ak |
---|
| 141 | + | func aj (ak) = { |
---|
| 142 | + | let al = M(("user_ERC20_" + ak)) |
---|
| 143 | + | al |
---|
142 | 144 | | } |
---|
143 | 145 | | |
---|
144 | 146 | | |
---|
145 | | - | func al (aj) = { |
---|
146 | | - | let am = L(("user_status_" + aj)) |
---|
147 | | - | am |
---|
| 147 | + | func am (ak) = { |
---|
| 148 | + | let an = M(("user_status_" + ak)) |
---|
| 149 | + | an |
---|
148 | 150 | | } |
---|
149 | 151 | | |
---|
150 | 152 | | |
---|
151 | | - | func an (ah,aj) = { |
---|
152 | | - | let am = M(((("art_flag_" + ah) + "_") + aj)) |
---|
153 | | - | am |
---|
| 153 | + | func ao (ai,ak) = { |
---|
| 154 | + | let an = N(((("art_flag_" + ai) + "_") + ak)) |
---|
| 155 | + | an |
---|
154 | 156 | | } |
---|
155 | 157 | | |
---|
156 | 158 | | |
---|
157 | | - | func ao (am) = if ((am == p)) |
---|
| 159 | + | func ap (an) = if ((an == q)) |
---|
158 | 160 | | then true |
---|
159 | | - | else (am == q) |
---|
| 161 | + | else (an == r) |
---|
160 | 162 | | |
---|
161 | 163 | | |
---|
162 | | - | func ap (am) = if (if ((am != r)) |
---|
163 | | - | then (am != s) |
---|
| 164 | + | func aq (an) = if (if ((an != s)) |
---|
| 165 | + | then (an != t) |
---|
164 | 166 | | else false) |
---|
165 | | - | then (am != t) |
---|
| 167 | + | then (an != u) |
---|
166 | 168 | | else false |
---|
167 | 169 | | |
---|
168 | 170 | | |
---|
169 | | - | @Callable(T) |
---|
170 | | - | func init (aq,I,G,H) = if (Z(T)) |
---|
171 | | - | then [StringEntry(b, aq), StringEntry(c, I), StringEntry(d, G), StringEntry(e, H), BooleanEntry(a, true)] |
---|
| 171 | + | @Callable(U) |
---|
| 172 | + | func init (ar,J,H,I) = if (aa(U)) |
---|
| 173 | + | then [StringEntry(c, ar), StringEntry(d, J), StringEntry(e, H), StringEntry(f, I), BooleanEntry(b, true)] |
---|
172 | 174 | | else throw("Not allowed") |
---|
173 | 175 | | |
---|
174 | 176 | | |
---|
175 | 177 | | |
---|
176 | | - | @Callable(T) |
---|
177 | | - | func setFee (ar,as) = { |
---|
178 | | - | let P = assetInfo(fromBase58String(ar)) |
---|
179 | | - | let at = value(P).decimals |
---|
180 | | - | let au = pow(as, 0, 10, 1, at, HALFUP) |
---|
181 | | - | if (Z(T)) |
---|
182 | | - | then [StringEntry(f, ar), IntegerEntry(g, au)] |
---|
| 178 | + | @Callable(U) |
---|
| 179 | + | func setFee (as,at) = { |
---|
| 180 | + | let Q = assetInfo(fromBase58String(as)) |
---|
| 181 | + | let au = value(Q).decimals |
---|
| 182 | + | let av = pow(at, 0, 10, 1, au, HALFUP) |
---|
| 183 | + | if (aa(U)) |
---|
| 184 | + | then [StringEntry(g, as), IntegerEntry(h, av)] |
---|
183 | 185 | | else throw("Not allowed") |
---|
184 | 186 | | } |
---|
185 | 187 | | |
---|
186 | 188 | | |
---|
187 | 189 | | |
---|
188 | | - | @Callable(T) |
---|
189 | | - | func lock (av,aw) = if (!(Y)) |
---|
| 190 | + | @Callable(U) |
---|
| 191 | + | func lock (aw,ax) = if (!(Z)) |
---|
190 | 192 | | then throw("dApp not ready") |
---|
191 | | - | else if (!(containsElement(u, aw))) |
---|
| 193 | + | else if (!(containsElement(v, ax))) |
---|
192 | 194 | | then throw("Network not supported") |
---|
193 | 195 | | else { |
---|
194 | | - | let ax = ac(T) |
---|
195 | | - | let R = ax._1 |
---|
196 | | - | let aa = ax._2 |
---|
197 | | - | let ay = ax._3 |
---|
198 | | - | let az = S(T) |
---|
199 | | - | let U = az._1 |
---|
200 | | - | let V = az._2 |
---|
201 | | - | let W = az._3 |
---|
202 | | - | let X = az._4 |
---|
203 | | - | if ((V != 1)) |
---|
| 196 | + | let ay = ad(U) |
---|
| 197 | + | let S = ay._1 |
---|
| 198 | + | let ab = ay._2 |
---|
| 199 | + | let az = ay._3 |
---|
| 200 | + | let aA = T(U) |
---|
| 201 | + | let V = aA._1 |
---|
| 202 | + | let W = aA._2 |
---|
| 203 | + | let X = aA._3 |
---|
| 204 | + | let Y = aA._4 |
---|
| 205 | + | if ((W != 1)) |
---|
204 | 206 | | then throw("No NFT attached") |
---|
205 | 207 | | else { |
---|
206 | | - | let w = if (if (isDefined(U.assetId)) |
---|
207 | | - | then Q(value(U.assetId)) |
---|
| 208 | + | let x = if (if (isDefined(V.assetId)) |
---|
| 209 | + | then R(value(V.assetId)) |
---|
208 | 210 | | else false) |
---|
209 | | - | then toBase58String(value(U.assetId)) |
---|
| 211 | + | then toBase58String(value(V.assetId)) |
---|
210 | 212 | | else throw("Only SIGN Art NFT accepted.") |
---|
211 | | - | let aA = ad(w) |
---|
212 | | - | let ag = aA._1 |
---|
213 | | - | let ah = aA._2 |
---|
214 | | - | if (!(ao(al(ag)))) |
---|
215 | | - | then throw(("Creator status is :" + al(ag))) |
---|
216 | | - | else if (!(ap(an(ah, ag)))) |
---|
217 | | - | then throw(("Artwork status is :" + an(ah, ag))) |
---|
| 213 | + | let aB = ae(x) |
---|
| 214 | + | let ah = aB._1 |
---|
| 215 | + | let ai = aB._2 |
---|
| 216 | + | if (!(ap(am(ah)))) |
---|
| 217 | + | then throw(("Creator status is :" + am(ah))) |
---|
| 218 | + | else if (!(aq(ao(ai, ah)))) |
---|
| 219 | + | then throw(("Artwork status is :" + ao(ai, ah))) |
---|
218 | 220 | | else { |
---|
219 | | - | let ak = ai(ag) |
---|
220 | | - | if ((size(ak) == 0)) |
---|
| 221 | + | let al = aj(ah) |
---|
| 222 | + | if ((size(al) == 0)) |
---|
221 | 223 | | then throw("This artist didn't allow crosschain transfer") |
---|
222 | 224 | | else { |
---|
223 | | - | let aB = B(v(w)) |
---|
224 | | - | if (if ((aB == l)) |
---|
| 225 | + | let aC = C(w(x)) |
---|
| 226 | + | if (if ((aC == m)) |
---|
225 | 227 | | then true |
---|
226 | | - | else (aB == n)) |
---|
| 228 | + | else (aC == o)) |
---|
227 | 229 | | then throw("NFT already locked") |
---|
228 | 230 | | else { |
---|
229 | | - | let aC = N(z) |
---|
230 | | - | let aD = N(A) |
---|
231 | | - | let aE = if ((aB == m)) |
---|
| 231 | + | let aD = O(A) |
---|
| 232 | + | let aE = O(B) |
---|
| 233 | + | let aF = if ((aC == n)) |
---|
232 | 234 | | then true |
---|
233 | 235 | | else false |
---|
234 | | - | if (if (!(isDefined(W.assetId))) |
---|
| 236 | + | if (if (!(isDefined(X.assetId))) |
---|
235 | 237 | | then true |
---|
236 | | - | else (toBase58String(value(W.assetId)) != J)) |
---|
| 238 | + | else (toBase58String(value(X.assetId)) != K)) |
---|
237 | 239 | | then throw("Wrong payment asset") |
---|
238 | | - | else if (if (aE) |
---|
239 | | - | then (X > (aD + K)) |
---|
| 240 | + | else if (if (aF) |
---|
| 241 | + | then (Y > (aE + L)) |
---|
240 | 242 | | else false) |
---|
241 | 243 | | then throw("Wrong payment amount to unlock") |
---|
242 | | - | else if (if (!(aE)) |
---|
243 | | - | then (X > (aC + K)) |
---|
| 244 | + | else if (if (!(aF)) |
---|
| 245 | + | then (Y > (aD + L)) |
---|
244 | 246 | | else false) |
---|
245 | 247 | | then throw("Wrong payment amount to mint and unlock") |
---|
246 | | - | else [StringEntry(v(w), n), StringEntry(((x(w, R) + "_") + n), ((((((((((((av + "_") + aw) + "_") + aa) + "_") + R) + "_") + value(assetInfo(value(U.assetId))).name) + "_") + toString(ay)) + "_") + toString(height)))] |
---|
| 248 | + | else [StringEntry(w(x), o), StringEntry(((y(x, S) + "_") + o), ((((((((((((aw + "_") + ax) + "_") + ab) + "_") + S) + "_") + value(assetInfo(value(V.assetId))).name) + "_") + toString(az)) + "_") + toString(height)))] |
---|
247 | 249 | | } |
---|
248 | 250 | | } |
---|
249 | 251 | | } |
---|
|
252 | 254 | | |
---|
253 | 255 | | |
---|
254 | 256 | | |
---|
255 | | - | @Callable(T) |
---|
256 | | - | func confirmLock (w,aF) = if (!(Y)) |
---|
| 257 | + | @Callable(U) |
---|
| 258 | + | func confirmLock (x,aG) = if (!(Z)) |
---|
257 | 259 | | then throw("dApp not ready") |
---|
258 | | - | else if (Z(T)) |
---|
| 260 | + | else if (aa(U)) |
---|
259 | 261 | | then { |
---|
260 | | - | let aB = B(v(w)) |
---|
261 | | - | if ((aB != n)) |
---|
| 262 | + | let aC = C(w(x)) |
---|
| 263 | + | if ((aC != o)) |
---|
262 | 264 | | then throw("NFT not pending") |
---|
263 | 265 | | else { |
---|
264 | | - | let aG = B(((x(w, aF) + "_") + n)) |
---|
265 | | - | let aH = ((x(w, aF) + "_") + o) |
---|
266 | | - | [DeleteEntry(((x(w, aF) + "_") + n)), StringEntry(aH, aG), StringEntry(v(w), l)] |
---|
| 266 | + | let aH = C(((y(x, aG) + "_") + o)) |
---|
| 267 | + | let aI = ((y(x, aG) + "_") + p) |
---|
| 268 | + | [DeleteEntry(((y(x, aG) + "_") + o)), StringEntry(aI, aH), StringEntry(w(x), m)] |
---|
267 | 269 | | } |
---|
268 | 270 | | } |
---|
269 | 271 | | else throw("Not allowed") |
---|
270 | 272 | | |
---|
271 | 273 | | |
---|
272 | 274 | | |
---|
273 | | - | @Callable(T) |
---|
274 | | - | func unlock (av,w) = if (!(Y)) |
---|
| 275 | + | @Callable(U) |
---|
| 276 | + | func unlock (aw,x) = if (!(Z)) |
---|
275 | 277 | | then throw("dApp not ready") |
---|
276 | | - | else if (Z(T)) |
---|
| 278 | + | else if (aa(U)) |
---|
277 | 279 | | then { |
---|
278 | | - | let aB = B(v(w)) |
---|
279 | | - | if ((aB != l)) |
---|
| 280 | + | let aC = C(w(x)) |
---|
| 281 | + | if ((aC != m)) |
---|
280 | 282 | | then throw("NFT not locked, finalize first if pending") |
---|
281 | | - | else [StringEntry(v(w), m), ScriptTransfer(Address(fromBase58String(av)), 1, fromBase58String(w))] |
---|
| 283 | + | else [StringEntry(w(x), n), ScriptTransfer(Address(fromBase58String(aw)), 1, fromBase58String(x))] |
---|
282 | 284 | | } |
---|
283 | 285 | | else throw("Not allowed") |
---|
284 | 286 | | |
---|
285 | 287 | | |
---|
286 | 288 | | |
---|
287 | | - | @Callable(T) |
---|
288 | | - | func appRunning (aI,aJ) = if (!(Y)) |
---|
| 289 | + | @Callable(U) |
---|
| 290 | + | func appRunning (aJ,aK) = if (!(Z)) |
---|
289 | 291 | | then throw("dApp not ready") |
---|
290 | | - | else if (Z(T)) |
---|
291 | | - | then [BooleanEntry(h, aI), StringEntry(i, aJ)] |
---|
| 292 | + | else if (aa(U)) |
---|
| 293 | + | then [BooleanEntry(i, aJ), StringEntry(j, aK)] |
---|
292 | 294 | | else throw("You are not allowed to change this") |
---|
293 | 295 | | |
---|
294 | 296 | | |
---|
295 | 297 | | |
---|
296 | | - | @Callable(T) |
---|
297 | | - | func deleteEntry (aK) = if (Z(T)) |
---|
298 | | - | then [DeleteEntry(aK)] |
---|
| 298 | + | @Callable(U) |
---|
| 299 | + | func deleteEntry (aL) = if (aa(U)) |
---|
| 300 | + | then [DeleteEntry(aL)] |
---|
299 | 301 | | else throw("no") |
---|
300 | 302 | | |
---|
301 | 303 | | |
---|
Full:
Old | New | | Differences |
---|
1 | | - | {-# STDLIB_VERSION 5 #-} |
---|
| 1 | + | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | | - | let a = "config_init" |
---|
| 4 | + | let a = "1.0" |
---|
5 | 5 | | |
---|
6 | | - | let b = "config_admin" |
---|
| 6 | + | let b = "config_init" |
---|
7 | 7 | | |
---|
8 | | - | let c = "config_oracle" |
---|
| 8 | + | let c = "config_admin" |
---|
9 | 9 | | |
---|
10 | | - | let d = "config_artwork_dapp" |
---|
| 10 | + | let d = "config_oracle" |
---|
11 | 11 | | |
---|
12 | | - | let e = "config_users_dapp" |
---|
| 12 | + | let e = "config_artwork_dapp" |
---|
13 | 13 | | |
---|
14 | | - | let f = "config_fee_asset" |
---|
| 14 | + | let f = "config_users_dapp" |
---|
15 | 15 | | |
---|
16 | | - | let g = "config_fee_amount" |
---|
| 16 | + | let g = "config_fee_asset" |
---|
17 | 17 | | |
---|
18 | | - | let h = "conf_dapp_is_running" |
---|
| 18 | + | let h = "config_fee_amount" |
---|
19 | 19 | | |
---|
20 | | - | let i = "conf_maintenance_msg" |
---|
| 20 | + | let i = "conf_dapp_is_running" |
---|
21 | 21 | | |
---|
22 | | - | let j = valueOrElse(getBoolean(this, h), true) |
---|
| 22 | + | let j = "conf_maintenance_msg" |
---|
23 | 23 | | |
---|
24 | | - | let k = valueOrElse(getString(this, i), "") |
---|
| 24 | + | let k = valueOrElse(getBoolean(this, i), true) |
---|
25 | 25 | | |
---|
26 | | - | let l = "LOCKED" |
---|
| 26 | + | let l = valueOrElse(getString(this, j), "") |
---|
27 | 27 | | |
---|
28 | | - | let m = "UNLOCKED" |
---|
| 28 | + | let m = "LOCKED" |
---|
29 | 29 | | |
---|
30 | | - | let n = "PENDING" |
---|
| 30 | + | let n = "UNLOCKED" |
---|
31 | 31 | | |
---|
32 | | - | let o = "CLOSED" |
---|
| 32 | + | let o = "PENDING" |
---|
33 | 33 | | |
---|
34 | | - | let p = "REGISTERED" |
---|
| 34 | + | let p = "CLOSED" |
---|
35 | 35 | | |
---|
36 | | - | let q = "VERIFIED" |
---|
| 36 | + | let q = "REGISTERED" |
---|
37 | 37 | | |
---|
38 | | - | let r = "FLAGGED" |
---|
| 38 | + | let r = "VERIFIED" |
---|
39 | 39 | | |
---|
40 | | - | let s = "ILLEGAL" |
---|
| 40 | + | let s = "FLAGGED" |
---|
41 | 41 | | |
---|
42 | | - | let t = "CHANGE_REQUIRED" |
---|
| 42 | + | let t = "ILLEGAL" |
---|
43 | 43 | | |
---|
44 | | - | let u = ["ETH", "POLYGON"] |
---|
| 44 | + | let u = "CHANGE_REQUIRED" |
---|
45 | 45 | | |
---|
46 | | - | func v (w) = (("nft_" + w) + "_status") |
---|
| 46 | + | let v = ["ETH", "POLYGON"] |
---|
| 47 | + | |
---|
| 48 | + | func w (x) = (("nft_" + x) + "_status") |
---|
47 | 49 | | |
---|
48 | 50 | | |
---|
49 | | - | func x (w,y) = ((("transfer_" + w) + "_") + y) |
---|
| 51 | + | func y (x,z) = ((("transfer_" + x) + "_") + z) |
---|
50 | 52 | | |
---|
51 | 53 | | |
---|
52 | | - | let z = "cost_non_minted" |
---|
| 54 | + | let A = "cost_non_minted" |
---|
53 | 55 | | |
---|
54 | | - | let A = "cost_minted" |
---|
| 56 | + | let B = "cost_minted" |
---|
55 | 57 | | |
---|
56 | | - | func B (C) = valueOrElse(getString(this, C), "") |
---|
| 58 | + | func C (D) = valueOrElse(getString(this, D), "") |
---|
57 | 59 | | |
---|
58 | 60 | | |
---|
59 | | - | func D (C) = valueOrElse(getInteger(this, C), 0) |
---|
| 61 | + | func E (D) = valueOrElse(getInteger(this, D), 0) |
---|
60 | 62 | | |
---|
61 | 63 | | |
---|
62 | | - | func E (C) = valueOrElse(getBoolean(this, C), false) |
---|
| 64 | + | func F (D) = valueOrElse(getBoolean(this, D), false) |
---|
63 | 65 | | |
---|
64 | 66 | | |
---|
65 | | - | let F = value(addressFromString(B(b))) |
---|
| 67 | + | let G = value(addressFromString(C(c))) |
---|
66 | 68 | | |
---|
67 | | - | let G = value(addressFromString(B(d))) |
---|
| 69 | + | let H = value(addressFromString(C(e))) |
---|
68 | 70 | | |
---|
69 | | - | let H = value(addressFromString(B(e))) |
---|
| 71 | + | let I = value(addressFromString(C(f))) |
---|
70 | 72 | | |
---|
71 | | - | let I = value(addressFromString(B(c))) |
---|
| 73 | + | let J = value(addressFromString(C(d))) |
---|
72 | 74 | | |
---|
73 | | - | let J = B(f) |
---|
| 75 | + | let K = C(g) |
---|
74 | 76 | | |
---|
75 | | - | let K = D(g) |
---|
| 77 | + | let L = E(h) |
---|
76 | 78 | | |
---|
77 | | - | func L (C) = valueOrElse(getString(H, C), "") |
---|
| 79 | + | func M (D) = valueOrElse(getString(I, D), "") |
---|
78 | 80 | | |
---|
79 | 81 | | |
---|
80 | | - | func M (C) = valueOrElse(getString(G, C), "") |
---|
| 82 | + | func N (D) = valueOrElse(getString(H, D), "") |
---|
81 | 83 | | |
---|
82 | 84 | | |
---|
83 | | - | func N (C) = valueOrErrorMessage(getInteger(I, C), "Integer undefine or 0 in oracle") |
---|
| 85 | + | func O (D) = valueOrErrorMessage(getInteger(J, D), "Integer undefine or 0 in oracle") |
---|
84 | 86 | | |
---|
85 | 87 | | |
---|
86 | | - | func O (P) = if (if (if ((P.quantity == 1)) |
---|
87 | | - | then (P.decimals == 0) |
---|
| 88 | + | func P (Q) = if (if (if ((Q.quantity == 1)) |
---|
| 89 | + | then (Q.decimals == 0) |
---|
88 | 90 | | else false) |
---|
89 | | - | then (P.reissuable == false) |
---|
| 91 | + | then (Q.reissuable == false) |
---|
90 | 92 | | else false) |
---|
91 | | - | then (P.issuer == G) |
---|
| 93 | + | then (Q.issuer == H) |
---|
92 | 94 | | else false |
---|
93 | 95 | | |
---|
94 | 96 | | |
---|
95 | | - | func Q (R) = { |
---|
96 | | - | let P = value(assetInfo(R)) |
---|
97 | | - | O(P) |
---|
| 97 | + | func R (S) = { |
---|
| 98 | + | let Q = value(assetInfo(S)) |
---|
| 99 | + | P(Q) |
---|
98 | 100 | | } |
---|
99 | 101 | | |
---|
100 | 102 | | |
---|
101 | | - | func S (T) = if ((size(T.payments) == 0)) |
---|
| 103 | + | func T (U) = if ((size(U.payments) == 0)) |
---|
102 | 104 | | then throw("No payment attached") |
---|
103 | 105 | | else { |
---|
104 | | - | let U = value(T.payments[0]) |
---|
105 | | - | let V = value(U.amount) |
---|
106 | | - | let W = value(T.payments[1]) |
---|
107 | | - | let X = value(W.amount) |
---|
108 | | - | $Tuple4(U, V, W, X) |
---|
| 106 | + | let V = value(U.payments[0]) |
---|
| 107 | + | let W = value(V.amount) |
---|
| 108 | + | let X = value(U.payments[1]) |
---|
| 109 | + | let Y = value(X.amount) |
---|
| 110 | + | $Tuple4(V, W, X, Y) |
---|
109 | 111 | | } |
---|
110 | 112 | | |
---|
111 | 113 | | |
---|
112 | | - | let Y = valueOrElse(E(a), false) |
---|
| 114 | + | let Z = valueOrElse(F(b), false) |
---|
113 | 115 | | |
---|
114 | | - | func Z (T) = { |
---|
115 | | - | let aa = toString(T.caller) |
---|
116 | | - | let R = toBase58String(T.transactionId) |
---|
117 | | - | let ab = if (Y) |
---|
118 | | - | then [toString(F), toString(this)] |
---|
| 116 | + | func aa (U) = { |
---|
| 117 | + | let ab = toString(U.caller) |
---|
| 118 | + | let S = toBase58String(U.transactionId) |
---|
| 119 | + | let ac = if (Z) |
---|
| 120 | + | then [toString(G), toString(this)] |
---|
119 | 121 | | else [toString(this)] |
---|
120 | | - | if (containsElement(ab, aa)) |
---|
| 122 | + | if (containsElement(ac, ab)) |
---|
121 | 123 | | then true |
---|
122 | 124 | | else false |
---|
123 | 125 | | } |
---|
124 | 126 | | |
---|
125 | 127 | | |
---|
126 | | - | func ac (T) = if (!(j)) |
---|
127 | | - | then throw(k) |
---|
128 | | - | else $Tuple3(toBase58String(T.transactionId), toBase58String(T.caller.bytes), lastBlock.timestamp) |
---|
| 128 | + | func ad (U) = if (!(k)) |
---|
| 129 | + | then throw(l) |
---|
| 130 | + | else $Tuple3(toBase58String(U.transactionId), toBase58String(U.caller.bytes), lastBlock.timestamp) |
---|
129 | 131 | | |
---|
130 | 132 | | |
---|
131 | | - | func ad (ae) = { |
---|
132 | | - | let af = M(("nft_" + ae)) |
---|
133 | | - | let ag = split(af, "_")[6] |
---|
134 | | - | let ah = split(af, "_")[5] |
---|
135 | | - | $Tuple2(ag, ah) |
---|
| 133 | + | func ae (af) = { |
---|
| 134 | + | let ag = N(("nft_" + af)) |
---|
| 135 | + | let ah = split(ag, "_")[6] |
---|
| 136 | + | let ai = split(ag, "_")[5] |
---|
| 137 | + | $Tuple2(ah, ai) |
---|
136 | 138 | | } |
---|
137 | 139 | | |
---|
138 | 140 | | |
---|
139 | | - | func ai (aj) = { |
---|
140 | | - | let ak = L(("user_ERC20_" + aj)) |
---|
141 | | - | ak |
---|
| 141 | + | func aj (ak) = { |
---|
| 142 | + | let al = M(("user_ERC20_" + ak)) |
---|
| 143 | + | al |
---|
142 | 144 | | } |
---|
143 | 145 | | |
---|
144 | 146 | | |
---|
145 | | - | func al (aj) = { |
---|
146 | | - | let am = L(("user_status_" + aj)) |
---|
147 | | - | am |
---|
| 147 | + | func am (ak) = { |
---|
| 148 | + | let an = M(("user_status_" + ak)) |
---|
| 149 | + | an |
---|
148 | 150 | | } |
---|
149 | 151 | | |
---|
150 | 152 | | |
---|
151 | | - | func an (ah,aj) = { |
---|
152 | | - | let am = M(((("art_flag_" + ah) + "_") + aj)) |
---|
153 | | - | am |
---|
| 153 | + | func ao (ai,ak) = { |
---|
| 154 | + | let an = N(((("art_flag_" + ai) + "_") + ak)) |
---|
| 155 | + | an |
---|
154 | 156 | | } |
---|
155 | 157 | | |
---|
156 | 158 | | |
---|
157 | | - | func ao (am) = if ((am == p)) |
---|
| 159 | + | func ap (an) = if ((an == q)) |
---|
158 | 160 | | then true |
---|
159 | | - | else (am == q) |
---|
| 161 | + | else (an == r) |
---|
160 | 162 | | |
---|
161 | 163 | | |
---|
162 | | - | func ap (am) = if (if ((am != r)) |
---|
163 | | - | then (am != s) |
---|
| 164 | + | func aq (an) = if (if ((an != s)) |
---|
| 165 | + | then (an != t) |
---|
164 | 166 | | else false) |
---|
165 | | - | then (am != t) |
---|
| 167 | + | then (an != u) |
---|
166 | 168 | | else false |
---|
167 | 169 | | |
---|
168 | 170 | | |
---|
169 | | - | @Callable(T) |
---|
170 | | - | func init (aq,I,G,H) = if (Z(T)) |
---|
171 | | - | then [StringEntry(b, aq), StringEntry(c, I), StringEntry(d, G), StringEntry(e, H), BooleanEntry(a, true)] |
---|
| 171 | + | @Callable(U) |
---|
| 172 | + | func init (ar,J,H,I) = if (aa(U)) |
---|
| 173 | + | then [StringEntry(c, ar), StringEntry(d, J), StringEntry(e, H), StringEntry(f, I), BooleanEntry(b, true)] |
---|
172 | 174 | | else throw("Not allowed") |
---|
173 | 175 | | |
---|
174 | 176 | | |
---|
175 | 177 | | |
---|
176 | | - | @Callable(T) |
---|
177 | | - | func setFee (ar,as) = { |
---|
178 | | - | let P = assetInfo(fromBase58String(ar)) |
---|
179 | | - | let at = value(P).decimals |
---|
180 | | - | let au = pow(as, 0, 10, 1, at, HALFUP) |
---|
181 | | - | if (Z(T)) |
---|
182 | | - | then [StringEntry(f, ar), IntegerEntry(g, au)] |
---|
| 178 | + | @Callable(U) |
---|
| 179 | + | func setFee (as,at) = { |
---|
| 180 | + | let Q = assetInfo(fromBase58String(as)) |
---|
| 181 | + | let au = value(Q).decimals |
---|
| 182 | + | let av = pow(at, 0, 10, 1, au, HALFUP) |
---|
| 183 | + | if (aa(U)) |
---|
| 184 | + | then [StringEntry(g, as), IntegerEntry(h, av)] |
---|
183 | 185 | | else throw("Not allowed") |
---|
184 | 186 | | } |
---|
185 | 187 | | |
---|
186 | 188 | | |
---|
187 | 189 | | |
---|
188 | | - | @Callable(T) |
---|
189 | | - | func lock (av,aw) = if (!(Y)) |
---|
| 190 | + | @Callable(U) |
---|
| 191 | + | func lock (aw,ax) = if (!(Z)) |
---|
190 | 192 | | then throw("dApp not ready") |
---|
191 | | - | else if (!(containsElement(u, aw))) |
---|
| 193 | + | else if (!(containsElement(v, ax))) |
---|
192 | 194 | | then throw("Network not supported") |
---|
193 | 195 | | else { |
---|
194 | | - | let ax = ac(T) |
---|
195 | | - | let R = ax._1 |
---|
196 | | - | let aa = ax._2 |
---|
197 | | - | let ay = ax._3 |
---|
198 | | - | let az = S(T) |
---|
199 | | - | let U = az._1 |
---|
200 | | - | let V = az._2 |
---|
201 | | - | let W = az._3 |
---|
202 | | - | let X = az._4 |
---|
203 | | - | if ((V != 1)) |
---|
| 196 | + | let ay = ad(U) |
---|
| 197 | + | let S = ay._1 |
---|
| 198 | + | let ab = ay._2 |
---|
| 199 | + | let az = ay._3 |
---|
| 200 | + | let aA = T(U) |
---|
| 201 | + | let V = aA._1 |
---|
| 202 | + | let W = aA._2 |
---|
| 203 | + | let X = aA._3 |
---|
| 204 | + | let Y = aA._4 |
---|
| 205 | + | if ((W != 1)) |
---|
204 | 206 | | then throw("No NFT attached") |
---|
205 | 207 | | else { |
---|
206 | | - | let w = if (if (isDefined(U.assetId)) |
---|
207 | | - | then Q(value(U.assetId)) |
---|
| 208 | + | let x = if (if (isDefined(V.assetId)) |
---|
| 209 | + | then R(value(V.assetId)) |
---|
208 | 210 | | else false) |
---|
209 | | - | then toBase58String(value(U.assetId)) |
---|
| 211 | + | then toBase58String(value(V.assetId)) |
---|
210 | 212 | | else throw("Only SIGN Art NFT accepted.") |
---|
211 | | - | let aA = ad(w) |
---|
212 | | - | let ag = aA._1 |
---|
213 | | - | let ah = aA._2 |
---|
214 | | - | if (!(ao(al(ag)))) |
---|
215 | | - | then throw(("Creator status is :" + al(ag))) |
---|
216 | | - | else if (!(ap(an(ah, ag)))) |
---|
217 | | - | then throw(("Artwork status is :" + an(ah, ag))) |
---|
| 213 | + | let aB = ae(x) |
---|
| 214 | + | let ah = aB._1 |
---|
| 215 | + | let ai = aB._2 |
---|
| 216 | + | if (!(ap(am(ah)))) |
---|
| 217 | + | then throw(("Creator status is :" + am(ah))) |
---|
| 218 | + | else if (!(aq(ao(ai, ah)))) |
---|
| 219 | + | then throw(("Artwork status is :" + ao(ai, ah))) |
---|
218 | 220 | | else { |
---|
219 | | - | let ak = ai(ag) |
---|
220 | | - | if ((size(ak) == 0)) |
---|
| 221 | + | let al = aj(ah) |
---|
| 222 | + | if ((size(al) == 0)) |
---|
221 | 223 | | then throw("This artist didn't allow crosschain transfer") |
---|
222 | 224 | | else { |
---|
223 | | - | let aB = B(v(w)) |
---|
224 | | - | if (if ((aB == l)) |
---|
| 225 | + | let aC = C(w(x)) |
---|
| 226 | + | if (if ((aC == m)) |
---|
225 | 227 | | then true |
---|
226 | | - | else (aB == n)) |
---|
| 228 | + | else (aC == o)) |
---|
227 | 229 | | then throw("NFT already locked") |
---|
228 | 230 | | else { |
---|
229 | | - | let aC = N(z) |
---|
230 | | - | let aD = N(A) |
---|
231 | | - | let aE = if ((aB == m)) |
---|
| 231 | + | let aD = O(A) |
---|
| 232 | + | let aE = O(B) |
---|
| 233 | + | let aF = if ((aC == n)) |
---|
232 | 234 | | then true |
---|
233 | 235 | | else false |
---|
234 | | - | if (if (!(isDefined(W.assetId))) |
---|
| 236 | + | if (if (!(isDefined(X.assetId))) |
---|
235 | 237 | | then true |
---|
236 | | - | else (toBase58String(value(W.assetId)) != J)) |
---|
| 238 | + | else (toBase58String(value(X.assetId)) != K)) |
---|
237 | 239 | | then throw("Wrong payment asset") |
---|
238 | | - | else if (if (aE) |
---|
239 | | - | then (X > (aD + K)) |
---|
| 240 | + | else if (if (aF) |
---|
| 241 | + | then (Y > (aE + L)) |
---|
240 | 242 | | else false) |
---|
241 | 243 | | then throw("Wrong payment amount to unlock") |
---|
242 | | - | else if (if (!(aE)) |
---|
243 | | - | then (X > (aC + K)) |
---|
| 244 | + | else if (if (!(aF)) |
---|
| 245 | + | then (Y > (aD + L)) |
---|
244 | 246 | | else false) |
---|
245 | 247 | | then throw("Wrong payment amount to mint and unlock") |
---|
246 | | - | else [StringEntry(v(w), n), StringEntry(((x(w, R) + "_") + n), ((((((((((((av + "_") + aw) + "_") + aa) + "_") + R) + "_") + value(assetInfo(value(U.assetId))).name) + "_") + toString(ay)) + "_") + toString(height)))] |
---|
| 248 | + | else [StringEntry(w(x), o), StringEntry(((y(x, S) + "_") + o), ((((((((((((aw + "_") + ax) + "_") + ab) + "_") + S) + "_") + value(assetInfo(value(V.assetId))).name) + "_") + toString(az)) + "_") + toString(height)))] |
---|
247 | 249 | | } |
---|
248 | 250 | | } |
---|
249 | 251 | | } |
---|
250 | 252 | | } |
---|
251 | 253 | | } |
---|
252 | 254 | | |
---|
253 | 255 | | |
---|
254 | 256 | | |
---|
255 | | - | @Callable(T) |
---|
256 | | - | func confirmLock (w,aF) = if (!(Y)) |
---|
| 257 | + | @Callable(U) |
---|
| 258 | + | func confirmLock (x,aG) = if (!(Z)) |
---|
257 | 259 | | then throw("dApp not ready") |
---|
258 | | - | else if (Z(T)) |
---|
| 260 | + | else if (aa(U)) |
---|
259 | 261 | | then { |
---|
260 | | - | let aB = B(v(w)) |
---|
261 | | - | if ((aB != n)) |
---|
| 262 | + | let aC = C(w(x)) |
---|
| 263 | + | if ((aC != o)) |
---|
262 | 264 | | then throw("NFT not pending") |
---|
263 | 265 | | else { |
---|
264 | | - | let aG = B(((x(w, aF) + "_") + n)) |
---|
265 | | - | let aH = ((x(w, aF) + "_") + o) |
---|
266 | | - | [DeleteEntry(((x(w, aF) + "_") + n)), StringEntry(aH, aG), StringEntry(v(w), l)] |
---|
| 266 | + | let aH = C(((y(x, aG) + "_") + o)) |
---|
| 267 | + | let aI = ((y(x, aG) + "_") + p) |
---|
| 268 | + | [DeleteEntry(((y(x, aG) + "_") + o)), StringEntry(aI, aH), StringEntry(w(x), m)] |
---|
267 | 269 | | } |
---|
268 | 270 | | } |
---|
269 | 271 | | else throw("Not allowed") |
---|
270 | 272 | | |
---|
271 | 273 | | |
---|
272 | 274 | | |
---|
273 | | - | @Callable(T) |
---|
274 | | - | func unlock (av,w) = if (!(Y)) |
---|
| 275 | + | @Callable(U) |
---|
| 276 | + | func unlock (aw,x) = if (!(Z)) |
---|
275 | 277 | | then throw("dApp not ready") |
---|
276 | | - | else if (Z(T)) |
---|
| 278 | + | else if (aa(U)) |
---|
277 | 279 | | then { |
---|
278 | | - | let aB = B(v(w)) |
---|
279 | | - | if ((aB != l)) |
---|
| 280 | + | let aC = C(w(x)) |
---|
| 281 | + | if ((aC != m)) |
---|
280 | 282 | | then throw("NFT not locked, finalize first if pending") |
---|
281 | | - | else [StringEntry(v(w), m), ScriptTransfer(Address(fromBase58String(av)), 1, fromBase58String(w))] |
---|
| 283 | + | else [StringEntry(w(x), n), ScriptTransfer(Address(fromBase58String(aw)), 1, fromBase58String(x))] |
---|
282 | 284 | | } |
---|
283 | 285 | | else throw("Not allowed") |
---|
284 | 286 | | |
---|
285 | 287 | | |
---|
286 | 288 | | |
---|
287 | | - | @Callable(T) |
---|
288 | | - | func appRunning (aI,aJ) = if (!(Y)) |
---|
| 289 | + | @Callable(U) |
---|
| 290 | + | func appRunning (aJ,aK) = if (!(Z)) |
---|
289 | 291 | | then throw("dApp not ready") |
---|
290 | | - | else if (Z(T)) |
---|
291 | | - | then [BooleanEntry(h, aI), StringEntry(i, aJ)] |
---|
| 292 | + | else if (aa(U)) |
---|
| 293 | + | then [BooleanEntry(i, aJ), StringEntry(j, aK)] |
---|
292 | 294 | | else throw("You are not allowed to change this") |
---|
293 | 295 | | |
---|
294 | 296 | | |
---|
295 | 297 | | |
---|
296 | | - | @Callable(T) |
---|
297 | | - | func deleteEntry (aK) = if (Z(T)) |
---|
298 | | - | then [DeleteEntry(aK)] |
---|
| 298 | + | @Callable(U) |
---|
| 299 | + | func deleteEntry (aL) = if (aa(U)) |
---|
| 300 | + | then [DeleteEntry(aL)] |
---|
299 | 301 | | else throw("no") |
---|
300 | 302 | | |
---|
301 | 303 | | |
---|