tx · BjiEgx7v1bhLqrqYGr3brGLg5w2yUMxdbvMWZzd6oj9C

3NA73oUXjqp7SpudXWV1yMFuKm9awPbqsVz:  -0.00600000 Waves

2022.10.04 13:42 [2257482] smart account 3NA73oUXjqp7SpudXWV1yMFuKm9awPbqsVz > SELF 0.00000000 Waves

{ "type": 13, "id": "BjiEgx7v1bhLqrqYGr3brGLg5w2yUMxdbvMWZzd6oj9C", "fee": 600000, "feeAssetId": null, "timestamp": 1664880197208, "version": 2, "chainId": 84, "sender": "3NA73oUXjqp7SpudXWV1yMFuKm9awPbqsVz", "senderPublicKey": "2mHW72YTfnxJ1M8WsdUQjgpp3a2SUbt9mbAiePGiuJok", "proofs": [ "37enPYh9WWBhzMG72uEgqWAWDJofosGke5LicDpeK5bFN2MtssvcYkLox1L7cfRYXBYjnTc4WFzXjoGxeBQf4Bws" ], "script": "base64:AAIFAAAAAAAAABIIAhIECgIIARIDCgEIEgMKAQgAAAAVAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAMQ2FuJ3QgcmVhZCAnBQAAAANrZXkCAAAADScgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAAHYWRkcmVzcwEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAxDYW4ndCByZWFkICcFAAAAA2tleQIAAAANJyBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAdhZGRyZXNzAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQAAAAxtYXliZUFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAAxtYXliZUFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABpDYW4ndCBwYXJzZSBhZGRyZXNzIGZyb20gJwUAAAAMbWF5YmVBZGRyZXNzAgAAAAEnAQAAAAprZXlfZW50aXR5AAAAAwAAAARuYW1lAAAAAnBrAAAACHByb3BlcnR5CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABG5hbWUCAAAAAV8FAAAAAnBrAgAAAAFfBQAAAAhwcm9wZXJ0eQEAAAAOa2V5X1Rva2VuX25hbWUAAAABAAAAB3Rva2VuSWQJAQAAAAprZXlfZW50aXR5AAAAAwIAAAAFVG9rZW4FAAAAB3Rva2VuSWQCAAAABG5hbWUBAAAADmtleV9OYW1lX3Rva2VuAAAAAQAAAARuYW1lCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABE5hbWUFAAAABG5hbWUCAAAABXRva2VuAQAAAA5rZXlfTmFtZV9vd25lcgAAAAEAAAAEbmFtZQkBAAAACmtleV9lbnRpdHkAAAADAgAAAAROYW1lBQAAAARuYW1lAgAAAAVvd25lcgEAAAASa2V5X05hbWVfZXhwaXJlc0F0AAAAAQAAAARuYW1lCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABE5hbWUFAAAABG5hbWUCAAAACWV4cGlyZXNBdAEAAAASa2V5X05hbWVfY3JlYXRlZEF0AAAAAQAAAARuYW1lCQEAAAAKa2V5X2VudGl0eQAAAAMCAAAABE5hbWUFAAAABG5hbWUCAAAACWNyZWF0ZWRBdAEAAAAOa2V5X093bmVyX25hbWUAAAABAAAAB2FkZHJlc3MJAQAAAAprZXlfZW50aXR5AAAAAwIAAAAFT3duZXIFAAAAB2FkZHJlc3MCAAAABG5hbWUAAAAAEmtleV9hdWN0aW9uQWRkcmVzcwIAAAAOYXVjdGlvbkFkZHJlc3MAAAAAGmtleV9uYW1lRXhwaXJhdGlvbkludGVydmFsAgAAABZuYW1lRXhwaXJhdGlvbkludGVydmFsAAAAABRrZXlfbWF4QXV0aG9yaXplZEZlZQIAAAAQbWF4QXV0aG9yaXplZEZlZQAAAAAOYXVjdGlvbkFkZHJlc3MJAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgUAAAAEdGhpcwUAAAASa2V5X2F1Y3Rpb25BZGRyZXNzAAAAAAdhdWN0aW9uCQEAAAATcGFyc2VBZGRyZXNzT3JUaHJvdwAAAAEFAAAADmF1Y3Rpb25BZGRyZXNzAAAAABZuYW1lRXhwaXJhdGlvbkludGVydmFsCQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAABprZXlfbmFtZUV4cGlyYXRpb25JbnRlcnZhbAAAAAAQbWF4QXV0aG9yaXplZEZlZQkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAUa2V5X21heEF1dGhvcml6ZWRGZWUBAAAABXdob0lzAAAAAQAAAARuYW1lBAAAAAlleHBpcmVzQXQJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMJAQAAABJrZXlfTmFtZV9leHBpcmVzQXQAAAABBQAAAARuYW1lBAAAAAV0b2tlbgkBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACBQAAAAR0aGlzCQEAAAAOa2V5X05hbWVfdG9rZW4AAAABBQAAAARuYW1lBAAAAAVvd25lcgkBAAAAEGdldFN0cmluZ09yVGhyb3cAAAACBQAAAAR0aGlzCQEAAAAOa2V5X05hbWVfb3duZXIAAAABBQAAAARuYW1lCQAFFQAAAAMFAAAABW93bmVyBQAAAAlleHBpcmVzQXQFAAAABXRva2VuAQAAABFpc1JlZ2lzdGVyZWRUb2tlbgAAAAEAAAAHdG9rZW5JZAkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwkBAAAADmtleV9Ub2tlbl9uYW1lAAAAAQUAAAAHdG9rZW5JZAEAAAAQaXNSZWdpc3RlcmVkTmFtZQAAAAEAAAAEbmFtZQkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwkBAAAADmtleV9OYW1lX3Rva2VuAAAAAQUAAAAEbmFtZQEAAAANaXNFeHBpcmVkTmFtZQAAAAEAAAAEbmFtZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQEAAAASa2V5X05hbWVfZXhwaXJlc0F0AAAAAQUAAAAEbmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAlleHBpcmVzQXQFAAAAByRtYXRjaDAJAABmAAAAAgUAAAAJZXhwaXJlc0F0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAcAAAADAAAAA2ludgEAAAAEaW5pdAAAAAIAAAAOYXVjdGlvbkFkZHJlc3MAAAAWbmFtZUV4cGlyYXRpb25JbnRlcnZhbAMJAQAAAAIhPQAAAAIIBQAAAANpbnYAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAEVBlcm1pc3Npb24gZGVuaWVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEmtleV9hdWN0aW9uQWRkcmVzcwUAAAAOYXVjdGlvbkFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGmtleV9uYW1lRXhwaXJhdGlvbkludGVydmFsBQAAABZuYW1lRXhwaXJhdGlvbkludGVydmFsBQAAAANuaWwAAAADaW52AQAAABFyZWdpc3Rl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", "height": 2257482, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7t2Vamk4e2H7z63HUMy2u8CyfzM9MrZ5szFMUjqaXsPG Next: BAdaQGgqqyGcP16g8okMXKSeEMgLd7ktKQri45EKjzQF Diff:
OldNewDifferences
3737
3838 let key_maxAuthorizedFee = "maxAuthorizedFee"
3939
40-let auctionAddressStr = getStringOrThrow(this, key_auctionAddress)
40+let auctionAddress = getStringOrThrow(this, key_auctionAddress)
4141
42-let auctionAddress = parseAddressOrThrow(auctionAddressStr)
42+let auction = parseAddressOrThrow(auctionAddress)
4343
4444 let nameExpirationInterval = getIntegerOrThrow(this, key_nameExpirationInterval)
4545
7878 func registerOwnership (name) = {
7979 let caller = inv.caller
8080 let callerStr = toString(caller)
81- let $t028363091 = match invoke(auctionAddress, "getWinnerInfo", [name], nil) {
81+ let $t028233071 = match invoke(auction, "getWinnerInfo", [name], nil) {
8282 case winnerInfo: (Int, String, String) =>
8383 winnerInfo
8484 case _ =>
8585 throw("Unexpected getWinnerInfo result")
8686 }
87- let winnerAuctionId = $t028363091._1
88- let winnerAddress = $t028363091._2
89- let winnerHash = $t028363091._3
87+ let winnerAuctionId = $t028233071._1
88+ let winnerAddress = $t028233071._2
89+ let winnerHash = $t028233071._3
90+ let auctionEnd = match invoke(auction, "getAuctionById", [winnerAuctionId], nil) {
91+ case info: (Int, String, Int, Int, Int) =>
92+ info._5
93+ case _ =>
94+ throw("Unsupported result format (getAuctionById)")
95+ }
9096 if ((callerStr != winnerAddress))
9197 then throw(((("Winner address " + winnerAddress) + "doesn't match with caller address") + callerStr))
9298 else if (if (isRegisteredName(name))
99105 else take(name, 16), name, 1, 0, false)
100106 let tokenId = calculateAssetId(issueNameToken)
101107 let tokenStr = toBase58String(tokenId)
102- 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))]
108+ let issueAndRegister = [issueNameToken, StringEntry(key_Name_token(name), tokenStr), StringEntry(key_Token_name(tokenStr), name), IntegerEntry(key_Name_createdAt(name), auctionEnd), IntegerEntry(key_Name_expiresAt(name), (auctionEnd + nameExpirationInterval))]
103109 let setOwnershipAndTransfer = [StringEntry(key_Name_owner(name), callerStr), ScriptTransfer(caller, 1, tokenId)]
104110 (issueAndRegister ++ setOwnershipAndTransfer)
105111 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getStringOrThrow (address,key) = valueOrErrorMessage(getString(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
55
66
77 func getIntegerOrThrow (address,key) = valueOrErrorMessage(getInteger(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
88
99
1010 func parseAddressOrThrow (maybeAddress) = valueOrErrorMessage(addressFromString(maybeAddress), (("Can't parse address from '" + maybeAddress) + "'"))
1111
1212
1313 func key_entity (name,pk,property) = ((((name + "_") + pk) + "_") + property)
1414
1515
1616 func key_Token_name (tokenId) = key_entity("Token", tokenId, "name")
1717
1818
1919 func key_Name_token (name) = key_entity("Name", name, "token")
2020
2121
2222 func key_Name_owner (name) = key_entity("Name", name, "owner")
2323
2424
2525 func key_Name_expiresAt (name) = key_entity("Name", name, "expiresAt")
2626
2727
2828 func key_Name_createdAt (name) = key_entity("Name", name, "createdAt")
2929
3030
3131 func key_Owner_name (address) = key_entity("Owner", address, "name")
3232
3333
3434 let key_auctionAddress = "auctionAddress"
3535
3636 let key_nameExpirationInterval = "nameExpirationInterval"
3737
3838 let key_maxAuthorizedFee = "maxAuthorizedFee"
3939
40-let auctionAddressStr = getStringOrThrow(this, key_auctionAddress)
40+let auctionAddress = getStringOrThrow(this, key_auctionAddress)
4141
42-let auctionAddress = parseAddressOrThrow(auctionAddressStr)
42+let auction = parseAddressOrThrow(auctionAddress)
4343
4444 let nameExpirationInterval = getIntegerOrThrow(this, key_nameExpirationInterval)
4545
4646 let maxAuthorizedFee = getIntegerOrThrow(this, key_maxAuthorizedFee)
4747
4848 func whoIs (name) = {
4949 let expiresAt = getIntegerOrThrow(this, key_Name_expiresAt(name))
5050 let token = getStringOrThrow(this, key_Name_token(name))
5151 let owner = getStringOrThrow(this, key_Name_owner(name))
5252 $Tuple3(owner, expiresAt, token)
5353 }
5454
5555
5656 func isRegisteredToken (tokenId) = isDefined(getString(this, key_Token_name(tokenId)))
5757
5858
5959 func isRegisteredName (name) = isDefined(getString(this, key_Name_token(name)))
6060
6161
6262 func isExpiredName (name) = match getInteger(this, key_Name_expiresAt(name)) {
6363 case expiresAt: Int =>
6464 (expiresAt > lastBlock.timestamp)
6565 case _ =>
6666 false
6767 }
6868
6969
7070 @Callable(inv)
7171 func init (auctionAddress,nameExpirationInterval) = if ((inv.caller != this))
7272 then throw("Permission denied")
7373 else [StringEntry(key_auctionAddress, auctionAddress), IntegerEntry(key_nameExpirationInterval, nameExpirationInterval)]
7474
7575
7676
7777 @Callable(inv)
7878 func registerOwnership (name) = {
7979 let caller = inv.caller
8080 let callerStr = toString(caller)
81- let $t028363091 = match invoke(auctionAddress, "getWinnerInfo", [name], nil) {
81+ let $t028233071 = match invoke(auction, "getWinnerInfo", [name], nil) {
8282 case winnerInfo: (Int, String, String) =>
8383 winnerInfo
8484 case _ =>
8585 throw("Unexpected getWinnerInfo result")
8686 }
87- let winnerAuctionId = $t028363091._1
88- let winnerAddress = $t028363091._2
89- let winnerHash = $t028363091._3
87+ let winnerAuctionId = $t028233071._1
88+ let winnerAddress = $t028233071._2
89+ let winnerHash = $t028233071._3
90+ let auctionEnd = match invoke(auction, "getAuctionById", [winnerAuctionId], nil) {
91+ case info: (Int, String, Int, Int, Int) =>
92+ info._5
93+ case _ =>
94+ throw("Unsupported result format (getAuctionById)")
95+ }
9096 if ((callerStr != winnerAddress))
9197 then throw(((("Winner address " + winnerAddress) + "doesn't match with caller address") + callerStr))
9298 else if (if (isRegisteredName(name))
9399 then !(isExpiredName(name))
94100 else false)
95101 then throw("Name already in use")
96102 else {
97103 let issueNameToken = Issue(if ((size(name) > 16))
98104 then (take(name, 15) + "~")
99105 else take(name, 16), name, 1, 0, false)
100106 let tokenId = calculateAssetId(issueNameToken)
101107 let tokenStr = toBase58String(tokenId)
102- 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))]
108+ let issueAndRegister = [issueNameToken, StringEntry(key_Name_token(name), tokenStr), StringEntry(key_Token_name(tokenStr), name), IntegerEntry(key_Name_createdAt(name), auctionEnd), IntegerEntry(key_Name_expiresAt(name), (auctionEnd + nameExpirationInterval))]
103109 let setOwnershipAndTransfer = [StringEntry(key_Name_owner(name), callerStr), ScriptTransfer(caller, 1, tokenId)]
104110 (issueAndRegister ++ setOwnershipAndTransfer)
105111 }
106112 }
107113
108114
109115
110116 @Callable(inv)
111117 func approveOwnership (name) = {
112118 let caller = inv.caller
113119 let callerStr = toString(caller)
114120 let owner = valueOrErrorMessage(getString(this, key_Name_owner(name)), "Owner is not defined")
115121 let tokenStr = valueOrErrorMessage(getString(this, key_Name_token(name)), "No token is issued for this name")
116122 let tokenId = fromBase58String(tokenStr)
117123 let token = match assetInfo(tokenId) {
118124 case a: Asset =>
119125 a
120126 case _ =>
121127 throw("Can't find asset")
122128 }
123129 if ((callerStr == owner))
124130 then throw("You already own this name")
125131 else if (!(isRegisteredName(name)))
126132 then throw("Name is not registered")
127133 else if (isExpiredName(name))
128134 then throw("The period of ownership has expired")
129135 else if ((assetBalance(caller, tokenId) == 0))
130136 then throw("You don't have a named token")
131137 else [StringEntry(key_Name_owner(name), callerStr)]
132138 }
133139
134140

github/deemru/w8io/3ef1775 
115.91 ms