tx · AfDhXB4qkHo2AwDea7N669tvSW268WbzdcjEgnXXZeLe

3Mqa6zGAReUUwsty7AzdVc62A8ZGtHMFeoi:  -0.02700000 Waves

2025.01.18 01:58 [3463739] smart account 3Mqa6zGAReUUwsty7AzdVc62A8ZGtHMFeoi > SELF 0.00000000 Waves

{ "type": 13, "id": "AfDhXB4qkHo2AwDea7N669tvSW268WbzdcjEgnXXZeLe", "fee": 2700000, "feeAssetId": null, "timestamp": 1737154766252, "version": 2, "chainId": 84, "sender": "3Mqa6zGAReUUwsty7AzdVc62A8ZGtHMFeoi", "senderPublicKey": "9b2JEUjYeofMVhbJ76R6NmPWyLhEQBazsco3RnaecC2", "proofs": [ "2AXEE2RgQHecpfVq1AXkoRz4Z8rTVQqCYQXv6JgqkUHkoTWrowriSfQrnzWanVEhjDd7iuug7Kzja8EF3PgtLLg3" ], "script": "base64:AAIFAAAAAAAAAC8IAhIECgIICBIDCgEIEgQKAggIEgUKAwgIARIDCgEIEgMKAQgSABIAEgASAwoBCAAAADcAAAAABVNjYWxlAAAAAAAF9eEAAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAACAAAAGXN0YXRpY19yZWZDb250cmFjdEFkZHJlc3MAAAAAFWtleUdsb2JhbExhc3RJbnRlcmVzdAIAAAAZZ2xvYmFsX2xhc3RDaGVja19pbnRlcmVzdAEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAAUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAAAAAAgAAABFzdGF0aWNfZWdnQXNzZXRJZAEAAAAec3RhdGljS2V5X2VhZ2xJbmN1YmF0b3JBZGRyZXNzAAAAAAIAAAAcc3RhdGljX2VhZ2xlSW5jdWJhdG9yQWRkcmVzcwEAAAAcc3RhdGljS2V5X2VhZ2xCcmVlZGVyQWRkcmVzcwAAAAACAAAAGnN0YXRpY19lYWdsZUJyZWVkZXJBZGRyZXNzAQAAABtzdGF0aWNLZXlfYWNjQm9vc3RlckFkZHJlc3MAAAAAAgAAABhzdGF0aWNfYWNjQm9vc3RlckFkZHJlc3MBAAAAGHN0YXRpY0tleV9jb3Vwb25zQWRkcmVzcwAAAAACAAAAFXN0YXRpY19jb3Vwb25zQWRkcmVzcwEAAAAVc3RhdGljS2V5X2J1cm5BZGRyZXNzAAAAAAIAAAASc3RhdGljX2J1cm5BZGRyZXNzAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAgAAAA9zdGF0aWNfZXh0cmFGZWUBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAIAAAAUc3RhdGljX2ZlZUFnZ3JlZ2F0b3IAAAAAD2tleUdsb2JhbEVhcm5lZAIAAAAPZ2xvYmFsX2Vhcm5pbmdzAQAAABJzdGF0aWNLZXlfcGVyY2hGZWUAAAAAAgAAABRzdGF0aWNfZWFnbGVQZXJjaEZlZQEAAAAOdG90YWxTdGFrZWRLZXkAAAAAAgAAAAx0b3RhbF9zdGFrZWQBAAAAFHN0YXRpY0tleV9wemxBc3NldElkAAAAAAIAAAAUc3RhdGljX3B1enpsZUFzc2V0SWQBAAAAEXN0YXRpY0tleV9wemxEYXBwAAAAAAIAAAAYc3RhdGljX3B1enpsZURhcHBBZGRyZXNzAQAAABxzdGF0aWNLZXlfZWFnbFJlYmlydGhBZGRyZXNzAAAAAAIAAAAac3RhdGljX2VhZ2xlUmViaXJ0aEFkZHJlc3MBAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAABAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAAB5zdGF0aWNLZXlfZWFnbEluY3ViYXRvckFkZHJlc3MAAAAAAQAAABFnZXRCcmVlZGVyQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHHN0YXRpY0tleV9lYWdsQnJlZWRlckFkZHJlc3MAAAAAAQAAABRnZXRBY2NCb29zdGVyQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAG3N0YXRpY0tleV9hY2NCb29zdGVyQWRkcmVzcwAAAAABAAAAEWdldENvdXBvbnNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAAAAAEAAAAOZ2V0QnVybkFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABVzdGF0aWNLZXlfYnVybkFkZHJlc3MAAAAAAQAAABBnZXRGZWVBZ2dyZWdhdG9yAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAQAAABVnZXRSZWZDb250cmFjdEFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABxzdGF0aWNLZXlfcmVmQ29udHJhY3RBZGRyZXNzAAAAAAEAAAANZ2V0UHpsQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABRzdGF0aWNLZXlfcHpsQXNzZXRJZAAAAAABAAAAEWdldFB6bERhcHBBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAARc3RhdGljS2V5X3B6bERhcHAAAAAAAQAAABVnZXRFYWdsUmViaXJ0aEFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABxzdGF0aWNLZXlfZWFnbFJlYmlydGhBZGRyZXNzAAAAAAEAAAAUa2V5TGFzdENoZWNrSW50ZXJlc3QAAAACAAAAB2FkZHJlc3MAAAAFYXNzZXQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABJfbGFzdENoZWNrSW50ZXJlc3QBAAAAEWFzc2V0RmFybWluZ1Bvd2VyAAAAAgAAAAdhZGRyZXNzAAAABWFzc2V0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAANX2Zhcm1pbmdQb3dlcgEAAAAQcmV3YXJkQ2xhaW1lZEtleQAAAAIAAAAHYWRkcmVzcwAAAAVhc3NldAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAACF9jbGFpbWVkAQAAABJ0b3RhbFN0YWtlZFVzZXJLZXkAAAABAAAAB2FkZHJlc3MJAAEsAAAAAgIAAAANdG90YWxfc3Rha2VkXwUAAAAHYWRkcmVzcwAAAAAHc3Rha2VJZAkBAAAADHRyeUdldFN0cmluZwAAAAECAAAADWxhc3Rfc3Rha2VfaWQAAAAADVJlZmVyZXJSZXdhcmQAAAAAAAAAAAUBAAAAFmNoZWNrQWRkaXRpb25hbFBheW1lbnQAAAABAAAAB3BheW1lbnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABlGQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAAAAAlmZWVBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJZmVlQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABxGQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQABpAAAAAEFAAAACWZlZUFtb3VudAIAAAATIGFtb3VudCBvZiB3YXZlbGV0cwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAFAAAACWZlZUFtb3VudAUAAAAEdW5pdAUAAAADbmlsAQAAAAdnZXRCb29sAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiBwEAAAAJaXNUZXN0RW52AAAAAAkBAAAAB2dldEJvb2wAAAABAgAAAAdURVNURU5WAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQJAAACAAAAAQIAAAAeRkFJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AQAAAAphc0ludFR1cGxlAAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACihJbnQsIEludCkEAAAAA2ludAUAAAAHJG1hdGNoMAUAAAADaW50CQAAAgAAAAECAAAAJEZBSTogd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IChJbnQsSW50KQEAAAASaGFuZGxlU3Rha2luZ1RvcFVwAAAAAQAAAAt0b3RhbEFtb3VudAQAAAAEdGVhbQkAAGkAAAACBQAAAAt0b3RhbEFtb3VudAAAAAAAAAAACgQAAAAOY29tcG91bmRBbW91bnQJAABpAAAAAgkAAGUAAAACBQAAAAt0b3RhbEFtb3VudAUAAAAEdGVhbQAAAAAAAAAAAgQAAAAMcGF5b3V0QW1vdW50CQAAZQAAAAIJAABlAAAAAgUAAAALdG90YWxBbW91bnQFAAAADmNvbXBvdW5kQW1vdW50BQAAAAR0ZWFtBAAAAA9jdXJyZW50SW50ZXJlc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAAVa2V5R2xvYmFsTGFzdEludGVyZXN0BAAAABF0b3RhbFN0YWtlZEFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAOdG90YWxTdGFrZWRLZXkAAAAABAAAAA1pbnRlcmVzdERlbHRhAwkAAGYAAAACBQAAABF0b3RhbFN0YWtlZEFtb3VudAAAAAAAAAAAAAkAAGsAAAADBQAAAAxwYXlvdXRBbW91bnQFAAAABVNjYWxlBQAAABF0b3RhbFN0YWtlZEFtb3VudAAAAAAAAAAAAAQAAAAJaW52b2tlUmVzAwkBAAAACWlzVGVzdEVudgAAAAAFAAAAA25pbAkAA/wAAAAECQEAAAARZ2V0UHpsRGFwcEFkZHJlc3MAAAAAAgAAAAVzdGFrZQUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQEAAAANZ2V0UHpsQXNzZXRJZAAAAAAFAAAADmNvbXBvdW5kQW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAACWludm9rZVJlcwUAAAAJaW52b2tlUmVzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlHbG9iYWxFYXJuZWQJAABkAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAA9rZXlHbG9iYWxFYXJuZWQFAAAADHBheW91dEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAVa2V5R2xvYmFsTGFzdEludGVyZXN0CQAAZAAAAAIFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAANaW50ZXJlc3REZWx0YQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAASZ2xvYmFsX1BaTF9i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cwQAAAAJY3VycmVudEZQCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAABFhc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BAAAAAVuZXdGUAkBAAAACmFzSW50VHVwbGUAAAABCQAD/AAAAAQFAAAABHRoaXMCAAAAEmNhbGN1bGF0ZUZhcm1Qb3dlcgkABEwAAAACBQAAAAVhc3NldAkABEwAAAACBQAAAAdhZGRyZXNzBQAAAANuaWwFAAAAA25pbAMJAQAAAAIhPQAAAAIFAAAACWN1cnJlbnRGUAAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADnRvdGFsU3Rha2VkS2V5AAAAAAkAAGQAAAACCQAAZQAAAAIFAAAAC3RvdGFsU3Rha2VkBQAAAAljdXJyZW50RlAIBQAAAAVuZXdGUAAAAAJfMQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEnRvdGFsU3Rha2VkVXNlcktleQAAAAEFAAAAB2FkZHJlc3MJAABkAAAAAgkAAGUAAAACBQAAAA90b3RhbFN0YWtlZFVzZXIFAAAACWN1cnJlbnRGUAgFAAAABW5ld0ZQAAAAAl8xCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARYXNzZXRGYXJtaW5nUG93ZXIAAAACBQAAAAdhZGRyZXNzBQAAAAVhc3NldAgFAAAABW5ld0ZQAAAAAl8xBQAAAANuaWwFAAAAA25pbAEAAAASY2xhaW1TdGFraW5nUmVzdWx0AAAAAwAAAAdhZGRyZXNzAAAABWFzc2V0AAAABnJlY2FsYwQAAAAPY3VycmVudEludGVyZXN0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAFWtleUdsb2JhbExhc3RJbnRlcmVzdAQAAAARbGFzdENoZWNrSW50ZXJlc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAFGtleUxhc3RDaGVja0ludGVyZXN0AAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQEAAAADHN0YWtlZEFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAARYXNzZXRGYXJtaW5nUG93ZXIA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", "height": 3463739, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 45xSJ6HJ5SEPvZt4U46EiNKKbV48iUhoHeKf16PWspts Next: BgWk9k1jxD9wbfkeHxaVC5Egw3YCYL7uX8gMdWd9yY9B Diff:
OldNewDifferences
309309 then 8
310310 else size(uniqueList)
311311 let power = pow(15, 1, totalGenes, 0, 2, DOWN)
312- let multiplier = (((height - 3750000) * 100) / (((60 * 24) * 30) * 3))
312+ let baseBlock = if (isTestEnv())
313+ then 2500000
314+ else 3750000
315+ let multiplier = (((height - baseBlock) * 100) / (((60 * 24) * 30) * 3))
313316 let basePower = tryGetInteger((assetId + "_basePower"))
314317 let finalPower = if ((basePower > 0))
315318 then basePower
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let Scale = 100000000
55
66 func tryGetStringExternal (address,key) = match getString(address, key) {
77 case a: String =>
88 a
99 case _ =>
1010 ""
1111 }
1212
1313
1414 func tryGetString (key) = tryGetStringExternal(this, key)
1515
1616
1717 func staticKey_refContractAddress () = "static_refContractAddress"
1818
1919
2020 let keyGlobalLastInterest = "global_lastCheck_interest"
2121
2222 func staticKey_oracleAddress () = "static_oracleAddress"
2323
2424
2525 func staticKey_eggAssetId () = "static_eggAssetId"
2626
2727
2828 func staticKey_eaglIncubatorAddress () = "static_eagleIncubatorAddress"
2929
3030
3131 func staticKey_eaglBreederAddress () = "static_eagleBreederAddress"
3232
3333
3434 func staticKey_accBoosterAddress () = "static_accBoosterAddress"
3535
3636
3737 func staticKey_couponsAddress () = "static_couponsAddress"
3838
3939
4040 func staticKey_burnAddress () = "static_burnAddress"
4141
4242
4343 func staticKey_extraFee () = "static_extraFee"
4444
4545
4646 func staticKey_feeAggregator () = "static_feeAggregator"
4747
4848
4949 let keyGlobalEarned = "global_earnings"
5050
5151 func staticKey_perchFee () = "static_eaglePerchFee"
5252
5353
5454 func totalStakedKey () = "total_staked"
5555
5656
5757 func staticKey_pzlAssetId () = "static_puzzleAssetId"
5858
5959
6060 func staticKey_pzlDapp () = "static_puzzleDappAddress"
6161
6262
6363 func staticKey_eaglRebirthAddress () = "static_eagleRebirthAddress"
6464
6565
6666 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
6767
6868
6969 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
7070
7171
7272 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_eaglIncubatorAddress())))
7373
7474
7575 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_eaglBreederAddress())))
7676
7777
7878 func getAccBoosterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_accBoosterAddress())))
7979
8080
8181 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_couponsAddress())))
8282
8383
8484 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_burnAddress())))
8585
8686
8787 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
8888
8989
9090 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
9191
9292
9393 func getPzlAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_pzlAssetId()))
9494
9595
9696 func getPzlDappAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_pzlDapp())))
9797
9898
9999 func getEaglRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_eaglRebirthAddress())))
100100
101101
102102 func keyLastCheckInterest (address,asset) = (((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest")
103103
104104
105105 func assetFarmingPower (address,asset) = (((("address_" + address) + "_asset_") + asset) + "_farmingPower")
106106
107107
108108 func rewardClaimedKey (address,asset) = (((address + "_asset_") + asset) + "_claimed")
109109
110110
111111 func totalStakedUserKey (address) = ("total_staked_" + address)
112112
113113
114114 let stakeId = tryGetString("last_stake_id")
115115
116116 let RefererReward = 5
117117
118118 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
119119 then throw("FCAP: Please attach waves")
120120 else {
121121 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
122122 if ((payment.amount != feeAmount))
123123 then throw((("FCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
124124 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
125125 }
126126
127127
128128 func getBool (key) = match getBoolean(this, key) {
129129 case b: Boolean =>
130130 b
131131 case _ =>
132132 false
133133 }
134134
135135
136136 func isTestEnv () = getBool("TESTENV")
137137
138138
139139 func tryGetInteger (key) = match getInteger(this, key) {
140140 case b: Int =>
141141 b
142142 case _ =>
143143 0
144144 }
145145
146146
147147 func asInt (value) = match value {
148148 case int: Int =>
149149 int
150150 case _ =>
151151 throw("FAI: wrong type, expected: Int")
152152 }
153153
154154
155155 func asIntTuple (value) = match value {
156156 case int: (Int, Int) =>
157157 int
158158 case _ =>
159159 throw("FAI: wrong type, expected: (Int,Int)")
160160 }
161161
162162
163163 func handleStakingTopUp (totalAmount) = {
164164 let team = (totalAmount / 10)
165165 let compoundAmount = ((totalAmount - team) / 2)
166166 let payoutAmount = ((totalAmount - compoundAmount) - team)
167167 let currentInterest = tryGetInteger(keyGlobalLastInterest)
168168 let totalStakedAmount = tryGetInteger(totalStakedKey())
169169 let interestDelta = if ((totalStakedAmount > 0))
170170 then fraction(payoutAmount, Scale, totalStakedAmount)
171171 else 0
172172 let invokeRes = if (isTestEnv())
173173 then nil
174174 else invoke(getPzlDappAddress(), "stake", nil, [AttachedPayment(getPzlAssetId(), compoundAmount)])
175175 if ((invokeRes == invokeRes))
176176 then [IntegerEntry(keyGlobalEarned, (tryGetInteger(keyGlobalEarned) + payoutAmount)), IntegerEntry(keyGlobalLastInterest, (currentInterest + interestDelta)), IntegerEntry("global_PZL_balance", (tryGetInteger("global_PZL_balance") + compoundAmount)), ScriptTransfer(getFeeAggregator(), team, getPzlAssetId())]
177177 else throw("Strict value is not equal to itself.")
178178 }
179179
180180
181181 func asString (value) = match value {
182182 case string: String =>
183183 string
184184 case _ =>
185185 throw("FAS: wrong type, expected: String")
186186 }
187187
188188
189189 func tryGetBoolean (key) = match getBoolean(this, key) {
190190 case b: Boolean =>
191191 b
192192 case _ =>
193193 false
194194 }
195195
196196
197197 func tryGetBooleanExternal (address,key) = match getBoolean(address, key) {
198198 case b: Boolean =>
199199 b
200200 case _ =>
201201 false
202202 }
203203
204204
205205 func getAssetOrigin (generation) = if ((generation == "G"))
206206 then getIncubatorAddress()
207207 else getBreederAddress()
208208
209209
210210 func getAssetRarity (genotype,generation) = {
211211 let quantity = valueOrErrorMessage(getInteger(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity")), (("stats_" + genotype) + "_quantity not found"))
212212 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
213213 if ((power > 0))
214214 then power
215215 else 2
216216 }
217217
218218
219219 func getAssetRarityComplete (isJackpot,assetName) = {
220220 let rarity = if (isJackpot)
221221 then 100
222222 else {
223223 let generation = take(takeRight(assetName, 2), 1)
224224 let farmGen = asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
225225 if ((farmGen == farmGen))
226226 then getAssetRarity(farmGen, generation)
227227 else throw("Strict value is not equal to itself.")
228228 }
229229 rarity
230230 }
231231
232232
233233 func updateFarmingPower (address,asset) = {
234234 let totalStaked = tryGetInteger(totalStakedKey())
235235 let totalStakedUser = tryGetInteger(totalStakedUserKey(address))
236236 let currentFP = tryGetInteger(assetFarmingPower(address, asset))
237237 let newFP = asIntTuple(invoke(this, "calculateFarmPower", [asset, address], nil))
238238 if ((currentFP != 0))
239239 then [IntegerEntry(totalStakedKey(), ((totalStaked - currentFP) + newFP._1)), IntegerEntry(totalStakedUserKey(address), ((totalStakedUser - currentFP) + newFP._1)), IntegerEntry(assetFarmingPower(address, asset), newFP._1)]
240240 else nil
241241 }
242242
243243
244244 func claimStakingResult (address,asset,recalc) = {
245245 let currentInterest = tryGetInteger(keyGlobalLastInterest)
246246 let lastCheckInterest = tryGetInteger(keyLastCheckInterest(address, asset))
247247 let stakedAmount = tryGetInteger(assetFarmingPower(address, asset))
248248 let fpUpdate = if (recalc)
249249 then updateFarmingPower(address, asset)
250250 else nil
251251 if ((fpUpdate == fpUpdate))
252252 then {
253253 let reward = if ((lastCheckInterest > 0))
254254 then fraction((currentInterest - lastCheckInterest), stakedAmount, Scale)
255255 else 0
256256 $Tuple2(([ScriptTransfer(addressFromStringValue(address), reward, getPzlAssetId()), IntegerEntry(keyLastCheckInterest(address, asset), currentInterest), IntegerEntry(rewardClaimedKey(address, asset), (tryGetInteger(rewardClaimedKey(address, asset)) + reward))] ++ fpUpdate), reward)
257257 }
258258 else throw("Strict value is not equal to itself.")
259259 }
260260
261261
262262 func asBoolean (value) = match value {
263263 case boolean: Boolean =>
264264 boolean
265265 case _ =>
266266 throw("FAB: wrong type, expected: Boolean")
267267 }
268268
269269
270270 func calculatePerchPrice (address) = {
271271 let hasArtefactStaked = tryGetStringExternal(getAccBoosterAddress(), (("ART-XMISTL_" + address) + "_owner"))
272272 let perchPrice = getIntegerValue(getOracle(), staticKey_perchFee())
273273 if ((hasArtefactStaked == ""))
274274 then perchPrice
275275 else ((perchPrice / 10) * 9)
276276 }
277277
278278
279279 @Callable(i)
280280 func calculateFarmPower (assetId,bonusAddress) = if (!(if ((value(assetInfo(fromBase58String(assetId))).issuer == getBreederAddress()))
281281 then true
282282 else (value(assetInfo(fromBase58String(assetId))).issuer == getIncubatorAddress())))
283283 then throw("This does not seem like a valid Duck!")
284284 else {
285285 let assetName = value(assetInfo(fromBase58String(assetId))).name
286286 let gen = takeRight(assetName, 1)
287287 let isJackpot = (takeRight(assetName, 1) == "U")
288288 let rarity = getAssetRarityComplete(isJackpot, assetName)
289289 let genotype = split(dropRight(drop(assetName, 5), 3), "")
290290 func uniqueArrayFilter (accum,nextGen) = if (!(containsElement(accum, nextGen)))
291291 then (accum :+ nextGen)
292292 else accum
293293
294294 let uniqueList = {
295295 let $l = genotype
296296 let $s = size($l)
297297 let $acc0 = nil
298298 func $f0_1 ($a,$i) = if (($i >= $s))
299299 then $a
300300 else uniqueArrayFilter($a, $l[$i])
301301
302302 func $f0_2 ($a,$i) = if (($i >= $s))
303303 then $a
304304 else throw("List size exceeds 8")
305305
306306 $f0_2($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)
307307 }
308308 let totalGenes = if ((gen == "U"))
309309 then 8
310310 else size(uniqueList)
311311 let power = pow(15, 1, totalGenes, 0, 2, DOWN)
312- let multiplier = (((height - 3750000) * 100) / (((60 * 24) * 30) * 3))
312+ let baseBlock = if (isTestEnv())
313+ then 2500000
314+ else 3750000
315+ let multiplier = (((height - baseBlock) * 100) / (((60 * 24) * 30) * 3))
313316 let basePower = tryGetInteger((assetId + "_basePower"))
314317 let finalPower = if ((basePower > 0))
315318 then basePower
316319 else ((power * multiplier) / 100)
317320 let finalPowerRarity = ((finalPower * rarity) / 100)
318321 let farmBoost = 0
319322 if ((farmBoost == farmBoost))
320323 then {
321324 let finalPowerRarityBoost = (finalPowerRarity + ((finalPowerRarity * farmBoost) / 100))
322325 $Tuple2(nil, $Tuple2(finalPowerRarityBoost, finalPower))
323326 }
324327 else throw("Strict value is not equal to itself.")
325328 }
326329
327330
328331
329332 @Callable(i)
330333 func configureOracle (oracle) = if ((i.caller != this))
331334 then throw("FCO: admin only")
332335 else [StringEntry(staticKey_oracleAddress(), oracle)]
333336
334337
335338
336339 @Callable(i)
337340 func buyPerch (colorI,refererAddress) = {
338341 let validPayment = checkAdditionalPayment(i.payments[0])
339342 if ((validPayment == validPayment))
340343 then {
341344 let color = if ((colorI == "U"))
342345 then "B"
343346 else colorI
344347 if ((0 > value(indexOf(["A", "B", "C", "D"], color))))
345348 then throw("you need to set color properly")
346349 else {
347350 let exactPrice = calculatePerchPrice(toString(i.caller))
348351 let leftToPay = if ((i.originCaller == i.caller))
349352 then {
350353 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [exactPrice], nil))
351354 if ((amountPaidByCoupons == amountPaidByCoupons))
352355 then (exactPrice - amountPaidByCoupons)
353356 else throw("Strict value is not equal to itself.")
354357 }
355358 else exactPrice
356359 let payment = if ((leftToPay != 0))
357360 then {
358361 let firstPayment = if ((size(i.payments) == 2))
359362 then value(i.payments[1])
360363 else value(i.payments[0])
361364 if ((firstPayment.assetId != getEggAssetId()))
362365 then throw(("FBP: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId())))
363366 else if ((firstPayment.amount != leftToPay))
364367 then throw(((("FBP: To buy a perch you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller)))
365368 else {
366369 let refererRewardForPerch = fraction(leftToPay, 5, 100)
367370 let refCall = asBoolean(invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)]))
368371 if ((refCall == refCall))
369372 then {
370373 let toBurn = if (refCall)
371374 then (leftToPay - refererRewardForPerch)
372375 else leftToPay
373376 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
374377 if ((burnCall == burnCall))
375378 then leftToPay
376379 else throw("Strict value is not equal to itself.")
377380 }
378381 else throw("Strict value is not equal to itself.")
379382 }
380383 }
381384 else 0
382385 if ((payment == payment))
383386 then {
384387 let perchAmountKey = ((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)
385388 let perchAmount = tryGetInteger(perchAmountKey)
386389 ([IntegerEntry(perchAmountKey, (perchAmount + 1))] ++ validPayment)
387390 }
388391 else throw("Strict value is not equal to itself.")
389392 }
390393 }
391394 else throw("Strict value is not equal to itself.")
392395 }
393396
394397
395398
396399 @Callable(i)
397400 func addFreePerch (address,color,amount) = if ((0 > value(indexOf(["A", "B", "C", "D"], color))))
398401 then throw("you need to set color properly")
399402 else if (if ((i.caller != this))
400403 then (i.caller != getEaglRebirthAddress())
401404 else false)
402405 then throw("rebirth and admin only")
403406 else {
404407 let perchAmountKey = ((("address_" + address) + "_perchesAvailable_") + color)
405408 let perchAmount = tryGetInteger(perchAmountKey)
406409 $Tuple2([IntegerEntry(perchAmountKey, (perchAmount + amount))], "")
407410 }
408411
409412
410413
411414 @Callable(i)
412415 func stakeNFT (jColor) = {
413416 let validPayment = checkAdditionalPayment(i.payments[0])
414417 if ((validPayment == validPayment))
415418 then {
416419 let pmt = value(i.payments[1])
417420 let assetId = value(pmt.assetId)
418421 let assetName = value(value(assetInfo(assetId)).name)
419422 let isJackpot = (takeRight(assetName, 1) == "U")
420423 let address = toString(i.caller)
421424 let perchAddress = address
422425 let color = if (isJackpot)
423426 then jColor
424427 else takeRight(assetName, 1)
425428 let perches = {
426429 let availablePerches = tryGetInteger(((("address_" + perchAddress) + "_perchesAvailable_") + color))
427430 if ((0 >= availablePerches))
428431 then throw(("no perches available for the color " + color))
429432 else [IntegerEntry(((("address_" + perchAddress) + "_perchesAvailable_") + color), (availablePerches - 1)), StringEntry((((("address_" + address) + "_asset_") + toBase58String(assetId)) + "_perchColor"), color)]
430433 }
431434 if ((perches == perches))
432435 then if ((pmt.amount != 1))
433436 then throw("NFT is not attached")
434437 else {
435438 let farmingPower = asIntTuple(invoke(this, "calculateFarmPower", [toBase58String(assetId), toString(i.originCaller)], nil))
436439 if ((farmingPower == farmingPower))
437440 then {
438441 let result = claimStakingResult(address, toBase58String(assetId), false)
439442 if ((result == result))
440443 then ((([IntegerEntry(totalStakedKey(), (tryGetInteger(totalStakedKey()) + farmingPower._1)), IntegerEntry(totalStakedUserKey(address), (tryGetInteger(totalStakedUserKey(address)) + farmingPower._1)), StringEntry((toBase58String(assetId) + "_owner"), address), StringEntry((toBase58String(assetId) + "_original_caller"), toString(i.originCaller)), IntegerEntry(assetFarmingPower(address, toBase58String(assetId)), farmingPower._1), IntegerEntry((toBase58String(assetId) + "_basePower"), farmingPower._2)] ++ validPayment) ++ perches) ++ result._1)
441444 else throw("Strict value is not equal to itself.")
442445 }
443446 else throw("Strict value is not equal to itself.")
444447 }
445448 else throw("Strict value is not equal to itself.")
446449 }
447450 else throw("Strict value is not equal to itself.")
448451 }
449452
450453
451454
452455 @Callable(i)
453456 func unstakeNFT (asset) = {
454457 let address = toString(i.caller)
455458 if ((tryGetString((asset + "_owner")) != toString(i.caller)))
456459 then throw("You don't own this duck!!")
457460 else {
458461 let result = claimStakingResult(address, asset, false)
459462 if ((result == result))
460463 then {
461464 let validPayment = checkAdditionalPayment(i.payments[0])
462465 if ((validPayment == validPayment))
463466 then {
464467 let color = tryGetString((((("address_" + address) + "_asset_") + asset) + "_perchColor"))
465468 let assetFP = tryGetInteger(assetFarmingPower(address, asset))
466469 if ((assetFP == assetFP))
467470 then $Tuple2((([IntegerEntry(totalStakedKey(), (tryGetInteger(totalStakedKey()) - assetFP)), IntegerEntry(totalStakedUserKey(address), (tryGetInteger(totalStakedUserKey(address)) - assetFP)), DeleteEntry((asset + "_owner")), DeleteEntry(assetFarmingPower(address, asset)), DeleteEntry((((("address_" + address) + "_asset_") + asset) + "_perchColor")), DeleteEntry((asset + "_original_caller")), DeleteEntry((asset + "_use_origin")), DeleteEntry((asset + "_without_perch")), ScriptTransfer(Address(fromBase58String(address)), 1, fromBase58String(asset)), IntegerEntry(((("address_" + address) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + address) + "_perchesAvailable_") + color)) + 1))] ++ validPayment) ++ result._1), result._2)
468471 else throw("Strict value is not equal to itself.")
469472 }
470473 else throw("Strict value is not equal to itself.")
471474 }
472475 else throw("Strict value is not equal to itself.")
473476 }
474477 }
475478
476479
477480
478481 @Callable(i)
479482 func topUpReward () = {
480483 let firstPayment = value(i.payments[0])
481484 if ((firstPayment.assetId != getPzlAssetId()))
482485 then throw(("FBP: You can attach only" + toBase58String(getPzlAssetId())))
483486 else {
484487 let resHandleStaking = handleStakingTopUp(firstPayment.amount)
485488 $Tuple2(resHandleStaking, true)
486489 }
487490 }
488491
489492
490493
491494 @Callable(i)
492495 func claimRewardPete () = {
493496 let peteBalanceBefore = assetBalance(this, getPzlAssetId())
494497 if ((peteBalanceBefore == peteBalanceBefore))
495498 then {
496499 let invokeRes = if (isTestEnv())
497500 then nil
498501 else invoke(getPzlDappAddress(), "claim", nil, nil)
499502 if ((invokeRes == invokeRes))
500503 then {
501504 let peteBalanceAfter = assetBalance(this, getPzlAssetId())
502505 if ((peteBalanceAfter == peteBalanceAfter))
503506 then {
504507 let resHandleStaking = handleStakingTopUp(((peteBalanceAfter - peteBalanceBefore) - 10000000))
505508 $Tuple2(resHandleStaking, true)
506509 }
507510 else throw("Strict value is not equal to itself.")
508511 }
509512 else throw("Strict value is not equal to itself.")
510513 }
511514 else throw("Strict value is not equal to itself.")
512515 }
513516
514517
515518
516519 @Callable(i)
517520 func addPuzzleAndStakeMore () = {
518521 let firstPayment = value(i.payments[0])
519522 if ((firstPayment.assetId != getPzlAssetId()))
520523 then throw("FBP: You can attach only Waves")
521524 else {
522525 let invokeRes = if (isTestEnv())
523526 then nil
524527 else invoke(getPzlDappAddress(), "stake", nil, [i.payments[0]])
525528 if ((invokeRes == invokeRes))
526529 then [IntegerEntry("global_PZL_balance", (tryGetInteger("global_PZL_balance") + firstPayment.amount))]
527530 else throw("Strict value is not equal to itself.")
528531 }
529532 }
530533
531534
532535
533536 @Callable(i)
534537 func claimReward (assetId) = {
535538 let validPayment = checkAdditionalPayment(i.payments[0])
536539 if ((validPayment == validPayment))
537540 then if ((tryGetString((assetId + "_owner")) != toString(i.caller)))
538541 then throw((("You don't own this duck (" + assetId) + ")!! "))
539542 else if ((size(i.payments) > 1))
540543 then throw("Please don't add extra payments")
541544 else {
542545 let owner = toString(i.caller)
543546 let result = claimStakingResult(owner, assetId, true)
544547 $Tuple2((validPayment ++ result._1), result._2)
545548 }
546549 else throw("Strict value is not equal to itself.")
547550 }
548551
549552
550553 @Verifier(tx)
551554 func verify () = if (isTestEnv())
552555 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
553556 else {
554557 let firstUser = base58'6TdaXEfhnjYquvPf3yV7MFxt2CbgFmaqsvGwkKfXtKi4'
555558 let secondUser = base58'7DsP2WaMLocbHuUxux7pbXRjTrrZ1TFQPsi5QumS3gr8'
556559 let thirdUser = base58'BpFWP3p3JgYrrP45xfrKzeMcWMEXoinj4FVPPkUiA8D3'
557560 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
558561 then 1
559562 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
560563 then 1
561564 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
562565 then 1
563566 else 0
564567 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
565568 then 1
566569 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
567570 then 1
568571 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
569572 then 1
570573 else 0
571574 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
572575 then 1
573576 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
574577 then 1
575578 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
576579 then 1
577580 else 0
578581 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
579582 match tx {
580583 case _ =>
581584 (signaturesCount >= 1)
582585 }
583586 }
584587

github/deemru/w8io/169f3d6 
56.79 ms