tx · 7wSwmytDe35EPZrk7WMFbgv1qvKzycRenMBW1WgeZyG9

3P36HH7i6BBuuNp7FHQd6WX8gzfogi778i6:  -0.00700000 Waves

2022.08.03 17:02 [3233921] smart account 3P36HH7i6BBuuNp7FHQd6WX8gzfogi778i6 > SELF 0.00000000 Waves

{ "type": 13, "id": "7wSwmytDe35EPZrk7WMFbgv1qvKzycRenMBW1WgeZyG9", "fee": 700000, "feeAssetId": null, "timestamp": 1659535346697, "version": 2, "chainId": 87, "sender": "3P36HH7i6BBuuNp7FHQd6WX8gzfogi778i6", "senderPublicKey": "3xRzVfzGz2mW1Y3XAqQwVN4RiiWSgAHpLFmaF24hhfY9", "proofs": [ "3jVn6ASV78Kt1A6rrAmDBcwSy8HBq1CG3t22BHUrzkcgw2akyzBW7iVC3uX2j7quv4jJ2Ym5TFWPYBHVxgTwnW7i" ], "script": "base64:BgIVCAISAwoBCBIECgIICBIECgIIARIAFwEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECAAEVdHJ5R2V0SW50ZWdlckV4dGVybmFsAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABDHRyeUdldFN0cmluZwEDa2V5CQEUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwCBQR0aGlzBQNrZXkBCWdldE9yYWNsZQAJAQdBZGRyZXNzAQkA2QQBCQEMdHJ5R2V0U3RyaW5nAQIUc3RhdGljX29yYWNsZUFkZHJlc3MBD2dldFNwaWNlQXNzZXRJZAAJANkEAQkBFHRyeUdldFN0cmluZ0V4dGVybmFsAgkBCWdldE9yYWNsZQACE3N0YXRpY19zcGljZUFzc2V0SWQBEWdldEJyZWVkZXJBZGRyZXNzAAkBB0FkZHJlc3MBCQDZBAEJARR0cnlHZXRTdHJpbmdFeHRlcm5hbAIJAQlnZXRPcmFjbGUAAhVzdGF0aWNfYnJlZWRlckFkZHJlc3MADURVQ0tMSU5HUFJJQ0UAgMivoCUAFnBlcmNlbnRHcm93dGhQcmVjaXNpb24AgICE/qbe4REAFWV4aXN0aW5nRHVja1ByZWNpc2lvbgCAgOmDsd4WABZLR2xvYmFsSXNzdWVkVGltZXN0YW1wAhdnbG9iYWxfaXNzdWVkX3RpbWVzdGFtcAEMa2V5VG90YWxGZWVkAQpkdWNrbGluZ0lkCQCsAgIJAKwCAgIJZHVja2xpbmdfBQpkdWNrbGluZ0lkAgVfZmVlZAEba2V5RHVja2xpbmdGZWRMYXN0VGltZXN0YW1wAQpkdWNrbGluZ0lkCQCsAgIJAKwCAgIJZHVja2xpbmdfBQpkdWNrbGluZ0lkAgpfZmVkTGFzdFRzARBrZXlEdWNrbGluZ0xldmVsAQpkdWNrbGluZ0lkCQCsAgIJAKwCAgIJZHVja2xpbmdfBQpkdWNrbGluZ0lkAgZfbGV2ZWwBEGtleUR1Y2tsaW5nR3Jvd24BCmR1Y2tsaW5nSWQJAKwCAgkArAICAglkdWNrbGluZ18FCmR1Y2tsaW5nSWQCBl9ncm93bgESa2V5U3RhcnRQZXJjZW50YWdlAQpkdWNrbGluZ0lkCQCsAgIJAKwCAgIJZHVja2xpbmdfBQpkdWNrbGluZ0lkAhBfc3RhcnRQZXJjZW50YWdlAQhrZXlPd25lcgEKZHVja2xpbmdJZAkArAICCQCsAgICCWR1Y2tsaW5nXwUKZHVja2xpbmdJZAIGX293bmVyAQ10cnlHZXRJbnRlZ2VyAQNrZXkEA3ZhbAQHJG1hdGNoMAkAmggCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAAFA3ZhbAEHZ2V0Qm9vbAEDa2V5BAckbWF0Y2gwCQCbCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgdCb29sZWFuBAFiBQckbWF0Y2gwBQFiBwEVZ2V0RHVja2xpbmdQZXJjZW50YWdlAQpkdWNrbGluZ0lkBBJwZXJjZW50YWdlRHVja2xpbmcJAQ10cnlHZXRJbnRlZ2VyAQkBEmtleVN0YXJ0UGVyY2VudGFnZQEFCmR1Y2tsaW5nSWQEBGJhc2UDCQECIT0CBRJwZXJjZW50YWdlRHVja2xpbmcAAAUScGVyY2VudGFnZUR1Y2tsaW5nABQJALYCAQkAaAIFBGJhc2UFFWV4aXN0aW5nRHVja1ByZWNpc2lvbgEVZ2V0Q3VycmVudExldmVsQmlnSW50AQpkdWNrbGluZ0lkBAprRHVja0xldmVsCQEQa2V5RHVja2xpbmdMZXZlbAEFCmR1Y2tsaW5nSWQEByRtYXRjaDAJAKIIAQUKa0R1Y2tMZXZlbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKcDAQUBcwQHJG1hdGNoMQkAoAgBCQCsAgIJAKwCAgIJZHVja2xpbmdfBQpkdWNrbGluZ0lkAhFfaXNzdWVkQnlGZWVkQ2FsbAMJAAECBQckbWF0Y2gxAgdCb29sZWFuBAFiBQckbWF0Y2gxAwkAAAIFAWIGCQC2AgEAAAkBFWdldER1Y2tsaW5nUGVyY2VudGFnZQEFCmR1Y2tsaW5nSWQJARVnZXREdWNrbGluZ1BlcmNlbnRhZ2UBBQpkdWNrbGluZ0lkARNnZXRMYXN0RmVkVGltZXN0YW1wAQpkdWNrbGluZ0lkBBBsYXN0RmVkVGltZXN0YW1wCQENdHJ5R2V0SW50ZWdlcgEJARtrZXlEdWNrbGluZ0ZlZExhc3RUaW1lc3RhbXABBQpkdWNrbGluZ0lkAwkAZgIFEGxhc3RGZWRUaW1lc3RhbXAAAAUQbGFzdEZlZFRpbWVzdGFtcAgFCWxhc3RCbG9jawl0aW1lc3RhbXABGWNhbGN1bGF0ZU5ld0R1Y2tsaW5nTGV2ZWwCCmR1Y2tsaW5nSWQNcGF5bWVudEFtb3VudAQJY3VycmVudFRzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQXbGFzdEZlZFRpbWVzdGFtcENoZWNrZWQJARNnZXRMYXN0RmVkVGltZXN0YW1wAQUKZHVja2xpbmdJZAQHZmVkRGlmZgkAZQIFCWN1cnJlbnRUcwUXbGFzdEZlZFRpbWVzdGFtcENoZWNrZWQEB3BlbmFsdHkJALYCAQAABAZncm93dGgJALwCAwkAtgIBBQ1wYXltZW50QW1vdW50CQC2AgEFFnBlcmNlbnRHcm93dGhQcmVjaXNpb24JALYCAQUNRFVDS0xJTkdQUklDRQQMY3VycmVudExldmVsCQEVZ2V0Q3VycmVudExldmVsQmlnSW50AQUKZHVja2xpbmdJZAQIbmV3TGV2ZWwJALcCAgkAuAICBQxjdXJyZW50TGV2ZWwFB3BlbmFsdHkFBmdyb3d0aAQGcmVzdWx0AwkAvwICCQC2AgEAAAUIbmV3TGV2ZWwJAKYDAQUGZ3Jvd3RoCQCmAwEFCG5ld0xldmVsCQCUCgIFBnJlc3VsdAkAzAgCCQCsAgICDWN1cnJlbnRMZXZlbD0JAKYDAQUMY3VycmVudExldmVsCQDMCAIJAKwCAgIJbmV3TGV2ZWw9CQCmAwEFCG5ld0xldmVsCQDMCAIJAKwCAgIHZ3Jvd3RoPQkApgMBBQZncm93dGgJAMwIAgkArAICAghwZW5hbHR5PQkApgMBBQdwZW5hbHR5CQDMCAIJAKwCAgIKbGFzdEZlZFRzPQkApAMBBRdsYXN0RmVkVGltZXN0YW1wQ2hlY2tlZAkAzAgCCQCsAgICCGZlZERpZmY9CQCkAwEFB2ZlZERpZmYFA25pbAEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIeQkFJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50BAFpAQ9jb25maWd1cmVPcmFjbGUBBm9yYWNsZQMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECD0JDTzogYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCAhRzdGF0aWNfb3JhY2xlQWRkcmVzcwUGb3JhY2xlBQNuaWwBaQENaXNzdWVEdWNrbGluZwIHYWRkcmVzcwd0eElkU3RyAwkBAiE9AggFAWkGY2FsbGVyCQERZ2V0QnJlZWRlckFkZHJlc3MACQACAQkArAICAiRCSUZEOiBZb3UgY2FuJ3QgaXNzdWUgZnJlZSBkdWNrbGluZyAJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkAwwgHAhBCQUJZLTExMTExMTExLUhaAgAAAQAABwUEdW5pdAUGaGVpZ2h0BAdhc3NldElkCQC4CAEFBWFzc2V0CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUHYWRkcmVzcwIBXwUHdHhJZFN0cgIDX2RpCQDYBAEFB2Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQICDHN0YXRzX2Ftb3VudAkAZAIJAQ10cnlHZXRJbnRlZ2VyAQIMc3RhdHNfYW1vdW50AAEJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAKwCAgkArAICAglkdWNrbGluZ18JANgEAQUHYXNzZXRJZAIRX2lzc3VlZEJ5RmVlZENhbGwJAAACCAUBaQZjYWxsZXIFBHRoaXMJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlTdGFydFBlcmNlbnRhZ2UBCQDYBAEFB2Fzc2V0SWQAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEIa2V5T3duZXIBCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MJAMwIAgUFYXNzZXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBBXZhbHVlAQkApggBBQdhZGRyZXNzAAEFB2Fzc2V0SWQFA25pbAkA2AQBBQdhc3NldElkAWkBDGZlZWREdWNrbGluZwIKZHVja2xpbmdJZA1tYXhGZWVkQW1vdW50BA1hZGRyZXNzU3RyaW5nCQClCAEIBQFpBmNhbGxlcgQOcmVhbER1Y2tsaW5nSWQDAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABBgkBAiE9AggJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQEPZ2V0U3BpY2VBc3NldElkAAkAAgECLkJGRDogQmFkIHBheW1lbnQgYXR0YWNoZWQgKGFzc2V0W3NdIG9yIGFtb3VudCkDCQEHZ2V0Qm9vbAEJARBrZXlEdWNrbGluZ0dyb3duAQUKZHVja2xpbmdJZAkAAgECHkJGRDogRHVja2xpbmcgaXMgYWxyZWFkeSBncm93bgMJAAACBQpkdWNrbGluZ0lkAgAJAAIBAiNCRkQ6IFBsZWFzZSBoYXRjaCBhIGR1Y2tsaW5nIGZpcnN0IQQNZHVja2xpbmdPd25lcgkBDHRyeUdldFN0cmluZwEJAQhrZXlPd25lcgEFCmR1Y2tsaW5nSWQED2R1Y2tsaW5nSWRDaGVjawkBBXZhbHVlAQkA7AcBCQDZBAEFCmR1Y2tsaW5nSWQDCQECIT0CCQDwBwIIBQFpBmNhbGxlcggFD2R1Y2tsaW5nSWRDaGVjawJpZAABCQACAQIpQkZEOiBZb3UncmUgbm90IHRoZSBvd25lciBvZiB0aGUgZHVja2xpbmcDCQECIT0CBQ1kdWNrbGluZ093bmVyCQClCAEIBQFpBmNhbGxlcgkAAgECPkJGRDogWW91IGNhbiBvbmx5IGZlZWQgZHVja2xpbmdzIHRoYXQgeW91IHdvbi9ib3VnaHQgeW91cnNlbGYhAwkBAiE9AggFD2R1Y2tsaW5nSWRDaGVjawZpc3N1ZXIFBHRoaXMJAAIBAiRCRkQ6IENhbnQgZmluZCBkdWNrbGluZyB3aXRoIHN1Y2ggaWQEEGR1Y2tsaW5nSWRTdHJpbmcJANgEAQgFD2R1Y2tsaW5nSWRDaGVjawJpZAUQZHVja2xpbmdJZFN0cmluZwQSa0R1Y2tsaW5nTGFzdEZlZFRzCQEba2V5RHVja2xpbmdGZWRMYXN0VGltZXN0YW1wAQUKZHVja2xpbmdJZAQOY3VycmVudFBheW1lbnQICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAlrTmV3TGV2ZWwJARBrZXlEdWNrbGluZ0xldmVsAQUOcmVhbER1Y2tsaW5nSWQECmtUb3RhbEZlZWQJAQxrZXlUb3RhbEZlZWQBBQ5yZWFsRHVja2xpbmdJZAQJdG90YWxGZWVkCQENdHJ5R2V0SW50ZWdlcgEFCmtUb3RhbEZlZWQEDGtGZWVkVHhTdGF0cwkArAICCQCsAgIJAKwCAgIJZHVja2xpbmdfBQ5yZWFsRHVja2xpbmdJZAIGX3N0YXRfCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkAZgIFDmN1cnJlbnRQYXltZW50BQ1tYXhGZWVkQW1vdW50CQACAQkArAICAj9CRkQ6IENhbm5vdCBmZWVkIGR1Y2tsaW5nIGZvciBzdWNoIGFtb3VudCwgbWF4IGZlZWQgYW1vdW50IGlzOiAJAKQDAQUNbWF4RmVlZEFtb3VudAQQY2FsY3VsYXRlUmVzdWx0cwkBGWNhbGN1bGF0ZU5ld0R1Y2tsaW5nTGV2ZWwCBQ5yZWFsRHVja2xpbmdJZAUOY3VycmVudFBheW1lbnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmtEdWNrbGluZ0xhc3RGZWRUcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIFCmtUb3RhbEZlZWQJAGQCBQl0b3RhbEZlZWQFDmN1cnJlbnRQYXltZW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQxrRmVlZFR4U3RhdHMFDmN1cnJlbnRQYXltZW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFCWtOZXdMZXZlbAgFEGNhbGN1bGF0ZVJlc3VsdHMCXzEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQxrRmVlZFR4U3RhdHMCBl9kZWJ1ZwkAuQkCCAUQY2FsY3VsYXRlUmVzdWx0cwJfMgIBOwUDbmlsAWkBFHR1cm5EdWNrbGluZ0ludG9EdWNrAAMJAQIhPQIIBQFpBmNhbGxlcgkBEWdldEJyZWVkZXJBZGRyZXNzAAkAAgECHUJJRkQ6IFlvdSBjYW4ndCB0dXJuIGR1Y2tsaW5nBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBBRsYXN0SXNzdWVkRHVja2xpbmdUcwkBDXRyeUdldEludGVnZXIBBRZLR2xvYmFsSXNzdWVkVGltZXN0YW1wBAtmaXZlTWluSW5NcwkAaAIJAGgCAAEAPADoBwQIdGltZURpZmYJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAZAIFFGxhc3RJc3N1ZWREdWNrbGluZ1RzBQtmaXZlTWluSW5NcwMDCQBmAgUUbGFzdElzc3VlZER1Y2tsaW5nVHMAAAkAZgIAAAUIdGltZURpZmYHCQACAQkArAICCQCsAgICQkJURDogQ2FuIGlzc3VlIGR1Y2tsaW5ncyBvbmx5IG9uY2UgcGVyIDEgbWludXRlcywgcGxlYXNlIHdhaXQgZm9yIAkApAMBCQBrAwUIdGltZURpZmYAAQDoBwIFIHNlYy4DCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAi5CVEQ6IEJhZCBwYXltZW50IGF0dGFjaGVkIChhc3NldFtzXSBvciBhbW91bnQpBANwbXQJAQV2YWx1ZQEJAOwHAQkBBXZhbHVlAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAwkAvwICCQC2AgEAZAkBFWdldEN1cnJlbnRMZXZlbEJpZ0ludAEJANgEAQgFA3BtdAJpZAkAAgECIUJURDogRHVja2xpbmcgaXMgbm90IGdyb3duIHlldC4uLgMJAQIhPQIIBQNwbXQGaXNzdWVyBQR0aGlzCQACAQIqQlREOiBDYW4gdXNlIG9ubHkgZHVja2xpbmdzIGZyb20gdGhpcyBkQXBwBA5rRHVja2xpbmdHcm93bgkBEGtleUR1Y2tsaW5nR3Jvd24BCQDYBAEIBQNwbXQCaWQJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUOa0R1Y2tsaW5nR3Jvd24GCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZLR2xvYmFsSXNzdWVkVGltZXN0YW1wCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUDbmlsCQDYBAEIBQNwbXQCaWQBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5PhokGA==", "height": 3233921, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3PwZqzn3xZFctFC4DgRbycxDjW7Y8rc4tGcDYwA9Fub4 Next: 4j6YbFZUFgobyW627HKSZ6EBRUWeD87PEYo8eWc7Bg3x Diff:
OldNewDifferences
160160
161161 @Callable(V)
162162 func issueDuckling (b,X) = if ((V.caller != k()))
163- then throw("BIFD: You can't issue free duckling")
163+ then throw(("BIFD: You can't issue free duckling " + toString(V.caller)))
164164 else {
165165 let Y = Issue("BABY-11111111-HZ", "", 1, 0, false, unit, height)
166166 let Z = calculateAssetId(Y)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = {
55 let d = getString(b, c)
66 if ($isInstanceOf(d, "String"))
77 then {
88 let e = d
99 e
1010 }
1111 else ""
1212 }
1313
1414
1515 func f (b,c) = {
1616 let d = getInteger(b, c)
1717 if ($isInstanceOf(d, "Int"))
1818 then {
1919 let g = d
2020 g
2121 }
2222 else 0
2323 }
2424
2525
2626 func h (c) = a(this, c)
2727
2828
2929 func i () = Address(fromBase58String(h("static_oracleAddress")))
3030
3131
3232 func j () = fromBase58String(a(i(), "static_spiceAssetId"))
3333
3434
3535 func k () = Address(fromBase58String(a(i(), "static_breederAddress")))
3636
3737
3838 let l = 10000000000
3939
4040 let m = 10000000000000000
4141
4242 let n = 100000000000000
4343
4444 let o = "global_issued_timestamp"
4545
4646 func p (q) = (("duckling_" + q) + "_feed")
4747
4848
4949 func r (q) = (("duckling_" + q) + "_fedLastTs")
5050
5151
5252 func s (q) = (("duckling_" + q) + "_level")
5353
5454
5555 func t (q) = (("duckling_" + q) + "_grown")
5656
5757
5858 func u (q) = (("duckling_" + q) + "_startPercentage")
5959
6060
6161 func v (q) = (("duckling_" + q) + "_owner")
6262
6363
6464 func w (c) = {
6565 let x = {
6666 let d = getInteger(this, c)
6767 if ($isInstanceOf(d, "Int"))
6868 then {
6969 let g = d
7070 g
7171 }
7272 else 0
7373 }
7474 x
7575 }
7676
7777
7878 func y (c) = {
7979 let d = getBoolean(this, c)
8080 if ($isInstanceOf(d, "Boolean"))
8181 then {
8282 let g = d
8383 g
8484 }
8585 else false
8686 }
8787
8888
8989 func z (q) = {
9090 let A = w(u(q))
9191 let B = if ((A != 0))
9292 then A
9393 else 20
9494 toBigInt((B * n))
9595 }
9696
9797
9898 func C (q) = {
9999 let D = s(q)
100100 let d = getString(D)
101101 if ($isInstanceOf(d, "String"))
102102 then {
103103 let E = d
104104 parseBigIntValue(E)
105105 }
106106 else {
107107 let F = getBoolean((("duckling_" + q) + "_issuedByFeedCall"))
108108 if ($isInstanceOf(F, "Boolean"))
109109 then {
110110 let g = F
111111 if ((g == true))
112112 then toBigInt(0)
113113 else z(q)
114114 }
115115 else z(q)
116116 }
117117 }
118118
119119
120120 func G (q) = {
121121 let H = w(r(q))
122122 if ((H > 0))
123123 then H
124124 else lastBlock.timestamp
125125 }
126126
127127
128128 func I (q,J) = {
129129 let K = lastBlock.timestamp
130130 let L = G(q)
131131 let M = (K - L)
132132 let N = toBigInt(0)
133133 let O = fraction(toBigInt(J), toBigInt(m), toBigInt(l))
134134 let P = C(q)
135135 let Q = ((P - N) + O)
136136 let R = if ((toBigInt(0) > Q))
137137 then toString(O)
138138 else toString(Q)
139139 $Tuple2(R, [("currentLevel=" + toString(P)), ("newLevel=" + toString(Q)), ("growth=" + toString(O)), ("penalty=" + toString(N)), ("lastFedTs=" + toString(L)), ("fedDiff=" + toString(M))])
140140 }
141141
142142
143143 func S (T) = {
144144 let d = T
145145 if ($isInstanceOf(d, "Int"))
146146 then {
147147 let U = d
148148 U
149149 }
150150 else throw("BAI: wrong type, expected: Int")
151151 }
152152
153153
154154 @Callable(V)
155155 func configureOracle (W) = if ((V.caller != this))
156156 then throw("BCO: admin only")
157157 else [StringEntry("static_oracleAddress", W)]
158158
159159
160160
161161 @Callable(V)
162162 func issueDuckling (b,X) = if ((V.caller != k()))
163- then throw("BIFD: You can't issue free duckling")
163+ then throw(("BIFD: You can't issue free duckling " + toString(V.caller)))
164164 else {
165165 let Y = Issue("BABY-11111111-HZ", "", 1, 0, false, unit, height)
166166 let Z = calculateAssetId(Y)
167167 $Tuple2([StringEntry((((b + "_") + X) + "_di"), toBase58String(Z)), IntegerEntry("stats_amount", (w("stats_amount") + 1)), BooleanEntry((("duckling_" + toBase58String(Z)) + "_issuedByFeedCall"), (V.caller == this)), IntegerEntry(u(toBase58String(Z)), 0), StringEntry(v(toBase58String(Z)), b), Y, ScriptTransfer(value(addressFromString(b)), 1, Z)], toBase58String(Z))
168168 }
169169
170170
171171
172172 @Callable(V)
173173 func feedDuckling (q,aa) = {
174174 let ab = toString(V.caller)
175175 let ac = if (if ((size(V.payments) != 1))
176176 then true
177177 else (value(V.payments[0]).assetId != j()))
178178 then throw("BFD: Bad payment attached (asset[s] or amount)")
179179 else if (y(t(q)))
180180 then throw("BFD: Duckling is already grown")
181181 else if ((q == ""))
182182 then throw("BFD: Please hatch a duckling first!")
183183 else {
184184 let ad = h(v(q))
185185 let ae = value(assetInfo(fromBase58String(q)))
186186 if ((assetBalance(V.caller, ae.id) != 1))
187187 then throw("BFD: You're not the owner of the duckling")
188188 else if ((ad != toString(V.caller)))
189189 then throw("BFD: You can only feed ducklings that you won/bought yourself!")
190190 else if ((ae.issuer != this))
191191 then throw("BFD: Cant find duckling with such id")
192192 else {
193193 let af = toBase58String(ae.id)
194194 af
195195 }
196196 }
197197 let ag = r(q)
198198 let ah = value(V.payments[0]).amount
199199 let ai = s(ac)
200200 let aj = p(ac)
201201 let ak = w(aj)
202202 let al = ((("duckling_" + ac) + "_stat_") + toString(lastBlock.timestamp))
203203 if ((ah > aa))
204204 then throw(("BFD: Cannot feed duckling for such amount, max feed amount is: " + toString(aa)))
205205 else {
206206 let am = I(ac, ah)
207207 [IntegerEntry(ag, lastBlock.timestamp), IntegerEntry(aj, (ak + ah)), IntegerEntry(al, ah), StringEntry(ai, am._1), StringEntry((al + "_debug"), makeString(am._2, ";"))]
208208 }
209209 }
210210
211211
212212
213213 @Callable(V)
214214 func turnDucklingIntoDuck () = if ((V.caller != k()))
215215 then throw("BIFD: You can't turn duckling")
216216 else {
217217 let b = toString(V.caller)
218218 let an = toBase58String(V.transactionId)
219219 let ao = w(o)
220220 let ap = ((1 * 60) * 1000)
221221 let aq = (lastBlock.timestamp - (ao + ap))
222222 if (if ((ao > 0))
223223 then (0 > aq)
224224 else false)
225225 then throw((("BTD: Can issue ducklings only once per 1 minutes, please wait for " + toString(fraction(aq, 1, 1000))) + " sec."))
226226 else if ((size(V.payments) != 1))
227227 then throw("BTD: Bad payment attached (asset[s] or amount)")
228228 else {
229229 let ar = value(assetInfo(value(value(V.payments[0]).assetId)))
230230 if ((toBigInt(100) > C(toBase58String(ar.id))))
231231 then throw("BTD: Duckling is not grown yet...")
232232 else if ((ar.issuer != this))
233233 then throw("BTD: Can use only ducklings from this dApp")
234234 else {
235235 let as = t(toBase58String(ar.id))
236236 $Tuple2([BooleanEntry(as, true), IntegerEntry(o, lastBlock.timestamp)], toBase58String(ar.id))
237237 }
238238 }
239239 }
240240
241241
242242 @Verifier(at)
243243 func au () = sigVerify(at.bodyBytes, at.proofs[0], at.senderPublicKey)
244244

github/deemru/w8io/873ac7e 
59.08 ms