tx · EXwfCmDCSS8GdKqYnZMvj68XHg6PsBkhYncEVpgnZyLq

3N4Kzbxu521DHPxcgrmZ4XUqN2kF6TqLTzs:  -0.01000000 Waves

2023.08.29 09:20 [2731612] smart account 3N4Kzbxu521DHPxcgrmZ4XUqN2kF6TqLTzs > SELF 0.00000000 Waves

{ "type": 13, "id": "EXwfCmDCSS8GdKqYnZMvj68XHg6PsBkhYncEVpgnZyLq", "fee": 1000000, "feeAssetId": null, "timestamp": 1693290039799, "version": 2, "chainId": 84, "sender": "3N4Kzbxu521DHPxcgrmZ4XUqN2kF6TqLTzs", "senderPublicKey": "8yQuxvQ2qLzXJrgbKZHbsfnNNjuU5wfHheyVujdALGsF", "proofs": [ "5r9oPfmWeKFmvoCPLTscnQtwothADwp729WnbZxHd7JDtFZ4gsMArFZWqbDcyTK4V5KEQGB5gDeQ6QEhRmvk72Ty" ], "script": "base64:BgIOCAISABIAEgQKAggBEgAKAA5sb3R0ZXJ5QXNzZXRJRAkA2QQBAiwzTHoyM21TVXZUMUVzd2NCbjJzVVJZSkcyYXQ4ckc1YUZ1VXJUQXdhUE02UQAKdGlja2V0U2l6ZQCAwtcvARBnZXRJbnRlZ2VyT3JFbHNlAgNrZXkDdmFsCQELdmFsdWVPckVsc2UCCQCfCAEFA2tleQUDdmFsAQJtawEBeAkAuQkCBQF4AgFfARFrZXlBZHJUb3RhbFN0YWtlZAEDYWRyCQECbWsBCQDMCAIFA2FkcgkAzAgCAgt0b3RhbFN0YWtlZAUDbmlsARVrZXlMb3R0ZXJ5VG90YWxTdGFrZWQBC2xvdHRlcnlOYW1lCQECbWsBCQDMCAICB2xvdHRlcnkJAMwIAgULbG90dGVyeU5hbWUJAMwIAgILdG90YWxTdGFrZWQFA25pbAEYa2V5QWRyTG90dGVyeVRvdGFsU3Rha2VkAgtsb3R0ZXJ5TmFtZQNhZHIJAQJtawEJAMwIAgIHbG90dGVyeQkAzAgCBQtsb3R0ZXJ5TmFtZQkAzAgCBQNhZHIJAMwIAgILdG90YWxTdGFrZWQFA25pbAEVa2V5TG90dGVyeUZpbmFsSGVpZ2h0AQtsb3R0ZXJ5TmFtZQkBAm1rAQkAzAgCAgdsb3R0ZXJ5CQDMCAIFC2xvdHRlcnlOYW1lCQDMCAICC2ZpbmFsSGVpZ2h0BQNuaWwBDmdldExvdHRlcnlOYW1lAAkBEUBleHRyTmF0aXZlKDEwNTgpAQISY3VycmVudExvdHRlcnlOYW1lARFhY3RpdmVMb3R0ZXJ5TmFtZQADCQECIT0CCQELdmFsdWVPckVsc2UCCQCgCAECEGxvdHRlcnlJc1N0YXJ0ZWQHBgIABAtsb3R0ZXJ5TmFtZQkBDmdldExvdHRlcnlOYW1lAAQSbG90dGVyeUZpbmFsSGVpZ2h0CQERQGV4dHJOYXRpdmUoMTA1NSkBCQEVa2V5TG90dGVyeUZpbmFsSGVpZ2h0AQULbG90dGVyeU5hbWUDCQBnAgkAZQIFBmhlaWdodAABBRJsb3R0ZXJ5RmluYWxIZWlnaHQCAAULbG90dGVyeU5hbWUEAWkBBXN0YWtlAAQLbG90dGVyeU5hbWUJARFhY3RpdmVMb3R0ZXJ5TmFtZQADCQAAAgULbG90dGVyeU5hbWUCAAkAAgECEkxvdHRlcnkgbm90IGFjdGl2ZQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhBObyBwYXltZW50IGFkZGVkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIXVG9vIG1hbnkgcGF5bWVudHMgYWRkZWQDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDmxvdHRlcnlBc3NldElECQACAQIVV3JvbmcgcGF5bWVudCBhc3NldElkBAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAx0aWNrZXRBbW91bnQJAGkCBQZhbW91bnQFCnRpY2tldFNpemUDCQAAAgUMdGlja2V0QW1vdW50AAAJAAIBAiVOb3QgZW5vdWdoIHRvIGJ1eSBhdCBsZWFzdCBvbmUgdGlja2V0BA1jYWxsZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQTX2xvdHRlcnlUb3RhbFN0YWtlZAkBFWtleUxvdHRlcnlUb3RhbFN0YWtlZAEFC2xvdHRlcnlOYW1lBBJsb3R0ZXJ5VG90YWxTdGFrZWQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFE19sb3R0ZXJ5VG90YWxTdGFrZWQEBl9vd25lcgkBAm1rAQkAzAgCAgVvd25lcgkAzAgCBQtsb3R0ZXJ5TmFtZQkAzAgCCQCkAwEFEmxvdHRlcnlUb3RhbFN0YWtlZAkAzAgCCQCkAwEJAGUCCQBkAgUSbG90dGVyeVRvdGFsU3Rha2VkBQx0aWNrZXRBbW91bnQAAQUDbmlsBA9fYWRyVG90YWxTdGFrZWQJARFrZXlBZHJUb3RhbFN0YWtlZAEFDWNhbGxlckFkZHJlc3MEDmFkclRvdGFsU3Rha2VkCQEQZ2V0SW50ZWdlck9yRWxzZQIFD19hZHJUb3RhbFN0YWtlZAAABBZfYWRyTG90dGVyeVRvdGFsU3Rha2VkCQEYa2V5QWRyTG90dGVyeVRvdGFsU3Rha2VkAgULbG90dGVyeU5hbWUFDWNhbGxlckFkZHJlc3MEFWFkckxvdHRlcnlUb3RhbFN0YWtlZAkBEGdldEludGVnZXJPckVsc2UCBRZfYWRyTG90dGVyeVRvdGFsU3Rha2VkAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBlAgUGYW1vdW50CQBoAgUMdGlja2V0QW1vdW50BQp0aWNrZXRTaXplBQ5sb3R0ZXJ5QXNzZXRJRAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTX2xvdHRlcnlUb3RhbFN0YWtlZAkAZAIFEmxvdHRlcnlUb3RhbFN0YWtlZAUMdGlja2V0QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFBl9vd25lcgUNY2FsbGVyQWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPX2FkclRvdGFsU3Rha2VkCQBkAgUOYWRyVG90YWxTdGFrZWQFDHRpY2tldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUWX2FkckxvdHRlcnlUb3RhbFN0YWtlZAkAZAIFFWFkckxvdHRlcnlUb3RhbFN0YWtlZAUMdGlja2V0QW1vdW50BQNuaWwBaQEFY2xhaW0ABAtsb3R0ZXJ5TmFtZQkBEWFjdGl2ZUxvdHRlcnlOYW1lAAQVc3Rha2VkSW5BY3RpdmVMb3R0ZXJ5AwkAAAIFC2xvdHRlcnlOYW1lAgAAZADIAQkAzAgCCQEMSW50ZWdlckVudHJ5AgIEdGVtcAUVc3Rha2VkSW5BY3RpdmVMb3R0ZXJ5BQNuaWwBaQELaW5pdExvdHRlcnkCC2xvdHRlcnlOYW1lEmxvdHRlcnlGaW5hbEhlaWdodAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECCmFkbWluIG9ubHkJAMwIAgkBDEJvb2xlYW5FbnRyeQICEGxvdHRlcnlJc1N0YXJ0ZWQGCQDMCAIJAQtTdHJpbmdFbnRyeQICEmN1cnJlbnRMb3R0ZXJ5TmFtZQULbG90dGVyeU5hbWUJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlMb3R0ZXJ5RmluYWxIZWlnaHQBBQtsb3R0ZXJ5TmFtZQUSbG90dGVyeUZpbmFsSGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5TG90dGVyeVRvdGFsU3Rha2VkAQULbG90dGVyeU5hbWUAAAUDbmlsAWkBBGNhbGwABAVhc3NldAkAwwgHAgVBc3NldAIAAAEAAAYFBHVuaXQAAAQHYXNzZXRJZAkAuAgBBQVhc3NldAkAzAgCCQELQmluYXJ5RW50cnkCAgNiaW4BAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgIEYm9vbAYJAMwIAgkBDEludGVnZXJFbnRyeQICA2ludAABCQDMCAIJAQtTdHJpbmdFbnRyeQICA3N0cgIACQDMCAIJAQtEZWxldGVFbnRyeQECA3N0cgkAzAgCBQVhc3NldAkAzAgCCQEHUmVpc3N1ZQMFB2Fzc2V0SWQAAQcJAMwIAgkBBEJ1cm4CBQdhc3NldElkAAEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2Fzc2V0SWQFA25pbAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXnWjzX/", "height": 2731612, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: De8zaPU6kVgNjuUpsSHUisXF4FAAE9W5p2bsxN3Wj1g3 Next: FxpiGXxEC6kAsBUbBeZCsWk35CeNb8ehbVbCBNrCDTDy Diff:
OldNewDifferences
1414 func keyAdrTotalStaked (adr) = mk([adr, "totalStaked"])
1515
1616
17-func keyLotteryTotalStaked (lotteryName) = mk(["lottery", lotteryName, "TotalStaked"])
17+func keyLotteryTotalStaked (lotteryName) = mk(["lottery", lotteryName, "totalStaked"])
1818
1919
2020 func keyAdrLotteryTotalStaked (lotteryName,adr) = mk(["lottery", lotteryName, adr, "totalStaked"])
2121
2222
23-func keyLotteryFinalHeight (lotteryName) = mk(["lottery", lotteryName, "FinalHeight"])
23+func keyLotteryFinalHeight (lotteryName) = mk(["lottery", lotteryName, "finalHeight"])
2424
2525
2626 func getLotteryName () = getStringValue("currentLotteryName")
5757 let callerAddress = toString(i.caller)
5858 let _lotteryTotalStaked = keyLotteryTotalStaked(lotteryName)
5959 let lotteryTotalStaked = getIntegerValue(_lotteryTotalStaked)
60- let _owner = mk([lotteryName, toString(lotteryTotalStaked), toString(((lotteryTotalStaked + ticketAmount) - 1)), "Owner"])
60+ let _owner = mk(["owner", lotteryName, toString(lotteryTotalStaked), toString(((lotteryTotalStaked + ticketAmount) - 1))])
6161 let _adrTotalStaked = keyAdrTotalStaked(callerAddress)
6262 let adrTotalStaked = getIntegerOrElse(_adrTotalStaked, 0)
6363 let _adrLotteryTotalStaked = keyAdrLotteryTotalStaked(lotteryName, callerAddress)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let lotteryAssetID = fromBase58String("3Lz23mSUvT1EswcBn2sURYJG2at8rG5aFuUrTAwaPM6Q")
55
66 let ticketSize = 100000000
77
88 func getIntegerOrElse (key,val) = valueOrElse(getInteger(key), val)
99
1010
1111 func mk (x) = makeString(x, "_")
1212
1313
1414 func keyAdrTotalStaked (adr) = mk([adr, "totalStaked"])
1515
1616
17-func keyLotteryTotalStaked (lotteryName) = mk(["lottery", lotteryName, "TotalStaked"])
17+func keyLotteryTotalStaked (lotteryName) = mk(["lottery", lotteryName, "totalStaked"])
1818
1919
2020 func keyAdrLotteryTotalStaked (lotteryName,adr) = mk(["lottery", lotteryName, adr, "totalStaked"])
2121
2222
23-func keyLotteryFinalHeight (lotteryName) = mk(["lottery", lotteryName, "FinalHeight"])
23+func keyLotteryFinalHeight (lotteryName) = mk(["lottery", lotteryName, "finalHeight"])
2424
2525
2626 func getLotteryName () = getStringValue("currentLotteryName")
2727
2828
2929 func activeLotteryName () = if ((valueOrElse(getBoolean("lotteryIsStarted"), false) != true))
3030 then ""
3131 else {
3232 let lotteryName = getLotteryName()
3333 let lotteryFinalHeight = getIntegerValue(keyLotteryFinalHeight(lotteryName))
3434 if (((height - 1) >= lotteryFinalHeight))
3535 then ""
3636 else lotteryName
3737 }
3838
3939
4040 @Callable(i)
4141 func stake () = {
4242 let lotteryName = activeLotteryName()
4343 if ((lotteryName == ""))
4444 then throw("Lottery not active")
4545 else if ((size(i.payments) == 0))
4646 then throw("No payment added")
4747 else if ((size(i.payments) != 1))
4848 then throw("Too many payments added")
4949 else if ((i.payments[0].assetId != lotteryAssetID))
5050 then throw("Wrong payment assetId")
5151 else {
5252 let amount = i.payments[0].amount
5353 let ticketAmount = (amount / ticketSize)
5454 if ((ticketAmount == 0))
5555 then throw("Not enough to buy at least one ticket")
5656 else {
5757 let callerAddress = toString(i.caller)
5858 let _lotteryTotalStaked = keyLotteryTotalStaked(lotteryName)
5959 let lotteryTotalStaked = getIntegerValue(_lotteryTotalStaked)
60- let _owner = mk([lotteryName, toString(lotteryTotalStaked), toString(((lotteryTotalStaked + ticketAmount) - 1)), "Owner"])
60+ let _owner = mk(["owner", lotteryName, toString(lotteryTotalStaked), toString(((lotteryTotalStaked + ticketAmount) - 1))])
6161 let _adrTotalStaked = keyAdrTotalStaked(callerAddress)
6262 let adrTotalStaked = getIntegerOrElse(_adrTotalStaked, 0)
6363 let _adrLotteryTotalStaked = keyAdrLotteryTotalStaked(lotteryName, callerAddress)
6464 let adrLotteryTotalStaked = getIntegerOrElse(_adrLotteryTotalStaked, 0)
6565 [ScriptTransfer(i.caller, (amount - (ticketAmount * ticketSize)), lotteryAssetID), IntegerEntry(_lotteryTotalStaked, (lotteryTotalStaked + ticketAmount)), StringEntry(_owner, callerAddress), IntegerEntry(_adrTotalStaked, (adrTotalStaked + ticketAmount)), IntegerEntry(_adrLotteryTotalStaked, (adrLotteryTotalStaked + ticketAmount))]
6666 }
6767 }
6868 }
6969
7070
7171
7272 @Callable(i)
7373 func claim () = {
7474 let lotteryName = activeLotteryName()
7575 let stakedInActiveLottery = if ((lotteryName == ""))
7676 then 100
7777 else 200
7878 [IntegerEntry("temp", stakedInActiveLottery)]
7979 }
8080
8181
8282
8383 @Callable(i)
8484 func initLottery (lotteryName,lotteryFinalHeight) = if ((i.caller != this))
8585 then throw("admin only")
8686 else [BooleanEntry("lotteryIsStarted", true), StringEntry("currentLotteryName", lotteryName), IntegerEntry(keyLotteryFinalHeight(lotteryName), lotteryFinalHeight), IntegerEntry(keyLotteryTotalStaked(lotteryName), 0)]
8787
8888
8989
9090 @Callable(i)
9191 func call () = {
9292 let asset = Issue("Asset", "", 1, 0, true, unit, 0)
9393 let assetId = calculateAssetId(asset)
9494 [BinaryEntry("bin", base58''), BooleanEntry("bool", true), IntegerEntry("int", 1), StringEntry("str", ""), DeleteEntry("str"), asset, Reissue(assetId, 1, false), Burn(assetId, 1), ScriptTransfer(i.caller, 1, assetId)]
9595 }
9696
9797
9898 @Verifier(tx)
9999 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
100100

github/deemru/w8io/169f3d6 
48.95 ms