tx · GTp4uiDVGawYf2g5esYKbQUDC1RmcLQr9eA8FVezLZ4n 3N1bfGrC9iBWbv1Rhb64cccc3cQswW8VyCV: -0.01400000 Waves 2020.07.24 10:46 [1101308] smart account 3N1bfGrC9iBWbv1Rhb64cccc3cQswW8VyCV > SELF 0.00000000 Waves
{ "type": 13, "id": "GTp4uiDVGawYf2g5esYKbQUDC1RmcLQr9eA8FVezLZ4n", "fee": 1400000, "feeAssetId": null, "timestamp": 1595576826594, "version": 1, "sender": "3N1bfGrC9iBWbv1Rhb64cccc3cQswW8VyCV", "senderPublicKey": "BF56eooJyMKnwSL3B65fqLBFPfubUbW6wdky9pCGQajE", "proofs": [ "5hAjjR48hXx5RSKVdfXBNtRR4s5zRGr77dNoRySw3rGmxDtA3K62abJSBTAiTK3Ub9p7Kkj6Yxsu4NhqHFuFfkYm" ], "script": "base64:AAIDAAAAAAAAABcIARIGCgQICAgIEgMKAQgSBgoECAgICAAAAAsAAAAAD3N0b3JhZ2VWZXJpZmllcgkBAAAABXZhbHVlAAAAAQkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEAAAAADHNpZ25WZXJpZmllcgkBAAAABXZhbHVlAAAAAQkBAAAAEWFkZHJlc3NGcm9tU3RyaW5nAAAAAQIAAAAjM05DMjhoU2l2cm1zVFVYYVlEMXg2TDM2Mko0WnBVbm9UZEIAAAAABGJhbmsCAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAA1hY2NlcHRlZFRva2VuAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAAGdXNkbklEAgAAACwzS0ZYQkdHTENqQTVaMkR1VzREcTlmRERySGpKSlAxWkVrYW9halN6dUtzQwEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABVnZXRTdHJpbmdCeUFkZHJlc3NLZXkAAAACAAAABGFkZHIAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABGFkZHIFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAADHZhbGlkYXRlTkZUcwAAAAIAAAALYWNjdW11bGF0b3IAAAACaWQEAAAADGFzc2V0RGV0YWlscwkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAAAmlkAwMDCQEAAAACIT0AAAACCAUAAAAMYXNzZXREZXRhaWxzAAAACHF1YW50aXR5AAAAAAAAAAABBgkBAAAAAiE9AAAAAggFAAAADGFzc2V0RGV0YWlscwAAAAhkZWNpbWFscwAAAAAAAAAAAAYJAQAAAAIhPQAAAAIIBQAAAAxhc3NldERldGFpbHMAAAAKcmVpc3N1YWJsZQcJAABkAAAAAgUAAAALYWNjdW11bGF0b3IAAAAAAAAAAAAJAABkAAAAAgUAAAALYWNjdW11bGF0b3IAAAAAAAAAAAEAAAAAC3VzZXJDcmVhdGVkAgAAAAdDUkVBVEVEAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAEHVzZXJVbnJlZ2lzdGVyZWQCAAAADFVOUkVHSVNURVJFRAAAAAMAAAABaQEAAAAScmVnaXN0ZXJVcGRhdGVVc2VyAAAABAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABXRodW1iAAAABnNvY2lhbAQAAAAKY2FsbGVyQWRkcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAAB25ld1VzZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAAEsAAAAAgIAAAAFdXNlcl8FAAAACmNhbGxlckFkZHIDAwkAAAAAAAACBQAAAARuYW1lAgAAAAAGCQAAAAAAAAIFAAAAC2Rlc2NyaXB0aW9uAgAAAAAJAAACAAAAAQIAAAAkTmFtZSBhbmQgZGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5AwkAAAAAAAACBQAAAAduZXdVc2VyAgAAAAAJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAFdXNlcl8FAAAACmNhbGxlckFkZHIJAAEsAAAAAgkAASwAAAACBQAAAAJpZAIAAAABXwkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAAAp1c2VyX25hbWVfBQAAAApjYWxsZXJBZGRyBQAAAARuYW1lCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAACnVzZXJfZGVzY18FAAAACmNhbGxlckFkZHIFAAAAC2Rlc2NyaXB0aW9uCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAADHVzZXJfc29jaWFsXwUAAAAKY2FsbGVyQWRkcgUAAAAGc29jaWFsCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAC3VzZXJfdGh1bWJfBQAAAApjYWxsZXJBZGRyBQAAAAV0aHVtYgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAACmNhbGxlckFkZHIFAAAAC3VzZXJDcmVhdGVkBQAAAANuaWwJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAKdXNlcl9uYW1lXwUAAAAKY2FsbGVyQWRkcgUAAAAEbmFtZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAAAp1c2VyX2Rlc2NfBQAAAApjYWxsZXJBZGRyBQAAAAtkZXNjcmlwdGlvbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAAAx1c2VyX3NvY2lhbF8FAAAACmNhbGxlckFkZHIFAAAABnNvY2lhbAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACAgAAAAt1c2VyX3RodW1iXwUAAAAKY2FsbGVyQWRkcgUAAAAFdGh1bWIFAAAAA25pbAAAAAZpbnZva2UBAAAABHRlc3QAAAABAAAABGhhc2gJAAACAAAAAQIAAAAFRXJyb3IAAAAGaW52b2tlAQAAAAphZGRBcnR3b3JrAAAABAAAAARoYXNoAAAABGpzb24AAAAEbmZ0cwAAAAZzaWduSUQEAAAAAmlkCQACWAAAAAEIBQAAAAZpbnZva2UAAAANdHJhbnNhY3Rpb25JZAQAAAAKZW50cnlFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQUAAAAEaGFzaAQAAAANY2FsbGVyQWRkcmVzcwkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAACWVudHJ5RGF0ZQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAEAAAACG5mdEFycmF5CQAEtQAAAAIFAAAABG5mdHMCAAAAAXwEAAAADG51bWJlck9mTkZUcwkAAZAAAAABBQAAAAhuZnRBcnJheQQAAAAIY2hlY2tJRHMEAAAADSRsaXN0MjgwNDI4MzkFAAAACG5mdEFycmF5BAAAAA0kc2l6ZTI4MDQyODM5CQABkAAAAAEFAAAADSRsaXN0MjgwNDI4MzkEAAAADSRhY2MwMjgwNDI4MzkAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAAFAAAADSRhY2MwMjgwNDI4MzkEAAAADSRhY2MxMjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA0kYWNjMDI4MDQyODM5CQABkQAAAAIFAAAADSRsaXN0MjgwNDI4MzkAAAAAAAAAAAADCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAEFAAAADSRhY2MxMjgwNDI4MzkEAAAADSRhY2MyMjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA0kYWNjMTI4MDQyODM5CQABkQAAAAIFAAAADSRsaXN0MjgwNDI4MzkAAAAAAAAAAAEDCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAIFAAAADSRhY2MyMjgwNDI4MzkEAAAADSRhY2MzMjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA0kYWNjMjI4MDQyODM5CQABkQAAAAIFAAAADSRsaXN0MjgwNDI4MzkAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAMFAAAADSRhY2MzMjgwNDI4MzkEAAAADSRhY2M0MjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA0kYWNjMzI4MDQyODM5CQABkQAAAAIFAAAADSRsaXN0MjgwNDI4MzkAAAAAAAAAAAMDCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAQFAAAADSRhY2M0MjgwNDI4MzkEAAAADSRhY2M1MjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA0kYWNjNDI4MDQyODM5CQABkQAAAAIFAAAADSRsaXN0MjgwNDI4MzkAAAAAAAAAAAQDCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAUFAAAADSRhY2M1MjgwNDI4MzkEAAAADSRhY2M2MjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA0kYWNjNTI4MDQyODM5CQABkQAAAAIFAAAADSRsaXN0MjgwNDI4MzkAAAAAAAAAAAUDCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAYFAAAADSRhY2M2MjgwNDI4MzkEAAAADSRhY2M3MjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA0kYWNjNjI4MDQyODM5CQABkQAAAAIFAAAADSRsaXN0MjgwNDI4MzkAAAAAAAAAAAYDCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAcFAAAADSRhY2M3MjgwNDI4MzkEAAAADSRhY2M4MjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA0kYWNjNzI4MDQyODM5CQABkQAAAAIFAAAADSRsaXN0MjgwNDI4MzkAAAAAAAAAAAcDCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAgFAAAADSRhY2M4MjgwNDI4MzkEAAAADSRhY2M5MjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA0kYWNjODI4MDQyODM5CQABkQAAAAIFAAAADSRsaXN0MjgwNDI4MzkAAAAAAAAAAAgDCQAAAAAAAAIFAAAADSRzaXplMjgwNDI4MzkAAAAAAAAAAAkFAAAADSRhY2M5MjgwNDI4MzkEAAAADiRhY2MxMDI4MDQyODM5CQEAAAAMdmFsaWRhdGVORlRzAAAAAgUAAAANJGFjYzkyODA0MjgzOQkAAZEAAAACBQAAAA0kbGlzdDI4MDQyODM5AAAAAAAAAAAJAwkAAAAAAAACBQAAAA0kc2l6ZTI4MDQyODM5AAAAAAAAAAAKBQAAAA4kYWNjMTAyODA0MjgzOQQAAAAOJGFjYzExMjgwNDI4MzkJAQAAAAx2YWxpZGF0ZU5GVHMAAAACBQAAAA4kYWNjMTAyODA0MjgzOQkAAZEAAAACBQAAAA0kbGlzdDI4MDQyODM5AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAEAAAAEHVzZXJJc1JlZ2lzdGVyZWQEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAADWNhbGxlckFkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwUAAAAQdXNlclVucmVnaXN0ZXJlZAMJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAUAAAAQdXNlclVucmVnaXN0ZXJlZAkAAAIAAAABAgAAACJQbGVhc2UgcmVnaXN0ZXIgdGhpcyBhY2NvdW50IGZpcnN0AwkAAAAAAAACBQAAABB1c2VySXNSZWdpc3RlcmVkBQAAAA11c2VyU3VzcGVuZGVkCQAAAgAAAAECAAAAGVlvdXIgYWNjb3VudCBpcyBzdXNwZW5kZWQDCQAAZgAAAAIFAAAADG51bWJlck9mTkZUcwAAAAAAAAAACgkAAAIAAAABAgAAAB9NYXhpbXVtIDEwIGVkaXRpb25zIHBlciBhcnR3b3JrAwkBAAAAAiE9AAAAAgUAAAAIY2hlY2tJRHMFAAAADG51bWJlck9mTkZUcwkAAAIAAAABAgAAAClQbGVhc2UgdmVyaWZ5IHRoYXQgYWxsIE5GVCBpZHMgYXJlIHZhbGlkLgMJAQAAAAIhPQAAAAIFAAAACmVudHJ5RXhpc3QCAAAABE5PTkUJAAACAAAAAQIAAAAiVGhpcyBhcnR3b3JrIGlzIGFscmVhZHkgcmVnaXN0ZXJlZAMJAABmAAAAAgkAATEAAAABBQAAAARoYXNoAAAAAAAAAABACQAAAgAAAAECAAAAJEhhc2ggaXMgdG9vIGxvbmcsIDY0IGNoYXJhY3RlcnMgbWF4LgQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQgFAAAABmludm9rZQAAAAdwYXltZW50BAAAAAZhbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAOcGF5bWVudEFzc2V0SWQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACBXYXZlcyBpcyBub3QgYWNjZXB0ZWQgYXMgcGF5bWVudAQAAAAMY3VycmVudFByaWNlAAAAD41fRZVGAwkBAAAAAiE9AAAAAgUAAAANYWNjZXB0ZWRUb2tlbgUAAAAOcGF5bWVudEFzc2V0SWQJAAACAAAAAQIAAAAoVGhpcyB0b2tlbiBpcyBub3QgYWNjZXB0ZWQgYXQgdGhlIG1vbWVudAMJAQAAAAIhPQAAAAIFAAAABmFtb3VudAUAAAAMY3VycmVudFByaWNlCQAAAgAAAAECAAAAElRoZSBwcmljZSBpcyB3cm9uZwkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABGhhc2gFAAAAAmlkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfZGF0ZV8FAAAAAmlkAgAAAAFfBQAAAA1jYWxsZXJBZGRyZXNzBQAAAAllbnRyeURhdGUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9qc29uXwUAAAACaWQCAAAAAV8FAAAADWNhbGxlckFkZHJlc3MFAAAABGpzb24JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9uZnRzXwUAAAACaWQCAAAAAV8FAAAADWNhbGxlckFkZHJlc3MFAAAABG5mdHMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9zaWduXwUAAAACaWQCAAAAAV8FAAAADWNhbGxlckFkZHJlc3MFAAAABnNpZ25JRAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAEYmFuawUAAAAGYW1vdW50CAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAANuaWwAAAAAnM+R7Q==", "chainId": 84, "height": 1101308, "spentComplexity": 0 } View: original | compacted Prev: F2Yy8Au4ez5UxSzXWFYmjXfHBpkAiz3Hcrtq7QgxZydm Next: 5q6BMy1odFeSc5zJFPsULZbbCAMx3CNM49ajuzpKvPsd Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let storageVerifier = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1")) | |
5 | + | ||
6 | + | let signVerifier = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB")) | |
7 | + | ||
8 | + | let bank = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub" | |
9 | + | ||
10 | + | let acceptedToken = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a' | |
11 | + | ||
12 | + | let usdnID = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC" | |
13 | + | ||
4 | 14 | func getStringByKey (key) = match getString(this, key) { | |
5 | 15 | case a: String => | |
6 | 16 | a | |
9 | 19 | } | |
10 | 20 | ||
11 | 21 | ||
22 | + | func getStringByAddressKey (addr,key) = match getString(addr, key) { | |
23 | + | case a: String => | |
24 | + | a | |
25 | + | case _ => | |
26 | + | "" | |
27 | + | } | |
28 | + | ||
29 | + | ||
30 | + | func validateNFTs (accumulator,id) = { | |
31 | + | let assetDetails = value(assetInfo(fromBase58String(id))) | |
32 | + | if (if (if ((assetDetails.quantity != 1)) | |
33 | + | then true | |
34 | + | else (assetDetails.decimals != 0)) | |
35 | + | then true | |
36 | + | else (assetDetails.reissuable != false)) | |
37 | + | then (accumulator + 0) | |
38 | + | else (accumulator + 1) | |
39 | + | } | |
40 | + | ||
41 | + | ||
12 | 42 | let userCreated = "CREATED" | |
13 | 43 | ||
14 | 44 | let userSuspended = "SUSPENDED" | |
45 | + | ||
46 | + | let userUnregistered = "UNREGISTERED" | |
15 | 47 | ||
16 | 48 | @Callable(i) | |
17 | 49 | func registerUpdateUser (name,description,thumb,social) = { | |
28 | 60 | } | |
29 | 61 | ||
30 | 62 | ||
63 | + | ||
64 | + | @Callable(invoke) | |
65 | + | func test (hash) = throw("Error") | |
66 | + | ||
67 | + | ||
68 | + | ||
69 | + | @Callable(invoke) | |
70 | + | func addArtwork (hash,json,nfts,signID) = { | |
71 | + | let id = toBase58String(invoke.transactionId) | |
72 | + | let entryExist = getStringByKey(hash) | |
73 | + | let callerAddress = toBase58String(invoke.caller.bytes) | |
74 | + | let entryDate = lastBlock.timestamp | |
75 | + | let nftArray = split(nfts, "|") | |
76 | + | let numberOfNFTs = size(nftArray) | |
77 | + | let checkIDs = { | |
78 | + | let $list28042839 = nftArray | |
79 | + | let $size28042839 = size($list28042839) | |
80 | + | let $acc028042839 = 0 | |
81 | + | if (($size28042839 == 0)) | |
82 | + | then $acc028042839 | |
83 | + | else { | |
84 | + | let $acc128042839 = validateNFTs($acc028042839, $list28042839[0]) | |
85 | + | if (($size28042839 == 1)) | |
86 | + | then $acc128042839 | |
87 | + | else { | |
88 | + | let $acc228042839 = validateNFTs($acc128042839, $list28042839[1]) | |
89 | + | if (($size28042839 == 2)) | |
90 | + | then $acc228042839 | |
91 | + | else { | |
92 | + | let $acc328042839 = validateNFTs($acc228042839, $list28042839[2]) | |
93 | + | if (($size28042839 == 3)) | |
94 | + | then $acc328042839 | |
95 | + | else { | |
96 | + | let $acc428042839 = validateNFTs($acc328042839, $list28042839[3]) | |
97 | + | if (($size28042839 == 4)) | |
98 | + | then $acc428042839 | |
99 | + | else { | |
100 | + | let $acc528042839 = validateNFTs($acc428042839, $list28042839[4]) | |
101 | + | if (($size28042839 == 5)) | |
102 | + | then $acc528042839 | |
103 | + | else { | |
104 | + | let $acc628042839 = validateNFTs($acc528042839, $list28042839[5]) | |
105 | + | if (($size28042839 == 6)) | |
106 | + | then $acc628042839 | |
107 | + | else { | |
108 | + | let $acc728042839 = validateNFTs($acc628042839, $list28042839[6]) | |
109 | + | if (($size28042839 == 7)) | |
110 | + | then $acc728042839 | |
111 | + | else { | |
112 | + | let $acc828042839 = validateNFTs($acc728042839, $list28042839[7]) | |
113 | + | if (($size28042839 == 8)) | |
114 | + | then $acc828042839 | |
115 | + | else { | |
116 | + | let $acc928042839 = validateNFTs($acc828042839, $list28042839[8]) | |
117 | + | if (($size28042839 == 9)) | |
118 | + | then $acc928042839 | |
119 | + | else { | |
120 | + | let $acc1028042839 = validateNFTs($acc928042839, $list28042839[9]) | |
121 | + | if (($size28042839 == 10)) | |
122 | + | then $acc1028042839 | |
123 | + | else { | |
124 | + | let $acc1128042839 = validateNFTs($acc1028042839, $list28042839[10]) | |
125 | + | throw("List size exceed 10") | |
126 | + | } | |
127 | + | } | |
128 | + | } | |
129 | + | } | |
130 | + | } | |
131 | + | } | |
132 | + | } | |
133 | + | } | |
134 | + | } | |
135 | + | } | |
136 | + | } | |
137 | + | } | |
138 | + | let userIsRegistered = match getString(this, ("user_status_" + callerAddress)) { | |
139 | + | case s: String => | |
140 | + | s | |
141 | + | case _ => | |
142 | + | userUnregistered | |
143 | + | } | |
144 | + | if ((userIsRegistered == userUnregistered)) | |
145 | + | then throw("Please register this account first") | |
146 | + | else if ((userIsRegistered == userSuspended)) | |
147 | + | then throw("Your account is suspended") | |
148 | + | else if ((numberOfNFTs > 10)) | |
149 | + | then throw("Maximum 10 editions per artwork") | |
150 | + | else if ((checkIDs != numberOfNFTs)) | |
151 | + | then throw("Please verify that all NFT ids are valid.") | |
152 | + | else if ((entryExist != "NONE")) | |
153 | + | then throw("This artwork is already registered") | |
154 | + | else if ((size(hash) > 64)) | |
155 | + | then throw("Hash is too long, 64 characters max.") | |
156 | + | else { | |
157 | + | let payment = value(invoke.payment) | |
158 | + | let amount = payment.amount | |
159 | + | let paymentAssetId = if (isDefined(payment.assetId)) | |
160 | + | then payment.assetId | |
161 | + | else throw("Waves is not accepted as payment") | |
162 | + | let currentPrice = 17099863201094 | |
163 | + | if ((acceptedToken != paymentAssetId)) | |
164 | + | then throw("This token is not accepted at the moment") | |
165 | + | else if ((amount != currentPrice)) | |
166 | + | then throw("The price is wrong") | |
167 | + | else ScriptResult(WriteSet([DataEntry(hash, id), DataEntry(((("art_date_" + id) + "_") + callerAddress), entryDate), DataEntry(((("art_json_" + id) + "_") + callerAddress), json), DataEntry(((("art_nfts_" + id) + "_") + callerAddress), nfts), DataEntry(((("art_sign_" + id) + "_") + callerAddress), signID)]), TransferSet([ScriptTransfer(addressFromStringValue(bank), amount, payment.assetId)])) | |
168 | + | } | |
169 | + | } | |
170 | + | ||
171 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let storageVerifier = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1")) | |
5 | + | ||
6 | + | let signVerifier = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB")) | |
7 | + | ||
8 | + | let bank = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub" | |
9 | + | ||
10 | + | let acceptedToken = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a' | |
11 | + | ||
12 | + | let usdnID = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC" | |
13 | + | ||
4 | 14 | func getStringByKey (key) = match getString(this, key) { | |
5 | 15 | case a: String => | |
6 | 16 | a | |
7 | 17 | case _ => | |
8 | 18 | "" | |
9 | 19 | } | |
10 | 20 | ||
11 | 21 | ||
22 | + | func getStringByAddressKey (addr,key) = match getString(addr, key) { | |
23 | + | case a: String => | |
24 | + | a | |
25 | + | case _ => | |
26 | + | "" | |
27 | + | } | |
28 | + | ||
29 | + | ||
30 | + | func validateNFTs (accumulator,id) = { | |
31 | + | let assetDetails = value(assetInfo(fromBase58String(id))) | |
32 | + | if (if (if ((assetDetails.quantity != 1)) | |
33 | + | then true | |
34 | + | else (assetDetails.decimals != 0)) | |
35 | + | then true | |
36 | + | else (assetDetails.reissuable != false)) | |
37 | + | then (accumulator + 0) | |
38 | + | else (accumulator + 1) | |
39 | + | } | |
40 | + | ||
41 | + | ||
12 | 42 | let userCreated = "CREATED" | |
13 | 43 | ||
14 | 44 | let userSuspended = "SUSPENDED" | |
45 | + | ||
46 | + | let userUnregistered = "UNREGISTERED" | |
15 | 47 | ||
16 | 48 | @Callable(i) | |
17 | 49 | func registerUpdateUser (name,description,thumb,social) = { | |
18 | 50 | let callerAddr = toString(addressFromPublicKey(i.callerPublicKey)) | |
19 | 51 | let id = toBase58String(i.transactionId) | |
20 | 52 | let newUser = getStringByKey(("user_" + callerAddr)) | |
21 | 53 | if (if ((name == "")) | |
22 | 54 | then true | |
23 | 55 | else (description == "")) | |
24 | 56 | then throw("Name and description cannot be empty") | |
25 | 57 | else if ((newUser == "")) | |
26 | 58 | then WriteSet([DataEntry(("user_" + callerAddr), ((id + "_") + toString(lastBlock.timestamp))), DataEntry(("user_name_" + callerAddr), name), DataEntry(("user_desc_" + callerAddr), description), DataEntry(("user_social_" + callerAddr), social), DataEntry(("user_thumb_" + callerAddr), thumb), DataEntry(("user_status_" + callerAddr), userCreated)]) | |
27 | 59 | else WriteSet([DataEntry(("user_name_" + callerAddr), name), DataEntry(("user_desc_" + callerAddr), description), DataEntry(("user_social_" + callerAddr), social), DataEntry(("user_thumb_" + callerAddr), thumb)]) | |
28 | 60 | } | |
29 | 61 | ||
30 | 62 | ||
63 | + | ||
64 | + | @Callable(invoke) | |
65 | + | func test (hash) = throw("Error") | |
66 | + | ||
67 | + | ||
68 | + | ||
69 | + | @Callable(invoke) | |
70 | + | func addArtwork (hash,json,nfts,signID) = { | |
71 | + | let id = toBase58String(invoke.transactionId) | |
72 | + | let entryExist = getStringByKey(hash) | |
73 | + | let callerAddress = toBase58String(invoke.caller.bytes) | |
74 | + | let entryDate = lastBlock.timestamp | |
75 | + | let nftArray = split(nfts, "|") | |
76 | + | let numberOfNFTs = size(nftArray) | |
77 | + | let checkIDs = { | |
78 | + | let $list28042839 = nftArray | |
79 | + | let $size28042839 = size($list28042839) | |
80 | + | let $acc028042839 = 0 | |
81 | + | if (($size28042839 == 0)) | |
82 | + | then $acc028042839 | |
83 | + | else { | |
84 | + | let $acc128042839 = validateNFTs($acc028042839, $list28042839[0]) | |
85 | + | if (($size28042839 == 1)) | |
86 | + | then $acc128042839 | |
87 | + | else { | |
88 | + | let $acc228042839 = validateNFTs($acc128042839, $list28042839[1]) | |
89 | + | if (($size28042839 == 2)) | |
90 | + | then $acc228042839 | |
91 | + | else { | |
92 | + | let $acc328042839 = validateNFTs($acc228042839, $list28042839[2]) | |
93 | + | if (($size28042839 == 3)) | |
94 | + | then $acc328042839 | |
95 | + | else { | |
96 | + | let $acc428042839 = validateNFTs($acc328042839, $list28042839[3]) | |
97 | + | if (($size28042839 == 4)) | |
98 | + | then $acc428042839 | |
99 | + | else { | |
100 | + | let $acc528042839 = validateNFTs($acc428042839, $list28042839[4]) | |
101 | + | if (($size28042839 == 5)) | |
102 | + | then $acc528042839 | |
103 | + | else { | |
104 | + | let $acc628042839 = validateNFTs($acc528042839, $list28042839[5]) | |
105 | + | if (($size28042839 == 6)) | |
106 | + | then $acc628042839 | |
107 | + | else { | |
108 | + | let $acc728042839 = validateNFTs($acc628042839, $list28042839[6]) | |
109 | + | if (($size28042839 == 7)) | |
110 | + | then $acc728042839 | |
111 | + | else { | |
112 | + | let $acc828042839 = validateNFTs($acc728042839, $list28042839[7]) | |
113 | + | if (($size28042839 == 8)) | |
114 | + | then $acc828042839 | |
115 | + | else { | |
116 | + | let $acc928042839 = validateNFTs($acc828042839, $list28042839[8]) | |
117 | + | if (($size28042839 == 9)) | |
118 | + | then $acc928042839 | |
119 | + | else { | |
120 | + | let $acc1028042839 = validateNFTs($acc928042839, $list28042839[9]) | |
121 | + | if (($size28042839 == 10)) | |
122 | + | then $acc1028042839 | |
123 | + | else { | |
124 | + | let $acc1128042839 = validateNFTs($acc1028042839, $list28042839[10]) | |
125 | + | throw("List size exceed 10") | |
126 | + | } | |
127 | + | } | |
128 | + | } | |
129 | + | } | |
130 | + | } | |
131 | + | } | |
132 | + | } | |
133 | + | } | |
134 | + | } | |
135 | + | } | |
136 | + | } | |
137 | + | } | |
138 | + | let userIsRegistered = match getString(this, ("user_status_" + callerAddress)) { | |
139 | + | case s: String => | |
140 | + | s | |
141 | + | case _ => | |
142 | + | userUnregistered | |
143 | + | } | |
144 | + | if ((userIsRegistered == userUnregistered)) | |
145 | + | then throw("Please register this account first") | |
146 | + | else if ((userIsRegistered == userSuspended)) | |
147 | + | then throw("Your account is suspended") | |
148 | + | else if ((numberOfNFTs > 10)) | |
149 | + | then throw("Maximum 10 editions per artwork") | |
150 | + | else if ((checkIDs != numberOfNFTs)) | |
151 | + | then throw("Please verify that all NFT ids are valid.") | |
152 | + | else if ((entryExist != "NONE")) | |
153 | + | then throw("This artwork is already registered") | |
154 | + | else if ((size(hash) > 64)) | |
155 | + | then throw("Hash is too long, 64 characters max.") | |
156 | + | else { | |
157 | + | let payment = value(invoke.payment) | |
158 | + | let amount = payment.amount | |
159 | + | let paymentAssetId = if (isDefined(payment.assetId)) | |
160 | + | then payment.assetId | |
161 | + | else throw("Waves is not accepted as payment") | |
162 | + | let currentPrice = 17099863201094 | |
163 | + | if ((acceptedToken != paymentAssetId)) | |
164 | + | then throw("This token is not accepted at the moment") | |
165 | + | else if ((amount != currentPrice)) | |
166 | + | then throw("The price is wrong") | |
167 | + | else ScriptResult(WriteSet([DataEntry(hash, id), DataEntry(((("art_date_" + id) + "_") + callerAddress), entryDate), DataEntry(((("art_json_" + id) + "_") + callerAddress), json), DataEntry(((("art_nfts_" + id) + "_") + callerAddress), nfts), DataEntry(((("art_sign_" + id) + "_") + callerAddress), signID)]), TransferSet([ScriptTransfer(addressFromStringValue(bank), amount, payment.assetId)])) | |
168 | + | } | |
169 | + | } | |
170 | + | ||
171 | + |
github/deemru/w8io/873ac7e 24.07 ms ◑