tx · HJtNYUjptmGXrxw29UivPMWBYiRnLopStemrBVbA6f7y

3MxZp5dE4bdw4ySwWuP8oa5u7oJ9v3mCd9o:  -0.01400000 Waves

2020.09.07 08:38 [1166568] smart account 3MxZp5dE4bdw4ySwWuP8oa5u7oJ9v3mCd9o > SELF 0.00000000 Waves

{ "type": 13, "id": "HJtNYUjptmGXrxw29UivPMWBYiRnLopStemrBVbA6f7y", "fee": 1400000, "feeAssetId": null, "timestamp": 1599457127837, "version": 2, "chainId": 84, "sender": "3MxZp5dE4bdw4ySwWuP8oa5u7oJ9v3mCd9o", "senderPublicKey": "6Bsee4KX5PTUcBfCH4bFHLzLRZSPQF8HH4oYtNZFsCAG", "proofs": [ "2oJGJUtLqvuybJm4EG8NNJjVS9bAMVAQjTUe2FRYHhBAgNPRgLf3eRVMqqNVuJbNyGWNwgAZJhWjGJ9JQ93riZwE" ], "script": "base64:AAIEAAAAAAAAABIIAhIOCgwICAgICAgBCAgICAgAAAAiAAAAAA9zdG9yYWdlVmVyaWZpZXIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAADXVzZXJXaGl0ZWxpc3QJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQIAAAAjM01wSkViMzZaUXlrMWhhS25vY2F5SmNZTTMxY05QWFBpSzMAAAAADHNpZ25WZXJpZmllcgkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAANYWNjZXB0ZWRUb2tlbgEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAABnVzZG5JRAIAAAAsM0tGWEJHR0xDakE1WjJEdVc0RHE5ZkREckhqSkpQMVpFa2FvYWpTenVLc0MAAAAABWFkbWluAgAAACMzTkNxcGRiOGpIVzFkMWhxWmdlUzlBRTJNSjJLZWg5NWpNQwAAAAAMVkVSSUZJRURPTkxZBgAAAAALdXNlckNyZWF0ZWQCAAAAB0NSRUFURUQAAAAADHVzZXJWZXJpZmllZAIAAAAIVkVSSUZJRUQAAAAADXVzZXJTdXNwZW5kZWQCAAAACVNVU1BFTkRFRAAAAAALdXNlclJlbW92ZWQCAAAAB1JFTU9WRUQAAAAAEHVzZXJVbnJlZ2lzdGVyZWQCAAAADFVOUkVHSVNURVJFRAAAAAAGb25TYWxlAgAAAAdPTl9TQUxFAAAAAARzb2xkAgAAAARTT0xEAAAAAAhjYW5jZWxlZAIAAAAIQ0FOQ0VMRUQBAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gw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ASwAAAACAgAAABJhcnRfb3duZXJfYnlfaGFzaF8FAAAACnNoYTI1Nkhhc2gBAAAAFWtleUFydFR4aWRCeUhhc2hPd25lcgAAAAIAAAAKc2hhMjU2SGFzaAAAAApjYWxsZXJBZGRyCQABLAAAAAICAAAAF2FydF90eGlkX2J5X2hhc2hfb3duZXJfCQACWAAAAAEJAAtUAAAAAQkAAZsAAAABCQABLAAAAAIFAAAACnNoYTI1Nkhhc2gFAAAACmNhbGxlckFkZHIAAAABAAAABmludm9rZQEAAAAKYWRkQXJ0d29yawAAAAwAAAAKc2hhMjU2SGFzaAAAAAZzaWduSUQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzAAAABHR5cGUAAAAHbWF4bWludAAAAApjaWREaXNwbGF5AAAADHNoYTI1NkV4cG9ydAAAAAljaWRFeHBvcnQAAAANc2hhMjU2TGljZW5jZQAAAApjaWRMaWNlbmNlBAAAAAVhcnRJZAkAAlgAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAADWNhbGxlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAZpbnZva2UAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAl0aW1lc3RhbXAIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlBcnRPd25lckJ5SGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gFAAAADWNhbGxlckFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFWtleUFydFR4aWRCeUhhc2hPd25lcgAAAAIFAAAACnNoYTI1Nkhhc2gFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAPa2V5VXNlcklzQXJ0aXN0AAAAAQUAAAANY2FsbGVyQWRkcmVzcwYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAprZXlBcnREYXRlAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0TmFtZQAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAprZXlBcnREZXNjAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnREaXNwbGF5Q2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACmNpZERpc3BsYXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAljaWRFeHBvcnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUFydEV4cG9ydEhhc2gAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAMc2hhMjU2RXhwb3J0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlBcnRMaWNlbmNlSGFzaAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAA1zaGEyNTZMaWNlbmNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlBcnRMaWNlbmNlQ2lkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQFAAAACmNpZExpY2VuY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAACmtleUFydFR5cGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAEdHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAKa2V5QXJ0VGFncwAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAR0YWdzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANa2V5QXJ0TWF4TWludAAAAAIFAAAADWNhbGxlckFkZHJlc3MFAAAABWFydElkBQAAAAdtYXhtaW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlBcnRTaWduSUQAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAUAAAAGc2lnbklECQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5QXJ0SXNzdWVkAAAAAgUAAAANY2FsbGVyQWRkcmVzcwUAAAAFYXJ0SWQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAAxrZXlBcnRPblNhbGUAAAACBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAVhcnRJZAcJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAABWFydElkBQAAAANuaWwAAAAAg3VhtQ==", "height": 1166568, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GvGjnDknaofasdYQi5ombr8MTgQsy6YENSnoJAZrdDdt Next: GGDFEb91qvr2CBSWBjxsKVWgRv7rLe3H91LR44UqzaAk Diff:
OldNewDifferences
4545 case _ =>
4646 0
4747 }
48+
49+
50+func keyUserIsArtist (callerAddr) = ("user_isartist_" + callerAddr)
4851
4952
5053 func keyArtDate (callerAddr,artId) = ((("art_date_" + artId) + "_") + callerAddr)
100103 let artId = toBase58String(invoke.transactionId)
101104 let callerAddress = toBase58String(invoke.caller.bytes)
102105 let timestamp = lastBlock.timestamp
103-[StringEntry(keyArtOwnerByHash(sha256Hash), callerAddress), StringEntry(keyArtTxidByHashOwner(sha256Hash, callerAddress), artId), IntegerEntry(keyArtDate(callerAddress, artId), timestamp), StringEntry(keyArtName(callerAddress, artId), name), StringEntry(keyArtDesc(callerAddress, artId), description), StringEntry(keyArtDisplayCid(callerAddress, artId), cidDisplay), StringEntry(keyArtExportCid(callerAddress, artId), cidExport), StringEntry(keyArtExportHash(callerAddress, artId), sha256Export), StringEntry(keyArtLicenceHash(callerAddress, artId), sha256Licence), StringEntry(keyArtLicenceCid(callerAddress, artId), cidLicence), StringEntry(keyArtType(callerAddress, artId), type), StringEntry(keyArtTags(callerAddress, artId), tags), IntegerEntry(keyArtMaxMint(callerAddress, artId), maxmint), StringEntry(keyArtSignID(callerAddress, artId), signID), IntegerEntry(keyArtIssued(callerAddress, artId), 0), BooleanEntry(keyArtOnSale(callerAddress, artId), false), StringEntry("last_invoke_id", artId)]
106+[StringEntry(keyArtOwnerByHash(sha256Hash), callerAddress), StringEntry(keyArtTxidByHashOwner(sha256Hash, callerAddress), artId), BooleanEntry(keyUserIsArtist(callerAddress), true), IntegerEntry(keyArtDate(callerAddress, artId), timestamp), StringEntry(keyArtName(callerAddress, artId), name), StringEntry(keyArtDesc(callerAddress, artId), description), StringEntry(keyArtDisplayCid(callerAddress, artId), cidDisplay), StringEntry(keyArtExportCid(callerAddress, artId), cidExport), StringEntry(keyArtExportHash(callerAddress, artId), sha256Export), StringEntry(keyArtLicenceHash(callerAddress, artId), sha256Licence), StringEntry(keyArtLicenceCid(callerAddress, artId), cidLicence), StringEntry(keyArtType(callerAddress, artId), type), StringEntry(keyArtTags(callerAddress, artId), tags), IntegerEntry(keyArtMaxMint(callerAddress, artId), maxmint), StringEntry(keyArtSignID(callerAddress, artId), signID), IntegerEntry(keyArtIssued(callerAddress, artId), 0), BooleanEntry(keyArtOnSale(callerAddress, artId), false), StringEntry("last_invoke_id", artId)]
104107 }
105108
106109
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let storageVerifier = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let userWhitelist = value(addressFromString("3MpJEb36ZQyk1haKnocayJcYM31cNPXPiK3"))
77
88 let signVerifier = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
99
1010 let acceptedToken = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1111
1212 let usdnID = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
1313
1414 let admin = "3NCqpdb8jHW1d1hqZgeS9AE2MJ2Keh95jMC"
1515
1616 let VERIFIEDONLY = true
1717
1818 let userCreated = "CREATED"
1919
2020 let userVerified = "VERIFIED"
2121
2222 let userSuspended = "SUSPENDED"
2323
2424 let userRemoved = "REMOVED"
2525
2626 let userUnregistered = "UNREGISTERED"
2727
2828 let onSale = "ON_SALE"
2929
3030 let sold = "SOLD"
3131
3232 let canceled = "CANCELED"
3333
3434 func getStringByKey (key) = match getString(this, key) {
3535 case a: String =>
3636 a
3737 case _ =>
3838 ""
3939 }
4040
4141
4242 func getIntegerByKey (key) = match getInteger(this, key) {
4343 case i: Int =>
4444 i
4545 case _ =>
4646 0
4747 }
48+
49+
50+func keyUserIsArtist (callerAddr) = ("user_isartist_" + callerAddr)
4851
4952
5053 func keyArtDate (callerAddr,artId) = ((("art_date_" + artId) + "_") + callerAddr)
5154
5255
5356 func keyArtName (callerAddr,artId) = ((("art_name_" + artId) + "_") + callerAddr)
5457
5558
5659 func keyArtDesc (callerAddr,artId) = ((("art_desc_" + artId) + "_") + callerAddr)
5760
5861
5962 func keyArtDisplayCid (callerAddr,artId) = ((("art_display_cid_" + artId) + "_") + callerAddr)
6063
6164
6265 func keyArtExportHash (callerAddr,artId) = ((("art_export_hash_" + artId) + "_") + callerAddr)
6366
6467
6568 func keyArtExportCid (callerAddr,artId) = ((("art_export_cid_" + artId) + "_") + callerAddr)
6669
6770
6871 func keyArtMaxMint (callerAddr,artId) = ((("art_maxmint_" + artId) + "_") + callerAddr)
6972
7073
7174 func keyArtSignID (callerAddr,artId) = ((("art_signid_" + artId) + "_") + callerAddr)
7275
7376
7477 func keyArtIssued (callerAddr,artId) = ((("art_issued_" + artId) + "_") + callerAddr)
7578
7679
7780 func keyArtOnSale (callerAddr,artId) = ((("art_onsale_" + artId) + "_") + callerAddr)
7881
7982
8083 func keyArtLicenceHash (callerAddr,artId) = ((("art_licence_hash_" + artId) + "_") + callerAddr)
8184
8285
8386 func keyArtLicenceCid (callerAddr,artId) = ((("art_licence_cid_" + artId) + "_") + callerAddr)
8487
8588
8689 func keyArtTags (callerAddr,artId) = ((("art_tags_" + artId) + "_") + callerAddr)
8790
8891
8992 func keyArtType (callerAddr,artId) = ((("art_type_" + artId) + "_") + callerAddr)
9093
9194
9295 func keyArtOwnerByHash (sha256Hash) = ("art_owner_by_hash_" + sha256Hash)
9396
9497
9598 func keyArtTxidByHashOwner (sha256Hash,callerAddr) = ("art_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((sha256Hash + callerAddr)))))
9699
97100
98101 @Callable(invoke)
99102 func addArtwork (sha256Hash,signID,name,description,tags,type,maxmint,cidDisplay,sha256Export,cidExport,sha256Licence,cidLicence) = {
100103 let artId = toBase58String(invoke.transactionId)
101104 let callerAddress = toBase58String(invoke.caller.bytes)
102105 let timestamp = lastBlock.timestamp
103-[StringEntry(keyArtOwnerByHash(sha256Hash), callerAddress), StringEntry(keyArtTxidByHashOwner(sha256Hash, callerAddress), artId), IntegerEntry(keyArtDate(callerAddress, artId), timestamp), StringEntry(keyArtName(callerAddress, artId), name), StringEntry(keyArtDesc(callerAddress, artId), description), StringEntry(keyArtDisplayCid(callerAddress, artId), cidDisplay), StringEntry(keyArtExportCid(callerAddress, artId), cidExport), StringEntry(keyArtExportHash(callerAddress, artId), sha256Export), StringEntry(keyArtLicenceHash(callerAddress, artId), sha256Licence), StringEntry(keyArtLicenceCid(callerAddress, artId), cidLicence), StringEntry(keyArtType(callerAddress, artId), type), StringEntry(keyArtTags(callerAddress, artId), tags), IntegerEntry(keyArtMaxMint(callerAddress, artId), maxmint), StringEntry(keyArtSignID(callerAddress, artId), signID), IntegerEntry(keyArtIssued(callerAddress, artId), 0), BooleanEntry(keyArtOnSale(callerAddress, artId), false), StringEntry("last_invoke_id", artId)]
106+[StringEntry(keyArtOwnerByHash(sha256Hash), callerAddress), StringEntry(keyArtTxidByHashOwner(sha256Hash, callerAddress), artId), BooleanEntry(keyUserIsArtist(callerAddress), true), IntegerEntry(keyArtDate(callerAddress, artId), timestamp), StringEntry(keyArtName(callerAddress, artId), name), StringEntry(keyArtDesc(callerAddress, artId), description), StringEntry(keyArtDisplayCid(callerAddress, artId), cidDisplay), StringEntry(keyArtExportCid(callerAddress, artId), cidExport), StringEntry(keyArtExportHash(callerAddress, artId), sha256Export), StringEntry(keyArtLicenceHash(callerAddress, artId), sha256Licence), StringEntry(keyArtLicenceCid(callerAddress, artId), cidLicence), StringEntry(keyArtType(callerAddress, artId), type), StringEntry(keyArtTags(callerAddress, artId), tags), IntegerEntry(keyArtMaxMint(callerAddress, artId), maxmint), StringEntry(keyArtSignID(callerAddress, artId), signID), IntegerEntry(keyArtIssued(callerAddress, artId), 0), BooleanEntry(keyArtOnSale(callerAddress, artId), false), StringEntry("last_invoke_id", artId)]
104107 }
105108
106109

github/deemru/w8io/873ac7e 
31.09 ms