tx · G8fDoPoLf1McfcNBat65bRg9K8oQqTNMDLKtzxcdY41c

3PAZhLney5kv77EYnPufR1DDdRdTVgwr2cL:  -0.01000000 Waves

2023.11.24 23:36 [3923848] smart account 3PAZhLney5kv77EYnPufR1DDdRdTVgwr2cL > SELF 0.00000000 Waves

{ "type": 13, "id": "G8fDoPoLf1McfcNBat65bRg9K8oQqTNMDLKtzxcdY41c", "fee": 1000000, "feeAssetId": null, "timestamp": 1700858185834, "version": 2, "chainId": 87, "sender": "3PAZhLney5kv77EYnPufR1DDdRdTVgwr2cL", "senderPublicKey": "2YnfmtWgE6g16xfEk7BE6nhfrog4PkTxSLU3gQtJ5CNU", "proofs": [ "2YAEK9YJ5WBD6eAmHnqWABVAY6f3P3w8yXgDnzY1hHjb7RjEuwbRzUiwsHJGRSSRMKYdbE9dSYexSpfqrtTmkL72" ], "script": "base64:BgILCAISAwoBARIAEgAQAARQRVRFASDgBBrgvVLFvGmdYYzEBNHsViaiNECN8HQGYmdKVaSXYgALVGVhbUFkZHJlc3MJAQdBZGRyZXNzAQEaAVesZ9JasQGmo0/p7vF1EjwaTIJ7exFMYDoAD2N1cnJlbnRSb3VuZEtleQINY3VycmVudF9yb3VuZAEIZ2V0Um91bmQACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2N1cnJlbnRSb3VuZEtleQAAARFnZXRSb3VuZFN0YXR1c0tleQEBcgkArAICCQCsAgICAnJfCQCkAwEFAXICB19zdGF0dXMBFGdldFJvdW5kU3RhcnRlZEF0S2V5AQFyCQCsAgIJAKwCAgICcl8JAKQDAQUBcgILX3N0YXJ0ZWRfYXQBEGdldFJvdW5kRGVsYXlLZXkBAXIJAKwCAgkArAICAgJyXwkApAMBBQFyAgZfZGVsYXkBDWdldFJvdW5kRGVsYXkACQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQEQZ2V0Um91bmREZWxheUtleQEJAQhnZXRSb3VuZAAAEHJvdW5kRmluaXNoQXRLZXkJAKwCAgkArAICAgJyXwkApAMBCQEIZ2V0Um91bmQAAgpfZmluaXNoX2F0AA9yb3VuZEFkZHJlc3NLZXkJAKwCAgkArAICAgJyXwkApAMBCQEIZ2V0Um91bmQAAghfYWRkcmVzcwATcm91bmRQcmV2QWRkcmVzc0tleQkArAICCQCsAgICAnJfCQCkAwEJAQhnZXRSb3VuZAACDV9wcmV2X2FkZHJlc3MADnJvdW5kV2lubmVyS2V5CQCsAgIJAKwCAgICcl8JAKQDAQkBCGdldFJvdW5kAAIHX3dpbm5lcgARcm91bmRCZXRzQ291bnRLZXkJAKwCAgkArAICAgJyXwkApAMBCQEIZ2V0Um91bmQAAgtfYmV0c19jb3VudAAKQkVUX0FNT1VOVAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAgpiZXRfYW1vdW50AIDKte4BAAhidXJuUGFydAkAawMFCkJFVF9BTU9VTlQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwIJYnVybl9wYXJ0ACgAZAAIdGVhbVBhcnQJAGsDBQpCRVRfQU1PVU5UCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMCCXRlYW1fcGFydAAKAGQDAWkBC2NyZWF0ZVJvdW5kAQVkZWxheQMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAQIhPQIIBQFpBmNhbGxlcgULVGVhbUFkZHJlc3MHCQACAQIJeW91IGNhbid0BAZzdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBEWdldFJvdW5kU3RhdHVzS2V5AQkBCGdldFJvdW5kAAIHbm8gZ2FtZQMJAAACBQZzdGF0dXMCB2luIGdhbWUJAAIBAhNjYW50IHN0YXJ0IG5ldyBnYW1lBAFyCQBkAgkBCGdldFJvdW5kAAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9jdXJyZW50Um91bmRLZXkFAXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWdldFJvdW5kU3RhdHVzS2V5AQUBcgIHaW4gZ2FtZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGdldFJvdW5kU3RhcnRlZEF0S2V5AQUBcgUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQZ2V0Um91bmREZWxheUtleQEFAXIFBWRlbGF5BQNuaWwBaQEDYmV0AAMDAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEUEVURQcJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUKQkVUX0FNT1VOVAcEB2FkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAhmaW5pc2hBdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRByb3VuZEZpbmlzaEF0S2V5CQBkAgUGaGVpZ2h0CQENZ2V0Um91bmREZWxheQADCQBnAgUGaGVpZ2h0BQhmaW5pc2hBdAkAAgECDXJvdW5kIGlzIG92ZXIECWJldHNDb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRFyb3VuZEJldHNDb3VudEtleQAABAtwcmV2QWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQ9yb3VuZEFkZHJlc3NLZXkCCXVuZGVmaW5lZAMJAAACBQtwcmV2QWRkcmVzcwULcHJldkFkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIFEHJvdW5kRmluaXNoQXRLZXkJAGQCBQZoZWlnaHQJAQ1nZXRSb3VuZERlbGF5AAkAzAgCCQELU3RyaW5nRW50cnkCBQ9yb3VuZEFkZHJlc3NLZXkFB2FkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIFEXJvdW5kQmV0c0NvdW50S2V5CQBkAgUJYmV0c0NvdW50AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgUTcm91bmRQcmV2QWRkcmVzc0tleQULcHJldkFkZHJlc3MJAMwIAgkBBEJ1cm4CBQRQRVRFBQhidXJuUGFydAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQtUZWFtQWRkcmVzcwUIdGVhbVBhcnQFBFBFVEUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC2JhZCBwYXltZW50AWkBCGZpbmFsaXplAAQIZmluaXNoQXQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUQcm91bmRGaW5pc2hBdEtleQkAZAIFBmhlaWdodAkBDWdldFJvdW5kRGVsYXkAAwkAZwIFBmhlaWdodAUIZmluaXNoQXQEBndpbm5lcgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUPcm91bmRBZGRyZXNzS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARFnZXRSb3VuZFN0YXR1c0tleQEJAQhnZXRSb3VuZAACCGZpbmlzaGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFDnJvdW5kV2lubmVyS2V5BQZ3aW5uZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUGd2lubmVyCQDwBwIFBHRoaXMFBFBFVEUFBFBFVEUFA25pbAkAAgECEXJvdW5kIGlzIG5vdCBvdmVyAMNLf/E=", "height": 3923848, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: UhqJFH9gQAgXqbWHjmyH8vW1TDvySgeY1Be93XxL4Gn Next: none Diff:
OldNewDifferences
6363 else false)
6464 then {
6565 let address = toString(i.caller)
66- let finishAt = valueOrElse(getInteger(this, roundFinishAtKey), height)
66+ let finishAt = valueOrElse(getInteger(this, roundFinishAtKey), (height + getRoundDelay()))
6767 if ((height >= finishAt))
6868 then throw("round is over")
6969 else {
8080
8181 @Callable(i)
8282 func finalize () = {
83- let finishAt = valueOrElse(getInteger(this, roundFinishAtKey), height)
83+ let finishAt = valueOrElse(getInteger(this, roundFinishAtKey), (height + getRoundDelay()))
8484 if ((height >= finishAt))
8585 then {
8686 let winner = getStringValue(this, roundAddressKey)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let PETE = base58'G5TxNrsZRvBmYW69g7jCB3gcR1J7sKV1Uh328Adtj2w3'
55
66 let TeamAddress = Address(base58'3PHeVKu6hS24p2LX7AdtHnZnpyuC8Q7q2MF')
77
88 let currentRoundKey = "current_round"
99
1010 func getRound () = valueOrElse(getInteger(this, currentRoundKey), 0)
1111
1212
1313 func getRoundStatusKey (r) = (("r_" + toString(r)) + "_status")
1414
1515
1616 func getRoundStartedAtKey (r) = (("r_" + toString(r)) + "_started_at")
1717
1818
1919 func getRoundDelayKey (r) = (("r_" + toString(r)) + "_delay")
2020
2121
2222 func getRoundDelay () = getIntegerValue(this, getRoundDelayKey(getRound()))
2323
2424
2525 let roundFinishAtKey = (("r_" + toString(getRound())) + "_finish_at")
2626
2727 let roundAddressKey = (("r_" + toString(getRound())) + "_address")
2828
2929 let roundPrevAddressKey = (("r_" + toString(getRound())) + "_prev_address")
3030
3131 let roundWinnerKey = (("r_" + toString(getRound())) + "_winner")
3232
3333 let roundBetsCountKey = (("r_" + toString(getRound())) + "_bets_count")
3434
3535 let BET_AMOUNT = valueOrElse(getInteger(this, "bet_amount"), 500000000)
3636
3737 let burnPart = fraction(BET_AMOUNT, valueOrElse(getInteger(this, "burn_part"), 40), 100)
3838
3939 let teamPart = fraction(BET_AMOUNT, valueOrElse(getInteger(this, "team_part"), 10), 100)
4040
4141 @Callable(i)
4242 func createRound (delay) = if (if ((i.caller != this))
4343 then (i.caller != TeamAddress)
4444 else false)
4545 then throw("you can't")
4646 else {
4747 let status = valueOrElse(getString(this, getRoundStatusKey(getRound())), "no game")
4848 if ((status == "in game"))
4949 then throw("cant start new game")
5050 else {
5151 let r = (getRound() + 1)
5252 [IntegerEntry(currentRoundKey, r), StringEntry(getRoundStatusKey(r), "in game"), IntegerEntry(getRoundStartedAtKey(r), height), IntegerEntry(getRoundDelayKey(r), delay)]
5353 }
5454 }
5555
5656
5757
5858 @Callable(i)
5959 func bet () = if (if (if ((size(i.payments) == 1))
6060 then (i.payments[0].assetId == PETE)
6161 else false)
6262 then (i.payments[0].amount == BET_AMOUNT)
6363 else false)
6464 then {
6565 let address = toString(i.caller)
66- let finishAt = valueOrElse(getInteger(this, roundFinishAtKey), height)
66+ let finishAt = valueOrElse(getInteger(this, roundFinishAtKey), (height + getRoundDelay()))
6767 if ((height >= finishAt))
6868 then throw("round is over")
6969 else {
7070 let betsCount = valueOrElse(getInteger(this, roundBetsCountKey), 0)
7171 let prevAddress = valueOrElse(getString(this, roundAddressKey), "undefined")
7272 if ((prevAddress == prevAddress))
7373 then [IntegerEntry(roundFinishAtKey, (height + getRoundDelay())), StringEntry(roundAddressKey, address), IntegerEntry(roundBetsCountKey, (betsCount + 1)), StringEntry(roundPrevAddressKey, prevAddress), Burn(PETE, burnPart), ScriptTransfer(TeamAddress, teamPart, PETE)]
7474 else throw("Strict value is not equal to itself.")
7575 }
7676 }
7777 else throw("bad payment")
7878
7979
8080
8181 @Callable(i)
8282 func finalize () = {
83- let finishAt = valueOrElse(getInteger(this, roundFinishAtKey), height)
83+ let finishAt = valueOrElse(getInteger(this, roundFinishAtKey), (height + getRoundDelay()))
8484 if ((height >= finishAt))
8585 then {
8686 let winner = getStringValue(this, roundAddressKey)
8787 [StringEntry(getRoundStatusKey(getRound()), "finished"), StringEntry(roundWinnerKey, winner), ScriptTransfer(addressFromStringValue(winner), assetBalance(this, PETE), PETE)]
8888 }
8989 else throw("round is not over")
9090 }
9191
9292

github/deemru/w8io/6500d08 
49.93 ms