tx · 8FKkxFVgbff7We1HYdDk9TsPERUy3bd4DuamRE85kmeT

3NCGjbgqZVk7eaqrLMEnEnqRhozNm1KTG5z:  -0.01400000 Waves

2025.01.09 20:47 [3451940] smart account 3NCGjbgqZVk7eaqrLMEnEnqRhozNm1KTG5z > SELF 0.00000000 Waves

{ "type": 13, "id": "8FKkxFVgbff7We1HYdDk9TsPERUy3bd4DuamRE85kmeT", "fee": 1400000, "feeAssetId": null, "timestamp": 1736444662898, "version": 2, "chainId": 84, "sender": "3NCGjbgqZVk7eaqrLMEnEnqRhozNm1KTG5z", "senderPublicKey": "5CoDbXxoqnvJpx9GrS6M4G5GYJXh9rcoiXJz7RYTPVkL", "proofs": [ "51N852cmQ4rao2jVaTXnqZVcCcnEExqCKy1diEKK9ovkZJBiCM6mrgTdLGwhVJnWNPia2m5kjYF1VTLQxAcJYXrg" ], "script": "base64:BgIyCAISCgoIAQgEAhEYFBISBAoCCAgSABIDCgEBEgASABIAEgMKAQESABIDCgEIEgMKAQgvAANNMTYAgICE/qbe4READlNUQUtFUlNfQU1PVU5UAICAzvK+j6oFAAtURUFNX0FNT1VOVACAgJqm6q/jAQANTUFSS0VUX0FNT1VOVACAgJzl/Z7UCgALWUVBUl9CTE9DS1MJAGgCAO0CAKALAAxTVEFLRV9QRVJJT0QJAGgCAAUFC1lFQVJfQkxPQ0tTAAtCTEVTU19QUklDRQCA0NvD9AIADUxPVFRFUllfUFJJQ0UAgNDbw/QCABNERUZBVUxUX0ZPTU9fUEVSSU9EADwAD01JTl9GT01PX1BFUklPRAACAAxSQU5ET01fREVMQVkAAgAUQ1VSUkVOVF9KQUNLUE9UX1BFUkMAMgARTkVYVF9KQUNLUE9UX1BFUkMAFAAMU1RBS0VSU19QRVJDABQACVRFQU1fUEVSQwAKAA5nb3JjQXNzZXRJZEtleQILZ29yY0Fzc2V0SWQAC2dvcmNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKEIAQUOZ29yY0Fzc2V0SWRLZXkCFkdPUkMgaXMgbm90IGlzc3VlZCB5ZXQADGlzc3VlVGltZUtleQIJaXNzdWVUaW1lABVzdGFrZXJzQW1vdW50VG90YWxLZXkCEnN0YWtlcnNBbW91bnRUb3RhbAAUc3Rha2Vyc0Ftb3VudExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ABRzdGFrZWRBbW91bnRUb3RhbEtleQILc3Rha2VkVG90YWwBFXN0YWtlZEFtb3VudEJ5VXNlcktleQEEYWRkcgkArAICAg1zdGFrZWRBbW91bnRfBQRhZGRyARZsYXN0Q2xhaW1UaW1lQnlVc2VyS2V5AQRhZGRyCQCsAgICDmxhc3RDbGFpbVRpbWVfBQRhZGRyAAxmb21vRXBvY2hLZXkCCWZvbW9FcG9jaAARY3VyckZvbW9QZXJpb2RLZXkCDmN1cnJGb21vUGVyaW9kAA9sYXN0Rm9tb1RpbWVLZXkCDGxhc3RGb21vVGltZQASY3VyckZvbW9KYWNrcG90S2V5Ag9jdXJyRm9tb0phY2twb3QAEm5leHRGb21vSmFja3BvdEtleQIPbmV4dEZvbW9KYWNrcG90ABFsYXN0Rm9tb1BsYXllcktleQIObGFzdEZvbW9QbGF5ZXIAEWxhc3RGb21vV2lubmVyS2V5Ag5sYXN0Rm9tb1dpbm5lcgAXbGFzdEZvbW9XaW5uZXJBbW91bnRLZXkCFGxhc3RGb21vV2lubmVyQW1vdW50ABVsYXN0Rm9tb1dpbm5lclRpbWVLZXkCEmxhc3RGb21vV2lubmVyVGltZQARdGVhbVdhbGxldEFkZHJLZXkCDnRlYW1XYWxsZXRBZGRyAA1icm9rZXJBZGRyS2V5Agpicm9rZXJBZGRyAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgIPZmluaXNoQmxvY2tGb3JfBQdhZGRyZXNzAQhrZXlHdWVzcwEHYWRkcmVzcwkArAICAglndWVzc0Zvcl8FB2FkZHJlc3MBB2tleVNhbHQBB2FkZHJlc3MJAKwCAgIIc2FsdEZvcl8FB2FkZHJlc3MAFWN1cnJMb3R0ZXJ5SmFja3BvdEtleQISY3VyckxvdHRlcnlKYWNrcG90ABVuZXh0TG90dGVyeUphY2twb3RLZXkCEm5leHRMb3R0ZXJ5SmFja3BvdAAUbGFzdExvdHRlcnlXaW5uZXJLZXkCEWxhc3RMb3R0ZXJ5V2lubmVyABpsYXN0TG90dGVyeVdpbm5lckFtb3VudEtleQIXbGFzdExvdHRlcnlXaW5uZXJBbW91bnQAGGxhc3RMb3R0ZXJ5V2lubmVyVGltZUtleQIVbGFzdExvdHRlcnlXaW5uZXJUaW1lAQlnb3JjU3RhdHMBC3VzZXJBZGRyT3B0BA9hbW91bnRMZWZ0VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUUc3Rha2Vyc0Ftb3VudExlZnRLZXkAAAQMbGFzdFVzZXJUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZsYXN0Q2xhaW1UaW1lQnlVc2VyS2V5AQULdXNlckFkZHJPcHQA////////////AQMJAGYCAAAFDGxhc3RVc2VyVGltZQkAlAoCAAAFD2Ftb3VudExlZnRUb3RhbAQJaXNzdWVUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUMaXNzdWVUaW1lS2V5AhZHT1JDIGlzIG5vdCBpc3N1ZWQgeWV0BApub3dMaW1pdGVkCQCXAwEJAMwIAgUGaGVpZ2h0CQDMCAIJAGQCBQlpc3N1ZVRpbWUFDFNUQUtFX1BFUklPRAUDbmlsBAp1c2VyU2hhcmVzCQELdmFsdWVPckVsc2UCCQCfCAEJARVzdGFrZWRBbW91bnRCeVVzZXJLZXkBBQt1c2VyQWRkck9wdAAABAt0b3RhbFNoYXJlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBRRzdGFrZWRBbW91bnRUb3RhbEtleQAABBJzdGFrZXJzQW1vdW50VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVc3Rha2Vyc0Ftb3VudFRvdGFsS2V5BQ5TVEFLRVJTX0FNT1VOVAQMdXNlclRlbXBvcmFsCQBrAwUSc3Rha2Vyc0Ftb3VudFRvdGFsCQBlAgUKbm93TGltaXRlZAUMbGFzdFVzZXJUaW1lBQxTVEFLRV9QRVJJT0QECnVzZXJBbW91bnQDCQECIT0CBQt0b3RhbFNoYXJlcwAACQBrAwUMdXNlclRlbXBvcmFsBQp1c2VyU2hhcmVzBQt0b3RhbFNoYXJlcwAACQCUCgIFCnVzZXJBbW91bnQJAGUCBQ9hbW91bnRMZWZ0VG90YWwFCnVzZXJBbW91bnQBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AQxmb21vSW50ZXJuYWwBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC2dvcmNBc3NldElkCQACAQITR09SQyBwYXltZW50cyBvbmx5IQQGY2hhbmdlCQBlAgUDYW10BQtCTEVTU19QUklDRQMJAGYCAAAFBmNoYW5nZQkAAgEJAKwCAgkArAICCQCsAgICFllvdSBuZWVkIHRvIHNhY3JpZmljZSAJAQpmaXhlZFBvaW50AgULQkxFU1NfUFJJQ0UACAIWIEdPUkMsIGJ1dCBJIHNlZSBvbmx5IAkBCmZpeGVkUG9pbnQCBQNhbXQACAQNY2hhbmdlQWN0aW9ucwMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmNoYW5nZQULZ29yY0Fzc2V0SWQFA25pbAUDbmlsBAxsYXN0Rm9tb1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPbGFzdEZvbW9UaW1lS2V5AAAEDmxhc3RGb21vUGxheWVyCQELdmFsdWVPckVsc2UCCQCiCAEFEWxhc3RGb21vUGxheWVyS2V5AgAEEGRlbHRhQ3VyckphY2twb3QJAGsDBQtCTEVTU19QUklDRQUUQ1VSUkVOVF9KQUNLUE9UX1BFUkMAZAQQZGVsdGFOZXh0SmFja3BvdAkAawMFC0JMRVNTX1BSSUNFBRFORVhUX0pBQ0tQT1RfUEVSQwBkBA9kZWx0YVRlYW1BbW91bnQJAGsDBQtCTEVTU19QUklDRQUJVEVBTV9QRVJDAGQEEmRlbHRhU3Rha2Vyc0Ftb3VudAkAZQIJAGUCCQBlAgULQkxFU1NfUFJJQ0UFEGRlbHRhQ3VyckphY2twb3QFEGRlbHRhTmV4dEphY2twb3QFD2RlbHRhVGVhbUFtb3VudAQJZm9tb0Vwb2NoCQELdmFsdWVPckVsc2UCCQCfCAEFDGZvbW9FcG9jaEtleQAABA5jdXJyRm9tb1BlcmlvZAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRFjdXJyRm9tb1BlcmlvZEtleQUTREVGQVVMVF9GT01PX1BFUklPRAQObmV4dEZvbW9QZXJpb2QJAJYDAQkAzAgCBQ9NSU5fRk9NT19QRVJJT0QJAMwIAgkAZQIFDmN1cnJGb21vUGVyaW9kAAEFA25pbAQPZm9tb0N1cnJKYWNrcG90CQELdmFsdWVPckVsc2UCCQCfCAEFEmN1cnJGb21vSmFja3BvdEtleQAABA9mb21vTmV4dEphY2twb3QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSbmV4dEZvbW9KYWNrcG90S2V5AAAEC2ZvbW9BY3Rpb25zAwMDCQBmAgUGaGVpZ2h0CQBkAgUMbGFzdEZvbW9UaW1lBQ5jdXJyRm9tb1BlcmlvZAkAZgIFD2ZvbW9DdXJySmFja3BvdAAABwkBAiE9AgUObGFzdEZvbW9QbGF5ZXICAAcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUObGFzdEZvbW9QbGF5ZXIFD2ZvbW9DdXJySmFja3BvdAULZ29yY0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgURbGFzdEZvbW9XaW5uZXJLZXkFDmxhc3RGb21vUGxheWVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRdsYXN0Rm9tb1dpbm5lckFtb3VudEtleQUPZm9tb0N1cnJKYWNrcG90CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVsYXN0Rm9tb1dpbm5lclRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJjdXJyRm9tb0phY2twb3RLZXkJAGQCBQ9mb21vTmV4dEphY2twb3QFEGRlbHRhQ3VyckphY2twb3QJAMwIAgkBDEludGVnZXJFbnRyeQIFEm5leHRGb21vSmFja3BvdEtleQUQZGVsdGFOZXh0SmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZm9tb0Vwb2NoS2V5CQBkAgUJZm9tb0Vwb2NoAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFEWN1cnJGb21vUGVyaW9kS2V5BRNERUZBVUxUX0ZPTU9fUEVSSU9EBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFEmN1cnJGb21vSmFja3BvdEtleQkAZAIFD2ZvbW9DdXJySmFja3BvdAUQZGVsdGFDdXJySmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSbmV4dEZvbW9KYWNrcG90S2V5CQBkAgUPZm9tb05leHRKYWNrcG90BRBkZWx0YU5leHRKYWNrcG90CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFjdXJyRm9tb1BlcmlvZEtleQUObmV4dEZvbW9QZXJpb2QFA25pbAkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFD2xhc3RGb21vVGltZUtleQUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFEWxhc3RGb21vUGxheWVyS2V5CQClCAEIBQFpBmNhbGxlcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRF0ZWFtV2FsbGV0QWRkcktleQUPZGVsdGFUZWFtQW1vdW50BQtnb3JjQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBBRRzdGFrZXJzQW1vdW50TGVmdEtleQUSZGVsdGFTdGFrZXJzQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVzdGFrZXJzQW1vdW50VG90YWxLZXkJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBBRVzdGFrZXJzQW1vdW50VG90YWxLZXkFEmRlbHRhU3Rha2Vyc0Ftb3VudAUDbmlsBQ1jaGFuZ2VBY3Rpb25zBQtmb21vQWN0aW9ucwEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQRzYWx0B2VudHJvcHkDCQBnAgAABQhtYXhWYWx1ZQkAAgECFm1heFZhbHVlIHNob3VsZCBiZSA+IDAECnJhbmRvbUhhc2gJANQWAQkAywECBQRzYWx0BQdlbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQEOd2FsbGV0SW50ZXJuYWwBDnVzZXJBZGRyZXNzT3B0BARhZGRyCQCmCAEFDnVzZXJBZGRyZXNzT3B0BAdiYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAO8HAQkBBXZhbHVlAQUEYWRkcgkBDkJhbGFuY2VEZXRhaWxzBAAAAAAAAAAABAtnb3JjQmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFC2dvcmNBc3NldElkAAAECnN0YWtlZEdvcmMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFXN0YWtlZEFtb3VudEJ5VXNlcktleQEFDnVzZXJBZGRyZXNzT3B0AAAJAMwIAgkArAICAhQlcyVkX193YXZlc0JhbGFuY2VfXwkApAMBCAUHYmFsYW5jZQlhdmFpbGFibGUJAMwIAgkArAICAhMlcyVkX19nb3JjQmFsYW5jZV9fCQCkAwEFC2dvcmNCYWxhbmNlCQDMCAIJAKwCAgISJXMlZF9fc3Rha2VkR29yY19fCQCkAwEFCnN0YWtlZEdvcmMFA25pbAsBaQEIdGVzdEFyZ3MIBmludFZhbAZzdHJWYWwHYm9vbFZhbAZiaW5WYWwGYXJySW50BmFyclN0cgdhcnJCb29sBmFyckJpbgUDbmlsAWkBDWNvbnN0cnVjdG9yVjECDnRlYW1XYWxsZXRBZGRyCmJyb2tlckFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQMaXNzdWVkQW1vdW50BQNNMTYEBWlzc3VlCQDDCAcCBEdPUkMCtQFNZW1lIGNvaW4gYnkgR29kIG9mIFJhbmRvbSBDaGFuY2UuIFZpc2l0IGh0dHBzOi8vZ29yYy5tZW1lLCBzYWNyaWZpY2UgdG8gdGhlIEdvZCBvZiBSYW5kb20gYW5kIHlvdSB3aWxsIHJlY2VpdmUgYW4gYW5zd2VyIHRvIGFueSBxdWVzdGlvbiBvciBhIGJsZXNzaW5nLiBMdWNreSBvbmUgZ2V0cyBhIEdpZnQgb2YgR29kBQxpc3N1ZWRBbW91bnQACAcFBHVuaXQAAAQHYXNzZXRJZAkAuAgBBQVpc3N1ZQkAzAgCBQVpc3N1ZQkAzAgCCQELQmluYXJ5RW50cnkCBQ5nb3JjQXNzZXRJZEtleQUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMaXNzdWVUaW1lS2V5BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5BQ5TVEFLRVJTX0FNT1VOVAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVc3Rha2Vyc0Ftb3VudFRvdGFsS2V5BQ5TVEFLRVJTX0FNT1VOVAkAzAgCCQELU3RyaW5nRW50cnkCBRF0ZWFtV2FsbGV0QWRkcktleQUOdGVhbVdhbGxldEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUNYnJva2VyQWRkcktleQUKYnJva2VyQWRkcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ50ZWFtV2FsbGV0QWRkcgULVEVBTV9BTU9VTlQFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKYnJva2VyQWRkcgUNTUFSS0VUX0FNT1VOVAUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZm9tb0Vwb2NoS2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFEWN1cnJGb21vUGVyaW9kS2V5BRNERUZBVUxUX0ZPTU9fUEVSSU9EBQNuaWwBaQEJc3Rha2VHb3JjAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULZ29yY0Fzc2V0SWQJAAIBAhNHT1JDIHBheW1lbnRzIG9ubHkhBARhZGRyCQClCAEIBQFpBmNhbGxlcgQLJHQwODAzNjgwODcJAQlnb3JjU3RhdHMBBQRhZGRyBAp1c2VyQW1vdW50CAULJHQwODAzNjgwODcCXzEED2Ftb3VudExlZnRUb3RhbAgFCyR0MDgwMzY4MDg3Al8yBA11c2VyQW1vdW50S2V5CQEVc3Rha2VkQW1vdW50QnlVc2VyS2V5AQUEYWRkcgQMY2xhaW1BY3Rpb25zAwkAZgIFCnVzZXJBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCnVzZXJBbW91bnQFC2dvcmNBc3NldElkBQNuaWwFA25pbAkAlAoCCQDOCAIFDGNsYWltQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2VkQW1vdW50VG90YWxLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFFHN0YWtlZEFtb3VudFRvdGFsS2V5AAAFA2FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNdXNlckFtb3VudEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNdXNlckFtb3VudEtleQAABQNhbXQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZsYXN0Q2xhaW1UaW1lQnlVc2VyS2V5AQUEYWRkcgUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQUPYW1vdW50TGVmdFRvdGFsBQNuaWwFCnVzZXJBbW91bnQBaQELdW5zdGFrZUdvcmMBBmFtb3VudAMJAGcCAAAFBmFtb3VudAkAAgECGUFtb3VudCBzaG91bGQgYmUgcG9zaXRpdmUEBGFkZHIJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEDXVzZXJBbW91bnRLZXkJARVzdGFrZWRBbW91bnRCeVVzZXJLZXkBBQRhZGRyBAlvbGRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNdXNlckFtb3VudEtleQAAAwkAZgIAAAkAZQIFCW9sZEFtb3VudAUGYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAQpmaXhlZFBvaW50AgUJb2xkQW1vdW50AAgCHyBHT1JDIHN0YWtlZCwgdHJpZWQgdG8gdW5zdGFrZSAJAQpmaXhlZFBvaW50AgUGYW1vdW50AAgECyR0MDkwNDg5MDk5CQEJZ29yY1N0YXRzAQUEYWRkcgQKdXNlckFtb3VudAgFCyR0MDkwNDg5MDk5Al8xBA9hbW91bnRMZWZ0VG90YWwIBQskdDA5MDQ4OTA5OQJfMgQMY2xhaW1BY3Rpb25zAwkAZgIFCnVzZXJBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCnVzZXJBbW91bnQFC2dvcmNBc3NldElkBQNuaWwFA25pbAkAlAoCCQDOCAIFDGNsYWltQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2VkQW1vdW50VG90YWxLZXkJAGUCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUUc3Rha2VkQW1vdW50VG90YWxLZXkCDk5vIEdPUkMgc3Rha2VkBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFDXVzZXJBbW91bnRLZXkJAGUCBQlvbGRBbW91bnQFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmxhc3RDbGFpbVRpbWVCeVVzZXJLZXkBBQRhZGRyBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5BQ9hbW91bnRMZWZ0VG90YWwFA25pbAAAAWkBCWNsYWltR29yYwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIECyR0MDk2NjM5NzE0CQEJZ29yY1N0YXRzAQUEYWRkcgQKdXNlckFtb3VudAgFCyR0MDk2NjM5NzE0Al8xBA9hbW91bnRMZWZ0VG90YWwIBQskdDA5NjYzOTcxNAJfMgQMY2xhaW1BY3Rpb25zAwkAZgIFCnVzZXJBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCnVzZXJBbW91bnQFC2dvcmNBc3NldElkBQNuaWwFA25pbAkAlAoCCQDOCAIFDGNsYWltQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmxhc3RDbGFpbVRpbWVCeVVzZXJLZXkBBQRhZGRyBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5BQ9hbW91bnRMZWZ0VG90YWwFA25pbAUKdXNlckFtb3VudAFpAQhhbnN3ZXJNZQAJAJQKAgkBDGZvbW9JbnRlcm5hbAEFAWkJALEJAQgFAWkNdHJhbnNhY3Rpb25JZAFpAQdibGVzc01lAAkAlAoCCQEMZm9tb0ludGVybmFsAQUBaQAqAWkBC2NvbW1pdEd1ZXNzAQVndWVzcwQEYWRkcgkApQgBCAUBaQZjYWxsZXIECWZpbmlzaEtleQkBCWtleUNvbW1pdAEFBGFkZHIECGd1ZXNzS2V5CQEIa2V5R3Vlc3MBBQRhZGRyAwkBCWlzRGVmaW5lZAEJAJ8IAQUJZmluaXNoS2V5CQACAQIlWW91IGFscmVhZHkgbWFkZSBhIGJldCwgcGxlYXNlIHVzZSBpdAMDCQBmAgAABQVndWVzcwYJAGYCBQVndWVzcwALCQACAQIlVGhlIG51bWJlciBzaG91bGQgYmUgYmV0d2VlbiAwIGFuZCAxMQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULZ29yY0Fzc2V0SWQJAAIBAhNHT1JDIHBheW1lbnRzIG9ubHkhBAZjaGFuZ2UJAGUCBQNhbXQFDUxPVFRFUllfUFJJQ0UDCQBmAgAABQZjaGFuZ2UJAAIBCQCsAgIJAKwCAgkArAICAhZZb3UgbmVlZCB0byBzYWNyaWZpY2UgCQEKZml4ZWRQb2ludAIFDUxPVFRFUllfUFJJQ0UACAIWIEdPUkMsIGJ1dCBJIHNlZSBvbmx5IAkBCmZpeGVkUG9pbnQCBQNhbXQACAQNY2hhbmdlQWN0aW9ucwMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmNoYW5nZQULZ29yY0Fzc2V0SWQFA25pbAUDbmlsBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAUMUkFORE9NX0RFTEFZBBBkZWx0YUN1cnJKYWNrcG90CQBrAwUNTE9UVEVSWV9QUklDRQUUQ1VSUkVOVF9KQUNLUE9UX1BFUkMAZAQQZGVsdGFOZXh0SmFja3BvdAkAawMFDUxPVFRFUllfUFJJQ0UFEU5FWFRfSkFDS1BPVF9QRVJDAGQED2RlbHRhVGVhbUFtb3VudAkAawMFDUxPVFRFUllfUFJJQ0UFCVRFQU1fUEVSQwBkBBJkZWx0YVN0YWtlcnNBbW91bnQJAGUCCQBlAgkAZQIFDUxPVFRFUllfUFJJQ0UFEGRlbHRhQ3VyckphY2twb3QFEGRlbHRhTmV4dEphY2twb3QFD2RlbHRhVGVhbUFtb3VudAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWZpbmlzaEtleQULZmluaXNoQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFCGd1ZXNzS2V5BQVndWVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUVY3VyckxvdHRlcnlKYWNrcG90S2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVjdXJyTG90dGVyeUphY2twb3RLZXkAAAUQZGVsdGFDdXJySmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVbmV4dExvdHRlcnlKYWNrcG90S2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVuZXh0TG90dGVyeUphY2twb3RLZXkAAAUQZGVsdGFOZXh0SmFja3BvdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRF0ZWFtV2FsbGV0QWRkcktleQUPZGVsdGFUZWFtQW1vdW50BQtnb3JjQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBBRRzdGFrZXJzQW1vdW50TGVmdEtleQUSZGVsdGFTdGFrZXJzQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVzdGFrZXJzQW1vdW50VG90YWxLZXkJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBBRVzdGFrZXJzQW1vdW50VG90YWxLZXkFEmRlbHRhU3Rha2Vyc0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5U2FsdAEFBGFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsBQ1jaGFuZ2VBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQxndWVzc0xvdHRlcnkABARhZGRyCQClCAEIBQFpBmNhbGxlcgQJZmluaXNoS2V5CQEJa2V5Q29tbWl0AQUEYWRkcgQIZ3Vlc3NLZXkJAQhrZXlHdWVzcwEFBGFkZHIEBWd1ZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUIZ3Vlc3NLZXkCF1lvdSBoYXZlIG5vdCBtYWRlIGEgYmV0BAtmaW5pc2hCbG9jawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFCWZpbmlzaEtleQIXWW91IGhhdmUgbm90IG1hZGUgYSBiZXQDCQBmAgULZmluaXNoQmxvY2sFBmhlaWdodAkAAgEJAKwCAgI0UmFuZG9tIG51bWJlciBpcyBub3QgcmVhZHkgeWV0LCB3YWl0IHVudGlsIGhlaWdodCA9IAkApAMBBQtmaW5pc2hCbG9jawQHZW50cm9weQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQULZmluaXNoQmxvY2sDdnJmBAdzYWx0S2V5CQEHa2V5U2FsdAEFBGFkZHIEBHNhbHQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAoggBBQdzYWx0S2V5AgdERUZBVUxUBARyYW5kCQEPZ2V0UmFuZG9tTnVtYmVyAwAMBQRzYWx0BQdlbnRyb3B5BAtjdXJySmFja3BvdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVjdXJyTG90dGVyeUphY2twb3RLZXkAAAQKd2luQWN0aW9ucwMJAAACBQRyYW5kBQVndWVzcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2N1cnJKYWNrcG90BQtnb3JjQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRRsYXN0TG90dGVyeVdpbm5lcktleQUEYWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUabGFzdExvdHRlcnlXaW5uZXJBbW91bnRLZXkFC2N1cnJKYWNrcG90CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhsYXN0TG90dGVyeVdpbm5lclRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVjdXJyTG90dGVyeUphY2twb3RLZXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVbmV4dExvdHRlcnlKYWNrcG90S2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFFW5leHRMb3R0ZXJ5SmFja3BvdEtleQAABQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJZmluaXNoS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCGd1ZXNzS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFB3NhbHRLZXkFA25pbAUKd2luQWN0aW9ucwUEcmFuZAFpAQ1zdGF0c1JFQURPTkxZAQt1c2VyQWRkck9wdAQNJHQwMTM2NzcxMzczNQkBCWdvcmNTdGF0cwEFC3VzZXJBZGRyT3B0BAp1c2VyQW1vdW50CAUNJHQwMTM2NzcxMzczNQJfMQQPYW1vdW50TGVmdFRvdGFsCAUNJHQwMTM2NzcxMzczNQJfMgQPY3VyckZvbW9KYWNrcG90CQELdmFsdWVPckVsc2UCCQCfCAEFEmN1cnJGb21vSmFja3BvdEtleQAABA9uZXh0Rm9tb0phY2twb3QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSbmV4dEZvbW9KYWNrcG90S2V5AAAEDGxhc3RGb21vVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9sYXN0Rm9tb1RpbWVLZXkAAAQObGFzdEZvbW9QbGF5ZXIJAQt2YWx1ZU9yRWxzZQIJAKIIAQURbGFzdEZvbW9QbGF5ZXJLZXkCAAQJZm9tb0Vwb2NoCQELdmFsdWVPckVsc2UCCQCfCAEFDGZvbW9FcG9jaEtleQAABA5jdXJyRm9tb1BlcmlvZAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRFjdXJyRm9tb1BlcmlvZEtleQUTREVGQVVMVF9GT01PX1BFUklPRAQSY3VyckxvdHRlcnlKYWNrcG90CQELdmFsdWVPckVsc2UCCQCfCAEFFWN1cnJMb3R0ZXJ5SmFja3BvdEtleQAABBJuZXh0TG90dGVyeUphY2twb3QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVbmV4dExvdHRlcnlKYWNrcG90S2V5AAAECWZpbmlzaEtleQkBCWtleUNvbW1pdAEFC3VzZXJBZGRyT3B0BAhndWVzc0tleQkBCGtleUd1ZXNzAQULdXNlckFkZHJPcHQEBWd1ZXNzCQELdmFsdWVPckVsc2UCCQCfCAEFCGd1ZXNzS2V5AP///////////wEEC2ZpbmlzaEJsb2NrCQELdmFsdWVPckVsc2UCCQCfCAEFCWZpbmlzaEtleQD///////////8BCQCUCgIFA25pbAkAzAgCCQCsAgICGCVzJWRfX2dvcmNBdmFpbFRvQ2xhaW1fXwkApAMBBQp1c2VyQW1vdW50CQDMCAIJAKwCAgIRJXMlZF9fZm9tb0Vwb2NoX18JAKQDAQUJZm9tb0Vwb2NoCQDMCAIJAKwCAgIWJXMlZF9fY3VyckZvbW9QZXJpb2RfXwkApAMBBQ5jdXJyRm9tb1BlcmlvZAkAzAgCCQCsAgICHSVzJWRfX2N1cnJGb21vSmFja3BvdEFtb3VudF9fCQCkAwEFD2N1cnJGb21vSmFja3BvdAkAzAgCCQCsAgICHSVzJWRfX25leHRGb21vSmFja3BvdEFtb3VudF9fCQCkAwEFD25leHRGb21vSmFja3BvdAkAzAgCCQCsAgICICVzJWRfX2N1cnJMb3R0ZXJ5SmFja3BvdEFtb3VudF9fCQCkAwEFEmN1cnJMb3R0ZXJ5SmFja3BvdAkAzAgCCQCsAgICICVzJWRfX25leHRMb3R0ZXJ5SmFja3BvdEFtb3VudF9fCQCkAwEFEm5leHRMb3R0ZXJ5SmFja3BvdAkAzAgCCQCsAgICFCVzJWRfX2xhc3RGb21vVGltZV9fCQCkAwEFDGxhc3RGb21vVGltZQkAzAgCCQCsAgICFiVzJXNfX2xhc3RGb21vUGxheWVyX18FDmxhc3RGb21vUGxheWVyCQDMCAIJAKwCAgIXJXMlZF9fYW1vdW50TGVmdFRvdGFsX18JAKQDAQUPYW1vdW50TGVmdFRvdGFsCQDMCAIJAKwCAgITJXMlZF9fZmluaXNoQmxvY2tfXwkApAMBBQtmaW5pc2hCbG9jawkAzAgCCQCsAgICDSVzJWRfX2d1ZXNzX18JAKQDAQUFZ3Vlc3MFA25pbAFpARJ3YWxsZXRJbmZvUkVBRE9OTFkBDnVzZXJBZGRyZXNzT3B0CQCUCgIFA25pbAkBDndhbGxldEludGVybmFsAQUOdXNlckFkZHJlc3NPcHQAbVsv2Q==", "height": 3451940, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5rvpZRhiBw9zDWWdWwWj9ddqmVyuLmxXsExcTr4JNxBi Next: BupqyjFuTsyxEeK9gQ3vBM9X64uq1zpYZVdMC5nQaYZu Diff:
OldNewDifferences
1717
1818 let LOTTERY_PRICE = 100000000000
1919
20-let FOMO_PERIOD = 60
20+let DEFAULT_FOMO_PERIOD = 60
21+
22+let MIN_FOMO_PERIOD = 2
2123
2224 let RANDOM_DELAY = 2
2325
4648
4749 func lastClaimTimeByUserKey (addr) = ("lastClaimTime_" + addr)
4850
51+
52+let fomoEpochKey = "fomoEpoch"
53+
54+let currFomoPeriodKey = "currFomoPeriod"
4955
5056 let lastFomoTimeKey = "lastFomoTime"
5157
135141 let deltaNextJackpot = fraction(BLESS_PRICE, NEXT_JACKPOT_PERC, 100)
136142 let deltaTeamAmount = fraction(BLESS_PRICE, TEAM_PERC, 100)
137143 let deltaStakersAmount = (((BLESS_PRICE - deltaCurrJackpot) - deltaNextJackpot) - deltaTeamAmount)
144+ let fomoEpoch = valueOrElse(getInteger(fomoEpochKey), 0)
145+ let currFomoPeriod = valueOrElse(getInteger(currFomoPeriodKey), DEFAULT_FOMO_PERIOD)
146+ let nextFomoPeriod = max([MIN_FOMO_PERIOD, (currFomoPeriod - 1)])
138147 let fomoCurrJackpot = valueOrElse(getInteger(currFomoJackpotKey), 0)
139148 let fomoNextJackpot = valueOrElse(getInteger(nextFomoJackpotKey), 0)
140- let fomoActions = if (if (if ((height > (lastFomoTime + FOMO_PERIOD)))
149+ let fomoActions = if (if (if ((height > (lastFomoTime + currFomoPeriod)))
141150 then (fomoCurrJackpot > 0)
142151 else false)
143152 then (lastFomoPlayer != "")
144153 else false)
145- then [ScriptTransfer(addressFromStringValue(lastFomoPlayer), fomoCurrJackpot, gorcAssetId), StringEntry(lastFomoWinnerKey, lastFomoPlayer), IntegerEntry(lastFomoWinnerAmountKey, fomoCurrJackpot), IntegerEntry(lastFomoWinnerTimeKey, lastBlock.timestamp), IntegerEntry(currFomoJackpotKey, (fomoNextJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, deltaNextJackpot)]
146- else [IntegerEntry(currFomoJackpotKey, (fomoCurrJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, (fomoNextJackpot + deltaNextJackpot))]
154+ then [ScriptTransfer(addressFromStringValue(lastFomoPlayer), fomoCurrJackpot, gorcAssetId), StringEntry(lastFomoWinnerKey, lastFomoPlayer), IntegerEntry(lastFomoWinnerAmountKey, fomoCurrJackpot), IntegerEntry(lastFomoWinnerTimeKey, lastBlock.timestamp), IntegerEntry(currFomoJackpotKey, (fomoNextJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, deltaNextJackpot), IntegerEntry(fomoEpochKey, (fomoEpoch + 1)), IntegerEntry(currFomoPeriodKey, DEFAULT_FOMO_PERIOD)]
155+ else [IntegerEntry(currFomoJackpotKey, (fomoCurrJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, (fomoNextJackpot + deltaNextJackpot)), IntegerEntry(currFomoPeriodKey, nextFomoPeriod)]
147156 (([IntegerEntry(lastFomoTimeKey, height), StringEntry(lastFomoPlayerKey, toString(i.caller)), ScriptTransfer(addressFromStringValue(getStringValue(teamWalletAddrKey)), deltaTeamAmount, gorcAssetId), IntegerEntry(stakersAmountLeftKey, (getIntegerValue(stakersAmountLeftKey) + deltaStakersAmount)), IntegerEntry(stakersAmountTotalKey, (getIntegerValue(stakersAmountTotalKey) + deltaStakersAmount))] ++ changeActions) ++ fomoActions)
148157 }
149158 }
183192 let issuedAmount = M16
184193 let issue = Issue("GORC", "Meme coin by God of Random Chance. Visit https://gorc.meme, sacrifice to the God of Random and you will receive an answer to any question or a blessing. Lucky one gets a Gift of God", issuedAmount, 8, false, unit, 0)
185194 let assetId = calculateAssetId(issue)
186-[issue, BinaryEntry(gorcAssetIdKey, assetId), IntegerEntry(issueTimeKey, height), IntegerEntry(stakersAmountLeftKey, STAKERS_AMOUNT), IntegerEntry(stakersAmountTotalKey, STAKERS_AMOUNT), StringEntry(teamWalletAddrKey, teamWalletAddr), StringEntry(brokerAddrKey, brokerAddr), ScriptTransfer(addressFromStringValue(teamWalletAddr), TEAM_AMOUNT, assetId), ScriptTransfer(addressFromStringValue(brokerAddr), MARKET_AMOUNT, assetId)]
195+[issue, BinaryEntry(gorcAssetIdKey, assetId), IntegerEntry(issueTimeKey, height), IntegerEntry(stakersAmountLeftKey, STAKERS_AMOUNT), IntegerEntry(stakersAmountTotalKey, STAKERS_AMOUNT), StringEntry(teamWalletAddrKey, teamWalletAddr), StringEntry(brokerAddrKey, brokerAddr), ScriptTransfer(addressFromStringValue(teamWalletAddr), TEAM_AMOUNT, assetId), ScriptTransfer(addressFromStringValue(brokerAddr), MARKET_AMOUNT, assetId), IntegerEntry(fomoEpochKey, 0), IntegerEntry(currFomoPeriodKey, DEFAULT_FOMO_PERIOD)]
187196 }
188197
189198
200209 then throw("GORC payments only!")
201210 else {
202211 let addr = toString(i.caller)
203- let $t074627513 = gorcStats(addr)
204- let userAmount = $t074627513._1
205- let amountLeftTotal = $t074627513._2
212+ let $t080368087 = gorcStats(addr)
213+ let userAmount = $t080368087._1
214+ let amountLeftTotal = $t080368087._2
206215 let userAmountKey = stakedAmountByUserKey(addr)
207216 let claimActions = if ((userAmount > 0))
208217 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
226235 if ((0 > (oldAmount - amount)))
227236 then throw(((("You have only " + fixedPoint(oldAmount, 8)) + " GORC staked, tried to unstake ") + fixedPoint(amount, 8)))
228237 else {
229- let $t084748525 = gorcStats(addr)
230- let userAmount = $t084748525._1
231- let amountLeftTotal = $t084748525._2
238+ let $t090489099 = gorcStats(addr)
239+ let userAmount = $t090489099._1
240+ let amountLeftTotal = $t090489099._2
232241 let claimActions = if ((userAmount > 0))
233242 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
234243 else nil
244253 then throw("No payments required")
245254 else {
246255 let addr = toString(i.caller)
247- let $t090899140 = gorcStats(addr)
248- let userAmount = $t090899140._1
249- let amountLeftTotal = $t090899140._2
256+ let $t096639714 = gorcStats(addr)
257+ let userAmount = $t096639714._1
258+ let amountLeftTotal = $t096639714._2
250259 let claimActions = if ((userAmount > 0))
251260 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
252261 else nil
332341
333342 @Callable(i)
334343 func statsREADONLY (userAddrOpt) = {
335- let $t01310313161 = gorcStats(userAddrOpt)
336- let userAmount = $t01310313161._1
337- let amountLeftTotal = $t01310313161._2
344+ let $t01367713735 = gorcStats(userAddrOpt)
345+ let userAmount = $t01367713735._1
346+ let amountLeftTotal = $t01367713735._2
338347 let currFomoJackpot = valueOrElse(getInteger(currFomoJackpotKey), 0)
339348 let nextFomoJackpot = valueOrElse(getInteger(nextFomoJackpotKey), 0)
340349 let lastFomoTime = valueOrElse(getInteger(lastFomoTimeKey), 0)
341350 let lastFomoPlayer = valueOrElse(getString(lastFomoPlayerKey), "")
351+ let fomoEpoch = valueOrElse(getInteger(fomoEpochKey), 0)
352+ let currFomoPeriod = valueOrElse(getInteger(currFomoPeriodKey), DEFAULT_FOMO_PERIOD)
342353 let currLotteryJackpot = valueOrElse(getInteger(currLotteryJackpotKey), 0)
343354 let nextLotteryJackpot = valueOrElse(getInteger(nextLotteryJackpotKey), 0)
344355 let finishKey = keyCommit(userAddrOpt)
345356 let guessKey = keyGuess(userAddrOpt)
346357 let guess = valueOrElse(getInteger(guessKey), -1)
347358 let finishBlock = valueOrElse(getInteger(finishKey), -1)
348- $Tuple2(nil, [("%s%d__gorcAvailToClaim__" + toString(userAmount)), ("%s%d__currFomoJackpotAmount__" + toString(currFomoJackpot)), ("%s%d__nextFomoJackpotAmount__" + toString(nextFomoJackpot)), ("%s%d__currLotteryJackpotAmount__" + toString(currLotteryJackpot)), ("%s%d__nextLotteryJackpotAmount__" + toString(nextLotteryJackpot)), ("%s%d__lastFomoTime__" + toString(lastFomoTime)), ("%s%s__lastFomoPlayer__" + lastFomoPlayer), ("%s%d__amountLeftTotal__" + toString(amountLeftTotal)), ("%s%d__finishBlock__" + toString(finishBlock)), ("%s%d__guess__" + toString(guess))])
359+ $Tuple2(nil, [("%s%d__gorcAvailToClaim__" + toString(userAmount)), ("%s%d__fomoEpoch__" + toString(fomoEpoch)), ("%s%d__currFomoPeriod__" + toString(currFomoPeriod)), ("%s%d__currFomoJackpotAmount__" + toString(currFomoJackpot)), ("%s%d__nextFomoJackpotAmount__" + toString(nextFomoJackpot)), ("%s%d__currLotteryJackpotAmount__" + toString(currLotteryJackpot)), ("%s%d__nextLotteryJackpotAmount__" + toString(nextLotteryJackpot)), ("%s%d__lastFomoTime__" + toString(lastFomoTime)), ("%s%s__lastFomoPlayer__" + lastFomoPlayer), ("%s%d__amountLeftTotal__" + toString(amountLeftTotal)), ("%s%d__finishBlock__" + toString(finishBlock)), ("%s%d__guess__" + toString(guess))])
349360 }
350361
351362
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let M16 = 10000000000000000
55
66 let STAKERS_AMOUNT = 3000000000000000
77
88 let TEAM_AMOUNT = 1000000000000000
99
1010 let MARKET_AMOUNT = 6000000000000000
1111
1212 let YEAR_BLOCKS = (365 * 1440)
1313
1414 let STAKE_PERIOD = (5 * YEAR_BLOCKS)
1515
1616 let BLESS_PRICE = 100000000000
1717
1818 let LOTTERY_PRICE = 100000000000
1919
20-let FOMO_PERIOD = 60
20+let DEFAULT_FOMO_PERIOD = 60
21+
22+let MIN_FOMO_PERIOD = 2
2123
2224 let RANDOM_DELAY = 2
2325
2426 let CURRENT_JACKPOT_PERC = 50
2527
2628 let NEXT_JACKPOT_PERC = 20
2729
2830 let STAKERS_PERC = 20
2931
3032 let TEAM_PERC = 10
3133
3234 let gorcAssetIdKey = "gorcAssetId"
3335
3436 let gorcAssetId = valueOrErrorMessage(getBinary(gorcAssetIdKey), "GORC is not issued yet")
3537
3638 let issueTimeKey = "issueTime"
3739
3840 let stakersAmountTotalKey = "stakersAmountTotal"
3941
4042 let stakersAmountLeftKey = "stakersAmountLeft"
4143
4244 let stakedAmountTotalKey = "stakedTotal"
4345
4446 func stakedAmountByUserKey (addr) = ("stakedAmount_" + addr)
4547
4648
4749 func lastClaimTimeByUserKey (addr) = ("lastClaimTime_" + addr)
4850
51+
52+let fomoEpochKey = "fomoEpoch"
53+
54+let currFomoPeriodKey = "currFomoPeriod"
4955
5056 let lastFomoTimeKey = "lastFomoTime"
5157
5258 let currFomoJackpotKey = "currFomoJackpot"
5359
5460 let nextFomoJackpotKey = "nextFomoJackpot"
5561
5662 let lastFomoPlayerKey = "lastFomoPlayer"
5763
5864 let lastFomoWinnerKey = "lastFomoWinner"
5965
6066 let lastFomoWinnerAmountKey = "lastFomoWinnerAmount"
6167
6268 let lastFomoWinnerTimeKey = "lastFomoWinnerTime"
6369
6470 let teamWalletAddrKey = "teamWalletAddr"
6571
6672 let brokerAddrKey = "brokerAddr"
6773
6874 func keyCommit (address) = ("finishBlockFor_" + address)
6975
7076
7177 func keyGuess (address) = ("guessFor_" + address)
7278
7379
7480 func keySalt (address) = ("saltFor_" + address)
7581
7682
7783 let currLotteryJackpotKey = "currLotteryJackpot"
7884
7985 let nextLotteryJackpotKey = "nextLotteryJackpot"
8086
8187 let lastLotteryWinnerKey = "lastLotteryWinner"
8288
8389 let lastLotteryWinnerAmountKey = "lastLotteryWinnerAmount"
8490
8591 let lastLotteryWinnerTimeKey = "lastLotteryWinnerTime"
8692
8793 func gorcStats (userAddrOpt) = {
8894 let amountLeftTotal = valueOrElse(getInteger(stakersAmountLeftKey), 0)
8995 let lastUserTime = valueOrElse(getInteger(lastClaimTimeByUserKey(userAddrOpt)), -1)
9096 if ((0 > lastUserTime))
9197 then $Tuple2(0, amountLeftTotal)
9298 else {
9399 let issueTime = valueOrErrorMessage(getInteger(issueTimeKey), "GORC is not issued yet")
94100 let nowLimited = min([height, (issueTime + STAKE_PERIOD)])
95101 let userShares = valueOrElse(getInteger(stakedAmountByUserKey(userAddrOpt)), 0)
96102 let totalShares = valueOrElse(getInteger(stakedAmountTotalKey), 0)
97103 let stakersAmountTotal = valueOrElse(getInteger(stakersAmountTotalKey), STAKERS_AMOUNT)
98104 let userTemporal = fraction(stakersAmountTotal, (nowLimited - lastUserTime), STAKE_PERIOD)
99105 let userAmount = if ((totalShares != 0))
100106 then fraction(userTemporal, userShares, totalShares)
101107 else 0
102108 $Tuple2(userAmount, (amountLeftTotal - userAmount))
103109 }
104110 }
105111
106112
107113 func fixedPoint (val,decimals) = {
108114 let tenPow = pow(10, 0, decimals, 0, 0, DOWN)
109115 let lowPart = toString((val % tenPow))
110116 let zeroes = drop(toString(tenPow), (1 + size(lowPart)))
111117 (((toString((val / tenPow)) + ".") + zeroes) + lowPart)
112118 }
113119
114120
115121 func fomoInternal (i) = if ((size(i.payments) != 1))
116122 then throw("exactly 1 payment must be attached")
117123 else {
118124 let pmt = i.payments[0]
119125 let amt = pmt.amount
120126 if (if (!(isDefined(pmt.assetId)))
121127 then true
122128 else (value(pmt.assetId) != gorcAssetId))
123129 then throw("GORC payments only!")
124130 else {
125131 let change = (amt - BLESS_PRICE)
126132 if ((0 > change))
127133 then throw(((("You need to sacrifice " + fixedPoint(BLESS_PRICE, 8)) + " GORC, but I see only ") + fixedPoint(amt, 8)))
128134 else {
129135 let changeActions = if ((change > 0))
130136 then [ScriptTransfer(i.caller, change, gorcAssetId)]
131137 else nil
132138 let lastFomoTime = valueOrElse(getInteger(lastFomoTimeKey), 0)
133139 let lastFomoPlayer = valueOrElse(getString(lastFomoPlayerKey), "")
134140 let deltaCurrJackpot = fraction(BLESS_PRICE, CURRENT_JACKPOT_PERC, 100)
135141 let deltaNextJackpot = fraction(BLESS_PRICE, NEXT_JACKPOT_PERC, 100)
136142 let deltaTeamAmount = fraction(BLESS_PRICE, TEAM_PERC, 100)
137143 let deltaStakersAmount = (((BLESS_PRICE - deltaCurrJackpot) - deltaNextJackpot) - deltaTeamAmount)
144+ let fomoEpoch = valueOrElse(getInteger(fomoEpochKey), 0)
145+ let currFomoPeriod = valueOrElse(getInteger(currFomoPeriodKey), DEFAULT_FOMO_PERIOD)
146+ let nextFomoPeriod = max([MIN_FOMO_PERIOD, (currFomoPeriod - 1)])
138147 let fomoCurrJackpot = valueOrElse(getInteger(currFomoJackpotKey), 0)
139148 let fomoNextJackpot = valueOrElse(getInteger(nextFomoJackpotKey), 0)
140- let fomoActions = if (if (if ((height > (lastFomoTime + FOMO_PERIOD)))
149+ let fomoActions = if (if (if ((height > (lastFomoTime + currFomoPeriod)))
141150 then (fomoCurrJackpot > 0)
142151 else false)
143152 then (lastFomoPlayer != "")
144153 else false)
145- then [ScriptTransfer(addressFromStringValue(lastFomoPlayer), fomoCurrJackpot, gorcAssetId), StringEntry(lastFomoWinnerKey, lastFomoPlayer), IntegerEntry(lastFomoWinnerAmountKey, fomoCurrJackpot), IntegerEntry(lastFomoWinnerTimeKey, lastBlock.timestamp), IntegerEntry(currFomoJackpotKey, (fomoNextJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, deltaNextJackpot)]
146- else [IntegerEntry(currFomoJackpotKey, (fomoCurrJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, (fomoNextJackpot + deltaNextJackpot))]
154+ then [ScriptTransfer(addressFromStringValue(lastFomoPlayer), fomoCurrJackpot, gorcAssetId), StringEntry(lastFomoWinnerKey, lastFomoPlayer), IntegerEntry(lastFomoWinnerAmountKey, fomoCurrJackpot), IntegerEntry(lastFomoWinnerTimeKey, lastBlock.timestamp), IntegerEntry(currFomoJackpotKey, (fomoNextJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, deltaNextJackpot), IntegerEntry(fomoEpochKey, (fomoEpoch + 1)), IntegerEntry(currFomoPeriodKey, DEFAULT_FOMO_PERIOD)]
155+ else [IntegerEntry(currFomoJackpotKey, (fomoCurrJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, (fomoNextJackpot + deltaNextJackpot)), IntegerEntry(currFomoPeriodKey, nextFomoPeriod)]
147156 (([IntegerEntry(lastFomoTimeKey, height), StringEntry(lastFomoPlayerKey, toString(i.caller)), ScriptTransfer(addressFromStringValue(getStringValue(teamWalletAddrKey)), deltaTeamAmount, gorcAssetId), IntegerEntry(stakersAmountLeftKey, (getIntegerValue(stakersAmountLeftKey) + deltaStakersAmount)), IntegerEntry(stakersAmountTotalKey, (getIntegerValue(stakersAmountTotalKey) + deltaStakersAmount))] ++ changeActions) ++ fomoActions)
148157 }
149158 }
150159 }
151160
152161
153162 func getRandomNumber (maxValue,salt,entropy) = if ((0 >= maxValue))
154163 then throw("maxValue should be > 0")
155164 else {
156165 let randomHash = sha256_16Kb((salt + entropy))
157166 (toInt(randomHash) % maxValue)
158167 }
159168
160169
161170 func walletInternal (userAddressOpt) = {
162171 let addr = addressFromString(userAddressOpt)
163172 let balance = if (isDefined(addr))
164173 then wavesBalance(value(addr))
165174 else BalanceDetails(0, 0, 0, 0)
166175 let gorcBalance = if (isDefined(addr))
167176 then assetBalance(value(addr), gorcAssetId)
168177 else 0
169178 let stakedGorc = valueOrElse(getInteger(stakedAmountByUserKey(userAddressOpt)), 0)
170179 [("%s%d__wavesBalance__" + toString(balance.available)), ("%s%d__gorcBalance__" + toString(gorcBalance)), ("%s%d__stakedGorc__" + toString(stakedGorc))]
171180 }
172181
173182
174183 @Callable(i)
175184 func testArgs (intVal,strVal,boolVal,binVal,arrInt,arrStr,arrBool,arrBin) = nil
176185
177186
178187
179188 @Callable(i)
180189 func constructorV1 (teamWalletAddr,brokerAddr) = if ((i.caller != this))
181190 then throw("Permission denied")
182191 else {
183192 let issuedAmount = M16
184193 let issue = Issue("GORC", "Meme coin by God of Random Chance. Visit https://gorc.meme, sacrifice to the God of Random and you will receive an answer to any question or a blessing. Lucky one gets a Gift of God", issuedAmount, 8, false, unit, 0)
185194 let assetId = calculateAssetId(issue)
186-[issue, BinaryEntry(gorcAssetIdKey, assetId), IntegerEntry(issueTimeKey, height), IntegerEntry(stakersAmountLeftKey, STAKERS_AMOUNT), IntegerEntry(stakersAmountTotalKey, STAKERS_AMOUNT), StringEntry(teamWalletAddrKey, teamWalletAddr), StringEntry(brokerAddrKey, brokerAddr), ScriptTransfer(addressFromStringValue(teamWalletAddr), TEAM_AMOUNT, assetId), ScriptTransfer(addressFromStringValue(brokerAddr), MARKET_AMOUNT, assetId)]
195+[issue, BinaryEntry(gorcAssetIdKey, assetId), IntegerEntry(issueTimeKey, height), IntegerEntry(stakersAmountLeftKey, STAKERS_AMOUNT), IntegerEntry(stakersAmountTotalKey, STAKERS_AMOUNT), StringEntry(teamWalletAddrKey, teamWalletAddr), StringEntry(brokerAddrKey, brokerAddr), ScriptTransfer(addressFromStringValue(teamWalletAddr), TEAM_AMOUNT, assetId), ScriptTransfer(addressFromStringValue(brokerAddr), MARKET_AMOUNT, assetId), IntegerEntry(fomoEpochKey, 0), IntegerEntry(currFomoPeriodKey, DEFAULT_FOMO_PERIOD)]
187196 }
188197
189198
190199
191200 @Callable(i)
192201 func stakeGorc () = if ((size(i.payments) != 1))
193202 then throw("exactly 1 payment must be attached")
194203 else {
195204 let pmt = i.payments[0]
196205 let amt = pmt.amount
197206 if (if (!(isDefined(pmt.assetId)))
198207 then true
199208 else (value(pmt.assetId) != gorcAssetId))
200209 then throw("GORC payments only!")
201210 else {
202211 let addr = toString(i.caller)
203- let $t074627513 = gorcStats(addr)
204- let userAmount = $t074627513._1
205- let amountLeftTotal = $t074627513._2
212+ let $t080368087 = gorcStats(addr)
213+ let userAmount = $t080368087._1
214+ let amountLeftTotal = $t080368087._2
206215 let userAmountKey = stakedAmountByUserKey(addr)
207216 let claimActions = if ((userAmount > 0))
208217 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
209218 else nil
210219 $Tuple2((claimActions ++ [IntegerEntry(stakedAmountTotalKey, (valueOrElse(getInteger(stakedAmountTotalKey), 0) + amt)), IntegerEntry(userAmountKey, (valueOrElse(getInteger(userAmountKey), 0) + amt)), IntegerEntry(lastClaimTimeByUserKey(addr), height), IntegerEntry(stakersAmountLeftKey, amountLeftTotal)]), userAmount)
211220 }
212221 }
213222
214223
215224
216225 @Callable(i)
217226 func unstakeGorc (amount) = if ((0 >= amount))
218227 then throw("Amount should be positive")
219228 else {
220229 let addr = toString(i.caller)
221230 if ((size(i.payments) != 0))
222231 then throw("No payments required")
223232 else {
224233 let userAmountKey = stakedAmountByUserKey(addr)
225234 let oldAmount = valueOrElse(getInteger(userAmountKey), 0)
226235 if ((0 > (oldAmount - amount)))
227236 then throw(((("You have only " + fixedPoint(oldAmount, 8)) + " GORC staked, tried to unstake ") + fixedPoint(amount, 8)))
228237 else {
229- let $t084748525 = gorcStats(addr)
230- let userAmount = $t084748525._1
231- let amountLeftTotal = $t084748525._2
238+ let $t090489099 = gorcStats(addr)
239+ let userAmount = $t090489099._1
240+ let amountLeftTotal = $t090489099._2
232241 let claimActions = if ((userAmount > 0))
233242 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
234243 else nil
235244 $Tuple2((claimActions ++ [IntegerEntry(stakedAmountTotalKey, (valueOrErrorMessage(getInteger(stakedAmountTotalKey), "No GORC staked") - amount)), IntegerEntry(userAmountKey, (oldAmount - amount)), IntegerEntry(lastClaimTimeByUserKey(addr), height), IntegerEntry(stakersAmountLeftKey, amountLeftTotal)]), 0)
236245 }
237246 }
238247 }
239248
240249
241250
242251 @Callable(i)
243252 func claimGorc () = if ((size(i.payments) != 0))
244253 then throw("No payments required")
245254 else {
246255 let addr = toString(i.caller)
247- let $t090899140 = gorcStats(addr)
248- let userAmount = $t090899140._1
249- let amountLeftTotal = $t090899140._2
256+ let $t096639714 = gorcStats(addr)
257+ let userAmount = $t096639714._1
258+ let amountLeftTotal = $t096639714._2
250259 let claimActions = if ((userAmount > 0))
251260 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
252261 else nil
253262 $Tuple2((claimActions ++ [IntegerEntry(lastClaimTimeByUserKey(addr), height), IntegerEntry(stakersAmountLeftKey, amountLeftTotal)]), userAmount)
254263 }
255264
256265
257266
258267 @Callable(i)
259268 func answerMe () = $Tuple2(fomoInternal(i), toInt(i.transactionId))
260269
261270
262271
263272 @Callable(i)
264273 func blessMe () = $Tuple2(fomoInternal(i), 42)
265274
266275
267276
268277 @Callable(i)
269278 func commitGuess (guess) = {
270279 let addr = toString(i.caller)
271280 let finishKey = keyCommit(addr)
272281 let guessKey = keyGuess(addr)
273282 if (isDefined(getInteger(finishKey)))
274283 then throw("You already made a bet, please use it")
275284 else if (if ((0 > guess))
276285 then true
277286 else (guess > 11))
278287 then throw("The number should be between 0 and 11")
279288 else if ((size(i.payments) != 1))
280289 then throw("exactly 1 payment must be attached")
281290 else {
282291 let pmt = i.payments[0]
283292 let amt = pmt.amount
284293 if (if (!(isDefined(pmt.assetId)))
285294 then true
286295 else (value(pmt.assetId) != gorcAssetId))
287296 then throw("GORC payments only!")
288297 else {
289298 let change = (amt - LOTTERY_PRICE)
290299 if ((0 > change))
291300 then throw(((("You need to sacrifice " + fixedPoint(LOTTERY_PRICE, 8)) + " GORC, but I see only ") + fixedPoint(amt, 8)))
292301 else {
293302 let changeActions = if ((change > 0))
294303 then [ScriptTransfer(i.caller, change, gorcAssetId)]
295304 else nil
296305 let finishBlock = (height + RANDOM_DELAY)
297306 let deltaCurrJackpot = fraction(LOTTERY_PRICE, CURRENT_JACKPOT_PERC, 100)
298307 let deltaNextJackpot = fraction(LOTTERY_PRICE, NEXT_JACKPOT_PERC, 100)
299308 let deltaTeamAmount = fraction(LOTTERY_PRICE, TEAM_PERC, 100)
300309 let deltaStakersAmount = (((LOTTERY_PRICE - deltaCurrJackpot) - deltaNextJackpot) - deltaTeamAmount)
301310 $Tuple2(([IntegerEntry(finishKey, finishBlock), IntegerEntry(guessKey, guess), IntegerEntry(currLotteryJackpotKey, (valueOrElse(getInteger(currLotteryJackpotKey), 0) + deltaCurrJackpot)), IntegerEntry(nextLotteryJackpotKey, (valueOrElse(getInteger(nextLotteryJackpotKey), 0) + deltaNextJackpot)), ScriptTransfer(addressFromStringValue(getStringValue(teamWalletAddrKey)), deltaTeamAmount, gorcAssetId), IntegerEntry(stakersAmountLeftKey, (getIntegerValue(stakersAmountLeftKey) + deltaStakersAmount)), IntegerEntry(stakersAmountTotalKey, (getIntegerValue(stakersAmountTotalKey) + deltaStakersAmount)), StringEntry(keySalt(addr), toBase58String(i.transactionId))] ++ changeActions), finishBlock)
302311 }
303312 }
304313 }
305314 }
306315
307316
308317
309318 @Callable(i)
310319 func guessLottery () = {
311320 let addr = toString(i.caller)
312321 let finishKey = keyCommit(addr)
313322 let guessKey = keyGuess(addr)
314323 let guess = valueOrErrorMessage(getInteger(guessKey), "You have not made a bet")
315324 let finishBlock = valueOrErrorMessage(getInteger(finishKey), "You have not made a bet")
316325 if ((finishBlock > height))
317326 then throw(("Random number is not ready yet, wait until height = " + toString(finishBlock)))
318327 else {
319328 let entropy = value(value(blockInfoByHeight(finishBlock)).vrf)
320329 let saltKey = keySalt(addr)
321330 let salt = fromBase58String(valueOrElse(getString(saltKey), "DEFAULT"))
322331 let rand = getRandomNumber(12, salt, entropy)
323332 let currJackpot = valueOrElse(getInteger(currLotteryJackpotKey), 0)
324333 let winActions = if ((rand == guess))
325334 then [ScriptTransfer(i.caller, currJackpot, gorcAssetId), StringEntry(lastLotteryWinnerKey, addr), IntegerEntry(lastLotteryWinnerAmountKey, currJackpot), IntegerEntry(lastLotteryWinnerTimeKey, lastBlock.timestamp), IntegerEntry(currLotteryJackpotKey, valueOrElse(getInteger(nextLotteryJackpotKey), 0)), IntegerEntry(nextLotteryJackpotKey, 0)]
326335 else nil
327336 $Tuple2(([DeleteEntry(finishKey), DeleteEntry(guessKey), DeleteEntry(saltKey)] ++ winActions), rand)
328337 }
329338 }
330339
331340
332341
333342 @Callable(i)
334343 func statsREADONLY (userAddrOpt) = {
335- let $t01310313161 = gorcStats(userAddrOpt)
336- let userAmount = $t01310313161._1
337- let amountLeftTotal = $t01310313161._2
344+ let $t01367713735 = gorcStats(userAddrOpt)
345+ let userAmount = $t01367713735._1
346+ let amountLeftTotal = $t01367713735._2
338347 let currFomoJackpot = valueOrElse(getInteger(currFomoJackpotKey), 0)
339348 let nextFomoJackpot = valueOrElse(getInteger(nextFomoJackpotKey), 0)
340349 let lastFomoTime = valueOrElse(getInteger(lastFomoTimeKey), 0)
341350 let lastFomoPlayer = valueOrElse(getString(lastFomoPlayerKey), "")
351+ let fomoEpoch = valueOrElse(getInteger(fomoEpochKey), 0)
352+ let currFomoPeriod = valueOrElse(getInteger(currFomoPeriodKey), DEFAULT_FOMO_PERIOD)
342353 let currLotteryJackpot = valueOrElse(getInteger(currLotteryJackpotKey), 0)
343354 let nextLotteryJackpot = valueOrElse(getInteger(nextLotteryJackpotKey), 0)
344355 let finishKey = keyCommit(userAddrOpt)
345356 let guessKey = keyGuess(userAddrOpt)
346357 let guess = valueOrElse(getInteger(guessKey), -1)
347358 let finishBlock = valueOrElse(getInteger(finishKey), -1)
348- $Tuple2(nil, [("%s%d__gorcAvailToClaim__" + toString(userAmount)), ("%s%d__currFomoJackpotAmount__" + toString(currFomoJackpot)), ("%s%d__nextFomoJackpotAmount__" + toString(nextFomoJackpot)), ("%s%d__currLotteryJackpotAmount__" + toString(currLotteryJackpot)), ("%s%d__nextLotteryJackpotAmount__" + toString(nextLotteryJackpot)), ("%s%d__lastFomoTime__" + toString(lastFomoTime)), ("%s%s__lastFomoPlayer__" + lastFomoPlayer), ("%s%d__amountLeftTotal__" + toString(amountLeftTotal)), ("%s%d__finishBlock__" + toString(finishBlock)), ("%s%d__guess__" + toString(guess))])
359+ $Tuple2(nil, [("%s%d__gorcAvailToClaim__" + toString(userAmount)), ("%s%d__fomoEpoch__" + toString(fomoEpoch)), ("%s%d__currFomoPeriod__" + toString(currFomoPeriod)), ("%s%d__currFomoJackpotAmount__" + toString(currFomoJackpot)), ("%s%d__nextFomoJackpotAmount__" + toString(nextFomoJackpot)), ("%s%d__currLotteryJackpotAmount__" + toString(currLotteryJackpot)), ("%s%d__nextLotteryJackpotAmount__" + toString(nextLotteryJackpot)), ("%s%d__lastFomoTime__" + toString(lastFomoTime)), ("%s%s__lastFomoPlayer__" + lastFomoPlayer), ("%s%d__amountLeftTotal__" + toString(amountLeftTotal)), ("%s%d__finishBlock__" + toString(finishBlock)), ("%s%d__guess__" + toString(guess))])
349360 }
350361
351362
352363
353364 @Callable(i)
354365 func walletInfoREADONLY (userAddressOpt) = $Tuple2(nil, walletInternal(userAddressOpt))
355366
356367

github/deemru/w8io/169f3d6 
56.57 ms