tx · GCFJER6U7ihPFSghzdDeSiv12rYaWWxfncKS7eMGk8w8

3MwyXzxpp65TzAvdJxnexgz9G5kFkcqGLMF:  -0.01400000 Waves

2019.06.27 22:35 [560963] smart account 3MwyXzxpp65TzAvdJxnexgz9G5kFkcqGLMF > SELF 0.00000000 Waves

{ "type": 13, "id": "GCFJER6U7ihPFSghzdDeSiv12rYaWWxfncKS7eMGk8w8", "fee": 1400000, "feeAssetId": null, "timestamp": 1561664198915, "version": 1, "sender": "3MwyXzxpp65TzAvdJxnexgz9G5kFkcqGLMF", "senderPublicKey": "7pDDrtFSiQHYSxpdxuBQVCeBQBwa3fFWMBmtJ85aytGX", "proofs": [ "65zumoHHdehyhDAv8NjLfQKe95BEnq119rjTBHJbgpNhSwsFKwgWkZ4JCYk57LNpuWQQ8KabkTn3KTD9zYjatziz" ], "script": "base64:AAIDAAAAAAAAAAAAAAAEAQAAABNnZXRBZGRyZXNzRnJvbUVudHJ5AAAAAQAAAANrZXkEAAAAB2FkZHJlc3MEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAA3N0cgUAAAAHJG1hdGNoMAUAAAADc3RyCQAAAgAAAAECAAAAFkZpcnN0IGFkZHJlc3Mgbm90IHNldCEFAAAAB2FkZHJlc3MBAAAAGmdldEFkZHJlc3NGcm9tRW50cnlPckVtcHR5AAAAAQAAAANrZXkEAAAAB2FkZHJlc3MEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAA3N0cgUAAAAHJG1hdGNoMAUAAAADc3RyAgAAAAAFAAAAB2FkZHJlc3MBAAAADWdldEludEZyb21LZXkAAAABAAAAA2tleQQAAAASZmlyc3RBZGRyZXNzQW1vdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFuBQAAAAckbWF0Y2gwBQAAAAFuAAAAAAAAAAAABQAAABJmaXJzdEFkZHJlc3NBbW91bnQBAAAAJmNoZWNrSWZNZXRob2RDYWxsQ29tZXNGcm9tVmFsaWRBY2NvdW50AAAAAQAAAAZzZW5kZXIEAAAADGZpcnN0QWRkcmVzcwkBAAAAE2dldEFkZHJlc3NGcm9tRW50cnkAAAABAgAAAAxmaXJzdEFkZHJlc3MEAAAADXNlY29uZEFkZHJlc3MJAQAAABNnZXRBZGRyZXNzRnJvbUVudHJ5AAAAAQIAAAANc2Vjb25kQWRkcmVzcwMDCQEAAAACIT0AAAACBQAAAAxmaXJzdEFkZHJlc3MFAAAABnNlbmRlcgkBAAAAAiE9AAAAAgUAAAANc2Vjb25kQWRkcmVzcwUAAAAGc2VuZGVyBwkAAAIAAAABCQABLAAAAAICAAAAIk1ldGhvZCBjYWxsIGZyb20gaW52YWxpZCBhY2NvdW50OiAFAAAABnNlbmRlcgYAAAAGAAAAAWkBAAAADWNsYWltQ2hlYXRpbmcAAAAGAAAACnJlY2lwaWVudEEAAAAQYW1vdW50UmVjaXBpZW50QQAAAApyZWNpcGllbnRCAAAAEGFtb3VudFJlY2lwaWVudEIAAAAJdGltZXN0YW1wAAAACXNpZ25hdHVyZQQAAAAGc2VuZGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAC3ZhbGlkU2VuZGVyCQEAAAAmY2hlY2tJZk1ldGhvZENhbGxDb21lc0Zyb21WYWxpZEFjY291bnQAAAABBQAAAAZzZW5kZXIEAAAADm9yaWdpbmFsU3RyaW5nCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACnJlY2lwaWVudEEJAAGkAAAAAQUAAAAQYW1vdW50UmVjaXBpZW50QQUAAAAKcmVjaXBpZW50QgkAAaQAAAABBQAAABBhbW91bnRSZWNpcGllbnRCCQABpAAAAAEFAAAACXRpbWVzdGFtcAQAAAALY291bnRlclBhcnQJAQAAABNnZXRBZGRyZXNzRnJvbUVudHJ5AAAAAQkAASwAAAACBQAAAAZzZW5kZXICAAAADF9jb3VudGVycGFydAQAAAATc2lnbmVkQnlDb3VudGVycGFydAkAAfQAAAADCQACWQAAAAEFAAAADm9yaWdpbmFsU3RyaW5nCQACWQAAAAEFAAAACXNpZ25hdHVyZQkAAlkAAAABBQAAAAtjb3VudGVyUGFydAQAAAAMb2xkVGltZXN0YW1wCQEAAAANZ2V0SW50RnJvbUtleQAAAAECAAAACXRpbWVzdGFtcAMDAwUAAAALdmFsaWRTZW5kZXIFAAAAE3NpZ25lZEJ5Q291bnRlcnBhcnQHCQAAZgAAAAIFAAAACXRpbWVzdGFtcAUAAAAMb2xkVGltZXN0YW1wBwkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABkAAAAAgUAAAAQYW1vdW50UmVjaXBpZW50QQUAAAAQYW1vdW50UmVjaXBpZW50QgUAAAAEdW5pdAUAAAADbmlsCQAAAgAAAAECAAAAJ1dyb25nIHNpZ25hdHVyZSBvciB0aW1lc3RhbXAgbm90IG5ld2VyIQAAAAFpAQAAAAxjb25maXJtQ2xvc2UAAAAABAAAAAZzZW5kZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAALdmFsaWRTZW5kZXIJAQAAACZjaGVja0lmTWV0aG9kQ2FsbENvbWVzRnJvbVZhbGlkQWNjb3VudAAAAAEFAAAABnNlbmRlcgQAAAAJaW5pdGlhdG9yCQAEHQAAAAIFAAAABHRoaXMCAAAAFGNsb3NpbmdfaW5pdGlhdGVkX2J5AwMJAQAAAAIhPQAAAAIFAAAABnNlbmRlcgUAAAAJaW5pdGlhdG9yBQAAAAt2YWxpZFNlbmRlcgcEAAAADGZpcnN0QWRkcmVzcwkBAAAAE2dldEFkZHJlc3NGcm9tRW50cnkAAAABAgAAAAxmaXJzdEFkZHJlc3MEAAAADXNlY29uZEFkZHJlc3MJAQAAABNnZXRBZGRyZXNzRnJvbUVudHJ5AAAAAQIAAAANc2Vjb25kQWRkcmVzcwQAAAASZmlyc3RBZGRyZXNzQW1vdW50CQEAAAANZ2V0SW50RnJvbUtleQAAAAEFAAAADGZpcnN0QWRkcmVzcwQAAAATc2Vjb25kQWRkcmVzc0Ftb3VudAkBAAAADWdldEludEZyb21LZXkAAAABBQAAAA1zZWNvbmRBZGRyZXNzCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAxmaXJzdEFkZHJlc3MFAAAAEmZpcnN0QWRkcmVzc0Ftb3VudAUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAANc2Vjb25kQWRkcmVzcwUAAAATc2Vjb25kQWRkcmVzc0Ftb3VudAUAAAAEdW5pdAUAAAADbmlsCQAAAgAAAAECAAAAMUluaXRpYXRvciBjYW4gbm90IGNvbmZpcm0gY2xvc2luZyBvZiB0aGUgY2hhbm5lbCEAAAABaQEAAAASY2xvc2VBZnRlclRpbWVsb2NrAAAAAAQAAAAGc2VuZGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAC3ZhbGlkU2VuZGVyCQEAAAAmY2hlY2tJZk1ldGhvZENhbGxDb21lc0Zyb21WYWxpZEFjY291bnQAAAABBQAAAAZzZW5kZXIEAAAACHRpbWVsb2NrCQEAAAANZ2V0SW50RnJvbUtleQAAAAECAAAACHRpbWVsb2NrAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAh0aW1lbG9jawUAAAALdmFsaWRTZW5kZXIHBAAAAAxmaXJzdEFkZHJlc3MJAQAAABNnZXRBZGRyZXNzRnJvbUVudHJ5AAAAAQIAAAAMZmlyc3RBZGRyZXNzBAAAAA1zZWNvbmRBZGRyZXNzCQEAAAATZ2V0QWRkcmVzc0Zyb21FbnRyeQAAAAECAAAADXNlY29uZEFkZHJlc3MEAAAAEmZpcnN0QWRkcmVzc0Ftb3VudAkBAAAADWdldEludEZyb21LZXkAAAABBQAAAAxmaXJzdEFkZHJlc3MEAAAAE3NlY29uZEFkZHJlc3NBbW91bnQJAQAAAA1nZXRJbnRGcm9tS2V5AAAAAQUAAAANc2Vjb25kQWRkcmVzcwkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAMZmlyc3RBZGRyZXNzBQAAABJmaXJzdEFkZHJlc3NBbW91bnQFAAAABHVuaXQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAADXNlY29uZEFkZHJlc3MFAAAAE3NlY29uZEFkZHJlc3NBbW91bnQFAAAABHVuaXQFAAAAA25pbAkAAAIAAAABAgAAABVUaW1lbG9jayBzdGlsbCB2YWxpZCEAAAABaQEAAAAOaW5pdGlhbENsb3NpbmcAAAAGAAAACnJlY2lwaWVudEEAAAAQYW1vdW50UmVjaXBpZW50QQAAAApyZWNpcGllbnRCAAAAEGFtb3VudFJlY2lwaWVudEIAAAAJdGltZXN0YW1wAAAACXNpZ25hdHVyZQQAAAAGc2VuZGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAC3ZhbGlkU2VuZGVyCQEAAAAmY2hlY2tJZk1ldGhvZENhbGxDb21lc0Zyb21WYWxpZEFjY291bnQAAAABBQAAAAZzZW5kZXIEAAAADm9yaWdpbmFsU3RyaW5nAQAAAFozTXdSWmRxTXlkRTdTaFNZTXZURkFlVEVZbWlCbmFNYU5uMTgwMDNOQlB2ZldWRkpUcE1RdWRBb0Rkc3JoNlFHc0VZMzVBZ3AxMTIwMDE1NjE1NzY0MzI4MTMEAAAAC2NvdW50ZXJQYXJ0CQEAAAATZ2V0QWRkcmVzc0Zyb21FbnRyeQAAAAEJAAEsAAAAAgUAAAAGc2VuZGVyAgAAAAxfY291bnRlcnBhcnQEAAAAE3NpZ25lZEJ5Q291bnRlcnBhcnQJAAH0AAAAAwUAAAAOb3JpZ2luYWxTdHJpbmcJAAGbAAAAAQUAAAAJc2lnbmF0dXJlCQACWQAAAAEFAAAAC2NvdW50ZXJQYXJ0BAAAAA50aW1lbG9ja1BlcmlvZAkBAAAADWdldEludEZyb21LZXkAAAABAgAAAA50aW1lbG9ja1BlcmlvZAMDBQAAABNzaWduZWRCeUNvdW50ZXJwYXJ0BQAAAAt2YWxpZFNlbmRlcgcJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACnJlY2lwaWVudEEFAAAAEGFtb3VudFJlY2lwaWVudEEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACnJlY2lwaWVudEIFAAAAEGFtb3VudFJlY2lwaWVudEIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAFGNsb3NpbmdfaW5pdGlhdGVkX2J5BQAAAAZzZW5kZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAACXRpbWVzdGFtcAUAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAh0aW1lbG9jawkAAGQAAAACBQAAAAZoZWlnaHQFAAAADnRpbWVsb2NrUGVyaW9kBQAAAANuaWwJAAACAAAAAQIAAAAQV3Jvbmcgc2lnbmF0dXJlIQAAAAFpAQAAAARmdW5kAAAAAAQAAAAGc2VuZGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAC3ZhbGlkU2VuZGVyCQEAAAAmY2hlY2tJZk1ldGhvZENhbGxDb21lc0Zyb21WYWxpZEFjY291bnQAAAABBQAAAAZzZW5kZXIEAAAAB3BheW1lbnQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAAJYW1vdW50S2V5CQABLAAAAAIFAAAABnNlbmRlcgIAAAAHX2Ftb3VudAQAAAANY3VycmVudEFtb3VudAkBAAAADWdldEludEZyb21LZXkAAAABBQAAAAlhbW91bnRLZXkDBQAAAAt2YWxpZFNlbmRlcgMJAQAAAAIhPQAAAAIFAAAADWN1cnJlbnRBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAoVXNlciBoYXMgYWxyZWFkeSBmdW5kZWQgcGF5bWVudCBjaGFubmVsIQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAJYW1vdW50S2V5CQAAZAAAAAIFAAAADWN1cnJlbnRBbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAADbmlsCQAAAgAAAAECAAAAJFdyb25nIGFjY291bnQgdHJpZXMgdG8gZnVuZCBjaGFubmVsIQAAAAFpAQAAAARpbml0AAAABQAAAAxmaXJzdEFkZHJlc3MAAAAOZmlyc3RQdWJsaWNLZXkAAAANc2Vjb25kQWRkcmVzcwAAAA9zZWNvbmRQdWJsaWNLZXkAAAAOdGltZWxvY2tQZXJpb2QEAAAAE2N1cnJlbnRGaXJzdEFkZHJlc3MJAQAAABpnZXRBZGRyZXNzRnJvbUVudHJ5T3JFbXB0eQAAAAEJAAEsAAAAAgUAAAAMZmlyc3RBZGRyZXNzAgAAAAxfY291bnRlcnBhcnQEAAAAFGN1cnJlbnRTZWNvbmRBZGRyZXNzCQEAAAAaZ2V0QWRkcmVzc0Zyb21FbnRyeU9yRW1wdHkAAAABCQABLAAAAAIFAAAADXNlY29uZEFkZHJlc3MCAAAADF9jb3VudGVycGFydAMDCQEAAAACIT0AAAACBQAAABNjdXJyZW50Rmlyc3RBZGRyZXNzAgAAAAAGCQEAAAACIT0AAAACBQAAABRjdXJyZW50U2Vjb25kQWRkcmVzcwIAAAAACQAAAgAAAAECAAAAG0NvbnRyYWN0IGFscmVhZHkgaW5pdGlhdGVkIQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAMZmlyc3RBZGRyZXNzBQAAAAxmaXJzdEFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADXNlY29uZEFkZHJlc3MFAAAADXNlY29uZEFkZHJlc3MJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAMZmlyc3RBZGRyZXNzAgAAAAxfY291bnRlcnBhcnQFAAAAD3NlY29uZFB1YmxpY0tleQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAA1zZWNvbmRBZGRyZXNzAgAAAAxfY291bnRlcnBhcnQFAAAADmZpcnN0UHVibGljS2V5CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAA50aW1lbG9ja1BlcmlvZAUAAAAOdGltZWxvY2tQZXJpb2QFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4Bp4IY0U=", "chainId": 84, "height": 560963, "spentComplexity": 0 } View: original | compacted Prev: EFoWEcepJrzq1uS7N5ZCGSCaer5VHcqwz861zwF5xEwZ Next: 2s3h14MpDKwzrbMv2NXQumLzFCCqh2Gmb4eb5puWWTk6 Diff:
OldNewDifferences
108108 func initialClosing (recipientA,amountRecipientA,recipientB,amountRecipientB,timestamp,signature) = {
109109 let sender = toBase58String(i.caller.bytes)
110110 let validSender = checkIfMethodCallComesFromValidAccount(sender)
111- let originalString = ((((recipientA + toString(amountRecipientA)) + recipientB) + toString(amountRecipientB)) + toString(timestamp))
111+ let originalString = base58'93M7wAymK2hDNWAzYkHZcWgiL2Cey4ZvTtfLPTFyhf23yVE3H1ikTSpBuHkSU5vi9qXbXWiJmhxamKyUuA17SxgGpWvwy1MqwBLDh8c5hh6iudfiY3mj5UeGM4n'
112112 let counterPart = getAddressFromEntry((sender + "_counterpart"))
113- let signedByCounterpart = sigVerify(toBytes(originalString), toBytes(signature), fromBase58String(counterPart))
113+ let signedByCounterpart = sigVerify(originalString, toBytes(signature), fromBase58String(counterPart))
114114 let timelockPeriod = getIntFromKey("timelockPeriod")
115115 if (if (signedByCounterpart)
116116 then validSender
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getAddressFromEntry (key) = {
55 let address = match getString(this, key) {
66 case str: String =>
77 str
88 case _ =>
99 throw("First address not set!")
1010 }
1111 address
1212 }
1313
1414
1515 func getAddressFromEntryOrEmpty (key) = {
1616 let address = match getString(this, key) {
1717 case str: String =>
1818 str
1919 case _ =>
2020 ""
2121 }
2222 address
2323 }
2424
2525
2626 func getIntFromKey (key) = {
2727 let firstAddressAmount = match getInteger(this, key) {
2828 case n: Int =>
2929 n
3030 case _ =>
3131 0
3232 }
3333 firstAddressAmount
3434 }
3535
3636
3737 func checkIfMethodCallComesFromValidAccount (sender) = {
3838 let firstAddress = getAddressFromEntry("firstAddress")
3939 let secondAddress = getAddressFromEntry("secondAddress")
4040 if (if ((firstAddress != sender))
4141 then (secondAddress != sender)
4242 else false)
4343 then throw(("Method call from invalid account: " + sender))
4444 else true
4545 }
4646
4747
4848 @Callable(i)
4949 func claimCheating (recipientA,amountRecipientA,recipientB,amountRecipientB,timestamp,signature) = {
5050 let sender = toBase58String(i.caller.bytes)
5151 let validSender = checkIfMethodCallComesFromValidAccount(sender)
5252 let originalString = ((((recipientA + toString(amountRecipientA)) + recipientB) + toString(amountRecipientB)) + toString(timestamp))
5353 let counterPart = getAddressFromEntry((sender + "_counterpart"))
5454 let signedByCounterpart = sigVerify(fromBase58String(originalString), fromBase58String(signature), fromBase58String(counterPart))
5555 let oldTimestamp = getIntFromKey("timestamp")
5656 if (if (if (validSender)
5757 then signedByCounterpart
5858 else false)
5959 then (timestamp > oldTimestamp)
6060 else false)
6161 then TransferSet([ScriptTransfer(i.caller, (amountRecipientA + amountRecipientB), unit)])
6262 else throw("Wrong signature or timestamp not newer!")
6363 }
6464
6565
6666
6767 @Callable(i)
6868 func confirmClose () = {
6969 let sender = toBase58String(i.caller.bytes)
7070 let validSender = checkIfMethodCallComesFromValidAccount(sender)
7171 let initiator = getString(this, "closing_initiated_by")
7272 if (if ((sender != initiator))
7373 then validSender
7474 else false)
7575 then {
7676 let firstAddress = getAddressFromEntry("firstAddress")
7777 let secondAddress = getAddressFromEntry("secondAddress")
7878 let firstAddressAmount = getIntFromKey(firstAddress)
7979 let secondAddressAmount = getIntFromKey(secondAddress)
8080 TransferSet([ScriptTransfer(Address(fromBase58String(firstAddress)), firstAddressAmount, unit), ScriptTransfer(Address(fromBase58String(secondAddress)), secondAddressAmount, unit)])
8181 }
8282 else throw("Initiator can not confirm closing of the channel!")
8383 }
8484
8585
8686
8787 @Callable(i)
8888 func closeAfterTimelock () = {
8989 let sender = toBase58String(i.caller.bytes)
9090 let validSender = checkIfMethodCallComesFromValidAccount(sender)
9191 let timelock = getIntFromKey("timelock")
9292 if (if ((height > timelock))
9393 then validSender
9494 else false)
9595 then {
9696 let firstAddress = getAddressFromEntry("firstAddress")
9797 let secondAddress = getAddressFromEntry("secondAddress")
9898 let firstAddressAmount = getIntFromKey(firstAddress)
9999 let secondAddressAmount = getIntFromKey(secondAddress)
100100 TransferSet([ScriptTransfer(Address(fromBase58String(firstAddress)), firstAddressAmount, unit), ScriptTransfer(Address(fromBase58String(secondAddress)), secondAddressAmount, unit)])
101101 }
102102 else throw("Timelock still valid!")
103103 }
104104
105105
106106
107107 @Callable(i)
108108 func initialClosing (recipientA,amountRecipientA,recipientB,amountRecipientB,timestamp,signature) = {
109109 let sender = toBase58String(i.caller.bytes)
110110 let validSender = checkIfMethodCallComesFromValidAccount(sender)
111- let originalString = ((((recipientA + toString(amountRecipientA)) + recipientB) + toString(amountRecipientB)) + toString(timestamp))
111+ let originalString = base58'93M7wAymK2hDNWAzYkHZcWgiL2Cey4ZvTtfLPTFyhf23yVE3H1ikTSpBuHkSU5vi9qXbXWiJmhxamKyUuA17SxgGpWvwy1MqwBLDh8c5hh6iudfiY3mj5UeGM4n'
112112 let counterPart = getAddressFromEntry((sender + "_counterpart"))
113- let signedByCounterpart = sigVerify(toBytes(originalString), toBytes(signature), fromBase58String(counterPart))
113+ let signedByCounterpart = sigVerify(originalString, toBytes(signature), fromBase58String(counterPart))
114114 let timelockPeriod = getIntFromKey("timelockPeriod")
115115 if (if (signedByCounterpart)
116116 then validSender
117117 else false)
118118 then WriteSet([DataEntry(recipientA, amountRecipientA), DataEntry(recipientB, amountRecipientB), DataEntry("closing_initiated_by", sender), DataEntry("timestamp", timestamp), DataEntry("timelock", (height + timelockPeriod))])
119119 else throw("Wrong signature!")
120120 }
121121
122122
123123
124124 @Callable(i)
125125 func fund () = {
126126 let sender = toBase58String(i.caller.bytes)
127127 let validSender = checkIfMethodCallComesFromValidAccount(sender)
128128 let payment = extract(i.payment)
129129 let amountKey = (sender + "_amount")
130130 let currentAmount = getIntFromKey(amountKey)
131131 if (validSender)
132132 then if ((currentAmount != 0))
133133 then throw("User has already funded payment channel!")
134134 else WriteSet([DataEntry(amountKey, (currentAmount + payment.amount))])
135135 else throw("Wrong account tries to fund channel!")
136136 }
137137
138138
139139
140140 @Callable(i)
141141 func init (firstAddress,firstPublicKey,secondAddress,secondPublicKey,timelockPeriod) = {
142142 let currentFirstAddress = getAddressFromEntryOrEmpty((firstAddress + "_counterpart"))
143143 let currentSecondAddress = getAddressFromEntryOrEmpty((secondAddress + "_counterpart"))
144144 if (if ((currentFirstAddress != ""))
145145 then true
146146 else (currentSecondAddress != ""))
147147 then throw("Contract already initiated!")
148148 else WriteSet([DataEntry("firstAddress", firstAddress), DataEntry("secondAddress", secondAddress), DataEntry((firstAddress + "_counterpart"), secondPublicKey), DataEntry((secondAddress + "_counterpart"), firstPublicKey), DataEntry("timelockPeriod", timelockPeriod)])
149149 }
150150
151151
152152 @Verifier(tx)
153153 func verify () = match tx {
154154 case _ =>
155155 true
156156 }
157157

github/deemru/w8io/873ac7e 
30.73 ms