tx · 4CQZ6gtjdeYL3M6pTP2qePZL6JUbacDmghhnw42ntjdr

3PGZyyPg7Mx91yaNT8k3MWxSQzuzusMUyzX:  -0.01100000 Waves

2023.03.25 21:29 [3571477] smart account 3PGZyyPg7Mx91yaNT8k3MWxSQzuzusMUyzX > SELF 0.00000000 Waves

{ "type": 13, "id": "4CQZ6gtjdeYL3M6pTP2qePZL6JUbacDmghhnw42ntjdr", "fee": 1100000, "feeAssetId": null, "timestamp": 1679768967281, "version": 2, "chainId": 87, "sender": "3PGZyyPg7Mx91yaNT8k3MWxSQzuzusMUyzX", "senderPublicKey": "EmRAgwaLuMrvnkeorjU9UmmGnRMXMu5ctEqkYRxnG2za", "proofs": [ "22aaetbytrDcYjoyJeFJpYLi4HtWvfqvacMYx1RtQY1yTVDe3rnUSJZcqfqSBkib4uWJEjqcCLpQJDKZSGJ2RRVg" ], "script": "base64:AAIFAAAAAAAAABIIAhIECgIICBIDCgEIEgMKAQgAAAAYAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAACAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAAAAAgAAABVzdGF0aWNfYnJlZWRlckFkZHJlc3MBAAAAGXN0YXRpY0tleV9iYWJ5RHVja0FkZHJlc3MAAAAAAgAAABZzdGF0aWNfYmFieUR1Y2tBZGRyZXNzAQAAABhzdGF0aWNLZXlfZmFybWluZ0FkZHJlc3MAAAAAAgAAABVzdGF0aWNfZmFybWluZ0FkZHJlc3MBAAAAGXN0YXRpY0tleV9jZk1hc3RlckFkZHJlc3MAAAAAAgAAABZzdGF0aWNfY2ZNYXN0ZXJBZGRyZXNzAQAAABVzdGF0aWNLZXlfaHVudEFkZHJlc3MAAAAAAgAAABJzdGF0aWNfaHVudEFkZHJlc3MBAAAAGHN0YXRpY0tleV9yZWJpcnRoQWRkcmVzcwAAAAACAAAAFXN0YXRpY19yZWJpcnRoQWRkcmVzcwEAAAANdHJ5R2V0Qm9vbGVhbgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAADXRyeUdldEludGVnZXIAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgAAAAAAAAAAAAEAAAAOaXNWYWxpZEFkZHJlc3MAAAABAAAAB2FkZHJlc3MEAAAAByRtYXRjaDAJAAQmAAAAAQUAAAAHYWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQWRkcmVzcwQAAAABYQUAAAAHJG1hdGNoMAYHAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAMdHJ5R2V0U3RyaW5nAAAAAQAAAANrZXkJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIFAAAABHRoaXMFAAAAA2tleQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABAgAAABRzdGF0aWNfb3JhY2xlQWRkcmVzcwEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAABAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAYc3RhdGljS2V5X2JyZWVkZXJBZGRyZXNzAAAAAAEAAAASZ2V0QmFieUR1Y2tBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAZc3RhdGljS2V5X2JhYnlEdWNrQWRkcmVzcwAAAAABAAAAEWdldEZhcm1pbmdBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAYc3RhdGljS2V5X2Zhcm1pbmdBZGRyZXNzAAAAAAEAAAASZ2V0Q2ZNYXN0ZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAZc3RhdGljS2V5X2NmTWFzdGVyQWRkcmVzcwAAAAABAAAADmdldEh1bnRBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAVc3RhdGljS2V5X2h1bnRBZGRyZXNzAAAAAAEAAAARZ2V0UmViaXJ0aEFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABhzdGF0aWNLZXlfcmViaXJ0aEFkZHJlc3MAAAAAAQAAABFnZXRUcnVzdGVkQWRkcmVzcwAAAAAJAARMAAAAAgkBAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkABEwAAAACCQEAAAASZ2V0QmFieUR1Y2tBZGRyZXNzAAAAAAkABEwAAAACCQEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQAETAAAAAIJAQAAAA5nZXRIdW50QWRkcmVzcwAAAAAJAARMAAAAAgkBAAAAEWdldFJlYmlydGhBZGRyZXNzAAAAAAUAAAADbmlsAQAAABNtYXN0ZXJUcnlHZXRCb29sZWFuAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgkBAAAAEmdldENmTWFzdGVyQWRkcmVzcwAAAAAFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcBAAAACWlzVGVzdEVudgAAAAAJAQAAAA10cnlHZXRCb29sZWFuAAAAAQIAAAAHVEVTVEVOVgAAAAMAAAABaQEAAAAJYWRkUmVmS2V5AAAAAgAAAA5yZWZlcmVyQWRkcmVzcwAAAApyZWZlcmVyS2V5AwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAACmFkbWluIG9ubHkEAAAAC3JlZlN0YXRlS2V5CQABLAAAAAIJAAEsAAAAAgIAAAAEa2V5XwUAAAAKcmVmZXJlcktleQIAAAAPX3JlZmVyZXJBZGRyZXNzAwkAAAAAAAACCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQUAAAALcmVmU3RhdGVLZXkCAAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtyZWZTdGF0ZUtleQUAAAAOcmVmZXJlckFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAADnJlZmVyZXJBZGRyZXNzAgAAAAxfcmVmZXJlcktleV8FAAAACnJlZmVyZXJLZXkFAAAACnJlZmVyZXJLZXkFAAAAA25pbAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAANVGhlIHJlZiBrZXkgIgUAAAAKcmVmZXJlcktleQIAAAAXIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQAAAABaQEAAAAKcmVmUGF5bWVudAAAAAEAAAAKcmVmZXJlcktleQQAAAAOcmVmZXJhbEFkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyAwkAAAAAAAACCQAETwAAAAIJAQAAABFnZXRUcnVzdGVkQWRkcmVzcwAAAAAIBQAAAAFpAAAABmNhbGxlcgUAAAAEdW5pdAkAAAIAAAABAgAAAD1UaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9ubHkgYnkgZmFybWluZyBhbmQgaW5jdWJhdG9yIGRBcHBzAwMJAAAAAAAAAgUAAAAKcmVmZXJlcktleQIAAAAACQAAAAAAAAIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAADnJlZmVyYWxBZGRyZXNzAgAAAApfcmVmZXJlZEJ5AgAAAAAHBQAAAANuaWwDCQEAAAATbWFzdGVyVHJ5R2V0Qm9vbGVhbgAAAAEJAAEsAAAAAgIAAAAFZmFybV8FAAAADnJlZmVyYWxBZGRyZXNzBQAAAANuaWwEAAAADGdpdmVuUmVmZXJlcgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgIAAAAEa2V5XwUAAAAKcmVmZXJlcktleQIAAAAPX3JlZmVyZXJBZGRyZXNzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXgFAAAAByRtYXRjaDAFAAAAAXgFAAAACnJlZmVyZXJLZXkEAAAADnJlZmVyZXJBZGRyZXNzBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAOcmVmZXJhbEFkZHJlc3MCAAAACl9yZWZlcmVkQnkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABeAUAAAAHJG1hdGNoMAUAAAABeAUAAAAMZ2l2ZW5SZWZlcmVyBAAAAAlyZWZBbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAMJAAAAAAAAAgkABCYAAAABBQAAAA5yZWZlcmVyQWRkcmVzcwUAAAAEdW5pdAUAAAADbmlsBAAAABNyZWZlcmVyQWRkcmVzc1ZhbHVlCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAA5yZWZlcmVyQWRkcmVzcwQAAAATcmVmZXJhbEFkZHJlc3NWYWx1ZQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAOcmVmZXJhbEFkZHJlc3MEAAAAEXBheW1lbnRGb3JSZWZlcmVyBQAAAAlyZWZBbW91bnQEAAAAE3JlZmVyZXJFYXJuZWRSZXdhcmQJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAOcmVmZXJlckFkZHJlc3MCAAAADV9lYXJuZWRSZXdhcmQEAAAAFnJlZmVyYWxEZWxpdmVyZWRSZXdhcmQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIcmVmZXJlcl8FAAAADnJlZmVyZXJBZGRyZXNzAgAAAAlfcmVmZXJhbF8FAAAADnJlZmVyYWxBZGRyZXNzAgAAABBfZGVsaXZlcmVkUmV3YXJkAwkAAAAAAAACBQAAAA5yZWZlcmVyQWRkcmVzcwUAAAAOcmVmZXJhbEFkZHJlc3MFAAAAA25pbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAADnJlZmVyYWxBZGRyZXNzAgAAAApfcmVmZXJlZEJ5BQAAAA5yZWZlcmVyQWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATcmVmZXJlckVhcm5lZFJld2FyZAkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEFAAAAE3JlZmVyZXJFYXJuZWRSZXdhcmQFAAAAEXBheW1lbnRGb3JSZWZlcmVyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABZyZWZlcmFsRGVsaXZlcmVkUmV3YXJkCQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAAWcmVmZXJhbERlbGl2ZXJlZFJld2FyZAUAAAARcGF5bWVudEZvclJlZmVyZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIcmVmZXJlcl8FAAAADnJlZmVyZXJBZGRyZXNzAgAAAAlfcmVmZXJhbF8FAAAADnJlZmVyYWxBZGRyZXNzAgAAAAdfYW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhyZWZlcmVyXwUAAAAOcmVmZXJlckFkZHJlc3MCAAAACV9yZWZlcmFsXwUAAAAOcmVmZXJhbEFkZHJlc3MCAAAAB19hbW91bnQAAAAAAAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAATcmVmZXJlckFkZHJlc3NWYWx1ZQUAAAARcGF5bWVudEZvclJlZmVyZXIJAQAAAA1nZXRFZ2dBc3NldElkAAAAAAUAAAADbmlsAAAAAWkBAAAAD2NvbmZpZ3VyZU9yYWNsZQAAAAEAAAAGb3JhY2xlAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAEFJDQ086IGFkbWluIG9ubHkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAUAAAAGb3JhY2xlBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAAAwkBAAAACWlzVGVzdEVudgAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BAAAAAlmaXJzdFVzZXIBAAAAIN7WxlHkUxbQZYDrAZoqC9D3l1H6HHaRfpuOBkN3F70lBAAAAApzZWNvbmRVc2VyAQAAACDBbN+O7dONc4+Lovn6iQ/0dc1EG1RyUqO0nNJWpC3gdQQAAAAJdGhpcmRVc2VyAQAAACDnW/SOqtL5SZ5uhCa4+X4f3GeofdwruNTqe83yaArBJQQAAAAPZmlyc3RVc2VyU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAACWZpcnN0VXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAABBQAAAAlmaXJzdFVzZXIAAAAAAAAAAAEDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAJZmlyc3RVc2VyAAAAAAAAAAABAAAAAAAAAAAABAAAABBzZWNvbmRVc2VyU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAACnNlY29uZFVzZXIAAAAAAAAAAAEDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAKc2Vjb25kVXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAApzZWNvbmRVc2VyAAAAAAAAAAABAAAAAAAAAAAABAAAAA90aGlyZFVzZXJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAJdGhpcmRVc2VyAAAAAAAAAAABAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEFAAAACXRoaXJkVXNlcgAAAAAAAAAAAQMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAAl0aGlyZFVzZXIAAAAAAAAAAAEAAAAAAAAAAAAEAAAAD3NpZ25hdHVyZXNDb3VudAkAAGQAAAACCQAAZAAAAAIFAAAAD2ZpcnN0VXNlclNpZ25lZAUAAAAQc2Vjb25kVXNlclNpZ25lZAUAAAAPdGhpcmRVc2VyU2lnbmVkBAAAAAckbWF0Y2gwBQAAAAJ0eAkAAGcAAAACBQAAAA9zaWduYXR1cmVzQ291bnQAAAAAAAAAAAIQ14TF", "height": 3571477, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EDEztYPUYTJMVBJx8n9x1jYKzGALKuuzKEj4NRn12qmU Next: Eq5xM6AqEf7MMGWGUq3ZJJFfCLbLJuT8X7WWM31mYoKh Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
4+func staticKey_oracleAddress () = "static_oracleAddress"
55
6-let incubatorAddress = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM'
76
8-let farmingAddress = base58'3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA'
7+func staticKey_eggAssetId () = "static_eggAssetId"
98
10-let collectiveMasterAddress = base58'3PDktsxDVEcoobpEBJcausnKo4enhcWUDEF'
119
12-let ref20 = ["3PR66kMvUDE1QvYAg8r6e1xDX7QbnTV7JW5"]
10+func staticKey_breederAddress () = "static_breederAddress"
11+
12+
13+func staticKey_babyDuckAddress () = "static_babyDuckAddress"
14+
15+
16+func staticKey_farmingAddress () = "static_farmingAddress"
17+
18+
19+func staticKey_cfMasterAddress () = "static_cfMasterAddress"
20+
21+
22+func staticKey_huntAddress () = "static_huntAddress"
23+
24+
25+func staticKey_rebirthAddress () = "static_rebirthAddress"
26+
27+
28+func tryGetBoolean (key) = match getBoolean(this, key) {
29+ case b: Boolean =>
30+ b
31+ case _ =>
32+ false
33+}
34+
1335
1436 func tryGetInteger (key) = match getInteger(this, key) {
1537 case b: Int =>
1638 b
1739 case _ =>
1840 0
19-}
20-
21-
22-func masterTryGetBoolean (key) = match getBoolean(Address(collectiveMasterAddress), key) {
23- case b: Boolean =>
24- b
25- case _ =>
26- false
2741 }
2842
2943
3549 }
3650
3751
38-func tryGetString (key) = match getString(this, key) {
52+func tryGetStringExternal (address,key) = match getString(address, key) {
3953 case a: String =>
4054 a
4155 case _ =>
4357 }
4458
4559
46-func getRefMultiplier (refererAddress) = if ((indexOf(ref20, refererAddress) != unit))
47- then 4
48- else 1
60+func tryGetString (key) = tryGetStringExternal(this, key)
61+
62+
63+func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
64+
65+
66+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
67+
68+
69+func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
70+
71+
72+func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_babyDuckAddress())))
73+
74+
75+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
76+
77+
78+func getCfMasterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_cfMasterAddress())))
79+
80+
81+func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_huntAddress())))
82+
83+
84+func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_rebirthAddress())))
85+
86+
87+func getTrustedAddress () = [getBreederAddress(), getBabyDuckAddress(), getFarmingAddress(), getHuntAddress(), getRebirthAddress()]
88+
89+
90+func masterTryGetBoolean (key) = match getBoolean(getCfMasterAddress(), key) {
91+ case b: Boolean =>
92+ b
93+ case _ =>
94+ false
95+}
96+
97+
98+func isTestEnv () = tryGetBoolean("TESTENV")
4999
50100
51101 @Callable(i)
63113 @Callable(i)
64114 func refPayment (refererKey) = {
65115 let referalAddress = toString(i.originCaller)
66- if (if ((i.caller.bytes != incubatorAddress))
67- then (i.caller.bytes != farmingAddress)
68- else false)
116+ if ((indexOf(getTrustedAddress(), i.caller) == unit))
69117 then throw("This method can be called only by farming and incubator dApps")
70118 else if (if ((refererKey == ""))
71119 then (tryGetString((("address_" + referalAddress) + "_referedBy")) == "")
86134 case _ =>
87135 givenReferer
88136 }
89- let refAmount = (i.payments[0].amount * getRefMultiplier(refererAddress))
137+ let refAmount = i.payments[0].amount
90138 if ((addressFromString(refererAddress) == unit))
91139 then nil
92140 else {
97145 let referalDeliveredReward = (((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_deliveredReward")
98146 if ((refererAddress == referalAddress))
99147 then nil
100- else [StringEntry((("address_" + referalAddress) + "_referedBy"), refererAddress), IntegerEntry(refererEarnedReward, (tryGetInteger(refererEarnedReward) + paymentForReferer)), IntegerEntry(referalDeliveredReward, (tryGetInteger(referalDeliveredReward) + paymentForReferer)), IntegerEntry((((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_amount"), (tryGetInteger((((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_amount")) + 1)), ScriptTransfer(refererAddressValue, paymentForReferer, eggsAssetId)]
148+ else [StringEntry((("address_" + referalAddress) + "_referedBy"), refererAddress), IntegerEntry(refererEarnedReward, (tryGetInteger(refererEarnedReward) + paymentForReferer)), IntegerEntry(referalDeliveredReward, (tryGetInteger(referalDeliveredReward) + paymentForReferer)), IntegerEntry((((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_amount"), (tryGetInteger((((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_amount")) + 1)), ScriptTransfer(refererAddressValue, paymentForReferer, getEggAssetId())]
101149 }
102150 }
103151 }
104152
105153
154+
155+@Callable(i)
156+func configureOracle (oracle) = if ((i.caller != this))
157+ then throw("RCCO: admin only")
158+ else [StringEntry(staticKey_oracleAddress(), oracle)]
159+
160+
106161 @Verifier(tx)
107-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
162+func verify () = if (isTestEnv())
163+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
164+ else {
165+ let firstUser = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
166+ let secondUser = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
167+ let thirdUser = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
168+ let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
169+ then 1
170+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
171+ then 1
172+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
173+ then 1
174+ else 0
175+ let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
176+ then 1
177+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
178+ then 1
179+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
180+ then 1
181+ else 0
182+ let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
183+ then 1
184+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
185+ then 1
186+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
187+ then 1
188+ else 0
189+ let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
190+ match tx {
191+ case _ =>
192+ (signaturesCount >= 2)
193+ }
194+ }
108195
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
4+func staticKey_oracleAddress () = "static_oracleAddress"
55
6-let incubatorAddress = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM'
76
8-let farmingAddress = base58'3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA'
7+func staticKey_eggAssetId () = "static_eggAssetId"
98
10-let collectiveMasterAddress = base58'3PDktsxDVEcoobpEBJcausnKo4enhcWUDEF'
119
12-let ref20 = ["3PR66kMvUDE1QvYAg8r6e1xDX7QbnTV7JW5"]
10+func staticKey_breederAddress () = "static_breederAddress"
11+
12+
13+func staticKey_babyDuckAddress () = "static_babyDuckAddress"
14+
15+
16+func staticKey_farmingAddress () = "static_farmingAddress"
17+
18+
19+func staticKey_cfMasterAddress () = "static_cfMasterAddress"
20+
21+
22+func staticKey_huntAddress () = "static_huntAddress"
23+
24+
25+func staticKey_rebirthAddress () = "static_rebirthAddress"
26+
27+
28+func tryGetBoolean (key) = match getBoolean(this, key) {
29+ case b: Boolean =>
30+ b
31+ case _ =>
32+ false
33+}
34+
1335
1436 func tryGetInteger (key) = match getInteger(this, key) {
1537 case b: Int =>
1638 b
1739 case _ =>
1840 0
19-}
20-
21-
22-func masterTryGetBoolean (key) = match getBoolean(Address(collectiveMasterAddress), key) {
23- case b: Boolean =>
24- b
25- case _ =>
26- false
2741 }
2842
2943
3044 func isValidAddress (address) = match addressFromString(address) {
3145 case a: Address =>
3246 true
3347 case _ =>
3448 false
3549 }
3650
3751
38-func tryGetString (key) = match getString(this, key) {
52+func tryGetStringExternal (address,key) = match getString(address, key) {
3953 case a: String =>
4054 a
4155 case _ =>
4256 ""
4357 }
4458
4559
46-func getRefMultiplier (refererAddress) = if ((indexOf(ref20, refererAddress) != unit))
47- then 4
48- else 1
60+func tryGetString (key) = tryGetStringExternal(this, key)
61+
62+
63+func getOracle () = Address(fromBase58String(tryGetString("static_oracleAddress")))
64+
65+
66+func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
67+
68+
69+func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
70+
71+
72+func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_babyDuckAddress())))
73+
74+
75+func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
76+
77+
78+func getCfMasterAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_cfMasterAddress())))
79+
80+
81+func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_huntAddress())))
82+
83+
84+func getRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_rebirthAddress())))
85+
86+
87+func getTrustedAddress () = [getBreederAddress(), getBabyDuckAddress(), getFarmingAddress(), getHuntAddress(), getRebirthAddress()]
88+
89+
90+func masterTryGetBoolean (key) = match getBoolean(getCfMasterAddress(), key) {
91+ case b: Boolean =>
92+ b
93+ case _ =>
94+ false
95+}
96+
97+
98+func isTestEnv () = tryGetBoolean("TESTENV")
4999
50100
51101 @Callable(i)
52102 func addRefKey (refererAddress,refererKey) = if ((i.caller != this))
53103 then throw("admin only")
54104 else {
55105 let refStateKey = (("key_" + refererKey) + "_refererAddress")
56106 if ((tryGetString(refStateKey) == ""))
57107 then [StringEntry(refStateKey, refererAddress), StringEntry(((("address_" + refererAddress) + "_refererKey_") + refererKey), refererKey)]
58108 else throw((("The ref key \"" + refererKey) + "\" is already registered"))
59109 }
60110
61111
62112
63113 @Callable(i)
64114 func refPayment (refererKey) = {
65115 let referalAddress = toString(i.originCaller)
66- if (if ((i.caller.bytes != incubatorAddress))
67- then (i.caller.bytes != farmingAddress)
68- else false)
116+ if ((indexOf(getTrustedAddress(), i.caller) == unit))
69117 then throw("This method can be called only by farming and incubator dApps")
70118 else if (if ((refererKey == ""))
71119 then (tryGetString((("address_" + referalAddress) + "_referedBy")) == "")
72120 else false)
73121 then nil
74122 else if (masterTryGetBoolean(("farm_" + referalAddress)))
75123 then nil
76124 else {
77125 let givenReferer = match getString(this, (("key_" + refererKey) + "_refererAddress")) {
78126 case x: String =>
79127 x
80128 case _ =>
81129 refererKey
82130 }
83131 let refererAddress = match getString(this, (("address_" + referalAddress) + "_referedBy")) {
84132 case x: String =>
85133 x
86134 case _ =>
87135 givenReferer
88136 }
89- let refAmount = (i.payments[0].amount * getRefMultiplier(refererAddress))
137+ let refAmount = i.payments[0].amount
90138 if ((addressFromString(refererAddress) == unit))
91139 then nil
92140 else {
93141 let refererAddressValue = addressFromStringValue(refererAddress)
94142 let referalAddressValue = addressFromStringValue(referalAddress)
95143 let paymentForReferer = refAmount
96144 let refererEarnedReward = (("address_" + refererAddress) + "_earnedReward")
97145 let referalDeliveredReward = (((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_deliveredReward")
98146 if ((refererAddress == referalAddress))
99147 then nil
100- else [StringEntry((("address_" + referalAddress) + "_referedBy"), refererAddress), IntegerEntry(refererEarnedReward, (tryGetInteger(refererEarnedReward) + paymentForReferer)), IntegerEntry(referalDeliveredReward, (tryGetInteger(referalDeliveredReward) + paymentForReferer)), IntegerEntry((((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_amount"), (tryGetInteger((((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_amount")) + 1)), ScriptTransfer(refererAddressValue, paymentForReferer, eggsAssetId)]
148+ else [StringEntry((("address_" + referalAddress) + "_referedBy"), refererAddress), IntegerEntry(refererEarnedReward, (tryGetInteger(refererEarnedReward) + paymentForReferer)), IntegerEntry(referalDeliveredReward, (tryGetInteger(referalDeliveredReward) + paymentForReferer)), IntegerEntry((((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_amount"), (tryGetInteger((((("referer_" + refererAddress) + "_referal_") + referalAddress) + "_amount")) + 1)), ScriptTransfer(refererAddressValue, paymentForReferer, getEggAssetId())]
101149 }
102150 }
103151 }
104152
105153
154+
155+@Callable(i)
156+func configureOracle (oracle) = if ((i.caller != this))
157+ then throw("RCCO: admin only")
158+ else [StringEntry(staticKey_oracleAddress(), oracle)]
159+
160+
106161 @Verifier(tx)
107-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
162+func verify () = if (isTestEnv())
163+ then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
164+ else {
165+ let firstUser = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
166+ let secondUser = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
167+ let thirdUser = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
168+ let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
169+ then 1
170+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
171+ then 1
172+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
173+ then 1
174+ else 0
175+ let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
176+ then 1
177+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
178+ then 1
179+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
180+ then 1
181+ else 0
182+ let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
183+ then 1
184+ else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
185+ then 1
186+ else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
187+ then 1
188+ else 0
189+ let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
190+ match tx {
191+ case _ =>
192+ (signaturesCount >= 2)
193+ }
194+ }
108195

github/deemru/w8io/3ef1775 
46.79 ms