tx · 9PRY8NtqmKyvqp7prE1fzSwiumYzyLExDVKHx2kqEhsa

3N9J3wuPH3fe1vTsLwJSticprdzZWXzZtMb:  -0.01000000 Waves

2022.05.21 16:12 [2061480] smart account 3N9J3wuPH3fe1vTsLwJSticprdzZWXzZtMb > SELF 0.00000000 Waves

{ "type": 13, "id": "9PRY8NtqmKyvqp7prE1fzSwiumYzyLExDVKHx2kqEhsa", "fee": 1000000, "feeAssetId": null, "timestamp": 1653138745858, "version": 2, "chainId": 84, "sender": "3N9J3wuPH3fe1vTsLwJSticprdzZWXzZtMb", "senderPublicKey": "6YTEFQ5JhfL8TsLSjyXNG4TVYq2Jmu3nkmXvxD1Nj5mn", "proofs": [ "4t6oJs2GyhDFfHKZtgpQgYUkM3Q9dB2wqh1ohdsk7fER6GrMLUS2jKTTaNjXUarRJsJz5GtsAoZmEHzXi9Dgd5G5" ], "script": "base64:AAIFAAAAAAAAACwIAhIGCgQCAgICEggKBgICAQICAhIHCgUCAgECAhIDCgECEgMKAQISAwoBAgAAABUAAAAAEGtleUxvY2tSZWNpcGllbnQCAAAAA19scgAAAAANa2V5TG9ja0Ftb3VudAIAAAADX2xhAAAAABJrZXlMb2NrRGVzdGluYXRpb24CAAAAA19sZAAAAAASa2V5TG9ja0Fzc2V0U291cmNlAgAAAARfbGFzAAAAAAprZXlWZXJzaW9uAgAAAAJfdgAAAAAJa2V5QnJpZGdlAgAAAAJfYgAAAAAJa2V5T3JhY2xlAgAAAAJfbwAAAAAIa2V5QWRtaW4CAAAAAl9hAAAAAAlrZXlVbmxvY2sCAAAAAl91AAAAAA9lcnJVbmF1dGhvcml6ZWQCAAAADHVuYXV0aG9yaXplZAAAAAAQZXJyVW5pbml0aWFsaXplZAIAAAANdW5pbml0aWFsaXplZAAAAAATZXJySW52YWxpZFNpZ25hdHVyZQIAAAARaW52YWxpZCBzaWduYXR1cmUAAAAAEWVyckFscmVhZHlDbGFpbWVkAgAAAAdjbGFpbWVkAAAAABBlcnJBbHJlYWR5TG9ja2VkAgAAAAZsb2NrZWQAAAAAEGVyckludmFsaWRMb2NrSWQCAAAADmludmFsaWQgbG9ja0lkAAAAAApjaGFpbldhdmVzAgAAAAhWMEZXUlE9PQEAAAAMYXNzZXJ0Q2FsbGVyAAAAAgAAAAFpAAAAA2tleQQAAAAHJG1hdGNoMAkABCEAAAABBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAACWF1dGhvcml0eQUAAAAHJG1hdGNoMAMJAQAAAAIhPQAAAAIFAAAACWF1dGhvcml0eQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwkAAAIAAAABBQAAAA9lcnJVbmF1dGhvcml6ZWQFAAAABHVuaXQJAAACAAAAAQUAAAAQZXJyVW5pbml0aWFsaXplZAEAAAAUYXNzZXJ0Q2FsbGVySXNCcmlkZ2UAAAABAAAAAWkJAQAAAAxhc3NlcnRDYWxsZXIAAAACBQAAAAFpBQAAAAlrZXlCcmlkZ2UBAAAAE2Fzc2VydENhbGxlcklzQWRtaW4AAAABAAAAAWkJAQAAAAxhc3Nl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BgUAAAADbmlsBgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACmNyZWF0ZUxvY2sAAAAFAAAABmxvY2tJZAAAAAlyZWNpcGllbnQAAAAGYW1vdW50AAAAD2xvY2tEZXN0aW5hdGlvbgAAABVhc3NldFNvdXJjZUFuZEFkZHJlc3MEAAAACWxvY2tJZFN0cgkAAloAAAABBQAAAAZsb2NrSWQEAAAAEGxvY2tSZWNpcGllbnRLZXkJAAEsAAAAAgUAAAAJbG9ja0lkU3RyBQAAABBrZXlMb2NrUmVjaXBpZW50BAAAAAtjaGVja0NhbGxlcgkBAAAAFGFzc2VydENhbGxlcklzQnJpZGdlAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAAAtjaGVja0xvY2tJZAkBAAAAEWFzc2VydFZhbGlkTG9ja0lkAAAAAQUAAAAGbG9ja0lkAwkAAAAAAAACBQAAAAtjaGVja0xvY2tJZAUAAAALY2hlY2tMb2NrSWQEAAAACWNoZWNrTG9jawkBAAAAE2Fzc2VydExvY2tOb3RFeGlzdHMAAAABBQAAABBsb2NrUmVjaXBpZW50S2V5AwkAAAAAAAACBQAAAAljaGVja0xvY2sFAAAACWNoZWNrTG9jawkABEwAAAACCQEAAAALQmluYXJ5RW50cnkAAAACCQABLAAAAAIFAAAACWxvY2tJZFN0cgUAAAAQa2V5TG9ja1JlY2lwaWVudAUAAAAJcmVjaXBpZW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAACWxvY2tJZFN0cgUAAAANa2V5TG9ja0Ftb3VudAUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAIJAAEsAAAAAgUAAAAJbG9ja0lkU3RyBQAAABJrZXlMb2NrRGVzdGluYXRpb24FAAAAD2xvY2tEZXN0aW5hdGlvbgkABEwAAAACCQEAAAALQmluYXJ5RW50cnkAAAACCQABLAAAAAIFAAAACWxvY2tJZFN0cgUAAAASa2V5TG9ja0Fzc2V0U291cmNlBQAAABVhc3NldFNvdXJjZUFuZEFkZHJlc3MFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAhzZXRBZG1pbgAAAAEAAAAIbmV3QWRtaW4EAAAAC2NoZWNrQ2FsbGVyCQEAAAATYXNzZXJ0Q2FsbGVySXNBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALQmluYXJ5RW50cnkAAAACBQAAAAhrZXlBZG1pbgUAAAAIbmV3QWRtaW4FAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAJc2V0T3JhY2xlAAAAAQAAAAluZXdPcmFjbGUEAAAAC2NoZWNrQ2FsbGVyCQEAAAATYXNzZXJ0Q2FsbGVySXNBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALQmluYXJ5RW50cnkAAAACBQAAAAlrZXlPcmFjbGUFAAAACW5ld09yYWNsZQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAlzZXRCcmlkZ2UAAAABAAAACW5ld0JyaWRnZQQAAAALY2hlY2tDYWxsZXIJAQAAABNhc3NlcnRDYWxsZXJJc0FkbWluAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAIFAAAACWtleUJyaWRnZQUAAAAJbmV3QnJpZGdlBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAJlbLbE=", "height": 2061480, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BKYcJb2hULXQrJwYvm5SCsetNEixGvZWWMFRceeamERy Next: CaTH2KLxnsnSEcHNRfFAjhm1B8QW1m1NgV75nRAu2FAB Diff:
OldNewDifferences
2929
3030 let errAlreadyLocked = "locked"
3131
32-let errBridgeOnly = "not bridge"
33-
3432 let errInvalidLockId = "invalid lockId"
3533
3634 let chainWaves = "V0FWRQ=="
3735
38-func invalidCaller (i,key) = match getBinary(key) {
36+func assertCaller (i,key) = match getBinary(key) {
3937 case authority: ByteVector =>
40- (authority != i.caller.bytes)
38+ if ((authority != i.caller.bytes))
39+ then throw(errUnauthorized)
40+ else unit
4141 case _ =>
42- false
42+ throw(errUninitialized)
4343 }
4444
4545
46-func assertCallerIsBridge (i) = if (invalidCaller(i, keyBridge))
47- then throw(errBridgeOnly)
48- else unit
46+func assertCallerIsBridge (i) = assertCaller(i, keyBridge)
47+
48+
49+func assertCallerIsAdmin (i) = assertCaller(i, keyAdmin)
4950
5051
5152 func assertValidLockId (lockId) = {
6768
6869
6970 @Callable(i)
70-func setAdmin (newAdmin) = if (invalidCaller(i, keyAdmin))
71+func init (admin,version,bridge,oracle) = if (isDefined(getBinary(keyAdmin)))
7172 then throw(errUnauthorized)
72- else [BinaryEntry(keyAdmin, newAdmin)]
73-
74-
75-
76-@Callable(i)
77-func setConfig (version,bridge,oracle) = if (invalidCaller(i, keyAdmin))
78- then throw(errUnauthorized)
79- else [BinaryEntry(keyVersion, version), BinaryEntry(keyBridge, bridge), BinaryEntry(keyOracle, oracle)]
73+ else [BinaryEntry(keyVersion, version), BinaryEntry(keyBridge, bridge), BinaryEntry(keyOracle, oracle), BinaryEntry(keyAdmin, admin)]
8074
8175
8276
9488 if (isDefined(getBoolean(unlockKey)))
9589 then throw(errAlreadyClaimed)
9690 else {
97- let message = makeString([toBase64String(lockId), toBase64String(recipient), toString(amount), toBase64String(lockSource), toBase64String(tokenSourceAndAddress), chainWaves], "_")
91+ let message = makeString([lockIdStr, toBase64String(recipient), toString(amount), lockSourceStr, toBase64String(tokenSourceAndAddress), chainWaves], "_")
9892 let hash = keccak256(toBytes(message))
9993 let recoveredKey = ecrecover(hash, signature)
10094 if ((recoveredKey != getBinaryValue(keyOracle)))
110104
111105
112106 @Callable(i)
113-func createLock (lockId,recipient,amount,lockDestination,tokenSourceAndAddress) = {
107+func createLock (lockId,recipient,amount,lockDestination,assetSourceAndAddress) = {
114108 let lockIdStr = toBase64String(lockId)
115109 let lockRecipientKey = (lockIdStr + keyLockRecipient)
116110 let checkCaller = assertCallerIsBridge(i)
121115 then {
122116 let checkLock = assertLockNotExists(lockRecipientKey)
123117 if ((checkLock == checkLock))
124- then [BinaryEntry((lockIdStr + keyLockRecipient), recipient), IntegerEntry((lockIdStr + keyLockAmount), amount), BinaryEntry((lockIdStr + keyLockDestination), lockDestination), BinaryEntry((lockIdStr + keyLockAssetSource), tokenSourceAndAddress)]
118+ then [BinaryEntry((lockIdStr + keyLockRecipient), recipient), IntegerEntry((lockIdStr + keyLockAmount), amount), BinaryEntry((lockIdStr + keyLockDestination), lockDestination), BinaryEntry((lockIdStr + keyLockAssetSource), assetSourceAndAddress)]
125119 else throw("Strict value is not equal to itself.")
126120 }
127121 else throw("Strict value is not equal to itself.")
130124 }
131125
132126
127+
128+@Callable(i)
129+func setAdmin (newAdmin) = {
130+ let checkCaller = assertCallerIsAdmin(i)
131+ if ((checkCaller == checkCaller))
132+ then [BinaryEntry(keyAdmin, newAdmin)]
133+ else throw("Strict value is not equal to itself.")
134+ }
135+
136+
137+
138+@Callable(i)
139+func setOracle (newOracle) = {
140+ let checkCaller = assertCallerIsAdmin(i)
141+ if ((checkCaller == checkCaller))
142+ then [BinaryEntry(keyOracle, newOracle)]
143+ else throw("Strict value is not equal to itself.")
144+ }
145+
146+
147+
148+@Callable(i)
149+func setBridge (newBridge) = {
150+ let checkCaller = assertCallerIsAdmin(i)
151+ if ((checkCaller == checkCaller))
152+ then [BinaryEntry(keyBridge, newBridge)]
153+ else throw("Strict value is not equal to itself.")
154+ }
155+
156+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let keyLockRecipient = "_lr"
55
66 let keyLockAmount = "_la"
77
88 let keyLockDestination = "_ld"
99
1010 let keyLockAssetSource = "_las"
1111
1212 let keyVersion = "_v"
1313
1414 let keyBridge = "_b"
1515
1616 let keyOracle = "_o"
1717
1818 let keyAdmin = "_a"
1919
2020 let keyUnlock = "_u"
2121
2222 let errUnauthorized = "unauthorized"
2323
2424 let errUninitialized = "uninitialized"
2525
2626 let errInvalidSignature = "invalid signature"
2727
2828 let errAlreadyClaimed = "claimed"
2929
3030 let errAlreadyLocked = "locked"
3131
32-let errBridgeOnly = "not bridge"
33-
3432 let errInvalidLockId = "invalid lockId"
3533
3634 let chainWaves = "V0FWRQ=="
3735
38-func invalidCaller (i,key) = match getBinary(key) {
36+func assertCaller (i,key) = match getBinary(key) {
3937 case authority: ByteVector =>
40- (authority != i.caller.bytes)
38+ if ((authority != i.caller.bytes))
39+ then throw(errUnauthorized)
40+ else unit
4141 case _ =>
42- false
42+ throw(errUninitialized)
4343 }
4444
4545
46-func assertCallerIsBridge (i) = if (invalidCaller(i, keyBridge))
47- then throw(errBridgeOnly)
48- else unit
46+func assertCallerIsBridge (i) = assertCaller(i, keyBridge)
47+
48+
49+func assertCallerIsAdmin (i) = assertCaller(i, keyAdmin)
4950
5051
5152 func assertValidLockId (lockId) = {
5253 let version = valueOrErrorMessage(getBinary(keyVersion), errUninitialized)
5354 if (if ((size(lockId) != 16))
5455 then true
5556 else (take(lockId, 1) != version))
5657 then throw(errInvalidLockId)
5758 else unit
5859 }
5960
6061
6162 func assertLockNotExists (lockRecipientKey) = match getBinary(lockRecipientKey) {
6263 case t: ByteVector =>
6364 throw(errAlreadyLocked)
6465 case _ =>
6566 unit
6667 }
6768
6869
6970 @Callable(i)
70-func setAdmin (newAdmin) = if (invalidCaller(i, keyAdmin))
71+func init (admin,version,bridge,oracle) = if (isDefined(getBinary(keyAdmin)))
7172 then throw(errUnauthorized)
72- else [BinaryEntry(keyAdmin, newAdmin)]
73-
74-
75-
76-@Callable(i)
77-func setConfig (version,bridge,oracle) = if (invalidCaller(i, keyAdmin))
78- then throw(errUnauthorized)
79- else [BinaryEntry(keyVersion, version), BinaryEntry(keyBridge, bridge), BinaryEntry(keyOracle, oracle)]
73+ else [BinaryEntry(keyVersion, version), BinaryEntry(keyBridge, bridge), BinaryEntry(keyOracle, oracle), BinaryEntry(keyAdmin, admin)]
8074
8175
8276
8377 @Callable(i)
8478 func createUnlock (lockId,recipient,amount,lockSource,tokenSourceAndAddress,signature) = {
8579 let checkLockId = assertValidLockId(lockId)
8680 if ((checkLockId == checkLockId))
8781 then {
8882 let checkCaller = assertCallerIsBridge(i)
8983 if ((checkCaller == checkCaller))
9084 then {
9185 let lockIdStr = toBase64String(lockId)
9286 let lockSourceStr = toBase64String(lockSource)
9387 let unlockKey = (((lockSourceStr + "_") + lockIdStr) + keyUnlock)
9488 if (isDefined(getBoolean(unlockKey)))
9589 then throw(errAlreadyClaimed)
9690 else {
97- let message = makeString([toBase64String(lockId), toBase64String(recipient), toString(amount), toBase64String(lockSource), toBase64String(tokenSourceAndAddress), chainWaves], "_")
91+ let message = makeString([lockIdStr, toBase64String(recipient), toString(amount), lockSourceStr, toBase64String(tokenSourceAndAddress), chainWaves], "_")
9892 let hash = keccak256(toBytes(message))
9993 let recoveredKey = ecrecover(hash, signature)
10094 if ((recoveredKey != getBinaryValue(keyOracle)))
10195 then throw(errInvalidSignature)
10296 else $Tuple2([BooleanEntry(unlockKey, true)], true)
10397 }
10498 }
10599 else throw("Strict value is not equal to itself.")
106100 }
107101 else throw("Strict value is not equal to itself.")
108102 }
109103
110104
111105
112106 @Callable(i)
113-func createLock (lockId,recipient,amount,lockDestination,tokenSourceAndAddress) = {
107+func createLock (lockId,recipient,amount,lockDestination,assetSourceAndAddress) = {
114108 let lockIdStr = toBase64String(lockId)
115109 let lockRecipientKey = (lockIdStr + keyLockRecipient)
116110 let checkCaller = assertCallerIsBridge(i)
117111 if ((checkCaller == checkCaller))
118112 then {
119113 let checkLockId = assertValidLockId(lockId)
120114 if ((checkLockId == checkLockId))
121115 then {
122116 let checkLock = assertLockNotExists(lockRecipientKey)
123117 if ((checkLock == checkLock))
124- then [BinaryEntry((lockIdStr + keyLockRecipient), recipient), IntegerEntry((lockIdStr + keyLockAmount), amount), BinaryEntry((lockIdStr + keyLockDestination), lockDestination), BinaryEntry((lockIdStr + keyLockAssetSource), tokenSourceAndAddress)]
118+ then [BinaryEntry((lockIdStr + keyLockRecipient), recipient), IntegerEntry((lockIdStr + keyLockAmount), amount), BinaryEntry((lockIdStr + keyLockDestination), lockDestination), BinaryEntry((lockIdStr + keyLockAssetSource), assetSourceAndAddress)]
125119 else throw("Strict value is not equal to itself.")
126120 }
127121 else throw("Strict value is not equal to itself.")
128122 }
129123 else throw("Strict value is not equal to itself.")
130124 }
131125
132126
127+
128+@Callable(i)
129+func setAdmin (newAdmin) = {
130+ let checkCaller = assertCallerIsAdmin(i)
131+ if ((checkCaller == checkCaller))
132+ then [BinaryEntry(keyAdmin, newAdmin)]
133+ else throw("Strict value is not equal to itself.")
134+ }
135+
136+
137+
138+@Callable(i)
139+func setOracle (newOracle) = {
140+ let checkCaller = assertCallerIsAdmin(i)
141+ if ((checkCaller == checkCaller))
142+ then [BinaryEntry(keyOracle, newOracle)]
143+ else throw("Strict value is not equal to itself.")
144+ }
145+
146+
147+
148+@Callable(i)
149+func setBridge (newBridge) = {
150+ let checkCaller = assertCallerIsAdmin(i)
151+ if ((checkCaller == checkCaller))
152+ then [BinaryEntry(keyBridge, newBridge)]
153+ else throw("Strict value is not equal to itself.")
154+ }
155+
156+

github/deemru/w8io/873ac7e 
36.76 ms