tx · 52UDy65RNS29aikC2CuuPbHQjnq13HFAUit4vngCNody

3N91zFrRoofbPpkoDbWKrQsQSdLu2EgLL8c:  -0.01000000 Waves

2023.09.27 14:50 [2773775] smart account 3N91zFrRoofbPpkoDbWKrQsQSdLu2EgLL8c > SELF 0.00000000 Waves

{ "type": 13, "id": "52UDy65RNS29aikC2CuuPbHQjnq13HFAUit4vngCNody", "fee": 1000000, "feeAssetId": null, "timestamp": 1695815422992, "version": 2, "chainId": 84, "sender": "3N91zFrRoofbPpkoDbWKrQsQSdLu2EgLL8c", "senderPublicKey": "5FyjUYCR5Q8jvG6ri6Ysz574HerUK6r1LJzzQ7DvSkLk", "proofs": [ "FxvNzVz3QYcBjTR6CzvMnuVgBABkFzg3cEHQbfceHZbGd1Muo8iDuzbEbA3XQrFzVxtKFRtbpcUHaeFwb5WFfjk" ], "script": "base64:BgISCAISBgoEAgICARIAEgQKAggCFAAJc2VwYXJhdG9yAgJfXwELbXVzdEFkZHJlc3MCAWkHYWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFB2FkZHJlc3MGCQEFdGhyb3cAAQhtdXN0VGhpcwEBaQkBC211c3RBZGRyZXNzAgUBaQUEdGhpcwARa1NlcnZpY2VQdWJsaWNLZXkCFCVzX19zZXJ2aWNlUHVibGljS2V5AA1rQm90UHVibGljS2V5AhAlc19fYm90UHVibGljS2V5ABFrRmFjdG9yeVB1YmxpY0tleQIUJXNfX2ZhY3RvcnlQdWJsaWNLZXkAD2tPd25lclB1YmxpY0tleQISJXNfX293bmVyUHVibGljS2V5ABFrQ3JlYXRvclB1YmxpY0tleQIUJXNfX2NyZWF0b3JQdWJsaWNLZXkAEmtBY2NvdW50U2NyaXB0SGFzaAIVJXNfX2FjY291bnRTY3JpcHRIYXNoARFhY2NvdW50U2NyaXB0SGFzaAAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnAgCBQR0aGlzBRJrQWNjb3VudFNjcmlwdEhhc2gCHmFjY291bnQgc2NyaXB0IGhhc2ggaXMgbm90IHNldAAIa0NvdW50ZXICCyVzX19jb3VudGVyAQdjb3VudGVyAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQhrQ291bnRlcgAAAA1rUmV3YXJkQW1vdW50AhAlc19fcmV3YXJkQW1vdW50AQxyZXdhcmRBbW91bnQACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUNa1Jld2FyZEFtb3VudAIYcmV3YXJkIGFtb3VudCBpcyBub3Qgc2V0ARFrUmVxdWVzdENvbXBsZXRlZAEJcmVxdWVzdElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCBQlyZXF1ZXN0SWQJAMwIAgIJY29tcGxldGVkBQNuaWwFCXNlcGFyYXRvcgEQcmVxdWVzdENvbXBsZXRlZAEJcmVxdWVzdElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJsIAgUEdGhpcwkBEWtSZXF1ZXN0Q29tcGxldGVkAQUJcmVxdWVzdElkAhRyZXF1ZXN0IGlzIG5vdCBmb3VuZAENa1JlcXVlc3RPd25lcgEJcmVxdWVzdElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCBQlyZXF1ZXN0SWQJAMwIAgIFb3duZXIFA25pbAUJc2VwYXJhdG9yAQxyZXF1ZXN0T3duZXIBCXJlcXVlc3RJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFBHRoaXMJAQ1rUmVxdWVzdE93bmVyAQUJcmVxdWVzdElkAhRyZXF1ZXN0IGlzIG5vdCBmb3VuZAAOc2VydmljZUFkZHJlc3MJAKcIAQkBEUBleHRyTmF0aXZlKDEwNTIpAgUEdGhpcwURa1NlcnZpY2VQdWJsaWNLZXkADGJvdFB1YmxpY0tleQkBEUBleHRyTmF0aXZlKDEwNTIpAgUEdGhpcwUNa0JvdFB1YmxpY0tleQMBaQEEaW5pdAQQc2VydmljZVB1YmxpY0tleQxib3RQdWJsaWNLZXkRYWNjb3VudFNjcmlwdEhhc2gMcmV3YXJkQW1vdW50BAtjaGVja0NhbGxlcgkBCG11c3RUaGlzAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAJQKAgkAzAgCCQELQmluYXJ5RW50cnkCBRFrU2VydmljZVB1YmxpY0tleQUQc2VydmljZVB1YmxpY0tleQkAzAgCCQELQmluYXJ5RW50cnkCBQ1rQm90UHVibGljS2V5BQxib3RQdWJsaWNLZXkJAMwIAgkBC0JpbmFyeUVudHJ5AgUSa0FjY291bnRTY3JpcHRIYXNoBRFhY2NvdW50U2NyaXB0SGFzaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa1Jld2FyZEFtb3VudAUMcmV3YXJkQW1vdW50BQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHcmVxdWVzdAAEBmNoZWNrcwkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAAIBAhUxIHBheW1lbnQgaXMgcmVxdWlyZWQJAMwIAgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQGCQACAQINaW52YWxpZCBhc3NldAkAzAgCAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQEMcmV3YXJkQW1vdW50AAYJAAIBAg5pbnZhbGlkIGFtb3VudAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAlyZXF1ZXN0SWQJANgEAQkA9wMBCQDLAQIICAUBaQZjYWxsZXIFYnl0ZXMJAJoDAQkBB2NvdW50ZXIACQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJARFrUmVxdWVzdENvbXBsZXRlZAEFCXJlcXVlc3RJZAcJAMwIAgkBC0JpbmFyeUVudHJ5AgkBDWtSZXF1ZXN0T3duZXIBBQlyZXF1ZXN0SWQIBQFpD2NhbGxlclB1YmxpY0tleQkAzAgCCQEMSW50ZWdlckVudHJ5AgUIa0NvdW50ZXIJAGQCCQEHY291bnRlcgAAAQUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGNvbXBsZXRlAglyZXF1ZXN0SWQQYWNjb3VudFB1YmxpY0tleQQOYWNjb3VudEFkZHJlc3MJAKcIAQUQYWNjb3VudFB1YmxpY0tleQQGY2hlY2tzCQDMCAIDCQEBIQEJARByZXF1ZXN0Q29tcGxldGVkAQUJcmVxdWVzdElkBgkAAgECHHJlcXVlc3QgaXMgYWxyZWFkeSBjb21wbGV0ZWQJAMwIAgMJAAACCQDxBwEFDmFjY291bnRBZGRyZXNzCQERYWNjb3VudFNjcmlwdEhhc2gABgkAAgECDmludmFsaWQgc2NyaXB0CQDMCAIDBAckbWF0Y2gwCQCcCAIFDmFjY291bnRBZGRyZXNzBRFrRmFjdG9yeVB1YmxpY0tleQMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQAAAgkApwgBBQFiBQR0aGlzBwYJAAIBAhppbnZhbGlkIGZhY3RvcnkgcHVibGljIGtleQkAzAgCAwQHJG1hdGNoMAkAnAgCBQ5hY2NvdW50QWRkcmVzcwUPa093bmVyUHVibGljS2V5AwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJAAACBQFiCQEMcmVxdWVzdE93bmVyAQUJcmVxdWVzdElkBwYJAAIBAhhpbnZhbGlkIG93bmVyIHB1YmxpYyBrZXkFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQQY3JlYXRvclB1YmxpY0tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCcCAIFDmFjY291bnRBZGRyZXNzBRFrQ3JlYXRvclB1YmxpY0tleQIdY3JlYXRvciBwdWJsaWMga2V5IGlzIG5vdCBzZXQEDmNyZWF0b3JBZGRyZXNzCQCnCAEFEGNyZWF0b3JQdWJsaWNLZXkEBnJlc3VsdAkA/AcEBQ5hY2NvdW50QWRkcmVzcwIHYXBwcm92ZQUDbmlsBQNuaWwJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBEWtSZXF1ZXN0Q29tcGxldGVkAQUJcmVxdWVzdElkBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5jcmVhdG9yQWRkcmVzcwkBDHJld2FyZEFtb3VudAAFBHVuaXQFA25pbAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAGCbYJo=", "height": 2773775, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FVzZgwHLVW79Tz8ymrpPrZEWTi3PNoEiLXGj43m5aiGD Next: 4veqf1rKZj98VkW5eHW4Xpq45bP1axVAgNLFxRCMHqDy Diff:
OldNewDifferences
8383
8484 @Callable(i)
8585 func complete (requestId,accountPublicKey) = {
86+ let accountAddress = addressFromPublicKey(accountPublicKey)
8687 let checks = [if (!(requestCompleted(requestId)))
8788 then true
88- else throw("request is already completed"), if ((scriptHash(i.caller) == accountScriptHash()))
89+ else throw("request is already completed"), if ((scriptHash(accountAddress) == accountScriptHash()))
8990 then true
90- else throw("invalid script"), if ( match getBinary(i.caller, kFactoryPublicKey) {
91+ else throw("invalid script"), if ( match getBinary(accountAddress, kFactoryPublicKey) {
9192 case b: ByteVector =>
9293 (addressFromPublicKey(b) == this)
9394 case _ =>
9495 false
9596 })
9697 then true
97- else throw("invalid factory public key"), if ( match getBinary(i.caller, kOwnerPublicKey) {
98+ else throw("invalid factory public key"), if ( match getBinary(accountAddress, kOwnerPublicKey) {
9899 case b: ByteVector =>
99100 (b == requestOwner(requestId))
100101 case _ =>
104105 else throw("invalid owner public key")]
105106 if ((checks == checks))
106107 then {
107- let accountAddress = addressFromPublicKey(accountPublicKey)
108108 let creatorPublicKey = valueOrErrorMessage(getBinary(accountAddress, kCreatorPublicKey), "creator public key is not set")
109109 let creatorAddress = addressFromPublicKey(creatorPublicKey)
110110 let result = invoke(accountAddress, "approve", nil, nil)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "__"
55
66 func mustAddress (i,address) = if ((i.caller == address))
77 then true
88 else throw()
99
1010
1111 func mustThis (i) = mustAddress(i, this)
1212
1313
1414 let kServicePublicKey = "%s__servicePublicKey"
1515
1616 let kBotPublicKey = "%s__botPublicKey"
1717
1818 let kFactoryPublicKey = "%s__factoryPublicKey"
1919
2020 let kOwnerPublicKey = "%s__ownerPublicKey"
2121
2222 let kCreatorPublicKey = "%s__creatorPublicKey"
2323
2424 let kAccountScriptHash = "%s__accountScriptHash"
2525
2626 func accountScriptHash () = valueOrErrorMessage(getBinary(this, kAccountScriptHash), "account script hash is not set")
2727
2828
2929 let kCounter = "%s__counter"
3030
3131 func counter () = valueOrElse(getInteger(this, kCounter), 0)
3232
3333
3434 let kRewardAmount = "%s__rewardAmount"
3535
3636 func rewardAmount () = valueOrErrorMessage(getInteger(this, kRewardAmount), "reward amount is not set")
3737
3838
3939 func kRequestCompleted (requestId) = makeString(["%s%s", requestId, "completed"], separator)
4040
4141
4242 func requestCompleted (requestId) = valueOrErrorMessage(getBoolean(this, kRequestCompleted(requestId)), "request is not found")
4343
4444
4545 func kRequestOwner (requestId) = makeString(["%s%s", requestId, "owner"], separator)
4646
4747
4848 func requestOwner (requestId) = valueOrErrorMessage(getBinary(this, kRequestOwner(requestId)), "request is not found")
4949
5050
5151 let serviceAddress = addressFromPublicKey(getBinaryValue(this, kServicePublicKey))
5252
5353 let botPublicKey = getBinaryValue(this, kBotPublicKey)
5454
5555 @Callable(i)
5656 func init (servicePublicKey,botPublicKey,accountScriptHash,rewardAmount) = {
5757 let checkCaller = mustThis(i)
5858 if ((checkCaller == checkCaller))
5959 then $Tuple2([BinaryEntry(kServicePublicKey, servicePublicKey), BinaryEntry(kBotPublicKey, botPublicKey), BinaryEntry(kAccountScriptHash, accountScriptHash), IntegerEntry(kRewardAmount, rewardAmount)], unit)
6060 else throw("Strict value is not equal to itself.")
6161 }
6262
6363
6464
6565 @Callable(i)
6666 func request () = {
6767 let checks = [if ((size(i.payments) == 1))
6868 then true
6969 else throw("1 payment is required"), if ((i.payments[0].assetId == unit))
7070 then true
7171 else throw("invalid asset"), if ((i.payments[0].amount == rewardAmount()))
7272 then true
7373 else throw("invalid amount")]
7474 if ((checks == checks))
7575 then {
7676 let requestId = toBase58String(sha256((i.caller.bytes + toBytes(counter()))))
7777 $Tuple2([BooleanEntry(kRequestCompleted(requestId), false), BinaryEntry(kRequestOwner(requestId), i.callerPublicKey), IntegerEntry(kCounter, (counter() + 1))], unit)
7878 }
7979 else throw("Strict value is not equal to itself.")
8080 }
8181
8282
8383
8484 @Callable(i)
8585 func complete (requestId,accountPublicKey) = {
86+ let accountAddress = addressFromPublicKey(accountPublicKey)
8687 let checks = [if (!(requestCompleted(requestId)))
8788 then true
88- else throw("request is already completed"), if ((scriptHash(i.caller) == accountScriptHash()))
89+ else throw("request is already completed"), if ((scriptHash(accountAddress) == accountScriptHash()))
8990 then true
90- else throw("invalid script"), if ( match getBinary(i.caller, kFactoryPublicKey) {
91+ else throw("invalid script"), if ( match getBinary(accountAddress, kFactoryPublicKey) {
9192 case b: ByteVector =>
9293 (addressFromPublicKey(b) == this)
9394 case _ =>
9495 false
9596 })
9697 then true
97- else throw("invalid factory public key"), if ( match getBinary(i.caller, kOwnerPublicKey) {
98+ else throw("invalid factory public key"), if ( match getBinary(accountAddress, kOwnerPublicKey) {
9899 case b: ByteVector =>
99100 (b == requestOwner(requestId))
100101 case _ =>
101102 false
102103 })
103104 then true
104105 else throw("invalid owner public key")]
105106 if ((checks == checks))
106107 then {
107- let accountAddress = addressFromPublicKey(accountPublicKey)
108108 let creatorPublicKey = valueOrErrorMessage(getBinary(accountAddress, kCreatorPublicKey), "creator public key is not set")
109109 let creatorAddress = addressFromPublicKey(creatorPublicKey)
110110 let result = invoke(accountAddress, "approve", nil, nil)
111111 $Tuple2([BooleanEntry(kRequestCompleted(requestId), true), ScriptTransfer(creatorAddress, rewardAmount(), unit)], result)
112112 }
113113 else throw("Strict value is not equal to itself.")
114114 }
115115
116116

github/deemru/w8io/873ac7e 
56.34 ms