tx · 9pBxnd72gkgor5FwMZfK7D4bTkWobw48ABWQ9ngR6ZU7

3Mp1KXu3VwKdNXFsKaW9ebEdwQW5uUpMDb4:  -0.01500000 Waves

2021.03.12 16:57 [1434552] smart account 3Mp1KXu3VwKdNXFsKaW9ebEdwQW5uUpMDb4 > SELF 0.00000000 Waves

{ "type": 13, "id": "9pBxnd72gkgor5FwMZfK7D4bTkWobw48ABWQ9ngR6ZU7", "fee": 1500000, "feeAssetId": null, "timestamp": 1615557514477, "version": 2, "chainId": 84, "sender": "3Mp1KXu3VwKdNXFsKaW9ebEdwQW5uUpMDb4", "senderPublicKey": "2NSFfKJi8tT4riMPPnH1oDwzCaWar3tqpCPBi7suWbwa", "proofs": [ "61PyP179x6P8ML6tPoBMMzN9oEXYdTmy2SnAGzq97Th7XiMxB9GrS8tQHCYwgojVc9zFiS6y61NK1ss41ykuqKLN" ], "script": "base64:AAIDAAAAAAAAABMIARIHCgUBAQEBCBIECgIBARIAAAAAFAAAAAAKZEFwcEFkZHJlcwIAAAArRjlEQ0dpWWdUOHl2QnExQVFGY1NwR0c0cDhzZHpOejltWmN6RHZKNDVMTAAAAAALdGlja2V0QXNzZXQBAAAAIEYc9ZUgYtXiRrToDJgiMgFmnQRu3R1NoyARqb9irygsAAAAAA10b2tlbnNQZXJQbGF5AAAAAAAF9eEAAAAAAA1sb3R0ZXJ5YW1vdW50AgAAAAdfYW1vdW50AAAAABJsb3R0ZXJ5cHJvYmFiaWxpdHkCAAAADF9wcm9iYWJpbGl0eQAAAAAZbG90dGVyeXByb2JhYmlsaXR5ZGVjaW1hbAIAAAAUX3Byb2JhYmlsaXR5X2RlY2ltYWwAAAAADGxvdHRlcnlQcmljZQIAAAAGX3ByaWNlAAAAAA1sb3R0ZXJ5UHJpY2VzAgAAAA9fbG90dGVyeV9wcmljZXMAAAAADmxvdHRlcnlBc3NldElkAgAAABFfbG90dGVyeV9hc3NldF9pZAAAAAANY291bnRPZlByaWNlcwIAAAANX2NvdW50X3ByaWNlcwAAAAAUbGFzdEhhc2hSYW5kb21OdW1iZXICAAAAFWxhc3Rfc3Bpbl9yYW5kb21faGFzaAAAAAATbGFzdFRva2VuUmFuZG9tSGFzaAIAAAAWbGFzdF90b2tlbl9yYW5kb21faGFzaAAAAAAQYWxsb3dTaXplTG90dGVyeQAAAAAAAAAABAAAAAARdG90YWxQcmljZXNJblBvb2wCAAAAEXRvdGFsX3ByaXplc19wb29sAQAAAApyYW5kb21pemVyAAAAAQAAAANpbnYEAAAACGxhc3RQbGF5BAAAAAckbWF0Y2gwCQAEHAAAAAIFAAAABHRoaXMFAAAAFGxhc3RIYXNoUmFuZG9tTnVtYmVyAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0AQAAAAxXYXZlc0xvdHRvVjIJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IEAAAABHJhbmQJAADLAAAAAgkAAMsAAAACCQAAywAAAAIJAADLAAAAAgkAAMsAAAACBQAAAAhs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AAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgMJAABmAAAAAgUAAAAQYWxsb3dTaXplTG90dGVyeQUAAAALY291bnRUb2tlbnMEAAAAEXVwZGF0ZUxvdHRlcnlQb29sCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAABXRva2VuBQAAAA1sb3R0ZXJ5YW1vdW50BQAAAAZhbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdG9rZW4FAAAAEmxvdHRlcnlwcm9iYWJpbGl0eQUAAAALcHJvYmFiaWxpdHkJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdG9rZW4FAAAADGxvdHRlcnlQcmljZQUAAAAJcG9vbHByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA1sb3R0ZXJ5UHJpY2VzBQAAABJzdG9yZWRUb2tlbnNWYWx1ZXMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWNvdW50T2ZQcmljZXMJAABkAAAAAgUAAAALY291bnRUb2tlbnMAAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdG9rZW4FAAAAGWxvdHRlcnlwcm9iYWJpbGl0eWRlY2ltYWwFAAAAC3Byb2JEZWNpbWFsCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAABXRva2VuBQAAAA5sb3R0ZXJ5QXNzZXRJZAUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAATbGFzdFRva2VuUmFuZG9tSGFzaAUAAAAFdG9rZW4JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAEXRvdGFsUHJpY2VzSW5Qb29sBQAAABh1cGRhdGVkVG90YWxBbW91bnRQcmljZXMFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIFAAAAEXVwZGF0ZUxvdHRlcnlQb29sCQEAAAALVHJhbnNmZXJTZXQAAAABBQAAAANuaWwJAAACAAAAAQkAASwAAAACAgAAACNMb3R0ZXJ5IHByaWNlcyBoYXMgcmVhY2hlZCBtYXhpbXVtIAkAAaQAAAABBQAAABBhbGxvd1NpemVMb3R0ZXJ5BAAAAAl0bkJhbGFuY2UDBQAAAA5sb3R0ZXJ5QXNzZXRUTgkBAAAADHdhdmVzQmFsYW5jZQAAAAEFAAAABHRoaXMJAAPrAAAAAgUAAAAEdGhpcwkAAlsAAAABBQAAAAdhc3NldElkAwkAAGYAAAACBQAAABN0b3RhbFJlcXVpcmVkQW1vdW50BQAAAAl0bkJhbGFuY2UJAAACAAAAAQIAAAAXTm90IGVub3VnaCBBc3NldCBBbW91bnQEAAAACXRlbXBWYWx1ZQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAA1sb3R0ZXJ5UHJpY2VzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQCAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgQAAAAKY29udGFpbktleQkABLMAAAACBQAAAAl0ZW1wVmFsdWUFAAAABXRva2VuBAAAABJzdG9yZWRUb2tlbnNWYWx1ZXMEAAAAByRtYXRjaDAFAAAACmNvbnRhaW5LZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQJAAEsAAAAAgkAASwAAAACBQAAAAl0ZW1wVmFsdWUFAAAABXRva2VuAgAAAAEsAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAXgFAAAAByRtYXRjaDAJAAACAAAAAQIAAAATVG9rZW4gaXMgZHVwbGljYXRlZAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgQAAAALY291bnRUb2tlbnMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAANY291bnRPZlByaWNlcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0AAAAAAAAAAAACQAAAgAAAAECAAAAC01hdGNoIGVycm9yAwkAAGYAAAACBQAAABBhbGxvd1NpemVMb3R0ZXJ5BQAAAAtjb3VudFRva2VucwQAAAARdXBkYXRlTG90dGVyeVBvb2wJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdG9rZW4FAAAADWxvdHRlcnlhbW91bnQFAAAABmFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0b2tlbgUAAAASbG90dGVyeXByb2JhYmlsaXR5BQAAAAtwcm9iYWJpbGl0eQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0b2tlbgUAAAAMbG90dGVyeVByaWNlBQAAAAlwb29scHJpY2UJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWxvdHRlcnlQcmljZXMFAAAAEnN0b3JlZFRva2Vuc1ZhbHVlcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANY291bnRPZlByaWNlcwkAAGQAAAACBQAAAAtjb3VudFRva2VucwAAAAAAAAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0b2tlbgUAAAAZbG90dGVyeXByb2JhYmlsaXR5ZGVjaW1hbAUAAAALcHJvYkRlY2ltYWwJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgUAAAAFdG9rZW4FAAAADmxvdHRlcnlBc3NldElkBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABNsYXN0VG9rZW5SYW5kb21IYXNoBQAAAAV0b2tlbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAARdG90YWxQcmljZXNJblBvb2wFAAAAGHVwZGF0ZWRUb3RhbEFtb3VudFByaWNlcwUAAAADbmlsCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgUAAAARdXBkYXRlTG90dGVyeVBvb2wJAQAAAAtUcmFuc2ZlclNldAAAAAEFAAAAA25pbAkAAAIAAAABCQABLAAAAAICAAAAI0xvdHRlcnkgcHJpY2VzIGhhcyByZWFjaGVkIG1heGltdW0gCQABpAAAAAEFAAAAEGFsbG93U2l6ZUxvdHRlcnkAAAABaQEAAAAHdGVzdFZhbAAAAAIAAAALdG9rZW5BbW91bnQAAAAKZGVjaW1hbFZhbAQAAAAPdG9rZW5BbW91bnRTaXplCQABMQAAAAEJAAGkAAAAAQUAAAALdG9rZW5BbW91bnQDCQAAZgAAAAIFAAAAD3Rva2VuQW1vdW50U2l6ZQUAAAAKZGVjaW1hbFZhbAQAAAALc3VmaXhBbW91bnQJAQAAAAl0YWtlUmlnaHQAAAACCQABpAAAAAEFAAAAC3Rva2VuQW1vdW50BQAAAApkZWNpbWFsVmFsBAAAAAxwcmVmaXhOdW1iZXIJAAEvAAAAAgkAAaQAAAABBQAAAAt0b2tlbkFtb3VudAkAAGUAAAACCQABMQAAAAEJAAGkAAAAAQUAAAALdG9rZW5BbW91bnQFAAAACmRlY2ltYWxWYWwEAAAACmZpbmFSZXN1bHQJAAEsAAAAAgkAASwAAAACBQAAAAxwcmVmaXhOdW1iZXICAAAAAS4FAAAAC3N1Zml4QW1vdW50BAAAAAl3cml0ZVNldHMJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAGkAAAAAQUAAAALdG9rZW5BbW91bnQFAAAACmZpbmFSZXN1bHQFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIFAAAACXdyaXRlU2V0cwkBAAAAC1RyYW5zZmVyU2V0AAAAAQUAAAADbmlsAwkAAAAAAAACBQAAAA90b2tlbkFtb3VudFNpemUFAAAACmRlY2ltYWxWYWwEAAAAB3ZhbFRlbXAJAABlAAAAAgUAAAAKZGVjaW1hbFZhbAUAAAAPdG9rZW5BbW91bnRTaXplBAAAAAtmaW5hbE51bWJlcgkAASwAAAACAgAAAAIwLgkAAaQAAAABBQAAAAt0b2tlbkFtb3VudAQAAAAJd3JpdGVTZXRzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABpAAAAAEFAAAAC3Rva2VuQW1vdW50BQAAAAtmaW5hbE51bWJlcgUAAAADbmlsCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgUAAAAJd3JpdGVTZXRzCQEAAAALVHJhbnNmZXJTZXQAAAABBQAAAANuaWwEAAAAE2RpZmZQcmljZUFuZERlY2ltYWwJAABlAAAAAgUAAAAKZGVjaW1hbFZhbAUAAAAPdG9rZW5BbW91bnRTaXplBAAAAAxwcmVmaXhBbW91bnQJAQAAABBnZXROdW1iZXJEZWNpbWFsAAAAAQUAAAATZGlmZlByaWNlQW5kRGVjaW1hbAQAAAALZmluYWxSZXN1bHQJAAEsAAAAAgUAAAAMcHJlZml4QW1vdW50CQABpAAAAAEFAAAAC3Rva2VuQW1vdW50BAAAAAl3cml0ZVNldHMJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAB21lc3NhZ2UCAAAAAAUAAAADbmlsCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgUAAAAJd3JpdGVTZXRzCQEAAAALVHJhbnNmZXJTZXQAAAABBQAAAANuaWwAAAABaQEAAAAKc3RhcnRsb3R0bwAAAAAEAAAAEHBheW1lbnRJc0RlZmluZWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABaQAAAAdwYXltZW50BwYDCQAAAAAAAAIFAAAAEHBheW1lbnRJc0RlZmluZWQGBAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAMDCQEAAAACIT0AAAACCAUAAAADcG10AAAAB2Fzc2V0SWQFAAAAC3RpY2tldEFzc2V0BgkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAADXRva2Vuc1BlclBsYXkJAAACAAAAAQIAAAAzSW5jb3JyZWN0IGFzc2V0IHBhc3NlZCBvciBpbmNvcnJlY3QgcXVhbnRpdHkgcGFzc2VkBAAAAApjdXJyZW50S2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAACHJhbmRoYXNoCQEAAAAKcmFuZG9taXplcgAAAAEFAAAAAWkEAAAAC2NvdW50VG9rZW5zBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAADWNvdW50T2ZQcmljZXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAAAAAAAAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgQAAAAJcHJpY2VMaXN0CQEAAAANZ2V0UHJpY2VBcnJheQAAAAAEAAAACnJhbmROdW1iZXIJAAJaAAAAAQUAAAAIcmFuZGhhc2gEAAAACXVwZE51bWJlcgkAAlsAAAABBQAAAApyYW5kTnVtYmVyBAAAABFsaXN0V2lubmluZ1ByaWNlcwkABEwAAAACBQAAAApyYW5kTnVtYmVyBQAAAANuaWwEAAAADHdpbm5pbmdUb2tlbgQAAAAPJGxpc3QxMTEyNTExMTc3BQAAAAlwcmljZUxpc3QEAAAADyRzaXplMTExMjUxMTE3NwkAAZAAAAABBQAAAA8kbGlzdDExMTI1MTExNzcEAAAADyRhY2MwMTExMjUxMTE3NwUAAAARbGlzdFdpbm5pbmdQcmljZXMDCQAAAAAAAAIFAAAADyRzaXplMTExMjUxMTE3NwAAAAAAAAAAAAUAAAAPJGFjYzAxMTEyNTExMTc3BAAAAA8kYWNjMTExMTI1MTExNzcJAQAAAA1wcm9jZWRMb3R0ZXJ5AAAAAgUAAAAPJGFjYzAxMTEyNTExMTc3CQABkQAAAAIFAAAADyRsaXN0MTExMjUxMTE3NwAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxMTEyNTExMTc3AAAAAAAAAAABBQAAAA8kYWNjMTExMTI1MTExNzcEAAAADyRhY2MyMTExMjUxMTE3NwkBAAAADXByb2NlZExvdHRlcnkAAAACBQAAAA8kYWNjMTExMTI1MTExNzcJAAGRAAAAAgUAAAAPJGxpc3QxMTEyNTExMTc3AAAAAAAAAAABAwkAAAAAAAACBQAAAA8kc2l6ZTExMTI1MTExNzcAAAAAAAAAAAIFAAAADyRhY2MyMTExMjUxMTE3NwQAAAAPJGFjYzMxMTEyNTExMTc3CQEAAAANcHJvY2VkTG90dGVyeQAAAAIFAAAADyRhY2MyMTExMjUxMTE3NwkAAZEAAAACBQAAAA8kbGlzdDExMTI1MTExNzcAAAAAAAAAAAIDCQAAAAAAAAIFAAAADyRzaXplMTExMjUxMTE3NwAAAAAAAAAAAwUAAAAPJGFjYzMxMTEyNTExMTc3BAAAAA8kYWNjNDExMTI1MTExNzcJAQAAAA1wcm9jZWRMb3R0ZXJ5AAAAAgUAAAAPJGFjYzMxMTEyNTExMTc3CQABkQAAAAIFAAAADyRsaXN0MTExMjUxMTE3NwAAAAAAAAAAAwMJAAAAAAAAAgUAAAAPJHNpemUxMTEyNTExMTc3AAAAAAAAAAAEBQAAAA8kYWNjNDExMTI1MTExNzcEAAAADyRhY2M1MTExMjUxMTE3NwkBAAAADXByb2NlZExvdHRlcnkAAAACBQAAAA8kYWNjNDExMTI1MTExNzcJAAGRAAAAAgUAAAAPJGxpc3QxMTEyNTExMTc3AAAAAAAAAAAECQAAAgAAAAECAAAAEkxpc3Qgc2l6ZSBleGNlZWQgNAQAAAAPc2l6ZU9mV2luUHJpY2VzCQABkAAAAAEFAAAADHdpbm5pbmdUb2tlbgMJAAAAAAAAAgUAAAAPc2l6ZU9mV2luUHJpY2VzAAAAAAAAAAABBAAAAAl3cml0ZVNldHMJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAB21lc3NhZ2UCAAAATTxoMT5CZXR0ZXIgbHVjayBuZXh0IHRpbWUhPC9oMT48YnI+PHA+SW52aXRlIG1vcmUgZnJpZW5kcyB0byBrZWVwIHBsYXlpbmcuPHA+CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABRsYXN0SGFzaFJhbmRvbU51bWJlcgUAAAAKcmFuZE51bWJlcgUAAAADbmlsCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgUAAAAJd3JpdGVTZXRzCQEAAAALVHJhbnNmZXJTZXQAAAABBQAAAANuaWwEAAAABXRva2VuCQABkQAAAAIFAAAADHdpbm5pbmdUb2tlbgAAAAAAAAAAAAQAAAANY3VycmVudEFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAV0b2tlbgUAAAANbG90dGVyeWFtb3VudAMJAAAAAAAAAgUAAAANY3VycmVudEFtb3VudAAAAAAAAAAAAAkAAAIAAAABAgAAAA9BbW91bnQgZXhjZWVkZWQEAAAADGFjdHVhbEFtb3VudAkAAGUAAAACBQAAAA1jdXJyZW50QW1vdW50AAAAAAAAAAABBAAAAA50b2tlbldvbkFtb3VudAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAV0b2tlbgUAAAAMbG90dGVyeVByaWNlBAAAAAx0b2tlbkFzc2V0SWQJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAFdG9rZW4FAAAADmxvdHRlcnlBc3NldElkBAAAABJjdXJyZW50VG90YWxBbW91bnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAARdG90YWxQcmljZXNJblBvb2wDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABdAUAAAAHJG1hdGNoMAUAAAABdAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAAAAAAAAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgQAAAANdXBkYXRlZEFtb3VudAkAAGUAAAACBQAAABJjdXJyZW50VG90YWxBbW91bnQFAAAADnRva2VuV29uQW1vdW50AwkAAAAAAAACBQAAAAxhY3R1YWxBbW91bnQAAAAAAAAAAAAEAAAAEnN0b3JlZFRva2Vuc1ZhbHVlcwQAAAAPJGxpc3QxMjgxODEyODY4BQAAAAlwcmljZUxpc3QEAAAADyRzaXplMTI4MTgxMjg2OAkAAZAAAAABBQAAAA8kbGlzdDEyODE4MTI4NjgEAAAADyRhY2MwMTI4MTgxMjg2OAUAAAAFdG9rZW4DCQAAAAAAAAIFAAAADyRzaXplMTI4MTgxMjg2OAAAAAAAAAAAAAUAAAAPJGFjYzAxMjgxODEyODY4BAAAAA8kYWNjMTEyODE4MTI4NjgJAQAAABdnZW5lcmF0ZU5ld0xpc3RPZlByaWNlcwAAAAIFAAAADyRhY2MwMTI4MTgxMjg2OAkAAZEAAAACBQAAAA8kbGlzdDEyODE4MTI4NjgAAAAAAAAAAAADCQAAAAAAAAIFAAAADyRzaXplMTI4MTgxMjg2OAAAAAAAAAAAAQUAAAAPJGFjYzExMjgxODEyODY4BAAAAA8kYWNjMjEyODE4MTI4NjgJAQAAABdnZW5lcmF0ZU5ld0xpc3RPZlByaWNlcwAAAAIFAAAADyRhY2MxMTI4MTgxMjg2OAkAAZEAAAACBQAAAA8kbGlzdDEyODE4MTI4NjgAAAAAAAAAAAEDCQAAAAAAAAIFAAAADyRzaXplMTI4MTgxMjg2OAAAAAAAAAAAAgUAAAAPJGFjYzIxMjgxODEyODY4BAAAAA8kYWNjMzEyODE4MTI4NjgJAQAAABdnZW5lcmF0ZU5ld0xpc3RPZlByaWNlcwAAAAIFAAAADyRhY2MyMTI4MTgxMjg2OAkAAZEAAAACBQAAAA8kbGlzdDEyODE4MTI4NjgAAAAAAAAAAAIDCQAAAAAAAAIFAAAADyRzaXplMTI4MTgxMjg2OAAAAAAAAAAAAwUAAAAPJGFjYzMxMjgxODEyODY4BAAAAA8kYWNjNDEyODE4MTI4NjgJAQAAABdnZW5lcmF0ZU5ld0xpc3RPZlByaWNlcwAAAAIFAAAADyRhY2MzMTI4MTgxMjg2OAkAAZEAAAACBQAAAA8kbGlzdDEyODE4MTI4NjgAAAAAAAAAAAMDCQAAAAAAAAIFAAAADyRzaXplMTI4MTgxMjg2OAAAAAAAAAAABAUAAAAPJGFjYzQxMjgxODEyODY4BAAAAA8kYWNjNTEyODE4MTI4NjgJAQAAABdnZW5lcmF0ZU5ld0xpc3RPZlByaWNlcwAAAAIFAAAADyRhY2M0MTI4MTgxMjg2OAkAAZEAAAACBQAAAA8kbGlzdDEyODE4MTI4NjgAAAAAAAAAAAQJAAACAAAAAQIAAAASTGlzdCBzaXplIGV4Y2VlZCA0BAAAAAl0b2tlblNpemUJAABlAAAAAgkAAGUAAAACCQABMQAAAAEFAAAAEnN0b3JlZFRva2Vuc1ZhbHVlcwkAATEAAAABBQAAAAV0b2tlbgAAAAAAAAAAAQQAAAANdXBkYXRlZFByaWNlcwkBAAAACXRha2VSaWdodAAAAAIFAAAAEnN0b3JlZFRva2Vuc1ZhbHVlcwUAAAAJdG9rZW5TaXplBAAAAAl3cml0ZVNldHMJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWNvdW50T2ZQcmljZXMJAABlAAAAAgUAAAALY291bnRUb2tlbnMAAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADWxvdHRlcnlQcmljZXMFAAAADXVwZGF0ZWRQcmljZXMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAFGxhc3RIYXNoUmFuZG9tTnVtYmVyBQAAAApyYW5kTnVtYmVyCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABF0b3RhbFByaWNlc0luUG9vbAUAAAANdXBkYXRlZEFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAHbWVzc2FnZQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAADU8aDE+Q29uZ3JhdHVsYXRpb25zIHlvdSB3b24hPC9oMT48YnI+PHA+WW91IGhhdmUgd29uIAkAAaQAAAABBQAAAA50b2tlbldvbkFtb3VudAIAAAABIAUAAAAMdG9rZW5Bc3NldElkAgAAAAQuPHA+BQAAAANuaWwDCQAAAAAAAAIFAAAADHRva2VuQXNzZXRJZAIAAAAABAAAAAt3aW5UcmFuc2ZlcgkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADnRva2VuV29uQW1vdW50BQAAAAR1bml0BQAAAANuaWwJAQAAAAxTY3JpcHRSZXN1bHQAAAACBQAAAAl3cml0ZVNldHMFAAAAC3dpblRyYW5zZmVyBAAAAA1hY3R1YWxBc3NldElkCQACWQAAAAEFAAAADHRva2VuQXNzZXRJZAQAAAALd2luVHJhbnNmZXIJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA50b2tlbldvbkFtb3VudAUAAAANYWN0dWFsQXNzZXRJZAUAAAADbmlsCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgUAAAAJd3JpdGVTZXRzBQAAAAt3aW5UcmFuc2ZlcgQAAAASc3RvcmVkVG9rZW5zVmFsdWVzBAAAAA8kbGlzdDE0NDI3MTQ0NzcFAAAACXByaWNlTGlzdAQAAAAPJHNpemUxNDQyNzE0NDc3CQABkAAAAAEFAAAADyRsaXN0MTQ0MjcxNDQ3NwQAAAAPJGFjYzAxNDQyNzE0NDc3BQAAAAV0b2tlbgMJAAAAAAAAAgUAAAAPJHNpemUxNDQyNzE0NDc3AAAAAAAAAAAABQAAAA8kYWNjMDE0NDI3MTQ0NzcEAAAADyRhY2MxMTQ0MjcxNDQ3NwkBAAAAF2dlbmVyYXRlTmV3TGlzdE9mUHJpY2VzAAAAAgUAAAAPJGFjYzAxNDQyNzE0NDc3CQABkQAAAAIFAAAADyRsaXN0MTQ0MjcxNDQ3NwAAAAAAAAAAAAMJAAAAAAAAAgUAAAAPJHNpemUxNDQyNzE0NDc3AAAAAAAAAAABBQAAAA8kYWNjMTE0NDI3MTQ0NzcEAAAADyRhY2MyMTQ0MjcxNDQ3NwkBAAAAF2dlbmVyYXRlTmV3TGlzdE9mUHJpY2VzAAAAAgUAAAAPJGFjYzExNDQyNzE0NDc3CQABkQAAAAIFAAAADyRsaXN0MTQ0MjcxNDQ3NwAAAAAAAAAAAQMJAAAAAAAAAgUAAAAPJHNpemUxNDQyNzE0NDc3AAAAAAAAAAACBQAAAA8kYWNjMjE0NDI3MTQ0NzcEAAAADyRhY2MzMTQ0MjcxNDQ3NwkBAAAAF2dlbmVyYXRlTmV3TGlzdE9mUHJpY2VzAAAAAgUAAAAPJGFjYzIxNDQyNzE0NDc3CQABkQAAAAIFAAAADyRsaXN0MTQ0MjcxNDQ3NwAAAAAAAAAAAgMJAAAAAAAAAgUAAAAPJHNpemUxNDQyNzE0NDc3AAAAAAAAAAADBQAAAA8kYWNjMzE0NDI3MTQ0NzcEAAAADyRhY2M0MTQ0MjcxNDQ3NwkBAAAAF2dlbmVyYXRlTmV3TGlzdE9mUHJpY2VzAAAAAgUAAAAPJGFjYzMxNDQyNzE0NDc3CQABkQAAAAIFAAAADyRsaXN0MTQ0MjcxNDQ3NwAAAAAAAAAAAwMJAAAAAAAAAgUAAAAPJHNpemUxNDQyNzE0NDc3AAAAAAAAAAAEBQAAAA8kYWNjNDE0NDI3MTQ0NzcEAAAADyRhY2M1MTQ0MjcxNDQ3NwkBAAAAF2dlbmVyYXRlTmV3TGlzdE9mUHJpY2VzAAAAAgUAAAAPJGFjYzQxNDQyNzE0NDc3CQABkQAAAAIFAAAADyRsaXN0MTQ0MjcxNDQ3NwAAAAAAAAAABAkAAAIAAAABAgAAABJMaXN0IHNpemUgZXhjZWVkIDQEAAAACXRva2VuU2l6ZQkAAGUAAAACCQAAZQAAAAIJAAExAAAAAQUAAAASc3RvcmVkVG9rZW5zVmFsdWVzCQABMQAAAAEFAAAABXRva2VuAAAAAAAAAAABBAAAAA11cGRhdGVkUHJpY2VzCQEAAAAJdGFrZVJpZ2h0AAAAAgUAAAASc3RvcmVkVG9rZW5zVmFsdWVzBQAAAAl0b2tlblNpemUEAAAACXdyaXRlU2V0cwkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAV0b2tlbgUAAAANbG90dGVyeWFtb3VudAUAAAAMYWN0dWFsQW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABRsYXN0SGFzaFJhbmRvbU51bWJlcgUAAAAKcmFuZE51bWJlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAARdG90YWxQcmljZXNJblBvb2wFAAAADXVwZGF0ZWRBbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAB21lc3NhZ2UJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAA1PGgxPkNvbmdyYXR1bGF0aW9ucyB5b3Ugd29uITwvaDE+PGJyPjxwPllvdSBoYXZlIHdvbiAJAAGkAAAAAQUAAAAOdG9rZW5Xb25BbW91bnQCAAAAASAFAAAADHRva2VuQXNzZXRJZAIAAAAELjxwPgUAAAADbmlsAwkAAAAAAAACBQAAAAx0b2tlbkFzc2V0SWQCAAAAAAQAAAALd2luVHJhbnNmZXIJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAA50b2tlbldvbkFtb3VudAUAAAAEdW5pdAUAAAADbmlsCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgUAAAAJd3JpdGVTZXRzBQAAAAt3aW5UcmFuc2ZlcgQAAAANYWN0dWFsQXNzZXRJZAkAAlkAAAABBQAAAAx0b2tlbkFzc2V0SWQEAAAAC3dpblRyYW5zZmVyCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAOdG9rZW5Xb25BbW91bnQFAAAADWFjdHVhbEFzc2V0SWQFAAAAA25pbAkBAAAADFNjcmlwdFJlc3VsdAAAAAIFAAAACXdyaXRlU2V0cwUAAAALd2luVHJhbnNmZXIJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAACVlvdSBuZWVkIAkAAlgAAAABBQAAAAt0aWNrZXRBc3NldAIAAAATIHRvIHBsYXkgdGhpcyBnYW1lLgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tlef7gl3g=", "height": 1434552, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let dAppAddres = "F9DCGiYgT8yvBq1AQFcSpGG4p8sdzNz9mZczDvJ45LL"
5+
6+let ticketAsset = base58'5ih9jd4KV9kSey55yvKMgLSHcwsYYkQ4pRDJtRNoxUhy'
7+
8+let tokensPerPlay = 100000000
9+
10+let lotteryamount = "_amount"
11+
12+let lotteryprobability = "_probability"
13+
14+let lotteryprobabilitydecimal = "_probability_decimal"
15+
16+let lotteryPrice = "_price"
17+
18+let lotteryPrices = "_lottery_prices"
19+
20+let lotteryAssetId = "_lottery_asset_id"
21+
22+let countOfPrices = "_count_prices"
23+
24+let lastHashRandomNumber = "last_spin_random_hash"
25+
26+let lastTokenRandomHash = "last_token_random_hash"
27+
28+let allowSizeLottery = 4
29+
30+let totalPricesInPool = "total_prizes_pool"
31+
32+func randomizer (inv) = {
33+ let lastPlay = match getBinary(this, lastHashRandomNumber) {
34+ case s: ByteVector =>
35+ s
36+ case _: Unit =>
37+ base58'2ee4oFDYriWJ9EMeR'
38+ case _ =>
39+ throw("Match error")
40+ }
41+ let rand = (((((lastPlay + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
42+ sha256(rand)
43+ }
44+
45+
46+func getNumberDecimal (number) = if ((number == 1))
47+ then "0.0"
48+ else if ((number == 2))
49+ then "0.00"
50+ else if ((number == 3))
51+ then "0.000"
52+ else if ((number == 4))
53+ then "0.0000"
54+ else if ((number == 5))
55+ then "0.00000"
56+ else if ((number == 6))
57+ then "0.000000"
58+ else if ((number == 7))
59+ then "0.0000000"
60+ else "0"
61+
62+
63+func generatorRandomHash (inv) = {
64+ let lastHashForToken = match getBinary(this, lastTokenRandomHash) {
65+ case s: ByteVector =>
66+ s
67+ case _: Unit =>
68+ base58'4dD7osCQzvuXJdTiGfKvTwnKT'
69+ case _ =>
70+ throw("Match error")
71+ }
72+ let rand = (((((lastHashForToken + inv.transactionId) + inv.callerPublicKey) + lastBlock.generationSignature) + toBytes(lastBlock.timestamp)) + toBytes(lastBlock.height))
73+ sha256(rand)
74+ }
75+
76+
77+func getPriceArray () = {
78+ let currentPrices = match getString(this, lotteryPrices) {
79+ case a: String =>
80+ a
81+ case _: Unit =>
82+ ""
83+ case _ =>
84+ throw("Match error")
85+ }
86+ let sizePrices = size(currentPrices)
87+ if ((sizePrices == 0))
88+ then nil
89+ else {
90+ let trimPrices = take(currentPrices, (size(currentPrices) - 1))
91+ let newArray = split(trimPrices, ",")
92+ newArray
93+ }
94+ }
95+
96+
97+func generateNewListOfPrices (token,val) = if (isDefined(val))
98+ then {
99+ let indexOfComma = indexOf(token, ",")
100+ let tokenAlreadyExist = indexOf(token, val)
101+ if (if (!(isDefined(indexOfComma)))
102+ then !(isDefined(tokenAlreadyExist))
103+ else false)
104+ then ((token + val) + ",")
105+ else if (if (!(isDefined(indexOfComma)))
106+ then isDefined(tokenAlreadyExist)
107+ else false)
108+ then (val + ",")
109+ else if (if (isDefined(tokenAlreadyExist))
110+ then isDefined(indexOfComma)
111+ else false)
112+ then token
113+ else if (if (isDefined(indexOfComma))
114+ then !(isDefined(tokenAlreadyExist))
115+ else false)
116+ then ((token + val) + ",")
117+ else ""
118+ }
119+ else token
120+
121+
122+func procedLottery (win,token) = if (if (isDefined(token))
123+ then true
124+ else (token != ""))
125+ then {
126+ let tokenProbability = getIntegerValue(this, (token + lotteryprobability))
127+ let tokenProbabilityDecimal = getIntegerValue(this, (token + lotteryprobabilitydecimal))
128+ let sizeOfWin = size(win)
129+ if ((sizeOfWin == 1))
130+ then {
131+ let randomNumber = win[0]
132+ let convertedRandomNumber = fromBase64String(randomNumber)
133+ let convertedDecimalNumber = (tokenProbabilityDecimal * 1000)
134+ let comparisonNumber = (toInt(convertedRandomNumber) % convertedDecimalNumber)
135+ if ((tokenProbability > comparisonNumber))
136+ then token :: win
137+ else win
138+ }
139+ else win
140+ }
141+ else win
142+
143+
144+@Callable(i)
145+func updateprobability (probability,amount,poolprice,probDecimal,assetId) = {
146+ let token = toBase64String(generatorRandomHash(i))
147+ let paymentIsDefined = if (!(isDefined(i.payment)))
148+ then false
149+ else true
150+ let lotteryAssetTN = if ((assetId == ""))
151+ then true
152+ else false
153+ let totalRequiredAmount = (amount * poolprice)
154+ let currentTotalAmount = match getInteger(this, totalPricesInPool) {
155+ case t: Int =>
156+ t
157+ case _: Unit =>
158+ 0
159+ case _ =>
160+ throw("Match error")
161+ }
162+ let updatedTotalAmountPrices = (currentTotalAmount + totalRequiredAmount)
163+ if ((paymentIsDefined == true))
164+ then {
165+ let payment = extract(i.payment)
166+ let paymentAssetId = match payment.assetId {
167+ case a: ByteVector =>
168+ toBase58String(a)
169+ case _: Unit =>
170+ ""
171+ case _ =>
172+ throw("Match error")
173+ }
174+ let paymentAmount = payment.amount
175+ if ((paymentAssetId != assetId))
176+ then throw("Asset Id not matching with Payment Asset Id")
177+ else if ((totalRequiredAmount > paymentAmount))
178+ then throw("Not enough Asset Amount")
179+ else {
180+ let tempValue = match getString(this, lotteryPrices) {
181+ case a: String =>
182+ a
183+ case _: Unit =>
184+ ""
185+ case _ =>
186+ throw("Match error")
187+ }
188+ let containKey = indexOf(tempValue, token)
189+ let storedTokensValues = match containKey {
190+ case _: Unit =>
191+ ((tempValue + token) + ",")
192+ case x: Int =>
193+ throw("Token is duplicated")
194+ case _ =>
195+ throw("Match error")
196+ }
197+ let countTokens = match getInteger(this, countOfPrices) {
198+ case a: Int =>
199+ a
200+ case _: Unit =>
201+ 0
202+ case _ =>
203+ throw("Match error")
204+ }
205+ if ((allowSizeLottery > countTokens))
206+ then {
207+ let updateLotteryPool = WriteSet([DataEntry((token + lotteryamount), amount), DataEntry((token + lotteryprobability), probability), DataEntry((token + lotteryPrice), poolprice), DataEntry(lotteryPrices, storedTokensValues), DataEntry(countOfPrices, (countTokens + 1)), DataEntry((token + lotteryprobabilitydecimal), probDecimal), DataEntry((token + lotteryAssetId), assetId), DataEntry(lastTokenRandomHash, token), DataEntry(totalPricesInPool, updatedTotalAmountPrices)])
208+ ScriptResult(updateLotteryPool, TransferSet(nil))
209+ }
210+ else throw(("Lottery prices has reached maximum " + toString(allowSizeLottery)))
211+ }
212+ }
213+ else {
214+ let tnBalance = if (lotteryAssetTN)
215+ then wavesBalance(this)
216+ else assetBalance(this, fromBase64String(assetId))
217+ if ((totalRequiredAmount > tnBalance))
218+ then throw("Not enough Asset Amount")
219+ else {
220+ let tempValue = match getString(this, lotteryPrices) {
221+ case a: String =>
222+ a
223+ case _: Unit =>
224+ ""
225+ case _ =>
226+ throw("Match error")
227+ }
228+ let containKey = indexOf(tempValue, token)
229+ let storedTokensValues = match containKey {
230+ case _: Unit =>
231+ ((tempValue + token) + ",")
232+ case x: Int =>
233+ throw("Token is duplicated")
234+ case _ =>
235+ throw("Match error")
236+ }
237+ let countTokens = match getInteger(this, countOfPrices) {
238+ case a: Int =>
239+ a
240+ case _: Unit =>
241+ 0
242+ case _ =>
243+ throw("Match error")
244+ }
245+ if ((allowSizeLottery > countTokens))
246+ then {
247+ let updateLotteryPool = WriteSet([DataEntry((token + lotteryamount), amount), DataEntry((token + lotteryprobability), probability), DataEntry((token + lotteryPrice), poolprice), DataEntry(lotteryPrices, storedTokensValues), DataEntry(countOfPrices, (countTokens + 1)), DataEntry((token + lotteryprobabilitydecimal), probDecimal), DataEntry((token + lotteryAssetId), assetId), DataEntry(lastTokenRandomHash, token), DataEntry(totalPricesInPool, updatedTotalAmountPrices)])
248+ ScriptResult(updateLotteryPool, TransferSet(nil))
249+ }
250+ else throw(("Lottery prices has reached maximum " + toString(allowSizeLottery)))
251+ }
252+ }
253+ }
254+
255+
256+
257+@Callable(i)
258+func testVal (tokenAmount,decimalVal) = {
259+ let tokenAmountSize = size(toString(tokenAmount))
260+ if ((tokenAmountSize > decimalVal))
261+ then {
262+ let sufixAmount = takeRight(toString(tokenAmount), decimalVal)
263+ let prefixNumber = take(toString(tokenAmount), (size(toString(tokenAmount)) - decimalVal))
264+ let finaResult = ((prefixNumber + ".") + sufixAmount)
265+ let writeSets = WriteSet([DataEntry(toString(tokenAmount), finaResult)])
266+ ScriptResult(writeSets, TransferSet(nil))
267+ }
268+ else if ((tokenAmountSize == decimalVal))
269+ then {
270+ let valTemp = (decimalVal - tokenAmountSize)
271+ let finalNumber = ("0." + toString(tokenAmount))
272+ let writeSets = WriteSet([DataEntry(toString(tokenAmount), finalNumber)])
273+ ScriptResult(writeSets, TransferSet(nil))
274+ }
275+ else {
276+ let diffPriceAndDecimal = (decimalVal - tokenAmountSize)
277+ let prefixAmount = getNumberDecimal(diffPriceAndDecimal)
278+ let finalResult = (prefixAmount + toString(tokenAmount))
279+ let writeSets = WriteSet([DataEntry("message", "")])
280+ ScriptResult(writeSets, TransferSet(nil))
281+ }
282+ }
283+
284+
285+
286+@Callable(i)
287+func startlotto () = {
288+ let paymentIsDefined = if (!(isDefined(i.payment)))
289+ then false
290+ else true
291+ if ((paymentIsDefined == true))
292+ then {
293+ let pmt = extract(i.payment)
294+ if (if ((pmt.assetId != ticketAsset))
295+ then true
296+ else (pmt.amount != tokensPerPlay))
297+ then throw("Incorrect asset passed or incorrect quantity passed")
298+ else {
299+ let currentKey = toBase58String(i.caller.bytes)
300+ let randhash = randomizer(i)
301+ let countTokens = match getInteger(this, countOfPrices) {
302+ case a: Int =>
303+ a
304+ case _: Unit =>
305+ 0
306+ case _ =>
307+ throw("Match error")
308+ }
309+ let priceList = getPriceArray()
310+ let randNumber = toBase64String(randhash)
311+ let updNumber = fromBase64String(randNumber)
312+ let listWinningPrices = [randNumber]
313+ let winningToken = {
314+ let $list1112511177 = priceList
315+ let $size1112511177 = size($list1112511177)
316+ let $acc01112511177 = listWinningPrices
317+ if (($size1112511177 == 0))
318+ then $acc01112511177
319+ else {
320+ let $acc11112511177 = procedLottery($acc01112511177, $list1112511177[0])
321+ if (($size1112511177 == 1))
322+ then $acc11112511177
323+ else {
324+ let $acc21112511177 = procedLottery($acc11112511177, $list1112511177[1])
325+ if (($size1112511177 == 2))
326+ then $acc21112511177
327+ else {
328+ let $acc31112511177 = procedLottery($acc21112511177, $list1112511177[2])
329+ if (($size1112511177 == 3))
330+ then $acc31112511177
331+ else {
332+ let $acc41112511177 = procedLottery($acc31112511177, $list1112511177[3])
333+ if (($size1112511177 == 4))
334+ then $acc41112511177
335+ else {
336+ let $acc51112511177 = procedLottery($acc41112511177, $list1112511177[4])
337+ throw("List size exceed 4")
338+ }
339+ }
340+ }
341+ }
342+ }
343+ }
344+ let sizeOfWinPrices = size(winningToken)
345+ if ((sizeOfWinPrices == 1))
346+ then {
347+ let writeSets = WriteSet([DataEntry("message", "<h1>Better luck next time!</h1><br><p>Invite more friends to keep playing.<p>"), DataEntry(lastHashRandomNumber, randNumber)])
348+ ScriptResult(writeSets, TransferSet(nil))
349+ }
350+ else {
351+ let token = winningToken[0]
352+ let currentAmount = getIntegerValue(this, (token + lotteryamount))
353+ if ((currentAmount == 0))
354+ then throw("Amount exceeded")
355+ else {
356+ let actualAmount = (currentAmount - 1)
357+ let tokenWonAmount = getIntegerValue(this, (token + lotteryPrice))
358+ let tokenAssetId = getStringValue(this, (token + lotteryAssetId))
359+ let currentTotalAmount = match getInteger(this, totalPricesInPool) {
360+ case t: Int =>
361+ t
362+ case _: Unit =>
363+ 0
364+ case _ =>
365+ throw("Match error")
366+ }
367+ let updatedAmount = (currentTotalAmount - tokenWonAmount)
368+ if ((actualAmount == 0))
369+ then {
370+ let storedTokensValues = {
371+ let $list1281812868 = priceList
372+ let $size1281812868 = size($list1281812868)
373+ let $acc01281812868 = token
374+ if (($size1281812868 == 0))
375+ then $acc01281812868
376+ else {
377+ let $acc11281812868 = generateNewListOfPrices($acc01281812868, $list1281812868[0])
378+ if (($size1281812868 == 1))
379+ then $acc11281812868
380+ else {
381+ let $acc21281812868 = generateNewListOfPrices($acc11281812868, $list1281812868[1])
382+ if (($size1281812868 == 2))
383+ then $acc21281812868
384+ else {
385+ let $acc31281812868 = generateNewListOfPrices($acc21281812868, $list1281812868[2])
386+ if (($size1281812868 == 3))
387+ then $acc31281812868
388+ else {
389+ let $acc41281812868 = generateNewListOfPrices($acc31281812868, $list1281812868[3])
390+ if (($size1281812868 == 4))
391+ then $acc41281812868
392+ else {
393+ let $acc51281812868 = generateNewListOfPrices($acc41281812868, $list1281812868[4])
394+ throw("List size exceed 4")
395+ }
396+ }
397+ }
398+ }
399+ }
400+ }
401+ let tokenSize = ((size(storedTokensValues) - size(token)) - 1)
402+ let updatedPrices = takeRight(storedTokensValues, tokenSize)
403+ let writeSets = WriteSet([DataEntry(countOfPrices, (countTokens - 1)), DataEntry(lotteryPrices, updatedPrices), DataEntry(lastHashRandomNumber, randNumber), DataEntry(totalPricesInPool, updatedAmount), DataEntry("message", (((("<h1>Congratulations you won!</h1><br><p>You have won " + toString(tokenWonAmount)) + " ") + tokenAssetId) + ".<p>"))])
404+ if ((tokenAssetId == ""))
405+ then {
406+ let winTransfer = TransferSet([ScriptTransfer(i.caller, tokenWonAmount, unit)])
407+ ScriptResult(writeSets, winTransfer)
408+ }
409+ else {
410+ let actualAssetId = fromBase58String(tokenAssetId)
411+ let winTransfer = TransferSet([ScriptTransfer(i.caller, tokenWonAmount, actualAssetId)])
412+ ScriptResult(writeSets, winTransfer)
413+ }
414+ }
415+ else {
416+ let storedTokensValues = {
417+ let $list1442714477 = priceList
418+ let $size1442714477 = size($list1442714477)
419+ let $acc01442714477 = token
420+ if (($size1442714477 == 0))
421+ then $acc01442714477
422+ else {
423+ let $acc11442714477 = generateNewListOfPrices($acc01442714477, $list1442714477[0])
424+ if (($size1442714477 == 1))
425+ then $acc11442714477
426+ else {
427+ let $acc21442714477 = generateNewListOfPrices($acc11442714477, $list1442714477[1])
428+ if (($size1442714477 == 2))
429+ then $acc21442714477
430+ else {
431+ let $acc31442714477 = generateNewListOfPrices($acc21442714477, $list1442714477[2])
432+ if (($size1442714477 == 3))
433+ then $acc31442714477
434+ else {
435+ let $acc41442714477 = generateNewListOfPrices($acc31442714477, $list1442714477[3])
436+ if (($size1442714477 == 4))
437+ then $acc41442714477
438+ else {
439+ let $acc51442714477 = generateNewListOfPrices($acc41442714477, $list1442714477[4])
440+ throw("List size exceed 4")
441+ }
442+ }
443+ }
444+ }
445+ }
446+ }
447+ let tokenSize = ((size(storedTokensValues) - size(token)) - 1)
448+ let updatedPrices = takeRight(storedTokensValues, tokenSize)
449+ let writeSets = WriteSet([DataEntry((token + lotteryamount), actualAmount), DataEntry(lastHashRandomNumber, randNumber), DataEntry(totalPricesInPool, updatedAmount), DataEntry("message", (((("<h1>Congratulations you won!</h1><br><p>You have won " + toString(tokenWonAmount)) + " ") + tokenAssetId) + ".<p>"))])
450+ if ((tokenAssetId == ""))
451+ then {
452+ let winTransfer = TransferSet([ScriptTransfer(i.caller, tokenWonAmount, unit)])
453+ ScriptResult(writeSets, winTransfer)
454+ }
455+ else {
456+ let actualAssetId = fromBase58String(tokenAssetId)
457+ let winTransfer = TransferSet([ScriptTransfer(i.caller, tokenWonAmount, actualAssetId)])
458+ ScriptResult(writeSets, winTransfer)
459+ }
460+ }
461+ }
462+ }
463+ }
464+ }
465+ else throw((("You need " + toBase58String(ticketAsset)) + " to play this game."))
466+ }
467+
468+
469+@Verifier(tx)
470+func verify () = match tx {
471+ case _ =>
472+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
473+}
474+

github/deemru/w8io/169f3d6 
37.91 ms