tx · AdfbHKt54m7jJkCh6ENyEiKLWa8SScd7MzWRjYxA5QsR

3MuQJ2by8GXusfNAEdX1jYW2WMQbjVzwxzX:  -0.01000000 Waves

2023.09.27 14:41 [2773766] smart account 3MuQJ2by8GXusfNAEdX1jYW2WMQbjVzwxzX > SELF 0.00000000 Waves

{ "type": 13, "id": "AdfbHKt54m7jJkCh6ENyEiKLWa8SScd7MzWRjYxA5QsR", "fee": 1000000, "feeAssetId": null, "timestamp": 1695814938123, "version": 2, "chainId": 84, "sender": "3MuQJ2by8GXusfNAEdX1jYW2WMQbjVzwxzX", "senderPublicKey": "DCZ3si1pk7A23sVSwzZtghP1jZR2YyYEH2WaMxvELct9", "proofs": [ "5dpEoVXuBy2AN6H47BvzbxHu25E16KKoUm5x1jsZ2jxe8PjsDkHqwRr23rkKCDB5owVe1vvMKioFFyahcuoByAfB" ], "script": "base64:BgIqCAISBAoCCAgSBAoCCAESBQoDAgECEgQKAgIBEgUKAwICAhIAEgQKAggYDwARa0ZhY3RvcnlQdWJsaWNLZXkCFCVzX19mYWN0b3J5UHVibGljS2V5ABFrU2VydmljZVB1YmxpY0tleQIUJXNfX3NlcnZpY2VQdWJsaWNLZXkAD2tPd25lclB1YmxpY0tleQISJXNfX293bmVyUHVibGljS2V5ABFrQ3JlYXRvclB1YmxpY0tleQIUJXNfX2NyZWF0b3JQdWJsaWNLZXkADWtCb3RQdWJsaWNLZXkCECVzX19ib3RQdWJsaWNLZXkACWtWZXJpZmllZAIMJXNfX3ZlcmlmaWVkAQh2ZXJpZmllZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUJa1ZlcmlmaWVkBwAOZmFjdG9yeUFkZHJlc3MJAKcIAQkBEUBleHRyTmF0aXZlKDEwNTIpAgUEdGhpcwURa0ZhY3RvcnlQdWJsaWNLZXkADnNlcnZpY2VBZGRyZXNzCQCnCAEJARFAZXh0ck5hdGl2ZSgxMDUyKQIFDmZhY3RvcnlBZGRyZXNzBRFrU2VydmljZVB1YmxpY0tleQAMb3duZXJBZGRyZXNzCQCnCAEJARFAZXh0ck5hdGl2ZSgxMDUyKQIFBHRoaXMFD2tPd25lclB1YmxpY0tleQELbXVzdEFkZHJlc3MCAWkHYWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFB2FkZHJlc3MGCQEFdGhyb3cAAQhtdXN0VGhpcwEBaQkBC211c3RBZGRyZXNzAgUBaQUEdGhpcwELbXVzdFNlcnZpY2UBAWkJAQttdXN0QWRkcmVzcwIFAWkFDnNlcnZpY2VBZGRyZXNzAQltdXN0T3duZXIBAWkJAQttdXN0QWRkcmVzcwIFAWkFDG93bmVyQWRkcmVzcwELbXVzdEZhY3RvcnkBAWkJAQttdXN0QWRkcmVzcwIFAWkFDmZhY3RvcnlBZGRyZXNzBwFpAQtzdHJpbmdFbnRyeQIDa2V5A3ZhbAMJAQttdXN0U2VydmljZQEFAWkJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsBQNrZXkJAJQKAgUDbmlsBQR1bml0AWkBDGludGVnZXJFbnRyeQIDa2V5A3ZhbAMJAQttdXN0U2VydmljZQEFAWkJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUDa2V5BQN2YWwFA25pbAUDa2V5CQCUCgIFA25pbAUEdW5pdAFpAQ10cmFuc2ZlckFzc2V0Aw5yZWNpcGllbnRCeXRlcwZhbW91bnQHYXNzZXRJZAMJAQttdXN0U2VydmljZQEFAWkJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFDnJlY2lwaWVudEJ5dGVzBQZhbW91bnQFB2Fzc2V0SWQFA25pbAUGYW1vdW50CQCUCgIFA25pbAUEdW5pdAFpAQ10cmFuc2ZlcldhdmVzAg5yZWNpcGllbnRCeXRlcwZhbW91bnQDCQELbXVzdFNlcnZpY2UBBQFpCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQ5yZWNpcGllbnRCeXRlcwUGYW1vdW50BQR1bml0BQNuaWwFBmFtb3VudAkAlAoCBQNuaWwFBHVuaXQBaQEEaW5pdAMQZmFjdG9yeVB1YmxpY0tleQ5vd25lclB1YmxpY0tleRBjcmVhdG9yUHVibGljS2V5BAtjaGVja0NhbGxlcgkBCG11c3RUaGlzAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAJQKAgkAzAgCCQELQmluYXJ5RW50cnkCBRFrRmFjdG9yeVB1YmxpY0tleQUQZmFjdG9yeVB1YmxpY0tleQkAzAgCCQELQmluYXJ5RW50cnkCBQ9rT3duZXJQdWJsaWNLZXkFDm93bmVyUHVibGljS2V5CQDMCAIJAQtCaW5hcnlFbnRyeQIFEWtDcmVhdG9yUHVibGljS2V5BRBjcmVhdG9yUHVibGljS2V5BQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEHYXBwcm92ZQAEC2NoZWNrQ2FsbGVyCQELbXVzdEZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCBQlrVmVyaWZpZWQGBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEY2FsbAIIZnVuY3Rpb24EYXJncwQLY2hlY2tDYWxsZXIJAQltdXN0T3duZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQGcmVzdWx0CQD9BwQFDnNlcnZpY2VBZGRyZXNzBQhmdW5jdGlvbgkAzAgCBQRhcmdzBQNuaWwIBQFpCHBheW1lbnRzCQCUCgIFA25pbAUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQHdGVzdG5ldAkAAAIJAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEBAVQEDGJvdFB1YmxpY0tleQkBEUBleHRyTmF0aXZlKDEwNTIpAgUOZmFjdG9yeUFkZHJlc3MFDWtCb3RQdWJsaWNLZXkEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACBU9yZGVyCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQxib3RQdWJsaWNLZXkDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24DCQEIdmVyaWZpZWQABwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQMJAQEhAQUHdGVzdG5ldAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXm2ZHf2", "height": 2773766, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A93abH4KnwxCCo7Xa8KZfQcUD84QCCL1j2WHXj36txEw Next: HsUUp1ReSHsakkfUcTNA5kkzjLqJcirj3PAywnoztoYH Diff:
OldNewDifferences
77
88 let kOwnerPublicKey = "%s__ownerPublicKey"
99
10+let kCreatorPublicKey = "%s__creatorPublicKey"
11+
1012 let kBotPublicKey = "%s__botPublicKey"
1113
1214 let kVerified = "%s__verified"
15+
16+func verified () = valueOrElse(getBoolean(this, kVerified), false)
17+
1318
1419 let factoryAddress = addressFromPublicKey(getBinaryValue(this, kFactoryPublicKey))
1520
1621 let serviceAddress = addressFromPublicKey(getBinaryValue(factoryAddress, kServicePublicKey))
1722
1823 let ownerAddress = addressFromPublicKey(getBinaryValue(this, kOwnerPublicKey))
19-
20-let isReady = if (if (isDefined(getBinary(this, kFactoryPublicKey)))
21- then isDefined(getBinary(this, kOwnerPublicKey))
22- else false)
23- then valueOrElse(getBoolean(this, kVerified), false)
24- else false
2524
2625 func mustAddress (i,address) = if ((i.caller == address))
2726 then true
6968
7069
7170 @Callable(i)
72-func init (factoryPublicKey,ownerPublicKey) = {
71+func init (factoryPublicKey,ownerPublicKey,creatorPublicKey) = {
7372 let checkCaller = mustThis(i)
7473 if ((checkCaller == checkCaller))
75- then $Tuple2([BinaryEntry(kFactoryPublicKey, factoryPublicKey), BinaryEntry(kOwnerPublicKey, ownerPublicKey)], unit)
76- else throw("Strict value is not equal to itself.")
77- }
78-
79-
80-
81-@Callable(i)
82-func complete (requestId,recipientPublicKey) = {
83- let checkCaller = mustThis(i)
84- if ((checkCaller == checkCaller))
85- then {
86- let result = reentrantInvoke(factoryAddress, "complete", [requestId, recipientPublicKey], nil)
87- $Tuple2(nil, result)
88- }
74+ then $Tuple2([BinaryEntry(kFactoryPublicKey, factoryPublicKey), BinaryEntry(kOwnerPublicKey, ownerPublicKey), BinaryEntry(kCreatorPublicKey, creatorPublicKey)], unit)
8975 else throw("Strict value is not equal to itself.")
9076 }
9177
121107 case _: Order =>
122108 sigVerify(tx.bodyBytes, tx.proofs[0], botPublicKey)
123109 case _: InvokeScriptTransaction =>
124- if (isReady)
110+ if (verified())
125111 then false
126112 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
127113 case _ =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let kFactoryPublicKey = "%s__factoryPublicKey"
55
66 let kServicePublicKey = "%s__servicePublicKey"
77
88 let kOwnerPublicKey = "%s__ownerPublicKey"
99
10+let kCreatorPublicKey = "%s__creatorPublicKey"
11+
1012 let kBotPublicKey = "%s__botPublicKey"
1113
1214 let kVerified = "%s__verified"
15+
16+func verified () = valueOrElse(getBoolean(this, kVerified), false)
17+
1318
1419 let factoryAddress = addressFromPublicKey(getBinaryValue(this, kFactoryPublicKey))
1520
1621 let serviceAddress = addressFromPublicKey(getBinaryValue(factoryAddress, kServicePublicKey))
1722
1823 let ownerAddress = addressFromPublicKey(getBinaryValue(this, kOwnerPublicKey))
19-
20-let isReady = if (if (isDefined(getBinary(this, kFactoryPublicKey)))
21- then isDefined(getBinary(this, kOwnerPublicKey))
22- else false)
23- then valueOrElse(getBoolean(this, kVerified), false)
24- else false
2524
2625 func mustAddress (i,address) = if ((i.caller == address))
2726 then true
2827 else throw()
2928
3029
3130 func mustThis (i) = mustAddress(i, this)
3231
3332
3433 func mustService (i) = mustAddress(i, serviceAddress)
3534
3635
3736 func mustOwner (i) = mustAddress(i, ownerAddress)
3837
3938
4039 func mustFactory (i) = mustAddress(i, factoryAddress)
4140
4241
4342 @Callable(i)
4443 func stringEntry (key,val) = if (mustService(i))
4544 then $Tuple2([StringEntry(key, val)], key)
4645 else $Tuple2(nil, unit)
4746
4847
4948
5049 @Callable(i)
5150 func integerEntry (key,val) = if (mustService(i))
5251 then $Tuple2([IntegerEntry(key, val)], key)
5352 else $Tuple2(nil, unit)
5453
5554
5655
5756 @Callable(i)
5857 func transferAsset (recipientBytes,amount,assetId) = if (mustService(i))
5958 then $Tuple2([ScriptTransfer(Address(recipientBytes), amount, assetId)], amount)
6059 else $Tuple2(nil, unit)
6160
6261
6362
6463 @Callable(i)
6564 func transferWaves (recipientBytes,amount) = if (mustService(i))
6665 then $Tuple2([ScriptTransfer(Address(recipientBytes), amount, unit)], amount)
6766 else $Tuple2(nil, unit)
6867
6968
7069
7170 @Callable(i)
72-func init (factoryPublicKey,ownerPublicKey) = {
71+func init (factoryPublicKey,ownerPublicKey,creatorPublicKey) = {
7372 let checkCaller = mustThis(i)
7473 if ((checkCaller == checkCaller))
75- then $Tuple2([BinaryEntry(kFactoryPublicKey, factoryPublicKey), BinaryEntry(kOwnerPublicKey, ownerPublicKey)], unit)
76- else throw("Strict value is not equal to itself.")
77- }
78-
79-
80-
81-@Callable(i)
82-func complete (requestId,recipientPublicKey) = {
83- let checkCaller = mustThis(i)
84- if ((checkCaller == checkCaller))
85- then {
86- let result = reentrantInvoke(factoryAddress, "complete", [requestId, recipientPublicKey], nil)
87- $Tuple2(nil, result)
88- }
74+ then $Tuple2([BinaryEntry(kFactoryPublicKey, factoryPublicKey), BinaryEntry(kOwnerPublicKey, ownerPublicKey), BinaryEntry(kCreatorPublicKey, creatorPublicKey)], unit)
8975 else throw("Strict value is not equal to itself.")
9076 }
9177
9278
9379
9480 @Callable(i)
9581 func approve () = {
9682 let checkCaller = mustFactory(i)
9783 if ((checkCaller == checkCaller))
9884 then $Tuple2([BooleanEntry(kVerified, true)], unit)
9985 else throw("Strict value is not equal to itself.")
10086 }
10187
10288
10389
10490 @Callable(i)
10591 func call (function,args) = {
10692 let checkCaller = mustOwner(i)
10793 if ((checkCaller == checkCaller))
10894 then {
10995 let result = reentrantInvoke(serviceAddress, function, [args], i.payments)
11096 $Tuple2(nil, result)
11197 }
11298 else throw("Strict value is not equal to itself.")
11399 }
114100
115101
116102 @Verifier(tx)
117103 func verify () = {
118104 let testnet = (take(drop(this.bytes, 1), 1) == base58'2T')
119105 let botPublicKey = getBinaryValue(factoryAddress, kBotPublicKey)
120106 match tx {
121107 case _: Order =>
122108 sigVerify(tx.bodyBytes, tx.proofs[0], botPublicKey)
123109 case _: InvokeScriptTransaction =>
124- if (isReady)
110+ if (verified())
125111 then false
126112 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
127113 case _ =>
128114 if (!(testnet))
129115 then false
130116 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
131117 }
132118 }
133119

github/deemru/w8io/873ac7e 
37.25 ms