tx · BupqyjFuTsyxEeK9gQ3vBM9X64uq1zpYZVdMC5nQaYZu

3NCGjbgqZVk7eaqrLMEnEnqRhozNm1KTG5z:  -0.01400000 Waves

2025.01.11 15:28 [3454515] smart account 3NCGjbgqZVk7eaqrLMEnEnqRhozNm1KTG5z > SELF 0.00000000 Waves

{ "type": 13, "id": "BupqyjFuTsyxEeK9gQ3vBM9X64uq1zpYZVdMC5nQaYZu", "fee": 1400000, "feeAssetId": null, "timestamp": 1736598495210, "version": 2, "chainId": 84, "sender": "3NCGjbgqZVk7eaqrLMEnEnqRhozNm1KTG5z", "senderPublicKey": "5CoDbXxoqnvJpx9GrS6M4G5GYJXh9rcoiXJz7RYTPVkL", "proofs": [ "4PFb29kFszF28XSLkqcKpSLRRZyFDTTwyVBLQKwrWG4V8KiawHCAJgPpmzMHjNpd4HBocB3soNbQv2RJ5E4zS9FW" ], "script": "base64:BgIyCAISCgoIAQgEAhEYFBISBAoCCAgSABIDCgEBEgASABIAEgMKAQESABIDCgEIEgMKAQgvAANNMTYAgICE/qbe4READlNUQUtFUlNfQU1PVU5UAICAzvK+j6oFAAtURUFNX0FNT1VOVACAgJqm6q/jAQANTUFSS0VUX0FNT1VOVACAgJzl/Z7UCgALWUVBUl9CTE9DS1MJAGgCAO0CAKALAAxTVEFLRV9QRVJJT0QJAGgCAAUFC1lFQVJfQkxPQ0tTAAtCTEVTU19QUklDRQCA0NvD9AIADUxPVFRFUllfUFJJQ0UAgNDbw/QCABNERUZBVUxUX0ZPTU9fUEVSSU9EADwAD01JTl9GT01PX1BFUklPRAACAAxSQU5ET01fREVMQVkAAgAUQ1VSUkVOVF9KQUNLUE9UX1BFUkMAMgARTkVYVF9KQUNLUE9UX1BFUkMAFAAMU1RBS0VSU19QRVJDABQACVRFQU1fUEVSQwAKAA5nb3JjQXNzZXRJZEtleQILZ29yY0Fzc2V0SWQAC2dvcmNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKEIAQUOZ29yY0Fzc2V0SWRLZXkCFkdPUkMgaXMgbm90IGlzc3VlZCB5ZXQADGlzc3VlVGltZUtleQIJaXNzdWVUaW1lABVzdGFrZXJzQW1vdW50VG90YWxLZXkCEnN0YWtlcnNBbW91bnRUb3RhbAAUc3Rha2Vyc0Ftb3VudExlZnRLZXkCEXN0YWtlcnNBbW91bnRMZWZ0ABRzdGFrZWRBbW91bnRUb3RhbEtleQILc3Rha2VkVG90YWwBFXN0YWtlZEFtb3VudEJ5VXNlcktleQEEYWRkcgkArAICAg1zdGFrZWRBbW91bnRfBQRhZGRyARZsYXN0Q2xhaW1UaW1lQnlVc2VyS2V5AQRhZGRyCQCsAgICDmxhc3RDbGFpbVRpbWVfBQRhZGRyAAxmb21vRXBvY2hLZXkCCWZvbW9FcG9jaAARY3VyckZvbW9QZXJpb2RLZXkCDmN1cnJGb21vUGVyaW9kAA9sYXN0Rm9tb1RpbWVLZXkCDGxhc3RGb21vVGltZQASY3VyckZvbW9KYWNrcG90S2V5Ag9jdXJyRm9tb0phY2twb3QAEm5leHRGb21vSmFja3BvdEtleQIPbmV4dEZvbW9KYWNrcG90ABFsYXN0Rm9tb1BsYXllcktleQIObGFzdEZvbW9QbGF5ZXIAEWxhc3RGb21vV2lubmVyS2V5Ag5sYXN0Rm9tb1dpbm5lcgAXbGFzdEZvbW9XaW5uZXJBbW91bnRLZXkCFGxhc3RGb21vV2lubmVyQW1vdW50ABVsYXN0Rm9tb1dpbm5lclRpbWVLZXkCEmxhc3RGb21vV2lubmVyVGltZQARdGVhbVdhbGxldEFkZHJLZXkCDnRlYW1XYWxsZXRBZGRyAA1icm9rZXJBZGRyS2V5Agpicm9rZXJBZGRyAQlrZXlDb21taXQBB2FkZHJlc3MJAKwCAgIPZmluaXNoQmxvY2tGb3JfBQdhZGRyZXNzAQhrZXlHdWVzcwEHYWRkcmVzcwkArAICAglndWVzc0Zvcl8FB2FkZHJlc3MBB2tleVNhbHQBB2FkZHJlc3MJAKwCAgIIc2FsdEZvcl8FB2FkZHJlc3MAFWN1cnJMb3R0ZXJ5SmFja3BvdEtleQISY3VyckxvdHRlcnlKYWNrcG90ABVuZXh0TG90dGVyeUphY2twb3RLZXkCEm5leHRMb3R0ZXJ5SmFja3BvdAAUbGFzdExvdHRlcnlXaW5uZXJLZXkCEWxhc3RMb3R0ZXJ5V2lubmVyABpsYXN0TG90dGVyeVdpbm5lckFtb3VudEtleQIXbGFzdExvdHRlcnlXaW5uZXJBbW91bnQAGGxhc3RMb3R0ZXJ5V2lubmVyVGltZUtleQIVbGFzdExvdHRlcnlXaW5uZXJUaW1lAQlnb3JjU3RhdHMBC3VzZXJBZGRyT3B0BA9hbW91bnRMZWZ0VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUUc3Rha2Vyc0Ftb3VudExlZnRLZXkAAAQMbGFzdFVzZXJUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEJARZsYXN0Q2xhaW1UaW1lQnlVc2VyS2V5AQULdXNlckFkZHJPcHQA////////////AQMJAGYCAAAFDGxhc3RVc2VyVGltZQkAlAoCAAAFD2Ftb3VudExlZnRUb3RhbAQJaXNzdWVUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUMaXNzdWVUaW1lS2V5AhZHT1JDIGlzIG5vdCBpc3N1ZWQgeWV0BApub3dMaW1pdGVkCQCXAwEJAMwIAgUGaGVpZ2h0CQDMCAIJAGQCBQlpc3N1ZVRpbWUFDFNUQUtFX1BFUklPRAUDbmlsBAp1c2VyU2hhcmVzCQELdmFsdWVPckVsc2UCCQCfCAEJARVzdGFrZWRBbW91bnRCeVVzZXJLZXkBBQt1c2VyQWRkck9wdAAABAt0b3RhbFNoYXJlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBRRzdGFrZWRBbW91bnRUb3RhbEtleQAABBJzdGFrZXJzQW1vdW50VG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVc3Rha2Vyc0Ftb3VudFRvdGFsS2V5BQ5TVEFLRVJTX0FNT1VOVAQMdXNlclRlbXBvcmFsCQBrAwUSc3Rha2Vyc0Ftb3VudFRvdGFsCQBlAgUKbm93TGltaXRlZAUMbGFzdFVzZXJUaW1lBQxTVEFLRV9QRVJJT0QECnVzZXJBbW91bnQDCQECIT0CBQt0b3RhbFNoYXJlcwAACQBrAwUMdXNlclRlbXBvcmFsBQp1c2VyU2hhcmVzBQt0b3RhbFNoYXJlcwAACQCUCgIFCnVzZXJBbW91bnQJAGUCBQ9hbW91bnRMZWZ0VG90YWwFCnVzZXJBbW91bnQBCmZpeGVkUG9pbnQCA3ZhbAhkZWNpbWFscwQGdGVuUG93CQBsBgAKAAAFCGRlY2ltYWxzAAAAAAUERE9XTgQHbG93UGFydAkApAMBCQBqAgUDdmFsBQZ0ZW5Qb3cEBnplcm9lcwkAsAICCQCkAwEFBnRlblBvdwkAZAIAAQkAsQIBBQdsb3dQYXJ0CQCsAgIJAKwCAgkArAICCQCkAwEJAGkCBQN2YWwFBnRlblBvdwIBLgUGemVyb2VzBQdsb3dQYXJ0AQxmb21vSW50ZXJuYWwBAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFC2dvcmNBc3NldElkCQACAQITR09SQyBwYXltZW50cyBvbmx5IQQGY2hhbmdlCQBlAgUDYW10BQtCTEVTU19QUklDRQMJAGYCAAAFBmNoYW5nZQkAAgEJAKwCAgkArAICCQCsAgICFllvdSBuZWVkIHRvIHNhY3JpZmljZSAJAQpmaXhlZFBvaW50AgULQkxFU1NfUFJJQ0UACAIWIEdPUkMsIGJ1dCBJIHNlZSBvbmx5IAkBCmZpeGVkUG9pbnQCBQNhbXQACAQNY2hhbmdlQWN0aW9ucwMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmNoYW5nZQULZ29yY0Fzc2V0SWQFA25pbAUDbmlsBAxsYXN0Rm9tb1RpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPbGFzdEZvbW9UaW1lS2V5AAAEDmxhc3RGb21vUGxheWVyCQELdmFsdWVPckVsc2UCCQCiCAEFEWxhc3RGb21vUGxheWVyS2V5AgAEEGRlbHRhQ3VyckphY2twb3QJAGsDBQtCTEVTU19QUklDRQUUQ1VSUkVOVF9KQUNLUE9UX1BFUkMAZAQQZGVsdGFOZXh0SmFja3BvdAkAawMFC0JMRVNTX1BSSUNFBRFORVhUX0pBQ0tQT1RfUEVSQwBkBA9kZWx0YVRlYW1BbW91bnQJAGsDBQtCTEVTU19QUklDRQUJVEVBTV9QRVJDAGQEEmRlbHRhU3Rha2Vyc0Ftb3VudAkAZQIJAGUCCQBlAgULQkxFU1NfUFJJQ0UFEGRlbHRhQ3VyckphY2twb3QFEGRlbHRhTmV4dEphY2twb3QFD2RlbHRhVGVhbUFtb3VudAQJZm9tb0Vwb2NoCQELdmFsdWVPckVsc2UCCQCfCAEFDGZvbW9FcG9jaEtleQAABA5jdXJyRm9tb1BlcmlvZAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRFjdXJyRm9tb1BlcmlvZEtleQUTREVGQVVMVF9GT01PX1BFUklPRAQObmV4dEZvbW9QZXJpb2QJAJYDAQkAzAgCBQ9NSU5fRk9NT19QRVJJT0QJAMwIAgkAZQIFDmN1cnJGb21vUGVyaW9kAAEFA25pbAQPZm9tb0N1cnJKYWNrcG90CQELdmFsdWVPckVsc2UCCQCfCAEFEmN1cnJGb21vSmFja3BvdEtleQAABA9mb21vTmV4dEphY2twb3QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSbmV4dEZvbW9KYWNrcG90S2V5AAAEC2ZvbW9BY3Rpb25zAwMDCQBmAgUGaGVpZ2h0CQBkAgUMbGFzdEZvbW9UaW1lBQ5jdXJyRm9tb1BlcmlvZAkAZgIFD2ZvbW9DdXJySmFja3BvdAAABwkBAiE9AgUObGFzdEZvbW9QbGF5ZXICAAcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUObGFzdEZvbW9QbGF5ZXIFD2ZvbW9DdXJySmFja3BvdAULZ29yY0Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgURbGFzdEZvbW9XaW5uZXJLZXkFDmxhc3RGb21vUGxheWVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRdsYXN0Rm9tb1dpbm5lckFtb3VudEtleQUPZm9tb0N1cnJKYWNrcG90CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVsYXN0Rm9tb1dpbm5lclRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJjdXJyRm9tb0phY2twb3RLZXkJAGQCBQ9mb21vTmV4dEphY2twb3QFEGRlbHRhQ3VyckphY2twb3QJAMwIAgkBDEludGVnZXJFbnRyeQIFEm5leHRGb21vSmFja3BvdEtleQUQZGVsdGFOZXh0SmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZm9tb0Vwb2NoS2V5CQBkAgUJZm9tb0Vwb2NoAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFEWN1cnJGb21vUGVyaW9kS2V5BRNERUZBVUxUX0ZPTU9fUEVSSU9EBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFEmN1cnJGb21vSmFja3BvdEtleQkAZAIFD2ZvbW9DdXJySmFja3BvdAUQZGVsdGFDdXJySmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSbmV4dEZvbW9KYWNrcG90S2V5CQBkAgUPZm9tb05leHRKYWNrcG90BRBkZWx0YU5leHRKYWNrcG90CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFjdXJyRm9tb1BlcmlvZEtleQUObmV4dEZvbW9QZXJpb2QFA25pbAkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFD2xhc3RGb21vVGltZUtleQUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFEWxhc3RGb21vUGxheWVyS2V5CQClCAEIBQFpBmNhbGxlcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRF0ZWFtV2FsbGV0QWRkcktleQUPZGVsdGFUZWFtQW1vdW50BQtnb3JjQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBBRRzdGFrZXJzQW1vdW50TGVmdEtleQUSZGVsdGFTdGFrZXJzQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVzdGFrZXJzQW1vdW50VG90YWxLZXkJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBBRVzdGFrZXJzQW1vdW50VG90YWxLZXkFEmRlbHRhU3Rha2Vyc0Ftb3VudAUDbmlsBQ1jaGFuZ2VBY3Rpb25zBQtmb21vQWN0aW9ucwEPZ2V0UmFuZG9tTnVtYmVyAwhtYXhWYWx1ZQRzYWx0B2VudHJvcHkDCQBnAgAABQhtYXhWYWx1ZQkAAgECFm1heFZhbHVlIHNob3VsZCBiZSA+IDAECnJhbmRvbUhhc2gJANQWAQkAywECBQRzYWx0BQdlbnRyb3B5CQBqAgkAsQkBBQpyYW5kb21IYXNoBQhtYXhWYWx1ZQEOd2FsbGV0SW50ZXJuYWwBDnVzZXJBZGRyZXNzT3B0BARhZGRyCQCmCAEFDnVzZXJBZGRyZXNzT3B0BAdiYWxhbmNlAwkBCWlzRGVmaW5lZAEFBGFkZHIJAO8HAQkBBXZhbHVlAQUEYWRkcgkBDkJhbGFuY2VEZXRhaWxzBAAAAAAAAAAABAtnb3JjQmFsYW5jZQMJAQlpc0RlZmluZWQBBQRhZGRyCQDwBwIJAQV2YWx1ZQEFBGFkZHIFC2dvcmNBc3NldElkAAAECnN0YWtlZEdvcmMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFXN0YWtlZEFtb3VudEJ5VXNlcktleQEFDnVzZXJBZGRyZXNzT3B0AAAJAMwIAgkArAICAhQlcyVkX193YXZlc0JhbGFuY2VfXwkApAMBCAUHYmFsYW5jZQlhdmFpbGFibGUJAMwIAgkArAICAhMlcyVkX19nb3JjQmFsYW5jZV9fCQCkAwEFC2dvcmNCYWxhbmNlCQDMCAIJAKwCAgISJXMlZF9fc3Rha2VkR29yY19fCQCkAwEFCnN0YWtlZEdvcmMFA25pbAsBaQEIdGVzdEFyZ3MIBmludFZhbAZzdHJWYWwHYm9vbFZhbAZiaW5WYWwGYXJySW50BmFyclN0cgdhcnJCb29sBmFyckJpbgUDbmlsAWkBDWNvbnN0cnVjdG9yVjECDnRlYW1XYWxsZXRBZGRyCmJyb2tlckFkZHIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQMaXNzdWVkQW1vdW50BQNNMTYEBWlzc3VlCQDDCAcCBEdPUkMCtQFNZW1lIGNvaW4gYnkgR29kIG9mIFJhbmRvbSBDaGFuY2UuIFZpc2l0IGh0dHBzOi8vZ29yYy5tZW1lLCBzYWNyaWZpY2UgdG8gdGhlIEdvZCBvZiBSYW5kb20gYW5kIHlvdSB3aWxsIHJlY2VpdmUgYW4gYW5zd2VyIHRvIGFueSBxdWVzdGlvbiBvciBhIGJsZXNzaW5nLiBMdWNreSBvbmUgZ2V0cyBhIEdpZnQgb2YgR29kBQxpc3N1ZWRBbW91bnQACAcFBHVuaXQAAAQHYXNzZXRJZAkAuAgBBQVpc3N1ZQkAzAgCBQVpc3N1ZQkAzAgCCQELQmluYXJ5RW50cnkCBQ5nb3JjQXNzZXRJZEtleQUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMaXNzdWVUaW1lS2V5BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5BQ5TVEFLRVJTX0FNT1VOVAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVc3Rha2Vyc0Ftb3VudFRvdGFsS2V5BQ5TVEFLRVJTX0FNT1VOVAkAzAgCCQELU3RyaW5nRW50cnkCBRF0ZWFtV2FsbGV0QWRkcktleQUOdGVhbVdhbGxldEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUNYnJva2VyQWRkcktleQUKYnJva2VyQWRkcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ50ZWFtV2FsbGV0QWRkcgULVEVBTV9BTU9VTlQFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUKYnJva2VyQWRkcgUNTUFSS0VUX0FNT1VOVAUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUMZm9tb0Vwb2NoS2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFEWN1cnJGb21vUGVyaW9kS2V5BRNERUZBVUxUX0ZPTU9fUEVSSU9EBQNuaWwBaQEJc3Rha2VHb3JjAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULZ29yY0Fzc2V0SWQJAAIBAhNHT1JDIHBheW1lbnRzIG9ubHkhBARhZGRyCQClCAEIBQFpBmNhbGxlcgQLJHQwODAzNjgwODcJAQlnb3JjU3RhdHMBBQRhZGRyBAp1c2VyQW1vdW50CAULJHQwODAzNjgwODcCXzEED2Ftb3VudExlZnRUb3RhbAgFCyR0MDgwMzY4MDg3Al8yBA11c2VyQW1vdW50S2V5CQEVc3Rha2VkQW1vdW50QnlVc2VyS2V5AQUEYWRkcgQMY2xhaW1BY3Rpb25zAwkAZgIFCnVzZXJBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCnVzZXJBbW91bnQFC2dvcmNBc3NldElkBQNuaWwFA25pbAkAlAoCCQDOCAIFDGNsYWltQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2VkQW1vdW50VG90YWxLZXkJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFFHN0YWtlZEFtb3VudFRvdGFsS2V5AAAFA2FtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNdXNlckFtb3VudEtleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNdXNlckFtb3VudEtleQAABQNhbXQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZsYXN0Q2xhaW1UaW1lQnlVc2VyS2V5AQUEYWRkcgUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRzdGFrZXJzQW1vdW50TGVmdEtleQUPYW1vdW50TGVmdFRvdGFsBQNuaWwFCnVzZXJBbW91bnQBaQELdW5zdGFrZUdvcmMBBmFtb3VudAMJAGcCAAAFBmFtb3VudAkAAgECGUFtb3VudCBzaG91bGQgYmUgcG9zaXRpdmUEBGFkZHIJAKUIAQgFAWkGY2FsbGVyAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEDXVzZXJBbW91bnRLZXkJARVzdGFrZWRBbW91bnRCeVVzZXJLZXkBBQRhZGRyBAlvbGRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNdXNlckFtb3VudEtleQAAAwkAZgIAAAkAZQIFCW9sZEFtb3VudAUGYW1vdW50CQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAQpmaXhlZFBvaW50AgUJb2xkQW1vdW50AAgCHyBHT1JDIHN0YWtlZCwgdHJpZWQgdG8gdW5zdGFrZSAJAQpmaXhlZFBvaW50AgUGYW1vdW50AAgECyR0MDkwNDg5MDk5CQEJZ29yY1N0YXRzAQUEYWRkcgQKdXNlckFtb3VudAgFCyR0MDkwNDg5MDk5Al8xBA9hbW91bnRMZWZ0VG90YWwIBQskdDA5MDQ4OTA5OQJfMgQMY2xhaW1BY3Rpb25zAwkAZgIFCnVzZXJBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCnVzZXJBbW91bnQFC2dvcmNBc3NldElkBQNuaWwFA25pbAkAlAoCCQDOCAIFDGNsYWltQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2VkQW1vdW50VG90YWxLZXkJAGUCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUUc3Rha2VkQW1vdW50VG90YWxLZXkCDk5vIEdPUkMgc3Rha2VkBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFDXVzZXJBbW91bnRLZXkJAGUCBQlvbGRBbW91bnQFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmxhc3RDbGFpbVRpbWVCeVVzZXJLZXkBBQRhZGRyBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5BQ9hbW91bnRMZWZ0VG90YWwFA25pbAAAAWkBCWNsYWltR29yYwADCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIECyR0MDk2NjM5NzE0CQEJZ29yY1N0YXRzAQUEYWRkcgQKdXNlckFtb3VudAgFCyR0MDk2NjM5NzE0Al8xBA9hbW91bnRMZWZ0VG90YWwIBQskdDA5NjYzOTcxNAJfMgQMY2xhaW1BY3Rpb25zAwkAZgIFCnVzZXJBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCnVzZXJBbW91bnQFC2dvcmNBc3NldElkBQNuaWwFA25pbAkAlAoCCQDOCAIFDGNsYWltQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmxhc3RDbGFpbVRpbWVCeVVzZXJLZXkBBQRhZGRyBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFFHN0YWtlcnNBbW91bnRMZWZ0S2V5BQ9hbW91bnRMZWZ0VG90YWwFA25pbAUKdXNlckFtb3VudAFpAQhhbnN3ZXJNZQAJAJQKAgkBDGZvbW9JbnRlcm5hbAEFAWkJALEJAQgFAWkNdHJhbnNhY3Rpb25JZAFpAQdibGVzc01lAAkAlAoCCQEMZm9tb0ludGVybmFsAQUBaQAqAWkBC2NvbW1pdEd1ZXNzAQVndWVzcwQEYWRkcgkApQgBCAUBaQZjYWxsZXIECWZpbmlzaEtleQkBCWtleUNvbW1pdAEFBGFkZHIECGd1ZXNzS2V5CQEIa2V5R3Vlc3MBBQRhZGRyAwkBCWlzRGVmaW5lZAEJAJ8IAQUJZmluaXNoS2V5CQACAQIlWW91IGFscmVhZHkgbWFkZSBhIGJldCwgcGxlYXNlIHVzZSBpdAMDCQBmAgAABQVndWVzcwYJAGYCBQVndWVzcwALCQACAQIlVGhlIG51bWJlciBzaG91bGQgYmUgYmV0d2VlbiAwIGFuZCAxMQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECImV4YWN0bHkgMSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEA3BtdAkAkQMCCAUBaQhwYXltZW50cwAABANhbXQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULZ29yY0Fzc2V0SWQJAAIBAhNHT1JDIHBheW1lbnRzIG9ubHkhBAZjaGFuZ2UJAGUCBQNhbXQFDUxPVFRFUllfUFJJQ0UDCQBmAgAABQZjaGFuZ2UJAAIBCQCsAgIJAKwCAgkArAICAhZZb3UgbmVlZCB0byBzYWNyaWZpY2UgCQEKZml4ZWRQb2ludAIFDUxPVFRFUllfUFJJQ0UACAIWIEdPUkMsIGJ1dCBJIHNlZSBvbmx5IAkBCmZpeGVkUG9pbnQCBQNhbXQACAQNY2hhbmdlQWN0aW9ucwMJAGYCBQZjaGFuZ2UAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmNoYW5nZQULZ29yY0Fzc2V0SWQFA25pbAUDbmlsBAtmaW5pc2hCbG9jawkAZAIFBmhlaWdodAUMUkFORE9NX0RFTEFZBBBkZWx0YUN1cnJKYWNrcG90CQBrAwUNTE9UVEVSWV9QUklDRQUUQ1VSUkVOVF9KQUNLUE9UX1BFUkMAZAQQZGVsdGFOZXh0SmFja3BvdAkAawMFDUxPVFRFUllfUFJJQ0UFEU5FWFRfSkFDS1BPVF9QRVJDAGQED2RlbHRhVGVhbUFtb3VudAkAawMFDUxPVFRFUllfUFJJQ0UFCVRFQU1fUEVSQwBkBBJkZWx0YVN0YWtlcnNBbW91bnQJAGUCCQBlAgkAZQIFDUxPVFRFUllfUFJJQ0UFEGRlbHRhQ3VyckphY2twb3QFEGRlbHRhTmV4dEphY2twb3QFD2RlbHRhVGVhbUFtb3VudAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCWZpbmlzaEtleQULZmluaXNoQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFCGd1ZXNzS2V5BQVndWVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUVY3VyckxvdHRlcnlKYWNrcG90S2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVjdXJyTG90dGVyeUphY2twb3RLZXkAAAUQZGVsdGFDdXJySmFja3BvdAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVbmV4dExvdHRlcnlKYWNrcG90S2V5CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVuZXh0TG90dGVyeUphY2twb3RLZXkAAAUQZGVsdGFOZXh0SmFja3BvdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRF0ZWFtV2FsbGV0QWRkcktleQUPZGVsdGFUZWFtQW1vdW50BQtnb3JjQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUUc3Rha2Vyc0Ftb3VudExlZnRLZXkJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBBRRzdGFrZXJzQW1vdW50TGVmdEtleQUSZGVsdGFTdGFrZXJzQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVzdGFrZXJzQW1vdW50VG90YWxLZXkJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBBRVzdGFrZXJzQW1vdW50VG90YWxLZXkFEmRlbHRhU3Rha2Vyc0Ftb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5U2FsdAEFBGFkZHIJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsBQ1jaGFuZ2VBY3Rpb25zBQtmaW5pc2hCbG9jawFpAQxndWVzc0xvdHRlcnkABARhZGRyCQClCAEIBQFpBmNhbGxlcgQJZmluaXNoS2V5CQEJa2V5Q29tbWl0AQUEYWRkcgQIZ3Vlc3NLZXkJAQhrZXlHdWVzcwEFBGFkZHIEBWd1ZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUIZ3Vlc3NLZXkCF1lvdSBoYXZlIG5vdCBtYWRlIGEgYmV0BAtmaW5pc2hCbG9jawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFCWZpbmlzaEtleQIXWW91IGhhdmUgbm90IG1hZGUgYSBiZXQDCQBmAgULZmluaXNoQmxvY2sFBmhlaWdodAkAAgEJAKwCAgI0UmFuZG9tIG51bWJlciBpcyBub3QgcmVhZHkgeWV0LCB3YWl0IHVudGlsIGhlaWdodCA9IAkApAMBBQtmaW5pc2hCbG9jawQHZW50cm9weQkBBXZhbHVlAQgJAQV2YWx1ZQEJAO0HAQULZmluaXNoQmxvY2sDdnJmBAdzYWx0S2V5CQEHa2V5U2FsdAEFBGFkZHIEBHNhbHQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAoggBBQdzYWx0S2V5AgdERUZBVUxUBARyYW5kCQEPZ2V0UmFuZG9tTnVtYmVyAwAMBQRzYWx0BQdlbnRyb3B5BAtjdXJySmFja3BvdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVjdXJyTG90dGVyeUphY2twb3RLZXkAAAQKd2luQWN0aW9ucwMJAAACBQRyYW5kBQVndWVzcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2N1cnJKYWNrcG90BQtnb3JjQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCBRRsYXN0TG90dGVyeVdpbm5lcktleQUEYWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUabGFzdExvdHRlcnlXaW5uZXJBbW91bnRLZXkFC2N1cnJKYWNrcG90CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRhsYXN0TG90dGVyeVdpbm5lclRpbWVLZXkIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVjdXJyTG90dGVyeUphY2twb3RLZXkJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVbmV4dExvdHRlcnlKYWNrcG90S2V5AAAJAMwIAgkBDEludGVnZXJFbnRyeQIFFW5leHRMb3R0ZXJ5SmFja3BvdEtleQAABQNuaWwFA25pbAkAlAoCCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUJZmluaXNoS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCGd1ZXNzS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFB3NhbHRLZXkFA25pbAUKd2luQWN0aW9ucwUEcmFuZAFpAQ1zdGF0c1JFQURPTkxZAQt1c2VyQWRkck9wdAQNJHQwMTM2NzcxMzczNQkBCWdvcmNTdGF0cwEFC3VzZXJBZGRyT3B0BAp1c2VyQW1vdW50CAUNJHQwMTM2NzcxMzczNQJfMQQPYW1vdW50TGVmdFRvdGFsCAUNJHQwMTM2NzcxMzczNQJfMgQPY3VyckZvbW9KYWNrcG90CQELdmFsdWVPckVsc2UCCQCfCAEFEmN1cnJGb21vSmFja3BvdEtleQAABA9uZXh0Rm9tb0phY2twb3QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSbmV4dEZvbW9KYWNrcG90S2V5AAAEDGxhc3RGb21vVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9sYXN0Rm9tb1RpbWVLZXkAAAQObGFzdEZvbW9QbGF5ZXIJAQt2YWx1ZU9yRWxzZQIJAKIIAQURbGFzdEZvbW9QbGF5ZXJLZXkCAAQJZm9tb0Vwb2NoCQELdmFsdWVPckVsc2UCCQCfCAEFDGZvbW9FcG9jaEtleQAABA5jdXJyRm9tb1BlcmlvZAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRFjdXJyRm9tb1BlcmlvZEtleQUTREVGQVVMVF9GT01PX1BFUklPRAQSY3VyckxvdHRlcnlKYWNrcG90CQELdmFsdWVPckVsc2UCCQCfCAEFFWN1cnJMb3R0ZXJ5SmFja3BvdEtleQAABBJuZXh0TG90dGVyeUphY2twb3QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVbmV4dExvdHRlcnlKYWNrcG90S2V5AAAECWZpbmlzaEtleQkBCWtleUNvbW1pdAEFC3VzZXJBZGRyT3B0BAhndWVzc0tleQkBCGtleUd1ZXNzAQULdXNlckFkZHJPcHQEBWd1ZXNzCQELdmFsdWVPckVsc2UCCQCfCAEFCGd1ZXNzS2V5AP///////////wEEC2ZpbmlzaEJsb2NrCQELdmFsdWVPckVsc2UCCQCfCAEFCWZpbmlzaEtleQD///////////8BBA5sYXN0Rm9tb1dpbm5lcgkBC3ZhbHVlT3JFbHNlAgkAoggBBRFsYXN0Rm9tb1dpbm5lcktleQIABBRsYXN0Rm9tb1dpbm5lckFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRdsYXN0Rm9tb1dpbm5lckFtb3VudEtleQAABBJsYXN0Rm9tb1dpbm5lclRpbWUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUVbGFzdEZvbW9XaW5uZXJUaW1lS2V5AAAEEWxhc3RMb3R0ZXJ5V2lubmVyCQELdmFsdWVPckVsc2UCCQCiCAEFFGxhc3RMb3R0ZXJ5V2lubmVyS2V5AgAEF2xhc3RMb3R0ZXJ5V2lubmVyQW1vdW50CQELdmFsdWVPckVsc2UCCQCfCAEFGmxhc3RMb3R0ZXJ5V2lubmVyQW1vdW50S2V5AAAEFWxhc3RMb3R0ZXJ5V2lubmVyVGltZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBRhsYXN0TG90dGVyeVdpbm5lclRpbWVLZXkAAAkAlAoCBQNuaWwJAMwIAgkArAICAhglcyVkX19nb3JjQXZhaWxUb0NsYWltX18JAKQDAQUKdXNlckFtb3VudAkAzAgCCQCsAgICESVzJWRfX2ZvbW9FcG9jaF9fCQCkAwEFCWZvbW9FcG9jaAkAzAgCCQCsAgICFiVzJWRfX2N1cnJGb21vUGVyaW9kX18JAKQDAQUOY3VyckZvbW9QZXJpb2QJAMwIAgkArAICAh0lcyVkX19jdXJyRm9tb0phY2twb3RBbW91bnRfXwkApAMBBQ9jdXJyRm9tb0phY2twb3QJAMwIAgkArAICAh0lcyVkX19uZXh0Rm9tb0phY2twb3RBbW91bnRfXwkApAMBBQ9uZXh0Rm9tb0phY2twb3QJAMwIAgkArAICAiAlcyVkX19jdXJyTG90dGVyeUphY2twb3RBbW91bnRfXwkApAMBBRJjdXJyTG90dGVyeUphY2twb3QJAMwIAgkArAICAiAlcyVkX19uZXh0TG90dGVyeUphY2twb3RBbW91bnRfXwkApAMBBRJuZXh0TG90dGVyeUphY2twb3QJAMwIAgkArAICAhQlcyVkX19sYXN0Rm9tb1RpbWVfXwkApAMBBQxsYXN0Rm9tb1RpbWUJAMwIAgkArAICAhYlcyVzX19sYXN0Rm9tb1BsYXllcl9fBQ5sYXN0Rm9tb1BsYXllcgkAzAgCCQCsAgICFyVzJWRfX2Ftb3VudExlZnRUb3RhbF9fCQCkAwEFD2Ftb3VudExlZnRUb3RhbAkAzAgCCQCsAgICEyVzJWRfX2ZpbmlzaEJsb2NrX18JAKQDAQULZmluaXNoQmxvY2sJAMwIAgkArAICAg0lcyVkX19ndWVzc19fCQCkAwEFBWd1ZXNzCQDMCAIJAKwCAgIWJXMlc19fbGFzdEZvbW9XaW5uZXJfXwUObGFzdEZvbW9XaW5uZXIJAMwIAgkArAICAhwlcyVkX19sYXN0Rm9tb1dpbm5lckFtb3VudF9fCQCkAwEFFGxhc3RGb21vV2lubmVyQW1vdW50CQDMCAIJAKwCAgIaJXMlZF9fbGFzdEZvbW9XaW5uZXJUaW1lX18JAKQDAQUSbGFzdEZvbW9XaW5uZXJUaW1lCQDMCAIJAKwCAgIZJXMlc19fbGFzdExvdHRlcnlXaW5uZXJfXwURbGFzdExvdHRlcnlXaW5uZXIJAMwIAgkArAICAh8lcyVkX19sYXN0TG90dGVyeVdpbm5lckFtb3VudF9fCQCkAwEFF2xhc3RMb3R0ZXJ5V2lubmVyQW1vdW50CQDMCAIJAKwCAgIdJXMlZF9fbGFzdExvdHRlcnlXaW5uZXJUaW1lX18JAKQDAQUVbGFzdExvdHRlcnlXaW5uZXJUaW1lBQNuaWwBaQESd2FsbGV0SW5mb1JFQURPTkxZAQ51c2VyQWRkcmVzc09wdAkAlAoCBQNuaWwJAQ53YWxsZXRJbnRlcm5hbAEFDnVzZXJBZGRyZXNzT3B0AKj9Zwk=", "height": 3454515, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8FKkxFVgbff7We1HYdDk9TsPERUy3bd4DuamRE85kmeT Next: none Diff:
OldNewDifferences
356356 let guessKey = keyGuess(userAddrOpt)
357357 let guess = valueOrElse(getInteger(guessKey), -1)
358358 let finishBlock = valueOrElse(getInteger(finishKey), -1)
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))])
359+ let lastFomoWinner = valueOrElse(getString(lastFomoWinnerKey), "")
360+ let lastFomoWinnerAmount = valueOrElse(getInteger(lastFomoWinnerAmountKey), 0)
361+ let lastFomoWinnerTime = valueOrElse(getInteger(lastFomoWinnerTimeKey), 0)
362+ let lastLotteryWinner = valueOrElse(getString(lastLotteryWinnerKey), "")
363+ let lastLotteryWinnerAmount = valueOrElse(getInteger(lastLotteryWinnerAmountKey), 0)
364+ let lastLotteryWinnerTime = valueOrElse(getInteger(lastLotteryWinnerTimeKey), 0)
365+ $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)), ("%s%s__lastFomoWinner__" + lastFomoWinner), ("%s%d__lastFomoWinnerAmount__" + toString(lastFomoWinnerAmount)), ("%s%d__lastFomoWinnerTime__" + toString(lastFomoWinnerTime)), ("%s%s__lastLotteryWinner__" + lastLotteryWinner), ("%s%d__lastLotteryWinnerAmount__" + toString(lastLotteryWinnerAmount)), ("%s%d__lastLotteryWinnerTime__" + toString(lastLotteryWinnerTime))])
360366 }
361367
362368
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
2020 let DEFAULT_FOMO_PERIOD = 60
2121
2222 let MIN_FOMO_PERIOD = 2
2323
2424 let RANDOM_DELAY = 2
2525
2626 let CURRENT_JACKPOT_PERC = 50
2727
2828 let NEXT_JACKPOT_PERC = 20
2929
3030 let STAKERS_PERC = 20
3131
3232 let TEAM_PERC = 10
3333
3434 let gorcAssetIdKey = "gorcAssetId"
3535
3636 let gorcAssetId = valueOrErrorMessage(getBinary(gorcAssetIdKey), "GORC is not issued yet")
3737
3838 let issueTimeKey = "issueTime"
3939
4040 let stakersAmountTotalKey = "stakersAmountTotal"
4141
4242 let stakersAmountLeftKey = "stakersAmountLeft"
4343
4444 let stakedAmountTotalKey = "stakedTotal"
4545
4646 func stakedAmountByUserKey (addr) = ("stakedAmount_" + addr)
4747
4848
4949 func lastClaimTimeByUserKey (addr) = ("lastClaimTime_" + addr)
5050
5151
5252 let fomoEpochKey = "fomoEpoch"
5353
5454 let currFomoPeriodKey = "currFomoPeriod"
5555
5656 let lastFomoTimeKey = "lastFomoTime"
5757
5858 let currFomoJackpotKey = "currFomoJackpot"
5959
6060 let nextFomoJackpotKey = "nextFomoJackpot"
6161
6262 let lastFomoPlayerKey = "lastFomoPlayer"
6363
6464 let lastFomoWinnerKey = "lastFomoWinner"
6565
6666 let lastFomoWinnerAmountKey = "lastFomoWinnerAmount"
6767
6868 let lastFomoWinnerTimeKey = "lastFomoWinnerTime"
6969
7070 let teamWalletAddrKey = "teamWalletAddr"
7171
7272 let brokerAddrKey = "brokerAddr"
7373
7474 func keyCommit (address) = ("finishBlockFor_" + address)
7575
7676
7777 func keyGuess (address) = ("guessFor_" + address)
7878
7979
8080 func keySalt (address) = ("saltFor_" + address)
8181
8282
8383 let currLotteryJackpotKey = "currLotteryJackpot"
8484
8585 let nextLotteryJackpotKey = "nextLotteryJackpot"
8686
8787 let lastLotteryWinnerKey = "lastLotteryWinner"
8888
8989 let lastLotteryWinnerAmountKey = "lastLotteryWinnerAmount"
9090
9191 let lastLotteryWinnerTimeKey = "lastLotteryWinnerTime"
9292
9393 func gorcStats (userAddrOpt) = {
9494 let amountLeftTotal = valueOrElse(getInteger(stakersAmountLeftKey), 0)
9595 let lastUserTime = valueOrElse(getInteger(lastClaimTimeByUserKey(userAddrOpt)), -1)
9696 if ((0 > lastUserTime))
9797 then $Tuple2(0, amountLeftTotal)
9898 else {
9999 let issueTime = valueOrErrorMessage(getInteger(issueTimeKey), "GORC is not issued yet")
100100 let nowLimited = min([height, (issueTime + STAKE_PERIOD)])
101101 let userShares = valueOrElse(getInteger(stakedAmountByUserKey(userAddrOpt)), 0)
102102 let totalShares = valueOrElse(getInteger(stakedAmountTotalKey), 0)
103103 let stakersAmountTotal = valueOrElse(getInteger(stakersAmountTotalKey), STAKERS_AMOUNT)
104104 let userTemporal = fraction(stakersAmountTotal, (nowLimited - lastUserTime), STAKE_PERIOD)
105105 let userAmount = if ((totalShares != 0))
106106 then fraction(userTemporal, userShares, totalShares)
107107 else 0
108108 $Tuple2(userAmount, (amountLeftTotal - userAmount))
109109 }
110110 }
111111
112112
113113 func fixedPoint (val,decimals) = {
114114 let tenPow = pow(10, 0, decimals, 0, 0, DOWN)
115115 let lowPart = toString((val % tenPow))
116116 let zeroes = drop(toString(tenPow), (1 + size(lowPart)))
117117 (((toString((val / tenPow)) + ".") + zeroes) + lowPart)
118118 }
119119
120120
121121 func fomoInternal (i) = if ((size(i.payments) != 1))
122122 then throw("exactly 1 payment must be attached")
123123 else {
124124 let pmt = i.payments[0]
125125 let amt = pmt.amount
126126 if (if (!(isDefined(pmt.assetId)))
127127 then true
128128 else (value(pmt.assetId) != gorcAssetId))
129129 then throw("GORC payments only!")
130130 else {
131131 let change = (amt - BLESS_PRICE)
132132 if ((0 > change))
133133 then throw(((("You need to sacrifice " + fixedPoint(BLESS_PRICE, 8)) + " GORC, but I see only ") + fixedPoint(amt, 8)))
134134 else {
135135 let changeActions = if ((change > 0))
136136 then [ScriptTransfer(i.caller, change, gorcAssetId)]
137137 else nil
138138 let lastFomoTime = valueOrElse(getInteger(lastFomoTimeKey), 0)
139139 let lastFomoPlayer = valueOrElse(getString(lastFomoPlayerKey), "")
140140 let deltaCurrJackpot = fraction(BLESS_PRICE, CURRENT_JACKPOT_PERC, 100)
141141 let deltaNextJackpot = fraction(BLESS_PRICE, NEXT_JACKPOT_PERC, 100)
142142 let deltaTeamAmount = fraction(BLESS_PRICE, TEAM_PERC, 100)
143143 let deltaStakersAmount = (((BLESS_PRICE - deltaCurrJackpot) - deltaNextJackpot) - deltaTeamAmount)
144144 let fomoEpoch = valueOrElse(getInteger(fomoEpochKey), 0)
145145 let currFomoPeriod = valueOrElse(getInteger(currFomoPeriodKey), DEFAULT_FOMO_PERIOD)
146146 let nextFomoPeriod = max([MIN_FOMO_PERIOD, (currFomoPeriod - 1)])
147147 let fomoCurrJackpot = valueOrElse(getInteger(currFomoJackpotKey), 0)
148148 let fomoNextJackpot = valueOrElse(getInteger(nextFomoJackpotKey), 0)
149149 let fomoActions = if (if (if ((height > (lastFomoTime + currFomoPeriod)))
150150 then (fomoCurrJackpot > 0)
151151 else false)
152152 then (lastFomoPlayer != "")
153153 else false)
154154 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)]
155155 else [IntegerEntry(currFomoJackpotKey, (fomoCurrJackpot + deltaCurrJackpot)), IntegerEntry(nextFomoJackpotKey, (fomoNextJackpot + deltaNextJackpot)), IntegerEntry(currFomoPeriodKey, nextFomoPeriod)]
156156 (([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)
157157 }
158158 }
159159 }
160160
161161
162162 func getRandomNumber (maxValue,salt,entropy) = if ((0 >= maxValue))
163163 then throw("maxValue should be > 0")
164164 else {
165165 let randomHash = sha256_16Kb((salt + entropy))
166166 (toInt(randomHash) % maxValue)
167167 }
168168
169169
170170 func walletInternal (userAddressOpt) = {
171171 let addr = addressFromString(userAddressOpt)
172172 let balance = if (isDefined(addr))
173173 then wavesBalance(value(addr))
174174 else BalanceDetails(0, 0, 0, 0)
175175 let gorcBalance = if (isDefined(addr))
176176 then assetBalance(value(addr), gorcAssetId)
177177 else 0
178178 let stakedGorc = valueOrElse(getInteger(stakedAmountByUserKey(userAddressOpt)), 0)
179179 [("%s%d__wavesBalance__" + toString(balance.available)), ("%s%d__gorcBalance__" + toString(gorcBalance)), ("%s%d__stakedGorc__" + toString(stakedGorc))]
180180 }
181181
182182
183183 @Callable(i)
184184 func testArgs (intVal,strVal,boolVal,binVal,arrInt,arrStr,arrBool,arrBin) = nil
185185
186186
187187
188188 @Callable(i)
189189 func constructorV1 (teamWalletAddr,brokerAddr) = if ((i.caller != this))
190190 then throw("Permission denied")
191191 else {
192192 let issuedAmount = M16
193193 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)
194194 let assetId = calculateAssetId(issue)
195195 [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)]
196196 }
197197
198198
199199
200200 @Callable(i)
201201 func stakeGorc () = if ((size(i.payments) != 1))
202202 then throw("exactly 1 payment must be attached")
203203 else {
204204 let pmt = i.payments[0]
205205 let amt = pmt.amount
206206 if (if (!(isDefined(pmt.assetId)))
207207 then true
208208 else (value(pmt.assetId) != gorcAssetId))
209209 then throw("GORC payments only!")
210210 else {
211211 let addr = toString(i.caller)
212212 let $t080368087 = gorcStats(addr)
213213 let userAmount = $t080368087._1
214214 let amountLeftTotal = $t080368087._2
215215 let userAmountKey = stakedAmountByUserKey(addr)
216216 let claimActions = if ((userAmount > 0))
217217 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
218218 else nil
219219 $Tuple2((claimActions ++ [IntegerEntry(stakedAmountTotalKey, (valueOrElse(getInteger(stakedAmountTotalKey), 0) + amt)), IntegerEntry(userAmountKey, (valueOrElse(getInteger(userAmountKey), 0) + amt)), IntegerEntry(lastClaimTimeByUserKey(addr), height), IntegerEntry(stakersAmountLeftKey, amountLeftTotal)]), userAmount)
220220 }
221221 }
222222
223223
224224
225225 @Callable(i)
226226 func unstakeGorc (amount) = if ((0 >= amount))
227227 then throw("Amount should be positive")
228228 else {
229229 let addr = toString(i.caller)
230230 if ((size(i.payments) != 0))
231231 then throw("No payments required")
232232 else {
233233 let userAmountKey = stakedAmountByUserKey(addr)
234234 let oldAmount = valueOrElse(getInteger(userAmountKey), 0)
235235 if ((0 > (oldAmount - amount)))
236236 then throw(((("You have only " + fixedPoint(oldAmount, 8)) + " GORC staked, tried to unstake ") + fixedPoint(amount, 8)))
237237 else {
238238 let $t090489099 = gorcStats(addr)
239239 let userAmount = $t090489099._1
240240 let amountLeftTotal = $t090489099._2
241241 let claimActions = if ((userAmount > 0))
242242 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
243243 else nil
244244 $Tuple2((claimActions ++ [IntegerEntry(stakedAmountTotalKey, (valueOrErrorMessage(getInteger(stakedAmountTotalKey), "No GORC staked") - amount)), IntegerEntry(userAmountKey, (oldAmount - amount)), IntegerEntry(lastClaimTimeByUserKey(addr), height), IntegerEntry(stakersAmountLeftKey, amountLeftTotal)]), 0)
245245 }
246246 }
247247 }
248248
249249
250250
251251 @Callable(i)
252252 func claimGorc () = if ((size(i.payments) != 0))
253253 then throw("No payments required")
254254 else {
255255 let addr = toString(i.caller)
256256 let $t096639714 = gorcStats(addr)
257257 let userAmount = $t096639714._1
258258 let amountLeftTotal = $t096639714._2
259259 let claimActions = if ((userAmount > 0))
260260 then [ScriptTransfer(i.caller, userAmount, gorcAssetId)]
261261 else nil
262262 $Tuple2((claimActions ++ [IntegerEntry(lastClaimTimeByUserKey(addr), height), IntegerEntry(stakersAmountLeftKey, amountLeftTotal)]), userAmount)
263263 }
264264
265265
266266
267267 @Callable(i)
268268 func answerMe () = $Tuple2(fomoInternal(i), toInt(i.transactionId))
269269
270270
271271
272272 @Callable(i)
273273 func blessMe () = $Tuple2(fomoInternal(i), 42)
274274
275275
276276
277277 @Callable(i)
278278 func commitGuess (guess) = {
279279 let addr = toString(i.caller)
280280 let finishKey = keyCommit(addr)
281281 let guessKey = keyGuess(addr)
282282 if (isDefined(getInteger(finishKey)))
283283 then throw("You already made a bet, please use it")
284284 else if (if ((0 > guess))
285285 then true
286286 else (guess > 11))
287287 then throw("The number should be between 0 and 11")
288288 else if ((size(i.payments) != 1))
289289 then throw("exactly 1 payment must be attached")
290290 else {
291291 let pmt = i.payments[0]
292292 let amt = pmt.amount
293293 if (if (!(isDefined(pmt.assetId)))
294294 then true
295295 else (value(pmt.assetId) != gorcAssetId))
296296 then throw("GORC payments only!")
297297 else {
298298 let change = (amt - LOTTERY_PRICE)
299299 if ((0 > change))
300300 then throw(((("You need to sacrifice " + fixedPoint(LOTTERY_PRICE, 8)) + " GORC, but I see only ") + fixedPoint(amt, 8)))
301301 else {
302302 let changeActions = if ((change > 0))
303303 then [ScriptTransfer(i.caller, change, gorcAssetId)]
304304 else nil
305305 let finishBlock = (height + RANDOM_DELAY)
306306 let deltaCurrJackpot = fraction(LOTTERY_PRICE, CURRENT_JACKPOT_PERC, 100)
307307 let deltaNextJackpot = fraction(LOTTERY_PRICE, NEXT_JACKPOT_PERC, 100)
308308 let deltaTeamAmount = fraction(LOTTERY_PRICE, TEAM_PERC, 100)
309309 let deltaStakersAmount = (((LOTTERY_PRICE - deltaCurrJackpot) - deltaNextJackpot) - deltaTeamAmount)
310310 $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)
311311 }
312312 }
313313 }
314314 }
315315
316316
317317
318318 @Callable(i)
319319 func guessLottery () = {
320320 let addr = toString(i.caller)
321321 let finishKey = keyCommit(addr)
322322 let guessKey = keyGuess(addr)
323323 let guess = valueOrErrorMessage(getInteger(guessKey), "You have not made a bet")
324324 let finishBlock = valueOrErrorMessage(getInteger(finishKey), "You have not made a bet")
325325 if ((finishBlock > height))
326326 then throw(("Random number is not ready yet, wait until height = " + toString(finishBlock)))
327327 else {
328328 let entropy = value(value(blockInfoByHeight(finishBlock)).vrf)
329329 let saltKey = keySalt(addr)
330330 let salt = fromBase58String(valueOrElse(getString(saltKey), "DEFAULT"))
331331 let rand = getRandomNumber(12, salt, entropy)
332332 let currJackpot = valueOrElse(getInteger(currLotteryJackpotKey), 0)
333333 let winActions = if ((rand == guess))
334334 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)]
335335 else nil
336336 $Tuple2(([DeleteEntry(finishKey), DeleteEntry(guessKey), DeleteEntry(saltKey)] ++ winActions), rand)
337337 }
338338 }
339339
340340
341341
342342 @Callable(i)
343343 func statsREADONLY (userAddrOpt) = {
344344 let $t01367713735 = gorcStats(userAddrOpt)
345345 let userAmount = $t01367713735._1
346346 let amountLeftTotal = $t01367713735._2
347347 let currFomoJackpot = valueOrElse(getInteger(currFomoJackpotKey), 0)
348348 let nextFomoJackpot = valueOrElse(getInteger(nextFomoJackpotKey), 0)
349349 let lastFomoTime = valueOrElse(getInteger(lastFomoTimeKey), 0)
350350 let lastFomoPlayer = valueOrElse(getString(lastFomoPlayerKey), "")
351351 let fomoEpoch = valueOrElse(getInteger(fomoEpochKey), 0)
352352 let currFomoPeriod = valueOrElse(getInteger(currFomoPeriodKey), DEFAULT_FOMO_PERIOD)
353353 let currLotteryJackpot = valueOrElse(getInteger(currLotteryJackpotKey), 0)
354354 let nextLotteryJackpot = valueOrElse(getInteger(nextLotteryJackpotKey), 0)
355355 let finishKey = keyCommit(userAddrOpt)
356356 let guessKey = keyGuess(userAddrOpt)
357357 let guess = valueOrElse(getInteger(guessKey), -1)
358358 let finishBlock = valueOrElse(getInteger(finishKey), -1)
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))])
359+ let lastFomoWinner = valueOrElse(getString(lastFomoWinnerKey), "")
360+ let lastFomoWinnerAmount = valueOrElse(getInteger(lastFomoWinnerAmountKey), 0)
361+ let lastFomoWinnerTime = valueOrElse(getInteger(lastFomoWinnerTimeKey), 0)
362+ let lastLotteryWinner = valueOrElse(getString(lastLotteryWinnerKey), "")
363+ let lastLotteryWinnerAmount = valueOrElse(getInteger(lastLotteryWinnerAmountKey), 0)
364+ let lastLotteryWinnerTime = valueOrElse(getInteger(lastLotteryWinnerTimeKey), 0)
365+ $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)), ("%s%s__lastFomoWinner__" + lastFomoWinner), ("%s%d__lastFomoWinnerAmount__" + toString(lastFomoWinnerAmount)), ("%s%d__lastFomoWinnerTime__" + toString(lastFomoWinnerTime)), ("%s%s__lastLotteryWinner__" + lastLotteryWinner), ("%s%d__lastLotteryWinnerAmount__" + toString(lastLotteryWinnerAmount)), ("%s%d__lastLotteryWinnerTime__" + toString(lastLotteryWinnerTime))])
360366 }
361367
362368
363369
364370 @Callable(i)
365371 func walletInfoREADONLY (userAddressOpt) = $Tuple2(nil, walletInternal(userAddressOpt))
366372
367373

github/deemru/w8io/169f3d6 
38.59 ms