tx · 6xGLTZue8e9aXVLTqTWDWGotF94RJWK9F4YwWRoB7mms

3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH:  -0.00500000 Waves

2022.09.25 20:39 [2244975] smart account 3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH > SELF 0.00000000 Waves

{ "type": 13, "id": "6xGLTZue8e9aXVLTqTWDWGotF94RJWK9F4YwWRoB7mms", "fee": 500000, "feeAssetId": null, "timestamp": 1664127581360, "version": 2, "chainId": 84, "sender": "3MxssetYXJfiGwzo9pqChsSwYj3tCYq5FFH", "senderPublicKey": "46sMMaC9rMPQdyTE87RpcnevTY9oheuDqzfnuQzoyCtv", "proofs": [ "4T8nxvtwLboxFmJAmnMXY4pjsgViHtgSoLCCF4ZYcuX8vFz6EHoG2e5eM4qYxvWuuytu4xCaYDSpojVBkXsSXhgL" ], "script": "base64:BgIkCAISBwoFAQEBAQESBAoCAQgSBQoDAQgBEgQKAgEYEgQKAgEYCwERZ2V0SW50ZWdlck9yVGhyb3cCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgkArAICAgxDYW4ndCByZWFkICcFA2tleQINJyBhdCBhZGRyZXNzIAkApQgBBQdhZGRyZXNzARNnZXRJbnRlZ2VyT3JEZWZhdWx0AwdhZGRyZXNzA2tleQdkZWZhdWx0CQELdmFsdWVPckVsc2UCCQCaCAIFB2FkZHJlc3MFA2tleQUHZGVmYXVsdAERcGFyc2VJbnRPckRlZmF1bHQCCG1heWJlSW50B2RlZmF1bHQJAQt2YWx1ZU9yRWxzZQIJALYJAQUIbWF5YmVJbnQFB2RlZmF1bHQACGF1Y1N0YXJ0CQERZ2V0SW50ZWdlck9yVGhyb3cCBQR0aGlzAg5pbml0X3RpbWVzdGFtcAALYmlkRHVyYXRpb24JARFnZXRJbnRlZ2VyT3JUaHJvdwIFBHRoaXMCDGJpZF9kdXJhdGlvbgAOcmV2ZWFsRHVyYXRpb24JARFnZXRJbnRlZ2VyT3JUaHJvdwIFBHRoaXMCD3JldmVhbF9kdXJhdGlvbgAIZXJyb3JGZWUJARFnZXRJbnRlZ2VyT3JUaHJvdwIFBHRoaXMCCWVycm9yX2ZlZQAKbWluaW1hbEJpZAkBEWdldEludGVnZXJPclRocm93AgUEdGhpcwILbWluaW1hbF9iaWQBD2NhbGNBdWN0aW9uRGF0YQAED2F1Y3Rpb25EdXJhdGlvbgkAZAIFC2JpZER1cmF0aW9uBQ5yZXZlYWxEdXJhdGlvbgQQY3VycmVudEF1Y3Rpb25JZAkAaQIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIYXVjU3RhcnQFD2F1Y3Rpb25EdXJhdGlvbgQSY3VycmVudFBlcmlvZFN0YXJ0CQBkAgkAaAIFEGN1cnJlbnRBdWN0aW9uSWQFD2F1Y3Rpb25EdXJhdGlvbgUIYXVjU3RhcnQEEmN1cnJlbnRBdWN0aW9uVGltZQkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRJjdXJyZW50UGVyaW9kU3RhcnQEBnBlcmlvZAMJAGYCBRJjdXJyZW50QXVjdGlvblRpbWUFC2JpZER1cmF0aW9uAgZyZXZlYWwCA2JpZAkAlAoCBRBjdXJyZW50QXVjdGlvbklkBQZwZXJpb2QBCGNhbGNIYXNoAgRuYW1lBmFtb3VudAkA2AQBCQDwFQEJAIwVAQkAywECCQCbAwEFBG5hbWUJAJoDAQUGYW1vdW50AQ13cmFwRmluYWxsaXplAwlhdWN0aW9uSWQGaGFzaGVzB2FkZHJlc3MECmFkZHJlc3NTdHIJAKUIAQUHYWRkcmVzcwQHaW5kaWNlcwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkFA25pbAoBCmZvbGRSZWZ1bmQCA2FjYwVpbmRleAQEaGFzaAkAkQMCBQZoYXNoZXMFBWluZGV4BAtrZXlNYWluUGFydAkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFCWF1Y3Rpb25JZAIBXwUKYWRkcmVzc1N0cgIBXwUEaGFzaAQGYmlkS2V5CQCsAgICBGJpZF8FC2tleU1haW5QYXJ0BAlyZXZlYWxLZXkJAKwCAgIHcmV2ZWFsXwULa2V5TWFpblBhcnQEC3JldmVhbGVkQmlkCQCdCAIFBHRoaXMFCXJldmVhbEtleQQLJHQwMTg0MjIxMzcECWJpZFZhbHVlcwkAtQkCCQETdmFsdWVPckVycm9yTWVzc2FnZQIFC3JldmVhbGVkQmlkCQCsAgIJAKwCAgIOQmlkIHdpdGggaGFzaCAFBGhhc2gCCiBub3QgZm91bmQCAV8JAJUKAwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCWJpZFZhbHVlcwAACQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJYmlkVmFsdWVzAAEJAJEDAgUJYmlkVmFsdWVzAAIEB2RlcG9zaXQIBQskdDAxODQyMjEzNwJfMQQDYmlkCAULJHQwMTg0MjIxMzcCXzIEBG5hbWUIBQskdDAxODQyMjEzNwJfMwQGdG9wS2V5CQCsAgICBHRvcF8FBG5hbWUECndpbm5lckxpbmsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQZ0b3BLZXkCJkF1Y3Rpb24gd2lubmVyIGhhcyBub3QgYmVlbiBkZXRlcm1pbmVkBA93aW5uZXJBdWN0aW9uSWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFCndpbm5lckxpbmsCAV8AAQQLcmVmdW5kQW1vbnQDAwkAZgIFA2JpZAUHZGVwb3NpdAYJAQIhPQIFD3dpbm5lckF1Y3Rpb25JZAUJYXVjdGlvbklkCQBlAgUHZGVwb3NpdAkAawMFB2RlcG9zaXQACgBkAwkAAAIFCndpbm5lckxpbmsFCXJldmVhbEtleQkAZQIFB2RlcG9zaXQFA2JpZAUHZGVwb3NpdAQGcmVzdWx0CQDMCAIJAQtEZWxldGVFbnRyeQEFCXJldmVhbEtleQkAzAgCCQELRGVsZXRlRW50cnkBBQZiaWRLZXkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUHYWRkcmVzcwULcmVmdW5kQW1vbnQFBHVuaXQFA25pbAkAzggCBQNhY2MFBnJlc3VsdAoAAiRsBQdpbmRpY2VzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpmb2xkUmVmdW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKBQNpbnYBBGluaXQFCXRpbWVzdGFtcAtiaWREdXJhdGlvbg5yZXZlYWxEdXJhdGlvbghlcnJvckZlZQptaW5pbWFsQmlkAwkBAiE9AgUEdGhpcwgFA2ludgZjYWxsZXIJAAIBAhtvbmx5IHNlbGYgY2FsbHMgYXJlIGFsbG93ZWQJAMwIAgkBDEludGVnZXJFbnRyeQICDmluaXRfdGltZXN0YW1wBQl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQICDGJpZF9kdXJhdGlvbgULYmlkRHVyYXRpb24JAMwIAgkBDEludGVnZXJFbnRyeQICD3JldmVhbF9kdXJhdGlvbgUOcmV2ZWFsRHVyYXRpb24JAMwIAgkBDEludGVnZXJFbnRyeQICCWVycm9yX2ZlZQUIZXJyb3JGZWUJAMwIAgkBDEludGVnZXJFbnRyeQICC21pbmltYWxfYmlkBQptaW5pbWFsQmlkBQNuaWwDaW52AQNiaWQCCWF1Y3Rpb25JZARoYXNoBAdhZGRyZXNzCQClCAEIBQNpbnYGY2FsbGVyBAZiaWRLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfCQCkAwEFCWF1Y3Rpb25JZAIBXwUHYWRkcmVzcwIBXwUEaGFzaAQDcG10AwMJAAACCQCQAwEIBQNpbnYIcGF5bWVudHMAAQkAAAIICQCRAwIIBQNpbnYIcGF5bWVudHMAAAdhc3NldElkBQR1bml0BwgJAJEDAggFA2ludghwYXltZW50cwAABmFtb3VudAkAAgECF1NpbmdsZSBwYXltZW50IHJlcXVpcmVkBAskdDAzNjA4MzY2NQkBD2NhbGNBdWN0aW9uRGF0YQAEEGN1cnJlbnRBdWN0aW9uSWQIBQskdDAzNjA4MzY2NQJfMQQNY3VycmVudFBlcmlvZAgFCyR0MDM2MDgzNjY1Al8yAwkBAiE9AgUQY3VycmVudEF1Y3Rpb25JZAUJYXVjdGlvbklkCQACAQIYQXVjdGlvbnMgaXMgYWxyZWFkeSBvdmVyAwkBAiE9AgUNY3VycmVudFBlcmlvZAIDYmlkCQACAQISQmlkIHBlcmlvZCBpcyBvdmVyAwkBCWlzRGVmaW5lZAEJAJoIAgUEdGhpcwUGYmlkS2V5CQACAQInQmlkIHdpdGggZXhhY3QgYW1vdW50IGFscmVhZHkgcHJlc2VudGVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQZiaWRLZXkFA3BtdAUDbmlsA2ludgEGcmV2ZWFsAwlhdWN0aW9uSWQEbmFtZQliaWRBbW91bnQEB2FkZHJlc3MJAKUIAQgFA2ludgZjYWxsZXIEBGhhc2gJAQhjYWxjSGFzaAIFBG5hbWUFCWJpZEFtb3VudAQLa2V5TWFpblBhcnQJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBBQlhdWN0aW9uSWQCAV8FB2FkZHJlc3MCAV8FBGhhc2gECXJldmVhbEtleQkArAICAgdyZXZlYWxfBQtrZXlNYWluUGFydAQGdG9wS2V5CQCsAgICBHRvcF8FBG5hbWUEB2RlcG9zaXQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzCQCsAgICBGJpZF8FC2tleU1haW5QYXJ0CQCsAgICE0JpZCBkb2Vzbid0IGV4aXN0cyAFBGhhc2gECyR0MDQzODc0NDQ0CQEPY2FsY0F1Y3Rpb25EYXRhAAQQY3VycmVudEF1Y3Rpb25JZAgFCyR0MDQzODc0NDQ0Al8xBA1jdXJyZW50UGVyaW9kCAULJHQwNDM4NzQ0NDQCXzIDCQECIT0CBRBjdXJyZW50QXVjdGlvbklkBQlhdWN0aW9uSWQJAAIBAhhBdWN0aW9ucyBpcyBhbHJlYWR5IG92ZXIDCQECIT0CBQ1jdXJyZW50UGVyaW9kAgZyZXZlYWwJAAIBAhVSZXZlYWwgcGVyaW9kIGlzIG92ZXIDCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQlyZXZlYWxLZXkJAAIBAhdCaWQgaXMgYWxyZWFkeSByZXZlYWxlZAQJcmV2ZWFsQmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIFCXJldmVhbEtleQkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFB2RlcG9zaXQCASwJAKQDAQUJYmlkQW1vdW50AgEsBQRuYW1lBQNuaWwEEnRvcEJpZGRlclJldmVhbEtleQkAnQgCBQR0aGlzBQZ0b3BLZXkDCQEJaXNEZWZpbmVkAQUSdG9wQmlkZGVyUmV2ZWFsS2V5BAx0b3BCaWRkZXJLZXkJAQV2YWx1ZQEFEnRvcEJpZGRlclJldmVhbEtleQQNdG9wQmlkZGVyRGF0YQkBBXZhbHVlAQkAnQgCBQR0aGlzBQx0b3BCaWRkZXJLZXkEDHRvcEJpZEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgUNdG9wQmlkZGVyRGF0YQIBLAABBAx0b3BBdWN0aW9uSWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFDHRvcEJpZGRlcktleQIBXwABAwMDCQBmAgUJYmlkQW1vdW50BQx0b3BCaWRBbW91bnQJAGcCBQdkZXBvc2l0BQliaWRBbW91bnQHCQAAAgUJYXVjdGlvbklkBQx0b3BBdWN0aW9uSWQHCQDNCAIFCXJldmVhbEJpZAkBC1N0cmluZ0VudHJ5AgUGdG9wS2V5BQlyZXZlYWxLZXkFCXJldmVhbEJpZAMJAGcCBQdkZXBvc2l0BQliaWRBbW91bnQJAM0IAgUJcmV2ZWFsQmlkCQELU3RyaW5nRW50cnkCBQZ0b3BLZXkFCXJldmVhbEtleQUJcmV2ZWFsQmlkA2ludgEIZmluYWxpemUCCWF1Y3Rpb25JZAZoYXNoZXMEB2FkZHJlc3MIBQNpbnYGY2FsbGVyCQENd3JhcEZpbmFsbGl6ZQMFCWF1Y3Rpb25JZAUGaGFzaGVzBQdhZGRyZXNzA2ludgEOZmluYWxpemVPcmlnaW4CCWF1Y3Rpb25JZAZoYXNoZXMEB2FkZHJlc3MIBQNpbnYMb3JpZ2luQ2FsbGVyCQENd3JhcEZpbmFsbGl6ZQMFCWF1Y3Rpb25JZAUGaGFzaGVzBQdhZGRyZXNzAKPHFBc=", "height": 2244975, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C6SMm233V6fiwz69ZX7nbYk3AdVXthZ8cFiMkoQYsgpb Next: D9r9AcdsTGQt4SjWSAktJsqH7D6bQLhy6BeHf534iYUn Diff:
OldNewDifferences
4545 let revealKey = ("reveal_" + keyMainPart)
4646 let revealedBid = getString(this, revealKey)
4747 let $t018422137 = {
48- let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",")
48+ let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), "_")
4949 $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2])
5050 }
5151 let deposit = $t018422137._1
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getIntegerOrThrow (address,key) = valueOrErrorMessage(getInteger(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
55
66
77 func getIntegerOrDefault (address,key,default) = valueOrElse(getInteger(address, key), default)
88
99
1010 func parseIntOrDefault (maybeInt,default) = valueOrElse(parseInt(maybeInt), default)
1111
1212
1313 let aucStart = getIntegerOrThrow(this, "init_timestamp")
1414
1515 let bidDuration = getIntegerOrThrow(this, "bid_duration")
1616
1717 let revealDuration = getIntegerOrThrow(this, "reveal_duration")
1818
1919 let errorFee = getIntegerOrThrow(this, "error_fee")
2020
2121 let minimalBid = getIntegerOrThrow(this, "minimal_bid")
2222
2323 func calcAuctionData () = {
2424 let auctionDuration = (bidDuration + revealDuration)
2525 let currentAuctionId = ((lastBlock.timestamp - aucStart) / auctionDuration)
2626 let currentPeriodStart = ((currentAuctionId * auctionDuration) + aucStart)
2727 let currentAuctionTime = (lastBlock.timestamp - currentPeriodStart)
2828 let period = if ((currentAuctionTime > bidDuration))
2929 then "reveal"
3030 else "bid"
3131 $Tuple2(currentAuctionId, period)
3232 }
3333
3434
3535 func calcHash (name,amount) = toBase58String(blake2b256_16Kb(keccak256_16Kb((toBytes(name) + toBytes(amount)))))
3636
3737
3838 func wrapFinallize (auctionId,hashes,address) = {
3939 let addressStr = toString(address)
4040 let indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
4141 func foldRefund (acc,index) = {
4242 let hash = hashes[index]
4343 let keyMainPart = ((((toString(auctionId) + "_") + addressStr) + "_") + hash)
4444 let bidKey = ("bid_" + keyMainPart)
4545 let revealKey = ("reveal_" + keyMainPart)
4646 let revealedBid = getString(this, revealKey)
4747 let $t018422137 = {
48- let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",")
48+ let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), "_")
4949 $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2])
5050 }
5151 let deposit = $t018422137._1
5252 let bid = $t018422137._2
5353 let name = $t018422137._3
5454 let topKey = ("top_" + name)
5555 let winnerLink = valueOrErrorMessage(getString(this, topKey), "Auction winner has not been determined")
5656 let winnerAuctionId = parseIntValue(split(winnerLink, "_")[1])
5757 let refundAmont = if (if ((bid > deposit))
5858 then true
5959 else (winnerAuctionId != auctionId))
6060 then (deposit - fraction(deposit, 10, 100))
6161 else if ((winnerLink == revealKey))
6262 then (deposit - bid)
6363 else deposit
6464 let result = [DeleteEntry(revealKey), DeleteEntry(bidKey), ScriptTransfer(address, refundAmont, unit)]
6565 (acc ++ result)
6666 }
6767
6868 let $l = indices
6969 let $s = size($l)
7070 let $acc0 = nil
7171 func $f0_1 ($a,$i) = if (($i >= $s))
7272 then $a
7373 else foldRefund($a, $l[$i])
7474
7575 func $f0_2 ($a,$i) = if (($i >= $s))
7676 then $a
7777 else throw("List size exceeds 10")
7878
7979 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
8080 }
8181
8282
8383 @Callable(inv)
8484 func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid) = if ((this != inv.caller))
8585 then throw("only self calls are allowed")
8686 else [IntegerEntry("init_timestamp", timestamp), IntegerEntry("bid_duration", bidDuration), IntegerEntry("reveal_duration", revealDuration), IntegerEntry("error_fee", errorFee), IntegerEntry("minimal_bid", minimalBid)]
8787
8888
8989
9090 @Callable(inv)
9191 func bid (auctionId,hash) = {
9292 let address = toString(inv.caller)
9393 let bidKey = ((((("bid_" + toString(auctionId)) + "_") + address) + "_") + hash)
9494 let pmt = if (if ((size(inv.payments) == 1))
9595 then (inv.payments[0].assetId == unit)
9696 else false)
9797 then inv.payments[0].amount
9898 else throw("Single payment required")
9999 let $t036083665 = calcAuctionData()
100100 let currentAuctionId = $t036083665._1
101101 let currentPeriod = $t036083665._2
102102 if ((currentAuctionId != auctionId))
103103 then throw("Auctions is already over")
104104 else if ((currentPeriod != "bid"))
105105 then throw("Bid period is over")
106106 else if (isDefined(getInteger(this, bidKey)))
107107 then throw("Bid with exact amount already presented")
108108 else [IntegerEntry(bidKey, pmt)]
109109 }
110110
111111
112112
113113 @Callable(inv)
114114 func reveal (auctionId,name,bidAmount) = {
115115 let address = toString(inv.caller)
116116 let hash = calcHash(name, bidAmount)
117117 let keyMainPart = ((((toString(auctionId) + "_") + address) + "_") + hash)
118118 let revealKey = ("reveal_" + keyMainPart)
119119 let topKey = ("top_" + name)
120120 let deposit = valueOrErrorMessage(getInteger(this, ("bid_" + keyMainPart)), ("Bid doesn't exists " + hash))
121121 let $t043874444 = calcAuctionData()
122122 let currentAuctionId = $t043874444._1
123123 let currentPeriod = $t043874444._2
124124 if ((currentAuctionId != auctionId))
125125 then throw("Auctions is already over")
126126 else if ((currentPeriod != "reveal"))
127127 then throw("Reveal period is over")
128128 else if (isDefined(getString(this, revealKey)))
129129 then throw("Bid is already revealed")
130130 else {
131131 let revealBid = [StringEntry(revealKey, ((((toString(deposit) + ",") + toString(bidAmount)) + ",") + name))]
132132 let topBidderRevealKey = getString(this, topKey)
133133 if (isDefined(topBidderRevealKey))
134134 then {
135135 let topBidderKey = value(topBidderRevealKey)
136136 let topBidderData = value(getString(this, topBidderKey))
137137 let topBidAmount = parseIntValue(split(topBidderData, ",")[1])
138138 let topAuctionId = parseIntValue(split(topBidderKey, "_")[1])
139139 if (if (if ((bidAmount > topBidAmount))
140140 then (deposit >= bidAmount)
141141 else false)
142142 then (auctionId == topAuctionId)
143143 else false)
144144 then (revealBid :+ StringEntry(topKey, revealKey))
145145 else revealBid
146146 }
147147 else if ((deposit >= bidAmount))
148148 then (revealBid :+ StringEntry(topKey, revealKey))
149149 else revealBid
150150 }
151151 }
152152
153153
154154
155155 @Callable(inv)
156156 func finalize (auctionId,hashes) = {
157157 let address = inv.caller
158158 wrapFinallize(auctionId, hashes, address)
159159 }
160160
161161
162162
163163 @Callable(inv)
164164 func finalizeOrigin (auctionId,hashes) = {
165165 let address = inv.originCaller
166166 wrapFinallize(auctionId, hashes, address)
167167 }
168168
169169

github/deemru/w8io/fabc49c 
67.52 ms