tx · 8pX3zFNXz9Hc7ZrtY5vp9s9JNkCaaSefPsKiPgEH5KVg

3NA73oUXjqp7SpudXWV1yMFuKm9awPbqsVz:  -0.00900000 Waves

2022.10.03 14:22 [2256090] smart account 3NA73oUXjqp7SpudXWV1yMFuKm9awPbqsVz > SELF 0.00000000 Waves

{ "type": 13, "id": "8pX3zFNXz9Hc7ZrtY5vp9s9JNkCaaSefPsKiPgEH5KVg", "fee": 900000, "feeAssetId": null, "timestamp": 1664796255585, "version": 2, "chainId": 84, "sender": "3NA73oUXjqp7SpudXWV1yMFuKm9awPbqsVz", "senderPublicKey": "2mHW72YTfnxJ1M8WsdUQjgpp3a2SUbt9mbAiePGiuJok", "proofs": [ "5Uu2Ce3UYRBxgtoyVpAiAFAasCo3RH9DskEEgbbVJYCNgT7GyvMNhWwKYKWSnvYHYXN6wYgdrpexoV7KRxsQAVAt" ], "script": "base64:AAIFAAAAAAAAABkIAhIGCgQICAEBEgMKAQgSAwoBCBIDCgEIAAAAHAEAAAAQZ2V0U3RyaW5nT3JUaHJvdwAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADENhbid0IHJlYWQgJwUAAAADa2V5AgAAAA0nIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAB2FkZHJlc3MBAAAAEWdldEludGVnZXJPclRocm93AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAMQ2FuJ3QgcmVhZCAnBQAAAANrZXkCAAAADScgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAAHYWRkcmVzcwEAAAATcGFyc2VBZGRyZXNzT3JUaHJvdwAAAAEAAAAMbWF5YmVBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAMbWF5YmVBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAaQ2FuJ3QgcGFyc2UgYWRkcmVzcyBmcm9tICcFAAAADG1heWJlQWRkcmVzcwIAAAABJwEAAAAKa2V5X2VudGl0eQAAAAMAAAAEbmFtZQAAAAJwawAAAAhwcm9wZXJ0eQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARuYW1lAgAAAAFfBQAAAAJwawIAAAABXwUAAAAIcHJvcGVydHkBAAAADmtleV9Ub2tlbl9uYW1lAAAAAQAAAAd0b2tlbklkCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABVRva2VuBQAAAAd0b2tlbklkAgAAAARuYW1lAQAAAA5rZXlfTmFtZV90b2tlbgAAAAEAAAAEbmFtZQkBAAAACmtleV9lbnRpdHkAAAADAgAAAAROYW1lBQAAAARuYW1lAgAAAAV0b2tlbgEAAAAOa2V5X05hbWVfb3duZXIAAAABAAAABG5hbWUJAQAAAAprZXlfZW50aXR5AAAAAwIAAAAETmFtZQUAAAAEbmFtZQIAAAAFb3duZXIBAAAAEmtleV9OYW1lX2V4cGlyZXNBdAAAAAEAAAAEbmFtZQkBAAAACmtleV9lbnRpdHkAAAADAgAAAAROYW1lBQAAAARuYW1lAgAAAAlleHBpcmVzQXQBAAAAEmtleV9OYW1lX2NyZWF0ZWRBdAAAAAEAAAAEbmFtZQkBAAAACmtleV9lbnRpdHkAAAADAgAAAAROYW1lBQAAAARuYW1lAgAAAAljcmVhdGVkQXQBAAAADmtleV9Pd25lcl9uYW1lAAAAAQAAAAdhZGRyZXNzCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABU93bmVyBQAAAAdhZGRyZXNzAgAAAARuYW1lAAAAABdrZXlfYXV0aG9yaXplZFB1YmxpY0tleQIAAAATYXV0aG9yaXplZFB1YmxpY0tleQAAAAASa2V5X2F1Y3Rpb25BZGRyZXNzAgAAAA5hdWN0aW9uQWRkcmVzcwAAAAAaa2V5X25hbWVFeHBpcmF0aW9uSW50ZXJ2YWwCAAAAFm5hbWVFeHBpcmF0aW9uSW50ZXJ2YWwAAAAAFGtleV9tYXhBdXRob3JpemVkRmVlAgAAABBtYXhBdXRob3JpemVkRmVlAAAAABNhdXRob3JpemVkUHVibGljS2V5CQACWQAAAAEJAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgUAAAAEdGhpcwUAAAAXa2V5X2F1dGhvcml6ZWRQdWJsaWNLZXkAAAAAEWF1dGhvcml6ZWRBZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAABNhdXRob3JpemVkUHVibGljS2V5AAAAABRhdXRob3JpemVkQWRkcmVzc1N0cgkABCUAAAABBQAAABFhdXRob3JpemVkQWRkcmVzcwAAAAARYXVjdGlvbkFkZHJlc3NTdHIJAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgUAAAAEdGhpcwUAAAASa2V5X2F1Y3Rpb25BZGRyZXNzAAAAAA5hdWN0aW9uQWRkcmVzcwkBAAAAE3BhcnNlQWRkcmVzc09yVGhyb3cAAAABBQAAABFhdWN0aW9uQWRkcmVzc1N0cgAAAAAWbmFtZUV4cGlyYXRpb25JbnRlcnZhbAkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAaa2V5X25hbWVFeHBpcmF0aW9uSW50ZXJ2YWwAAAAAEG1heEF1dGhvcml6ZWRGZWUJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAFGtleV9tYXhBdXRob3JpemVkRmVlAQAAAAV3aG9JcwAAAAEAAAAEbmFtZQQAAAAJZXhwaXJlc0F0CQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzCQEAAAASa2V5X05hbWVfZXhwaXJlc0F0AAAAAQUAAAAEbmFtZQQAAAAFdG9rZW4JAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgUAAAAEdGhpcwkBAAAADmtleV9OYW1lX3Rva2VuAAAAAQUAAAAEbmFtZQQAAAAFb3duZXIJAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgUAAAAEdGhpcwkBAAAADmtleV9OYW1lX293bmVyAAAAAQUAAAAEbmFtZQkABRUAAAADBQAAAAVvd25lcgUAAAAJZXhwaXJlc0F0BQAAAAV0b2tlbgEAAAARaXNSZWdpc3RlcmVkVG9rZW4AAAABAAAAB3Rva2VuSWQJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMJAQAAAA5rZXlfVG9rZW5fbmFtZQAAAAEFAAAAB3Rva2VuSWQBAAAAEGlzUmVnaXN0ZXJlZE5hbWUAAAABAAAABG5hbWUJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMJAQAAAA5rZXlfTmFtZV90b2tlbgAAAAEFAAAABG5hbWUBAAAADWlzRXhwaXJlZE5hbWUAAAABAAAABG5hbWUEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAAEmtleV9OYW1lX2V4cGlyZXNBdAAAAAEFAAAABG5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAJZXhwaXJlc0F0BQAAAAckbWF0Y2gwCQAAZgAAAAIFAAAACWV4cGlyZXNBdAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAHAQAAABFpc0F1dGhvcml6ZWRQcm9vZgAAAAEA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AAAAAQgFAAAABXRva2VuAAAAC2Rlc2NyaXB0aW9uBwkAAAIAAAABAgAAABNOYW1lIGFscmVhZHkgaW4gdXNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlfTmFtZV90b2tlbgAAAAEIBQAAAAV0b2tlbgAAAAtkZXNjcmlwdGlvbgUAAAAHdG9rZW5JZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5X1Rva2VuX25hbWUAAAABBQAAAAd0b2tlbklkCAUAAAAFdG9rZW4AAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABJrZXlfTmFtZV9jcmVhdGVkQXQAAAABCAUAAAAFdG9rZW4AAAALZGVzY3JpcHRpb24IBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASa2V5X05hbWVfZXhwaXJlc0F0AAAAAQgFAAAABXRva2VuAAAAC2Rlc2NyaXB0aW9uCQAAZAAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAABZuYW1lRXhwaXJhdGlvbkludGVydmFsBQAAAANuaWwAAAADaW52AQAAABFyZWdpc3Rlck93bmVyc2hpcAAAAAEAAAAEbmFtZQQAAAAGY2FsbGVyCAUAAAADaW52AAAABmNhbGxlcgQAAAAJY2FsbGVyU3RyCQAEJQAAAAEFAAAABmNhbGxlcgQAAAALJHQwNTMzOTU1OTQEAAAAByRtYXRjaDAJAAP8AAAABAUAAAAOYXVjdGlvbkFkZHJlc3MCAAAADWdldFdpbm5lckluZm8JAARMAAAAAgUAAAAEbmFtZQUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFShJbnQsIFN0cmluZywgU3RyaW5nKQQAAAAKd2lubmVySW5mbwUAAAAHJG1hdGNoMAUAAAAKd2lubmVySW5mbwkAAAIAAAABAgAAAB9VbmV4cGVjdGVkIGdldFdpbm5lckluZm8gcmVzdWx0BAAAAA93aW5uZXJBdWN0aW9uSWQIBQAAAAskdDA1MzM5NTU5NAAAAAJfMQQAAAANd2lubmVyQWRkcmVzcwgFAAAACyR0MDUzMzk1NTk0AAAAAl8yBAAAAAp3aW5uZXJIYXNoCAUAAAALJHQwNTMzOTU1OTQAAAACXzMDCQEAAAACIT0AAAACBQAAAAljYWxsZXJTdHIFAAAADXdpbm5lckFkZHJlc3MJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPV2lubmVyIGFkZHJlc3MgBQAAAA13aW5uZXJBZGRyZXNzAgAAACFkb2Vzbid0IG1hdGNoIHdpdGggY2FsbGVyIGFkZHJlc3MFAAAACWNhbGxlclN0cgMDCQEAAAAQaXNSZWdpc3RlcmVkTmFtZQAAAAEFAAAABG5hbWUJAQAAAAEhAAAAAQkBAAAADWlzRXhwaXJlZE5hbWUAAAABBQAAAARuYW1lBwkAAAIAAAABAgAAABNOYW1lIGFscmVhZHkgaW4gdXNlBAAAAAtyZXNGaW5hbGl6ZQkAA/wAAAAEBQAAAA5hdWN0aW9uQWRkcmVzcwIAAAAOZmluYWxpemVPcmlnaW4JAARMAAAAAgUAAAAEbmFtZQUAAAADbmlsBQAAAANuaWwEAAAADmlzc3VlTmFtZVRva2VuCQAEQgAAAAUDCQAAZgAAAAIJAAExAAAAAQUAAAAEbmFtZQAAAAAAAAAAEAkAASwAAAACCQABLwAAAAIFAAAABG5hbWUAAAAAAAAAAA8CAAAAAX4JAAEvAAAAAgUAAAAEbmFtZQAAAAAAAAAAEAUAAAAEbmFtZQAAAAAAAAAAAQAAAAAAAAAAAAcEAAAAB3Rva2VuSWQJAAQ4AAAAAQUAAAAOaXNzdWVOYW1lVG9rZW4EAAAACHRva2VuU3RyCQAEsAAAAAEFAAAAB3Rva2VuSWQEAAAAEGlzc3VlQW5kUmVnaXN0ZXIJAARMAAAAAgUAAAAOaXNzdWVOYW1lVG9rZW4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleV9OYW1lX3Rva2VuAAAAAQUAAAAEbmFtZQUAAAAIdG9rZW5TdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleV9Ub2tlbl9uYW1lAAAAAQUAAAAIdG9rZW5TdHIFAAAABG5hbWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABJrZXlfTmFtZV9jcmVhdGVkQXQAAAABBQAAAARuYW1lCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEmtleV9OYW1lX2V4cGlyZXNBdAAAAAEFAAAABG5hbWUJAABkAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAAFm5hbWVFeHBpcmF0aW9uSW50ZXJ2YWwFAAAAA25pbAQAAAAXc2V0T3duZXJzaGlwQW5kVHJhbnNmZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleV9OYW1lX293bmVyAAAAAQUAAAAEbmFtZQUAAAAJY2FsbGVyU3RyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABmNhbGxlcgAAAAAAAAAAAQUAAAAHdG9rZW5JZAUAAAADbmlsCQAETgAAAAIFAAAAEGlzc3VlQW5kUmVnaXN0ZXIFAAAAF3NldE93bmVyc2hpcEFuZFRyYW5zZmVyAAAAA2ludgEAAAAQYXBwcm92ZU93bmVyc2hpcAAAAAEAAAAEbmFtZQQAAAAGY2FsbGVyCAUAAAADaW52AAAABmNhbGxlcgQAAAAJY2FsbGVyU3RyCQAEJQAAAAEFAAAABmNhbGxlcgQAAAAFb3duZXIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAAOa2V5X05hbWVfb3duZXIAAAABBQAAAARuYW1lAgAAABRPd25lciBpcyBub3QgZGVmaW5lZAQAAAAIdG9rZW5TdHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAAOa2V5X05hbWVfdG9rZW4AAAABBQAAAARuYW1lAgAAACBObyB0b2tlbiBpcyBpc3N1ZWQgZm9yIHRoaXMgbmFtZQQAAAAHdG9rZW5JZAkAAlkAAAABBQAAAAh0b2tlblN0cgQAAAAFdG9rZW4EAAAAByRtYXRjaDAJAAPsAAAAAQUAAAAHdG9rZW5JZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFQXNzZXQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAAQQ2FuJ3QgZmluZCBhc3NldAMJAAAAAAAAAgUAAAAJY2FsbGVyU3RyBQAAAAVvd25lcgkAAAIAAAABAgAAABlZb3UgYWxyZWFkeSBvd24gdGhpcyBuYW1lAwkBAAAAASEAAAABCQEAAAAQaXNSZWdpc3RlcmVkTmFtZQAAAAEFAAAABG5hbWUJAAACAAAAAQIAAAAWTmFtZSBpcyBub3QgcmVnaXN0ZXJlZAMJAQAAAA1pc0V4cGlyZWROYW1lAAAAAQUAAAAEbmFtZQkAAAIAAAABAgAAACNUaGUgcGVyaW9kIG9mIG93bmVyc2hpcCBoYXMgZXhwaXJlZAMJAAAAAAAAAgkAA/AAAAACBQAAAAZjYWxsZXIFAAAAB3Rva2VuSWQAAAAAAAAAAAAJAAACAAAAAQIAAAAcWW91IGRvbid0IGhhdmUgYSBuYW1lZCB0b2tlbgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5X05hbWVfb3duZXIAAAABBQAAAARuYW1lBQAAAAljYWxsZXJTdHIFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQAAAAMaW52b2tlU2NyaXB0BQAAAAckbWF0Y2gwBAAAAAskdDA3ODM1ODA4NgMDCQEAAAARaXNBdXRob3JpemVkUHJvb2YAAAABCAUAAAACdHgAAAAGcHJvb2ZzCQEAAAASaXNBdXRob3JpemVkSW52b2tlAAAAAQUAAAAMaW52b2tlU2NyaXB0BwkABRQAAAACCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEFAAAAE2F1dGhvcml6ZWRQdWJsaWNLZXkJAAUUAAAAAgkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BAAAAAVwcm9vZggFAAAACyR0MDc4MzU4MDg2AAAAAl8xBAAAAA9zZW5kZXJQdWJsaWNLZXkIBQAAAAskdDA3ODM1ODA4NgAAAAJfMgkACcQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzBQAAAAVwcm9vZgUAAAAPc2VuZGVyUHVibGljS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABBJc3N1ZVRyYW5zYWN0aW9uBAAAAAVpc3N1ZQUAAAAHJG1hdGNoMAQAAAALJHQwODIxNjg0NTkDAwkBAAAAEWlzQXV0aG9yaXplZFByb29mAAAAAQgFAAAAAnR4AAAABnByb29mcwkBAAAAEWlzQXV0aG9yaXplZElzc3VlAAAAAQUAAAAFaXNzdWUHCQAFFAAAAAIJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAATYXV0aG9yaXplZFB1YmxpY0tleQkABRQAAAACCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkEAAAABXByb29mCAUAAAALJHQwODIxNjg0NTkAAAACXzEEAAAAD3NlbmRlclB1YmxpY0tleQgFAAAACyR0MDgyMTY4NDU5AAAAAl8yCQAJxAAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMFAAAABXByb29mBQAAAA9zZW5kZXJQdWJsaWNLZXkEAAAABW90aGVyBQAAAAckbWF0Y2gwCQAJxgAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleTe1N2s=", "height": 2256090, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: F4zvHSVB5MFMyVqkPfJ8RqdyCiQNWyZNyyVws5jszYgH Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func getStringOrThrow (address,key) = valueOrErrorMessage(getString(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
5+
6+
7+func getIntegerOrThrow (address,key) = valueOrErrorMessage(getInteger(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
8+
9+
10+func parseAddressOrThrow (maybeAddress) = valueOrErrorMessage(addressFromString(maybeAddress), (("Can't parse address from '" + maybeAddress) + "'"))
11+
12+
13+func key_entity (name,pk,property) = ((((name + "_") + pk) + "_") + property)
14+
15+
16+func key_Token_name (tokenId) = key_entity("Token", tokenId, "name")
17+
18+
19+func key_Name_token (name) = key_entity("Name", name, "token")
20+
21+
22+func key_Name_owner (name) = key_entity("Name", name, "owner")
23+
24+
25+func key_Name_expiresAt (name) = key_entity("Name", name, "expiresAt")
26+
27+
28+func key_Name_createdAt (name) = key_entity("Name", name, "createdAt")
29+
30+
31+func key_Owner_name (address) = key_entity("Owner", address, "name")
32+
33+
34+let key_authorizedPublicKey = "authorizedPublicKey"
35+
36+let key_auctionAddress = "auctionAddress"
37+
38+let key_nameExpirationInterval = "nameExpirationInterval"
39+
40+let key_maxAuthorizedFee = "maxAuthorizedFee"
41+
42+let authorizedPublicKey = fromBase58String(getStringOrThrow(this, key_authorizedPublicKey))
43+
44+let authorizedAddress = addressFromPublicKey(authorizedPublicKey)
45+
46+let authorizedAddressStr = toString(authorizedAddress)
47+
48+let auctionAddressStr = getStringOrThrow(this, key_auctionAddress)
49+
50+let auctionAddress = parseAddressOrThrow(auctionAddressStr)
51+
52+let nameExpirationInterval = getIntegerOrThrow(this, key_nameExpirationInterval)
53+
54+let maxAuthorizedFee = getIntegerOrThrow(this, key_maxAuthorizedFee)
55+
56+func whoIs (name) = {
57+ let expiresAt = getIntegerOrThrow(this, key_Name_expiresAt(name))
58+ let token = getStringOrThrow(this, key_Name_token(name))
59+ let owner = getStringOrThrow(this, key_Name_owner(name))
60+ $Tuple3(owner, expiresAt, token)
61+ }
62+
63+
64+func isRegisteredToken (tokenId) = isDefined(getString(this, key_Token_name(tokenId)))
65+
66+
67+func isRegisteredName (name) = isDefined(getString(this, key_Name_token(name)))
68+
69+
70+func isExpiredName (name) = match getInteger(this, key_Name_expiresAt(name)) {
71+ case expiresAt: Int =>
72+ (expiresAt > lastBlock.timestamp)
73+ case _ =>
74+ false
75+}
76+
77+
78+func isAuthorizedProof (proofs) = if ((size(proofs) == 2))
79+ then (proofs[0] == base58'')
80+ else false
81+
82+
83+func isAuthorizedInvoke (tx) = {
84+ let dApp = addressFromRecipient(tx.dApp)
85+ let function = tx.function
86+ if (if (if ((dApp == this))
87+ then (function == "registerNameToken")
88+ else false)
89+ then (maxAuthorizedFee >= tx.fee)
90+ else false)
91+ then !(isDefined(tx.feeAssetId))
92+ else false
93+ }
94+
95+
96+func isAuthorizedIssue (tx) = if (if (if ((tx.decimals == 0))
97+ then (tx.quantity == 1)
98+ else false)
99+ then !(tx.reissuable)
100+ else false)
101+ then (maxAuthorizedFee >= tx.fee)
102+ else false
103+
104+
105+@Callable(inv)
106+func init (authorizedPublicKey,auctionAddress,nameExpirationInterval,maxAuthorizedFee) = if ((inv.caller != this))
107+ then throw("Permission denied")
108+ else [StringEntry(key_authorizedPublicKey, authorizedPublicKey), StringEntry(key_auctionAddress, auctionAddress), IntegerEntry(key_nameExpirationInterval, nameExpirationInterval), IntegerEntry(key_maxAuthorizedFee, maxAuthorizedFee)]
109+
110+
111+
112+@Callable(inv)
113+func registerNameToken (tokenId) = if ((inv.caller != this))
114+ then throw("Permission denied")
115+ else {
116+ let token = match assetInfo(fromBase58String(tokenId)) {
117+ case asset: Asset =>
118+ asset
119+ case _ =>
120+ throw("Can't find asset")
121+ }
122+ let firstChars = if ((lastIndexOf(token.name, "~") == 15))
123+ then 15
124+ else 16
125+ if ((token.issuer != this))
126+ then throw("Name token is not issued by the Registrar")
127+ else if ((take(token.name, firstChars) != take(token.description, firstChars)))
128+ then throw("Trimmed and full names do not match")
129+ else if (isRegisteredToken(tokenId))
130+ then throw("Token already in use")
131+ else if (if (isRegisteredName(token.description))
132+ then !(isExpiredName(token.description))
133+ else false)
134+ then throw("Name already in use")
135+ else [StringEntry(key_Name_token(token.description), tokenId), StringEntry(key_Token_name(tokenId), token.description), IntegerEntry(key_Name_createdAt(token.description), lastBlock.timestamp), IntegerEntry(key_Name_expiresAt(token.description), (lastBlock.timestamp + nameExpirationInterval))]
136+ }
137+
138+
139+
140+@Callable(inv)
141+func registerOwnership (name) = {
142+ let caller = inv.caller
143+ let callerStr = toString(caller)
144+ let $t053395594 = match invoke(auctionAddress, "getWinnerInfo", [name], nil) {
145+ case winnerInfo: (Int, String, String) =>
146+ winnerInfo
147+ case _ =>
148+ throw("Unexpected getWinnerInfo result")
149+ }
150+ let winnerAuctionId = $t053395594._1
151+ let winnerAddress = $t053395594._2
152+ let winnerHash = $t053395594._3
153+ if ((callerStr != winnerAddress))
154+ then throw(((("Winner address " + winnerAddress) + "doesn't match with caller address") + callerStr))
155+ else if (if (isRegisteredName(name))
156+ then !(isExpiredName(name))
157+ else false)
158+ then throw("Name already in use")
159+ else {
160+ let resFinalize = invoke(auctionAddress, "finalizeOrigin", [name], nil)
161+ let issueNameToken = Issue(if ((size(name) > 16))
162+ then (take(name, 15) + "~")
163+ else take(name, 16), name, 1, 0, false)
164+ let tokenId = calculateAssetId(issueNameToken)
165+ let tokenStr = toUtf8String(tokenId)
166+ let issueAndRegister = [issueNameToken, StringEntry(key_Name_token(name), tokenStr), StringEntry(key_Token_name(tokenStr), name), IntegerEntry(key_Name_createdAt(name), lastBlock.timestamp), IntegerEntry(key_Name_expiresAt(name), (lastBlock.timestamp + nameExpirationInterval))]
167+ let setOwnershipAndTransfer = [StringEntry(key_Name_owner(name), callerStr), ScriptTransfer(caller, 1, tokenId)]
168+ (issueAndRegister ++ setOwnershipAndTransfer)
169+ }
170+ }
171+
172+
173+
174+@Callable(inv)
175+func approveOwnership (name) = {
176+ let caller = inv.caller
177+ let callerStr = toString(caller)
178+ let owner = valueOrErrorMessage(getString(this, key_Name_owner(name)), "Owner is not defined")
179+ let tokenStr = valueOrErrorMessage(getString(this, key_Name_token(name)), "No token is issued for this name")
180+ let tokenId = fromBase58String(tokenStr)
181+ let token = match assetInfo(tokenId) {
182+ case a: Asset =>
183+ a
184+ case _ =>
185+ throw("Can't find asset")
186+ }
187+ if ((callerStr == owner))
188+ then throw("You already own this name")
189+ else if (!(isRegisteredName(name)))
190+ then throw("Name is not registered")
191+ else if (isExpiredName(name))
192+ then throw("The period of ownership has expired")
193+ else if ((assetBalance(caller, tokenId) == 0))
194+ then throw("You don't have a named token")
195+ else [StringEntry(key_Name_owner(name), callerStr)]
196+ }
197+
198+
199+@Verifier(tx)
200+func verify () = match tx {
201+ case invokeScript: InvokeScriptTransaction =>
202+ let $t078358086 = if (if (isAuthorizedProof(tx.proofs))
203+ then isAuthorizedInvoke(invokeScript)
204+ else false)
205+ then $Tuple2(tx.proofs[1], authorizedPublicKey)
206+ else $Tuple2(tx.proofs[0], tx.senderPublicKey)
207+ let proof = $t078358086._1
208+ let senderPublicKey = $t078358086._2
209+ sigVerify_8Kb(tx.bodyBytes, proof, senderPublicKey)
210+ case issue: IssueTransaction =>
211+ let $t082168459 = if (if (isAuthorizedProof(tx.proofs))
212+ then isAuthorizedIssue(issue)
213+ else false)
214+ then $Tuple2(tx.proofs[1], authorizedPublicKey)
215+ else $Tuple2(tx.proofs[0], tx.senderPublicKey)
216+ let proof = $t082168459._1
217+ let senderPublicKey = $t082168459._2
218+ sigVerify_8Kb(tx.bodyBytes, proof, senderPublicKey)
219+ case other =>
220+ sigVerify_32Kb(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
221+}
222+

github/deemru/w8io/873ac7e 
33.23 ms