tx · ARcDKHmuMnoVfayVQdpJ2j1qz6kqjpEvLBibvb47RbFG 3PGvfeMaCezvCWyz4RGeoQpmwzrWwv7NLYU: -0.01600000 Waves 2023.09.26 20:57 [3838514] smart account 3PGvfeMaCezvCWyz4RGeoQpmwzrWwv7NLYU > SELF 0.00000000 Waves
{ "type": 13, "id": "ARcDKHmuMnoVfayVQdpJ2j1qz6kqjpEvLBibvb47RbFG", "fee": 1600000, "feeAssetId": null, "timestamp": 1695751064261, "version": 2, "chainId": 87, "sender": "3PGvfeMaCezvCWyz4RGeoQpmwzrWwv7NLYU", "senderPublicKey": "Un4PmpFshNAiDG32eEAyePX7JHvuxkwyMAYYpP4cFtg", "proofs": [ "2fYcBBNzkFCm7nfSfNTR1J9w3ZMDWkEcFPGtL1QwUMQ1kaXtoUWLEKGpE4PjccFH8j6gjUSavcyCiV7MGRVNbfaL" ], "script": "base64:AAIFAAAAAAAAABwIAhIDCgEIEgQKAggIEgMKAQESAwoBCBIDCgEIAAAAHgEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACAAAAB2FkZHJlc3MAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAgAAAAABAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5CQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACBQAAAAR0aGlzBQAAAANrZXkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MBAAAAEnN0YXRpY0tleV9leHRyYUZlZQAAAAACAAAAD3N0YXRpY19leHRyYUZlZQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAgAAABRzdGF0aWNfZmVlQWdncmVnYXRvcgEAAAAUc3RhdGljS2V5X2VnZ0Fzc2V0SWQAAAAAAgAAABFzdGF0aWNfZWdnQXNzZXRJZAEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAACAAAAGXN0YXRpY19yZWZDb250cmFjdEFkZHJlc3MBAAAAHnN0YXRpY0tleV90dXJ0bGVSZWJpcnRoQWRkcmVzcwAAAAACAAAAG3N0YXRpY190dXJ0bGVSZWJpcnRoQWRkcmVzcwEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAQAAABBnZXRGZWVBZ2dyZWdhdG9yAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFHN0YXRpY0tleV9lZ2dBc3NldElkAAAAAAEAAAAOZ2V0QnVybkFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAACAAAAEnN0YXRpY19idXJuQWRkcmVzcwEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAABAAAAF2dldFR1cnRsZVJlYmlydGhBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAec3RhdGljS2V5X3R1cnRsZVJlYmlydGhBZGRyZXNzAAAAAAEAAAAWY2hlY2tBZGRpdGlvbmFsUGF5bWVudAAAAAEAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAGkJEQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAAAAAlmZWVBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJZmVlQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAB1CRENBUDogUGxlYXNlIGF0dGFjaCBleGFjdGx5IAkAAaQAAAABBQAAAAlmZWVBbW91bnQCAAAAEyBhbW91bnQgb2Ygd2F2ZWxldHMJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAABQAAAAlmZWVBbW91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bWluIG9ubHkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAUc3RhdGljX29yYWNsZUFkZHJlc3MFAAAABm9yYWNsZQUAAAADbmlsAAAAAWkBAAAAD2lzc3VlRnJlZVR1cnRsZQAAAAIAAAAHYWRkcmVzcwAAAAd0eElkU3RyAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyCQEAAAAXZ2V0VHVydGxlUmViaXJ0aEFkZHJlc3MAAAAACQAAAgAAAAECAAAAEklTRkQ6IHJlYmlydGggb25seQQAAAAEdHhJZAkAAlkAAAABBQAAAAd0eElkU3RyBAAAABFoYXRjaGluZ1N0YXR1c0tleQkBAAAAFGdldEhhdGNoaW5nU3RhdHVzS2V5AAAAAgUAAAAHYWRkcmVzcwUAAAAEdHhJZAQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAABB0b3RhbER1Y2tzQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAADXR1cnRsZV9hbW91bnQEAAAACmVnZ3NOZWVkZWQJAQAAABVjb3VudEVnZ3NOZWVkZWRBbW91bnQAAAABBQAAABB0b3RhbER1Y2tzQW1vdW50BAAAAAskdDA1MTUxNTI5OQkBAAAADWdldFJhbmRvbU5hbWUAAAADBQAAAAR0eElkCQAAZAAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+kAAAABBQAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgUAAAAHdHhJZFN0cgIAAAALIG5vdCBmb3VuZCAJAAJYAAAAAQUAAAAEdHhJZAAAAAAAAAAAAQYEAAAAB1RSVExHZW4IBQAAAAskdDA1MTUxNTI5OQAAAAJfMQQAAAAHZmFybUdlbggFAAAACyR0MDUxNTE1Mjk5AAAAAl8yBAAAAAtkZXNjcmlwdGlvbgkAASwAAAACCQABLAAAAAICAAAADnsiZ2Vub3R5cGUiOiAiBQAAAAdUUlRMR2VuAgAAABkiLCAiY3Jvc3NicmVlZGluZyI6IHRydWV9BAAAAAVhc3NldAkABEMAAAAHBQAAAAdUUlRMR2Vu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ZAAAAAAFAAAAA25pbAUAAAADbmlsCQAETgAAAAIJAAROAAAAAgUAAAAHcmVzdWx0cwUAAAAGcmVmdW5kBQAAAAtmZWVWYWxpZGF0ZQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEmZpbmlzaFRSVExIYXRjaGluZwAAAAEAAAAHdHhJZFN0cgQAAAALZmVlVmFsaWRhdGUJAQAAABZjaGVja0FkZGl0aW9uYWxQYXltZW50AAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAMJAAAAAAAAAgUAAAALZmVlVmFsaWRhdGUFAAAAC2ZlZVZhbGlkYXRlBAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAEWhhdGNoaW5nU3RhdHVzS2V5CQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAJVFJUTElkS2V5CQEAAAAMZ2V0VFJUTElkS2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABHR4SWQEAAAAEGhhdGNoaW5nVHhTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAEWhhdGNoaW5nU3RhdHVzS2V5BAAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPZmluaXNoSGVpZ2h0S2V5AwkAAAAAAAACBQAAABBoYXRjaGluZ1R4U3RhdHVzBQAAABBIYXRjaGluZ0ZpbmlzaGVkBAAAAAZUUlRMSWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAQAAAAxnZXRUUlRMSWRLZXkAAAACCQAE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", "height": 3838514, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EaguZ5BDDboGBErCbszWaAT5a66Z1sMr8fqeGbDErs27 Next: BU6u8t1C66GwpuebxcXj8otGB79zY8N6JrwbdAk5pEos Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func tryGetStringExternal (address,key) = match getString(address, key) { | |
5 | 5 | case a: String => | |
6 | 6 | a | |
7 | 7 | case _ => | |
8 | 8 | "" | |
9 | 9 | } | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | func tryGetString (key) = tryGetStringExternal(this, key) | |
13 | 13 | ||
14 | 14 | ||
15 | 15 | func staticKey_oracleAddress () = "static_oracleAddress" | |
16 | 16 | ||
17 | 17 | ||
18 | 18 | func staticKey_extraFee () = "static_extraFee" | |
19 | 19 | ||
20 | 20 | ||
21 | 21 | func staticKey_feeAggregator () = "static_feeAggregator" | |
22 | 22 | ||
23 | 23 | ||
24 | 24 | func staticKey_eggAssetId () = "static_eggAssetId" | |
25 | 25 | ||
26 | 26 | ||
27 | 27 | func staticKey_refContractAddress () = "static_refContractAddress" | |
28 | 28 | ||
29 | 29 | ||
30 | 30 | func staticKey_turtleRebirthAddress () = "static_turtleRebirthAddress" | |
31 | 31 | ||
32 | 32 | ||
33 | 33 | func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress()))) | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator()))) | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId())) | |
40 | 40 | ||
41 | 41 | ||
42 | 42 | func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), "static_burnAddress"))) | |
43 | 43 | ||
44 | 44 | ||
45 | 45 | func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress()))) | |
46 | 46 | ||
47 | 47 | ||
48 | 48 | func getTurtleRebirthAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_turtleRebirthAddress()))) | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | func checkAdditionalPayment (payment) = if (isDefined(payment.assetId)) | |
52 | 52 | then throw("BDCAP: Please attach waves") | |
53 | 53 | else { | |
54 | 54 | let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee()) | |
55 | 55 | if ((payment.amount != feeAmount)) | |
56 | 56 | then throw((("BDCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets")) | |
57 | 57 | else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)] | |
58 | 58 | } | |
59 | 59 | ||
60 | 60 | ||
61 | 61 | let delayForHatching = 2 | |
62 | 62 | ||
63 | 63 | let typesAmount = 4 | |
64 | 64 | ||
65 | 65 | let HatchingStarted = "HATCHING_STARTED" | |
66 | 66 | ||
67 | 67 | let HatchingFinished = "HATCHING_FINISHED" | |
68 | 68 | ||
69 | 69 | func isLocked () = { | |
70 | 70 | let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU') | |
71 | 71 | match getInteger(masterAddress, "egglock") { | |
72 | 72 | case b: Int => | |
73 | 73 | b | |
74 | 74 | case _ => | |
75 | 75 | 0 | |
76 | 76 | } | |
77 | 77 | } | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status") | |
81 | 81 | ||
82 | 82 | ||
83 | 83 | func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh") | |
84 | 84 | ||
85 | 85 | ||
86 | 86 | func getTRTLIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di") | |
87 | 87 | ||
88 | 88 | ||
89 | 89 | func getTRTLStatsKey (genString) = (("stats_" + genString) + "_amount") | |
90 | 90 | ||
91 | 91 | ||
92 | 92 | func tryGetInteger (key) = { | |
93 | 93 | let val = match getInteger(this, key) { | |
94 | 94 | case b: Int => | |
95 | 95 | b | |
96 | 96 | case _ => | |
97 | 97 | 0 | |
98 | 98 | } | |
99 | 99 | val | |
100 | 100 | } | |
101 | 101 | ||
102 | 102 | ||
103 | 103 | let discountCoefficient = tryGetInteger("discountCoefficient") | |
104 | 104 | ||
105 | 105 | func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = { | |
106 | 106 | let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1))) | |
107 | 107 | let randomHash = sha256((txId + value(randomSeedBlock.vrf))) | |
108 | 108 | (toInt(randomHash, (offset * 8)) % variants) | |
109 | 109 | } | |
110 | 110 | ||
111 | 111 | ||
112 | 112 | func getRandomName (txId,hatchingFinishHeight,all) = { | |
113 | 113 | let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1) | |
114 | 114 | let color = ["R", "D", "S", "G"][colorRandom] | |
115 | 115 | let oldGenes = [$Tuple2(("TRTL-AAAAAAAA-G" + color), "8A-G")] | |
116 | 116 | let newGenes = [$Tuple2(("TRTL-BBBBBBBB-G" + color), "8B-G"), $Tuple2(("TRTL-CCCCCCCC-G" + color), "8C-G"), $Tuple2(("TRTL-DDDDDDDD-G" + color), "8D-G"), $Tuple2(("TRTL-EEEEEEEE-G" + color), "8E-G")] | |
117 | 117 | let toPickFrom = if (all) | |
118 | 118 | then (oldGenes ++ newGenes) | |
119 | 119 | else newGenes | |
120 | 120 | let typeRandom = getRandomNumber(size(toPickFrom), txId, hatchingFinishHeight, 0) | |
121 | 121 | toPickFrom[typeRandom] | |
122 | 122 | } | |
123 | 123 | ||
124 | 124 | ||
125 | 125 | func countEggsNeededAmount (totalTRTLsAmount) = { | |
126 | 126 | let n = totalTRTLsAmount | |
127 | 127 | let g = discountCoefficient | |
128 | 128 | let t = typesAmount | |
129 | 129 | let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN) | |
130 | 130 | (price * 1500000) | |
131 | 131 | } | |
132 | 132 | ||
133 | 133 | ||
134 | 134 | func asBoolean (value) = match value { | |
135 | 135 | case boolean: Boolean => | |
136 | 136 | boolean | |
137 | 137 | case _ => | |
138 | 138 | throw("TI: wrong type, expected: Boolean") | |
139 | 139 | } | |
140 | 140 | ||
141 | 141 | ||
142 | 142 | @Callable(i) | |
143 | 143 | func configureOracle (oracle) = if ((i.caller != this)) | |
144 | 144 | then throw("ICU: admin only") | |
145 | 145 | else [StringEntry("static_oracleAddress", oracle)] | |
146 | 146 | ||
147 | 147 | ||
148 | 148 | ||
149 | 149 | @Callable(i) | |
150 | 150 | func issueFreeTurtle (address,txIdStr) = if ((i.caller != getTurtleRebirthAddress())) | |
151 | 151 | then throw("ISFD: rebirth only") | |
152 | 152 | else { | |
153 | 153 | let txId = fromBase58String(txIdStr) | |
154 | 154 | let hatchingStatusKey = getHatchingStatusKey(address, txId) | |
155 | 155 | let finishHeightKey = getHatchingFinishHeightKey(address, txId) | |
156 | 156 | let totalDucksAmount = tryGetInteger("turtle_amount") | |
157 | 157 | let eggsNeeded = countEggsNeededAmount(totalDucksAmount) | |
158 | 158 | let $t051515299 = getRandomName(txId, (valueOrErrorMessage(transactionHeightById(txId), ((txIdStr + " not found ") + toBase58String(txId))) + 1), true) | |
159 | 159 | let TRTLGen = $t051515299._1 | |
160 | 160 | let farmGen = $t051515299._2 | |
161 | 161 | let description = (("{\"genotype\": \"" + TRTLGen) + "\", \"crossbreeding\": true}") | |
162 | 162 | let asset = Issue(TRTLGen, description, 1, 0, false, unit, height) | |
163 | 163 | let assetId = calculateAssetId(asset) | |
164 | 164 | let amount = (tryGetInteger(getTRTLStatsKey(TRTLGen)) + 1) | |
165 | 165 | let duckIdKey = getTRTLIdKey(address, txId) | |
166 | 166 | $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("turtle_amount", (totalDucksAmount + 1)), IntegerEntry("turtle_last_price", (eggsNeeded / 1500000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getTRTLStatsKey(TRTLGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId)) | |
167 | 167 | } | |
168 | 168 | ||
169 | 169 | ||
170 | 170 | ||
171 | 171 | @Callable(i) | |
172 | 172 | func setDiscount (val) = if ((i.caller != this)) | |
173 | 173 | then throw("admin_only") | |
174 | 174 | else [IntegerEntry("discountCoefficient", val)] | |
175 | 175 | ||
176 | 176 | ||
177 | 177 | ||
178 | 178 | @Callable(i) | |
179 | 179 | func startTRTLHatching (refererAddress) = { | |
180 | 180 | let feeValidate = checkAdditionalPayment(i.payments[0]) | |
181 | 181 | if ((feeValidate == feeValidate)) | |
182 | 182 | then if ((isLocked() > 0)) | |
183 | 183 | then throw("EGG operations are temporarily locked") | |
184 | 184 | else { | |
185 | 185 | let totalTurtleAmount = tryGetInteger("turtle_amount") | |
186 | 186 | let eggsNeeded = countEggsNeededAmount(totalTurtleAmount) | |
187 | 187 | let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("turtle_amount", (totalTurtleAmount + 1)), IntegerEntry("turtle_last_price", (eggsNeeded / 1500000))] | |
188 | 188 | let leftToPay = eggsNeeded | |
189 | 189 | let payment = if ((leftToPay != 0)) | |
190 | 190 | then { | |
191 | 191 | let firstPayment = value(i.payments[1]) | |
192 | 192 | if ((firstPayment.assetId != getEggAssetId())) | |
193 | 193 | then throw(("TI: You can attach only EGG tokens with the following asset id: " + toBase58String(getEggAssetId()))) | |
194 | 194 | else if ((leftToPay > firstPayment.amount)) | |
195 | 195 | then throw(((("TI: To buy a beach you currently need the following amount of EGGlets: " + toString(leftToPay)) + " ") + toString(i.caller))) | |
196 | 196 | else { | |
197 | 197 | let refererRewardForbeach = fraction(leftToPay, 5, 100) | |
198 | 198 | let refCall = asBoolean(invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForbeach)])) | |
199 | 199 | if ((refCall == refCall)) | |
200 | 200 | then { | |
201 | 201 | let toBurn = if (refCall) | |
202 | 202 | then (leftToPay - refererRewardForbeach) | |
203 | 203 | else leftToPay | |
204 | 204 | let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)]) | |
205 | 205 | if ((burnCall == burnCall)) | |
206 | 206 | then leftToPay | |
207 | 207 | else throw("Strict value is not equal to itself.") | |
208 | 208 | } | |
209 | 209 | else throw("Strict value is not equal to itself.") | |
210 | 210 | } | |
211 | 211 | } | |
212 | 212 | else 0 | |
213 | 213 | if ((payment == payment)) | |
214 | 214 | then { | |
215 | 215 | let refund = if ((size(i.payments) == 2)) | |
216 | 216 | then [ScriptTransfer(i.caller, (i.payments[1].amount - leftToPay), getEggAssetId())] | |
217 | 217 | else nil | |
218 | 218 | ((results ++ refund) ++ feeValidate) | |
219 | 219 | } | |
220 | 220 | else throw("Strict value is not equal to itself.") | |
221 | 221 | } | |
222 | 222 | else throw("Strict value is not equal to itself.") | |
223 | 223 | } | |
224 | 224 | ||
225 | 225 | ||
226 | 226 | ||
227 | 227 | @Callable(i) | |
228 | 228 | func finishTRTLHatching (txIdStr) = { | |
229 | 229 | let feeValidate = checkAdditionalPayment(i.payments[0]) | |
230 | 230 | if ((feeValidate == feeValidate)) | |
231 | 231 | then { | |
232 | 232 | let txId = fromBase58String(txIdStr) | |
233 | 233 | let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId) | |
234 | 234 | let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId) | |
235 | 235 | let TRTLIdKey = getTRTLIdKey(toString(i.caller), txId) | |
236 | 236 | let hatchingTxStatus = getStringValue(this, hatchingStatusKey) | |
237 | 237 | let hatchingFinishHeight = getIntegerValue(this, finishHeightKey) | |
238 | 238 | if ((hatchingTxStatus == HatchingFinished)) | |
239 | 239 | then { | |
240 | 240 | let TRTLId = getStringValue(this, getTRTLIdKey(toString(i.caller), txId)) | |
241 | 241 | throw(("The Turtle was hatched and claimed already, here is the folowing: " + TRTLId)) | |
242 | 242 | } | |
243 | 243 | else if ((hatchingFinishHeight > height)) | |
244 | 244 | then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes")) | |
245 | 245 | else { | |
246 | 246 | let $t093969469 = getRandomName(txId, hatchingFinishHeight, false) | |
247 | 247 | let TRTLGen = $t093969469._1 | |
248 | 248 | let farmGen = $t093969469._2 | |
249 | 249 | let description = (("{\"genotype\": \"" + TRTLGen) + "\", \"crossbreeding\": true}") | |
250 | 250 | let asset = Issue(TRTLGen, description, 1, 0, false, unit, hatchingFinishHeight) | |
251 | 251 | let assetId = calculateAssetId(asset) | |
252 | 252 | let amount = (tryGetInteger(getTRTLStatsKey(TRTLGen)) + 1) | |
253 | 253 | ([StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(TRTLIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), TRTLIdKey), IntegerEntry(getTRTLStatsKey(TRTLGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)] ++ feeValidate) | |
254 | 254 | } | |
255 | 255 | } | |
256 | 256 | else throw("Strict value is not equal to itself.") | |
257 | 257 | } | |
258 | 258 | ||
259 | 259 | ||
260 | 260 | @Verifier(tx) | |
261 | 261 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
262 | 262 |
github/deemru/w8io/3ef1775 39.33 ms ◑