tx · CjmU8yoBv22cPDW17SVzX43xYMB3AXZVDzkkGFm76PZ1

3NBB3iv7YDRsD8ZM2Pw2V5eTcsfqh3j2mvF:  -0.01400000 Waves

2019.08.06 00:41 [618165] smart account 3NBB3iv7YDRsD8ZM2Pw2V5eTcsfqh3j2mvF > SELF 0.00000000 Waves

{ "type": 13, "id": "CjmU8yoBv22cPDW17SVzX43xYMB3AXZVDzkkGFm76PZ1", "fee": 1400000, "feeAssetId": null, "timestamp": 1565041319476, "version": 1, "sender": "3NBB3iv7YDRsD8ZM2Pw2V5eTcsfqh3j2mvF", "senderPublicKey": "9i5FpMUFCwhogG5euZDBZKV6NehQN4xX83qvNr8NWipE", "proofs": [ "3Rjpp3sAg6nYYPEyN9ETNxR697zrp2A3Mb3zQZQ71cJvU1D1fKZ39UhVGBx1udykTGL5G3wW3cwHK4VrihWSYoPH" ], "script": "base64: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XwUAAAAHYWNjb3VudAEAAAAWZ2V0S2V5SXRlbUZ1bmRQb3NpdGl2ZQAAAAEAAAAEaXRlbQkAASwAAAACAgAAAA5wb3NpdGl2ZV9mdW5kXwUAAAAEaXRlbQEAAAAWZ2V0S2V5SXRlbUZ1bmROZWdhdGl2ZQAAAAEAAAAEaXRlbQkAASwAAAACAgAAAA5uZWdhdGl2ZV9mdW5kXwUAAAAEaXRlbQEAAAAZZ2V0S2V5SXRlbUFjY0Z1bmRQb3NpdGl2ZQAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkBAAAAFmdldEtleUl0ZW1GdW5kUG9zaXRpdmUAAAABBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABlnZXRLZXlJdGVtQWNjRnVuZE5lZ2F0aXZlAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkAASwAAAACCQEAAAAWZ2V0S2V5SXRlbUZ1bmROZWdhdGl2ZQAAAAEFAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdzQ250AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADHJldmlld3NfY250XwUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdyZXZpZXdfBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3VGV4dAAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkAASwAAAACCQABLAAAAAIJAQAAABNnZXRLZXlJdGVtQWNjUmV2aWV3AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAIAAAAJX3RleHRfaWQ6BQAAAANjbnQBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdNb2RlAAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQABLAAAAAIJAAEsAAAAAgkBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AgAAAAlfbW9kZV9pZDoFAAAAA2NudAEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld1RpZXIAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAAEsAAAAAgkAASwAAAACCQEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQCAAAACV90aWVyX2lkOgUAAAADY250AQAAABtnZXRLZXlJdGVtQWNjVm90ZVJldmlld1RleHQAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQCAAAAC192b3RlcmV2aWV3AQAAABxnZXRLZXlJdGVtQWNjV2hhbGVSZXZpZXdUZXh0AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AgAAAAxfd2hhbGVyZXZpZXcBAAAAFmdldEtleUl0ZW1CdXlvdXRBbW91bnQAAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAOYnV5b3V0X2Ftb3VudF8FAAAABGl0ZW0BAAAAFWdldEtleUl0ZW1BY2NXaW5uaW5ncwAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAl3aW5uaW5nc18FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAFGdldFZhbHVlV2hpdGVsaXN0UmVmAAAAAQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5V2hpdGVsaXN0UmVmAAAAAQUAAAAHYWNjb3VudAEAAAAXZ2V0VmFsdWVXaGl0ZWxpc3RTdGF0dXMAAAABAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABVnZXRLZXlXaGl0ZWxpc3RTdGF0dXMAAAABBQAAAAdhY2NvdW50AQAAAA9nZXRWYWx1ZUJhbGFuY2UAAAABAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA1nZXRLZXlCYWxhbmNlAAAAAQUAAAAHYWNjb3VudAEAAAAUZ2V0VmFsdWVXaGl0ZWxpc3RCaW8AAAABAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlXaGl0ZWxpc3RCaW8AAAABBQAAAAdhY2NvdW50AQAAABZnZXRWYWx1ZVdoaXRlbGlzdEJsb2NrAAAAAQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAUZ2V0S2V5V2hpdGVsaXN0QmxvY2sAAAABBQAAAAdhY2NvdW50AQAAABJnZXRWYWx1ZUl0ZW1BdXRob3IAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABBnZXRLZXlJdGVtQXV0aG9yAAAAAQUAAAAEaXRlbQEAAAARZ2V0VmFsdWVJdGVtQmxvY2sAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtQmxvY2sAAAABBQAAAARpdGVtAQAAABxnZXRWYWx1ZUl0ZW1Wb3RpbmdFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAaZ2V0S2V5SXRlbVZvdGluZ0V4cGlyYXRpb24AAAABBQAAAARpdGVtAQAAABBnZXRWYWx1ZUl0ZW1CYW5rAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAOZ2V0S2V5SXRlbUJhbmsAAAABBQAAAARpdGVtAQAAABJnZXRWYWx1ZUl0ZW1TdGF0dXMAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABBnZXRLZXlJdGVtU3RhdHVzAAAAAQUAAAAEaXRlbQEAAAAQZ2V0VmFsdWVJdGVtRGF0YQAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADmdldEtleUl0ZW1EYXRhAAAAAQUAAAAEaXRlbQEAAAAbZ2V0VmFsdWVJdGVtQ3Jvd2RFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAZZ2V0S2V5SXRlbUNyb3dkRXhwaXJhdGlvbgAAAAEFAAAABGl0ZW0BAAAAG2dldFZhbHVlSXRlbVdoYWxlRXhwaXJhdGlvbgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGWdldEtleUl0ZW1XaGFsZUV4cGlyYXRpb24AAAABBQAAAARpdGVtAQAAABRnZXRWYWx1ZUl0ZW1OQ29tbWl0cwAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1OQ29tbWl0cwAAAAEFAAAABGl0ZW0BAAAAFWdldFZhbHVlSXRlbUFjY0NvbW1pdAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAATZ2V0S2V5SXRlbUFjY0NvbW1pdAAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAFWdldFZhbHVlSXRlbUFjY1JldmVhbAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAATZ2V0S2V5SXRlbUFjY1JldmVhbAAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAFGdldFZhbHVlSXRlbVZvdGVzWWVzAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0S2V5SXRlbVZvdGVzWWVzAAAAAQUAAAAEaXRlbQEAAAATZ2V0VmFsdWVJdGVtVm90ZXNObwAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEWdldEtleUl0ZW1Wb3Rlc05vAAAAAQUAAAAEaXRlbQEAAAAUZ2V0VmFsdWVJdGVtQWNjRmluYWwAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1BY2NGaW5hbAAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAGGdldFZhbHVlSXRlbUZ1bmRQb3NpdGl2ZQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldEtleUl0ZW1GdW5kUG9zaXRpdmUAAAABBQAAAARpdGVtAQAAABhnZXRWYWx1ZUl0ZW1GdW5kTmVnYXRpdmUAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRLZXlJdGVtRnVuZE5lZ2F0aXZlAAAAAQUAAAAEaXRlbQEAAAAbZ2V0VmFsdWVJdGVtQWNjRnVuZFBvc2l0aXZlAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABlnZXRLZXlJdGVtQWNjRnVuZFBvc2l0aXZlAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAbZ2V0VmFsdWVJdGVtQWNjRnVuZE5lZ2F0aXZlAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABlnZXRLZXlJdGVtQWNjRnVuZE5lZ2F0aXZlAAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAZZ2V0VmFsdWVJdGVtQWNjUmV2aWV3c0NudAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld3NDbnQAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AQAAABlnZXRWYWx1ZUl0ZW1BY2NSZXZpZXdUZXh0AAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld1RleHQAAAADBQAAAARpdGVtBQAAAAdhY2NvdW50BQAAAANjbnQBAAAAGWdldFZhbHVlSXRlbUFjY1Jldmlld01vZGUAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3TW9kZQAAAAMFAAAABGl0ZW0FAAAAB2FjY291bnQFAAAAA2NudAEAAAAZZ2V0VmFsdWVJdGVtQWNjUmV2aWV3VGllcgAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdUaWVyAAAAAwUAAAAEaXRlbQUAAAAHYWNjb3VudAUAAAADY250AQAAABhnZXRWYWx1ZUl0ZW1CdXlvdXRBbW91bnQAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRLZXlJdGVtQnV5b3V0QW1vdW50AAAAAQUAAAAEaXRlbQEAAAAXZ2V0VmFsdWVJdGVtQWNjV2lubmluZ3MAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUl0ZW1BY2NXaW5uaW5ncwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQAAAAAC1dISVRFTElTVEVEAgAAAApyZWdpc3RlcmVkAAAAAAdJTlZJVEVEAgAAAAdpbnZpdGVkAAAAAAVXSEFMRQIAAAAFd2hhbGUAAAAAA05FVwIAAAADbmV3AAAAAAZDT01NSVQCAAAADXZvdGluZ19jb21taXQAAAAABlJFVkVBTAIAAAANdm90aW5nX3JldmVhbAAAAAAIRkVBVFVSRUQCAAAACGZlYXR1cmVkAAAAAAhERUxJU1RFRAIAAAAIZGVsaXN0ZWQAAAAAB0NBU0hPVVQCAAAAB2Nhc2hvdXQAAAAABkJVWU9VVAIAAAAGYnV5b3V0AAAAAAhGSU5JU0hFRAIAAAAIZmluaXNoZWQAAAAAB0NMQUlNRUQCAAAAB2NsYWltZWQAAAAACFBPU0lUSVZFAgAAAAhwb3NpdGl2ZQAAAAAITkVHQVRJVkUCAAAACG5lZ2F0aXZlAAAAAAdHRU5FU0lTAgAAACMzUDhGdnkxeUR3Tkh2VnJhYmU0ZWs1YjlkQXd4RmpES1Y3UgAAAAAFQURNSU4CAAAAIzNQOU5EeHQ5WTZlUGZNOWhrUXlzZ1N2YkhKdmlocjU2WjE4AAAAAAZWT1RFUlMAAAAAAAAAAAMAAAAABlFVT1JVTQAAAAAAAAAAAgAAAAAFVElFUlMJAARMAAAAAgkAAGgAAAACAAAAAAAAAAADAAAAAAAF9eEACQAETAAAAAIJAABoAAAAAgAAAAAAAAAACgAAAAAABfXhAAkABEwAAAACCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAX14QAJAARMAAAAAgkAAGgAAAACAAAAAAAAAAEsAAAAAAAF9eEACQAE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AAdhY2NvdW50BQAAAAhGSU5JU0hFRAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAHYWNjb3VudAkAAGQAAAACBQAAAAp2b3RlcHJvZml0BQAAAAxhdXRob3JyZXR1cm4FAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAABJjbG9zZWV4cGlyZWR2b3RpbmcAAAACAAAABGl0ZW0AAAAHYWNjb3VudAQAAAALZmluYWxzdGF0dXMDCQAAZgAAAAIJAQAAABRnZXRWYWx1ZUl0ZW1Wb3Rlc1llcwAAAAEFAAAABGl0ZW0FAAAABlFVT1JVTQUAAAAIRkVBVFVSRUQDCQAAZgAAAAIJAQAAABNnZXRWYWx1ZUl0ZW1Wb3Rlc05vAAAAAQUAAAAEaXRlbQUAAAAGUVVPUlVNBQAAAAhERUxJU1RFRAUAAAAETk9ORQQAAAAHYWNjdm90ZQkBAAAAFWdldFZhbHVlSXRlbUFjY1JldmVhbAAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQEAAAACGlzYXV0aG9yCQAAAAAAAAIFAAAAB2FjY291bnQJAQAAABJnZXRWYWx1ZUl0ZW1BdXRob3IAAAABBQAAAARpdGVtBAAAAAdhY2Njb21pCQEAAAAVZ2V0VmFsdWVJdGVtQWNjQ29tbWl0AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAQAAAAOaGFzcmV2ZWFsc3RhZ2UJAAAAAAAAAgkBAAAAFGdldFZhbHVlSXRlbU5Db21taXRzAAAAAQUAAAAEaXRlbQUAAAAGVk9URVJTBAAAAAxhdXRob3JyZXR1cm4JAABoAAAAAgUAAAAKTElTVElOR0ZFRQMFAAAACGlzYXV0aG9yAAAAAAAAAAABAAAAAAAAAAAABAAAAA12b3RlcnNyZXR1cm4xCQAAaAAAAAIJAABoAAAAAgUAAAAHVk9URUJFVAMFAAAADmhhc3JldmVhbHN0YWdlAAAAAAAAAAABAAAAAAAAAAAAAwkBAAAAAiE9AAAAAgUAAAAHYWNjdm90ZQUAAAAETk9ORQAAAAAAAAAAAQAAAAAAAAAAAAQAAAANdm90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", "chainId": 84, "height": 618165, "spentComplexity": 0 } View: original | compacted Prev: 92Wwv1sACj7rnVwm1jUuo2TckbnUUv4bTE1rU9n866rq Next: G14Dqty4MgAMRGpjKv9y3s6CLnftYMCgQfVfzDAqtwK5 Diff:
OldNewDifferences
6464 func u (p) = ("datajson_" + p)
6565
6666
67-func v (p) = ("expiration_one_" + p)
67+func v (p) = ("contest_datajson_" + p)
6868
6969
70-func w (p) = ("expiration_two_" + p)
70+func w (p) = ("expiration_one_" + p)
7171
7272
73-func x (p) = ("ncommits_" + p)
73+func x (p) = ("expiration_two_" + p)
7474
7575
76-func y (p,j) = ((("commit_" + p) + "_") + j)
76+func y (p) = ("ncommits_" + p)
7777
7878
79-func z (p,j) = ((("reveal_" + p) + "_") + j)
79+func z (p,j) = ((("commit_" + p) + "_") + j)
8080
8181
82-func A (p) = ("cnt_yes_" + p)
82+func A (p,j) = ((("reveal_" + p) + "_") + j)
8383
8484
85-func B (p) = ("cnt_no_" + p)
85+func B (p) = ("cnt_yes_" + p)
8686
8787
88-func C (p,j) = ((("final_" + p) + "_") + j)
88+func C (p) = ("cnt_no_" + p)
8989
9090
91-func D (p) = ("positive_fund_" + p)
91+func D (p,j) = ((("final_" + p) + "_") + j)
9292
9393
94-func E (p) = ("negative_fund_" + p)
94+func E (p) = ("positive_fund_" + p)
9595
9696
97-func F (p,j) = ((D(p) + "_") + j)
97+func F (p) = ("negative_fund_" + p)
9898
9999
100100 func G (p,j) = ((E(p) + "_") + j)
101101
102102
103-func H (p,j) = ((("reviews_cnt_" + p) + "_") + j)
103+func H (p,j) = ((F(p) + "_") + j)
104104
105105
106-func I (p,j) = ((("review_" + p) + "_") + j)
106+func I (p,j) = ((("reviews_cnt_" + p) + "_") + j)
107107
108108
109-func J (p,j,K) = ((I(p, j) + "_text_id:") + K)
109+func J (p,j) = ((("review_" + p) + "_") + j)
110110
111111
112-func L (p,j,K) = ((I(p, j) + "_mode_id:") + K)
112+func K (p,j,L) = ((J(p, j) + "_text_id:") + L)
113113
114114
115-func M (p,j,K) = ((I(p, j) + "_tier_id:") + K)
115+func M (p,j,L) = ((J(p, j) + "_mode_id:") + L)
116116
117117
118-func N (p,j) = (I(p, j) + "_votereview")
118+func N (p,j,L) = ((J(p, j) + "_tier_id:") + L)
119119
120120
121-func O (p,j) = (I(p, j) + "_whalereview")
121+func O (p,j) = (J(p, j) + "_votereview")
122122
123123
124-func P (p) = ("buyout_amount_" + p)
124+func P (p,j) = (J(p, j) + "_whalereview")
125125
126126
127-func Q (p,j) = ((("winnings_" + p) + "_") + j)
127+func Q (p) = ("buyout_amount_" + p)
128128
129129
130-func R (j) = g(i(j))
130+func R (p,j) = ((("winnings_" + p) + "_") + j)
131131
132132
133-func S (j) = g(k(j))
133+func S (j) = g(i(j))
134134
135135
136-func T (j) = b(l(j))
136+func T (j) = g(k(j))
137137
138138
139-func U (j) = g(m(j))
139+func U (j) = b(l(j))
140140
141141
142-func V (j) = g(n(j))
142+func V (j) = g(m(j))
143143
144144
145-func W (p) = g(o(p))
145+func W (j) = g(n(j))
146146
147147
148-func X (p) = b(q(p))
148+func X (p) = g(o(p))
149149
150150
151-func Y (p) = b(r(p))
151+func Y (p) = b(q(p))
152152
153153
154-func Z (p) = b(s(p))
154+func Z (p) = b(r(p))
155155
156156
157-func aa (p) = g(t(p))
157+func aa (p) = b(s(p))
158158
159159
160-func ab (p) = g(u(p))
160+func ab (p) = g(t(p))
161161
162162
163-func ac (p) = b(v(p))
163+func ac (p) = g(u(p))
164164
165165
166166 func ad (p) = b(w(p))
169169 func ae (p) = b(x(p))
170170
171171
172-func af (p,j) = g(y(p, j))
172+func af (p) = b(y(p))
173173
174174
175175 func ag (p,j) = g(z(p, j))
176176
177177
178-func ah (p) = b(A(p))
178+func ah (p,j) = g(A(p, j))
179179
180180
181181 func ai (p) = b(B(p))
182182
183183
184-func aj (p,j) = g(C(p, j))
184+func aj (p) = b(C(p))
185185
186186
187-func ak (p) = b(D(p))
187+func ak (p,j) = g(D(p, j))
188188
189189
190190 func al (p) = b(E(p))
191191
192192
193-func am (p,j) = b(F(p, j))
193+func am (p) = b(F(p))
194194
195195
196196 func an (p,j) = b(G(p, j))
199199 func ao (p,j) = b(H(p, j))
200200
201201
202-func ap (p,j,K) = g(J(p, j, K))
202+func ap (p,j) = b(I(p, j))
203203
204204
205-func aq (p,j,K) = g(L(p, j, K))
205+func aq (p,j,L) = g(K(p, j, L))
206206
207207
208-func ar (p,j,K) = b(M(p, j, K))
208+func ar (p,j,L) = g(M(p, j, L))
209209
210210
211-func as (p) = b(P(p))
211+func as (p,j,L) = b(N(p, j, L))
212212
213213
214-func at (p,j) = b(Q(p, j))
214+func at (p) = b(Q(p))
215215
216216
217-let au = "registered"
217+func au (p,j) = b(R(p, j))
218218
219-let av = "invited"
220219
221-let aw = "whale"
220+let av = "registered"
222221
223-let ax = "new"
222+let aw = "invited"
224223
225-let ay = "voting_commit"
224+let ax = "whale"
226225
227-let az = "voting_reveal"
226+let ay = "new"
228227
229-let aA = "featured"
228+let az = "voting_commit"
230229
231-let aB = "delisted"
230+let aA = "voting_reveal"
232231
233-let aC = "cashout"
232+let aB = "featured"
234233
235-let aD = "buyout"
234+let aC = "delisted"
236235
237-let aE = "finished"
236+let aD = "cashout"
238237
239-let aF = "claimed"
238+let aE = "buyout"
240239
241-let aG = "positive"
240+let aF = "finished"
242241
243-let aH = "negative"
242+let aG = "claimed"
244243
245-let aI = "3P8Fvy1yDwNHvVrabe4ek5b9dAwxFjDKV7R"
244+let aH = "positive"
246245
247-let aJ = 3
246+let aI = "negative"
248247
249-let aK = 2
248+let aJ = "3P8Fvy1yDwNHvVrabe4ek5b9dAwxFjDKV7R"
250249
251-let aL = [(3 * 100000000), (10 * 100000000), (100 * 100000000), (300 * 100000000), (1000 * 100000000)]
250+let aK = "3P9NDxt9Y6ePfM9hkQysgSvbHJvihr56Z18"
252251
253-let aM = (3 * 100000000)
252+let aL = 3
254253
255-let aN = (1 * 100000000)
254+let aM = 2
256255
257-let aO = 150
256+let aN = [(3 * 100000000), (10 * 100000000), (100 * 100000000), (300 * 100000000), (1000 * 100000000)]
258257
259-@Callable(aP)
260-func inviteuser (aQ,aR) = {
261- let j = toBase58String(aP.caller.bytes)
262- let aS = S(aQ)
263- let aT = S(j)
264- if (if ((aS == au))
258+let aO = (3 * 100000000)
259+
260+let aP = (1 * 100000000)
261+
262+let aQ = 150
263+
264+@Callable(aR)
265+func inviteuser (aS,aT) = {
266+ let j = toBase58String(aR.caller.bytes)
267+ let aU = T(aS)
268+ let aV = T(j)
269+ if (if ((aU == av))
265270 then true
266- else (aS == aw))
271+ else (aU == ax))
267272 then throw("User has already been registered")
268- else if (if (if ((aT != au))
269- then (j != aI)
273+ else if (if (if ((aV != av))
274+ then (j != aJ)
270275 else false)
271- then (aT != aw)
276+ then (aV != ax)
272277 else false)
273- then throw(("Your account should be whitelisted. status: " + aT))
274- else WriteSet([DataEntry(i(aQ), j), DataEntry(m(aQ), aR), DataEntry(k(aQ), av)])
278+ then throw(("Your account should be whitelisted. status: " + aV))
279+ else WriteSet([DataEntry(i(aS), j), DataEntry(m(aS), aT), DataEntry(k(aS), aw)])
275280 }
276281
277282
278283
279-@Callable(aP)
280-func signupbylink (aU,aR,aV) = {
281- let j = toBase58String(aP.caller.bytes)
282- let aW = S(aU)
283- if ((aW != av))
284- then throw(((((("Referral invite needed. Current status: " + aW) + ", key:") + k(aU)) + ", account:") + aU))
285- else WriteSet([DataEntry(m(j), aR), DataEntry(n(j), height), DataEntry(k(j), if ((aV == aw))
286- then aw
287- else au), DataEntry(k(aU), if ((aV == aw))
288- then aw
289- else au), DataEntry(i(j), R(aU))])
284+@Callable(aR)
285+func signupbylink (aW,aT,aX) = {
286+ let j = toBase58String(aR.caller.bytes)
287+ let aY = T(aW)
288+ if ((aY != aw))
289+ then throw(((((("Referral invite needed. Current status: " + aY) + ", key:") + k(aW)) + ", account:") + aW))
290+ else WriteSet([DataEntry(m(j), aT), DataEntry(n(j), height), DataEntry(k(j), if ((aX == ax))
291+ then ax
292+ else av), DataEntry(k(aW), if ((aX == ax))
293+ then ax
294+ else av), DataEntry(i(j), S(aW))])
290295 }
291296
292297
293298
294-@Callable(aP)
295-func signup (aR,aV) = {
296- let j = toBase58String(aP.caller.bytes)
297- let aW = S(j)
298- if ((aW == a))
299- then throw(((((("Referral invite needed. Current status: " + aW) + ", key:") + k(j)) + ", account:") + j))
300- else WriteSet([DataEntry(m(j), aR), DataEntry(n(j), height), DataEntry(k(j), if ((aV == aw))
301- then aw
302- else au)])
299+@Callable(aR)
300+func signup (aT,aX) = {
301+ let j = toBase58String(aR.caller.bytes)
302+ let aY = T(j)
303+ if ((aY == a))
304+ then throw(((((("Referral invite needed. Current status: " + aY) + ", key:") + k(j)) + ", account:") + j))
305+ else WriteSet([DataEntry(m(j), aT), DataEntry(n(j), height), DataEntry(k(j), if ((aX == ax))
306+ then ax
307+ else av)])
303308 }
304309
305310
306311
307-@Callable(aP)
308-func userupdate (aR,aV) = {
309- let j = toBase58String(aP.caller.bytes)
310- WriteSet([DataEntry(m(j), aR), DataEntry(k(j), if ((aV == aw))
311- then aw
312- else au)])
312+@Callable(aR)
313+func userupdate (aT,aX) = {
314+ let j = toBase58String(aR.caller.bytes)
315+ WriteSet([DataEntry(m(j), aT), DataEntry(k(j), if ((aX == ax))
316+ then ax
317+ else av)])
313318 }
314319
315320
316321
317-@Callable(aP)
318-func projupdate (p,aR) = {
319- let j = toBase58String(aP.caller.bytes)
320- if ((W(p) != j))
322+@Callable(aR)
323+func projupdate (p,aT) = {
324+ let j = toBase58String(aR.caller.bytes)
325+ if ((X(p) != j))
321326 then throw("You're not author")
322- else WriteSet([DataEntry(u(p), aR)])
327+ else WriteSet([DataEntry(u(p), aT)])
323328 }
324329
325330
326331
327-@Callable(aP)
328-func withdraw () = {
329- let aX = toBase58String(aP.caller.bytes)
330- let aY = T(aX)
331- if ((0 >= aY))
332- then throw("Not enough balance")
333- else ScriptResult(WriteSet([DataEntry(l(aX), 0)]), TransferSet([ScriptTransfer(aP.caller, aY, unit)]))
332+@Callable(aR)
333+func contestAddOrUpdate (p,aT) = {
334+ let j = toBase58String(aR.caller.bytes)
335+ if ((j != aK))
336+ then throw("You're not admin")
337+ else WriteSet([DataEntry(v(p), aT)])
334338 }
335339
336340
337341
338-@Callable(aP)
339-func additem (p,aZ,ba,bb,aR) = {
340- let j = toBase58String(aP.caller.bytes)
341- let bc = extract(aP.payment)
342- if (isDefined(bc.assetId))
343- then throw("can use waves only at the moment")
344- else if ((bc.amount != aM))
345- then throw(((("Please pay exact amount for the listing: " + toString(aM)) + ", actual payment is: ") + toString(bc.amount)))
346- else if (!(if (if ((aZ > 2))
347- then (ba > aZ)
348- else false)
349- then (bb > ba)
350- else false))
351- then throw("Incorrect time parameters")
352- else if ((W(p) != a))
353- then throw("Item already exist")
354- else WriteSet([DataEntry(o(p), j), DataEntry(q(p), height), DataEntry(r(p), (height + aZ)), DataEntry(s(p), aM), DataEntry(t(p), ax), DataEntry(u(p), aR), DataEntry(v(p), (height + ba)), DataEntry(w(p), (height + bb))])
342+@Callable(aR)
343+func withdraw () = {
344+ let aZ = toBase58String(aR.caller.bytes)
345+ let ba = U(aZ)
346+ if ((0 >= ba))
347+ then throw("Not enough balance")
348+ else ScriptResult(WriteSet([DataEntry(l(aZ), 0)]), TransferSet([ScriptTransfer(aR.caller, ba, unit)]))
355349 }
356350
357351
358352
359-@Callable(aP)
360-func votecommit (p,aU) = {
361- let j = toBase58String(aP.caller.bytes)
362- let bd = ae(p)
363- let aW = aa(p)
364- let bc = extract(aP.payment)
365- if (isDefined(bc.assetId))
353+@Callable(aR)
354+func additem (p,bb,bc,bd,aT) = {
355+ let j = toBase58String(aR.caller.bytes)
356+ let be = extract(aR.payment)
357+ if (isDefined(be.assetId))
366358 then throw("can use waves only at the moment")
367- else if ((bc.amount != (2 * aN)))
368- then throw("Not enough funds to vote for a new item")
369- else if ((height > Y(p)))
370- then throw("The voting has expired")
371- else if ((W(p) == j))
372- then throw("Cannot vote for own proposal")
373- else if (if ((aW != ax))
374- then (aW != ay)
375- else false)
376- then throw("Wrong item status for 'commit' action")
377- else if ((bd >= aJ))
378- then throw("No more voters for this item")
379- else if ((af(p, j) != a))
380- then throw("Can't vote twice")
381- else WriteSet([DataEntry(t(p), if (((bd + 1) == aJ))
382- then az
383- else ay), DataEntry(y(p, j), aU), DataEntry(x(p), (bd + 1))])
359+ else if ((be.amount != aO))
360+ then throw(((("Please pay exact amount for the listing: " + toString(aO)) + ", actual payment is: ") + toString(be.amount)))
361+ else if (!(if (if ((bb > 2))
362+ then (bc > bb)
363+ else false)
364+ then (bd > bc)
365+ else false))
366+ then throw("Incorrect time parameters")
367+ else if ((X(p) != a))
368+ then throw("Item already exist")
369+ else WriteSet([DataEntry(o(p), j), DataEntry(q(p), height), DataEntry(r(p), (height + bb)), DataEntry(s(p), aO), DataEntry(t(p), ay), DataEntry(u(p), aT), DataEntry(w(p), (height + bc)), DataEntry(x(p), (height + bd))])
384370 }
385371
386372
387373
388-@Callable(aP)
389-func votereveal (p,be,bf,bg) = {
390- let bh = toBase58String(sha256(toBytes((be + bf))))
391- let j = toBase58String(aP.caller.bytes)
392- let bi = if ((be == aA))
393- then 1
394- else 0
395- let bj = if ((be == aB))
396- then 1
397- else 0
398- let bk = ah(p)
399- let bl = ai(p)
400- let aS = if ((bk >= aK))
401- then aA
402- else if ((bl >= aK))
403- then aB
404- else az
405- if ((af(p, j) != bh))
406- then throw("Hashes don't match")
407- else if ((height > Y(p)))
408- then throw("The challenge has expired")
409- else if ((aJ > ae(p)))
410- then throw("It's still commit stage")
411- else if (if ((aa(p) != az))
412- then (aa(p) != aS)
413- else false)
414- then throw("Wrong item status for 'reveal' action")
415- else if ((ag(p, j) != a))
416- then throw("Can't vote twice")
417- else if (if ((be != aA))
418- then (be != aB)
419- else false)
420- then throw("Bad vote result format")
421- else ScriptResult(WriteSet([DataEntry(z(p, j), be), DataEntry(A(p), (bk + bi)), DataEntry(B(p), (bl + bj)), DataEntry(t(p), aS), DataEntry(N(p, j), bg)]), TransferSet([ScriptTransfer(addressFromStringValue(j), aN, unit)]))
374+@Callable(aR)
375+func votecommit (p,aW) = {
376+ let j = toBase58String(aR.caller.bytes)
377+ let bf = af(p)
378+ let aY = ab(p)
379+ let be = extract(aR.payment)
380+ if (isDefined(be.assetId))
381+ then throw("can use waves only at the moment")
382+ else if ((be.amount != (2 * aP)))
383+ then throw("Not enough funds to vote for a new item")
384+ else if ((height > Z(p)))
385+ then throw("The voting has expired")
386+ else if ((X(p) == j))
387+ then throw("Cannot vote for own proposal")
388+ else if (if ((aY != ay))
389+ then (aY != az)
390+ else false)
391+ then throw("Wrong item status for 'commit' action")
392+ else if ((bf >= aL))
393+ then throw("No more voters for this item")
394+ else if ((ag(p, j) != a))
395+ then throw("Can't vote twice")
396+ else WriteSet([DataEntry(t(p), if (((bf + 1) == aL))
397+ then aA
398+ else az), DataEntry(z(p, j), aW), DataEntry(y(p), (bf + 1))])
422399 }
423400
424401
425402
426-@Callable(aP)
427-func finalizevoting (p,j) = {
428- let bk = ah(p)
429- let bl = ai(p)
430- let bm = ag(p, j)
431- let bn = (j == W(p))
432- let bo = if ((bk > aK))
433- then aA
434- else if ((bl > aK))
435- then aB
436- else a
437- let bp = if (if ((bk == aJ))
438- then true
439- else (bl == aJ))
440- then 0
441- else 1
442- let bq = if ((bo == aA))
443- then bk
444- else if ((bo == aB))
445- then bl
446- else 0
447- let br = (aJ - bq)
448- let bs = if ((bo == bm))
403+@Callable(aR)
404+func votereveal (p,bg,bh,bi) = {
405+ let bj = toBase58String(sha256(toBytes((bg + bh))))
406+ let j = toBase58String(aR.caller.bytes)
407+ let bk = if ((bg == aB))
449408 then 1
450409 else 0
451- let bt = if ((bq == 0))
452- then 0
453- else (bs * (aN + ((bp * ((br * aN) + aM)) / bq)))
454- let bu = (((aM * (if (bn)
410+ let bl = if ((bg == aC))
455411 then 1
456- else 0)) * (if ((bp == 1))
457- then 0
458- else 1)) * (if ((bo == aA))
459- then 1
460- else 0))
461- if ((Y(p) > height))
462- then throw("The voting hasn't finished yet")
463- else if ((aj(p, j) == aE))
464- then throw("Account has already claimed")
465- else if (if ((bm == a))
466- then !(bn)
467- else false)
468- then throw("Account hasnot voted, hasnot reveal or isnot author")
469- else if ((bo == a))
470- then throw("Voting has expired")
471- else ScriptResult(WriteSet([DataEntry(C(p, j), aE)]), TransferSet([ScriptTransfer(addressFromStringValue(j), (bt + bu), unit)]))
412+ else 0
413+ let bm = ai(p)
414+ let bn = aj(p)
415+ let aU = if ((bm >= aM))
416+ then aB
417+ else if ((bn >= aM))
418+ then aC
419+ else aA
420+ if ((ag(p, j) != bj))
421+ then throw("Hashes don't match")
422+ else if ((height > Z(p)))
423+ then throw("The challenge has expired")
424+ else if ((aL > af(p)))
425+ then throw("It's still commit stage")
426+ else if (if ((ab(p) != aA))
427+ then (ab(p) != aU)
428+ else false)
429+ then throw("Wrong item status for 'reveal' action")
430+ else if ((ah(p, j) != a))
431+ then throw("Can't vote twice")
432+ else if (if ((bg != aB))
433+ then (bg != aC)
434+ else false)
435+ then throw("Bad vote result format")
436+ else ScriptResult(WriteSet([DataEntry(A(p, j), bg), DataEntry(B(p), (bm + bk)), DataEntry(C(p), (bn + bl)), DataEntry(t(p), aU), DataEntry(O(p, j), bi)]), TransferSet([ScriptTransfer(addressFromStringValue(j), aP, unit)]))
472437 }
473438
474439
475440
476-@Callable(aP)
477-func closeexpiredvoting (p,j) = {
478- let bo = if ((ah(p) > aK))
479- then aA
480- else if ((ai(p) > aK))
481- then aB
441+@Callable(aR)
442+func finalizevoting (p,j) = {
443+ let bm = ai(p)
444+ let bn = aj(p)
445+ let bo = ah(p, j)
446+ let bp = (j == X(p))
447+ let bq = if ((bm > aM))
448+ then aB
449+ else if ((bn > aM))
450+ then aC
482451 else a
483- let bm = ag(p, j)
484- let bn = (j == W(p))
485- let bv = af(p, j)
486- let bw = (ae(p) == aJ)
487- let bu = (aM * (if (bn)
452+ let br = if (if ((bm == aL))
453+ then true
454+ else (bn == aL))
455+ then 0
456+ else 1
457+ let bs = if ((bq == aB))
458+ then bm
459+ else if ((bq == aC))
460+ then bn
461+ else 0
462+ let bt = (aL - bs)
463+ let bu = if ((bq == bo))
464+ then 1
465+ else 0
466+ let bv = if ((bs == 0))
467+ then 0
468+ else (bu * (aP + ((br * ((bt * aP) + aO)) / bs)))
469+ let bw = (((aO * (if (bp)
470+ then 1
471+ else 0)) * (if ((br == 1))
472+ then 0
473+ else 1)) * (if ((bq == aB))
488474 then 1
489475 else 0))
490- let bx = ((aN * (if (bw)
491- then 1
492- else 0)) * (if ((bm != a))
493- then 1
494- else 0))
495- let by = (((2 * aN) * (if (bw)
496- then 0
497- else 1)) * (if ((bv != a))
498- then 1
499- else 0))
500- if ((Y(p) > height))
476+ if ((Z(p) > height))
501477 then throw("The voting hasn't finished yet")
502- else if (if (!(bn))
503- then (bv == a)
504- else false)
505- then throw("Wrong account or item")
506- else if ((aj(p, j) == aE))
507- then throw("Account has already claimed")
508- else if ((bo != a))
509- then throw("Wrong item status")
510- else ScriptResult(WriteSet([DataEntry(C(p, j), aE)]), TransferSet([ScriptTransfer(addressFromStringValue(j), ((bu + bx) + by), unit)]))
478+ else if ((ak(p, j) == aF))
479+ then throw("Account has already claimed")
480+ else if (if ((bo == a))
481+ then !(bp)
482+ else false)
483+ then throw("Account hasnot voted, hasnot reveal or isnot author")
484+ else if ((bq == a))
485+ then throw("Voting has expired")
486+ else ScriptResult(WriteSet([DataEntry(D(p, j), aF)]), TransferSet([ScriptTransfer(addressFromStringValue(j), (bv + bw), unit)]))
511487 }
512488
513489
514490
515-@Callable(aP)
516-func donate (p,bz,bA,bg) = {
517- let j = toBase58String(aP.caller.bytes)
518- let bc = extract(aP.payment)
519- if (isDefined(bc.assetId))
491+@Callable(aR)
492+func closeexpiredvoting (p,j) = {
493+ let bq = if ((ai(p) > aM))
494+ then aB
495+ else if ((aj(p) > aM))
496+ then aC
497+ else a
498+ let bo = ah(p, j)
499+ let bp = (j == X(p))
500+ let bx = ag(p, j)
501+ let by = (af(p) == aL)
502+ let bw = (aO * (if (bp)
503+ then 1
504+ else 0))
505+ let bz = ((aP * (if (by)
506+ then 1
507+ else 0)) * (if ((bo != a))
508+ then 1
509+ else 0))
510+ let bA = (((2 * aP) * (if (by)
511+ then 0
512+ else 1)) * (if ((bx != a))
513+ then 1
514+ else 0))
515+ if ((Z(p) > height))
516+ then throw("The voting hasn't finished yet")
517+ else if (if (!(bp))
518+ then (bx == a)
519+ else false)
520+ then throw("Wrong account or item")
521+ else if ((ak(p, j) == aF))
522+ then throw("Account has already claimed")
523+ else if ((bq != a))
524+ then throw("Wrong item status")
525+ else ScriptResult(WriteSet([DataEntry(D(p, j), aF)]), TransferSet([ScriptTransfer(addressFromStringValue(j), ((bw + bz) + bA), unit)]))
526+ }
527+
528+
529+
530+@Callable(aR)
531+func donate (p,bB,bC,bi) = {
532+ let j = toBase58String(aR.caller.bytes)
533+ let be = extract(aR.payment)
534+ if (isDefined(be.assetId))
520535 then throw("can use waves only at the moment")
521536 else {
522- let K = (ao(p, j) + 1)
523- let bB = (al(p) + ((if ((bA == aH))
537+ let L = (ap(p, j) + 1)
538+ let bD = (am(p) + ((if ((bC == aI))
524539 then 1
525- else 0) * bc.amount))
526- let bC = (ak(p) + ((if ((bA == aG))
540+ else 0) * be.amount))
541+ let bE = (al(p) + ((if ((bC == aH))
527542 then 1
528- else 0) * bc.amount))
529- if ((aa(p) != aA))
543+ else 0) * be.amount))
544+ if ((ab(p) != aB))
530545 then throw("The project hasn't accepted by community")
531- else if ((height >= ac(p)))
546+ else if ((height >= ad(p)))
532547 then throw("The time for crowdfunding has expired")
533- else if ((bB >= bC))
548+ else if ((bD >= bE))
534549 then throw("Negative fund can't be higher than positive fund")
535- else if (if ((bA != aG))
536- then (bA != aH)
550+ else if (if ((bC != aH))
551+ then (bC != aI)
537552 else false)
538553 then throw("Wrong mode parameter")
539- else if ((W(p) == j))
554+ else if ((X(p) == j))
540555 then throw("Can't donate own project")
541- else if ((bc.amount != aL[(bz - 1)]))
542- then throw(("The payment must be equal to tier amount: " + toString(aL[(bz - 1)])))
543- else WriteSet([DataEntry(H(p, j), K), DataEntry(F(p, j), (am(p, j) + ((if ((bA == aG))
556+ else if ((be.amount != aN[(bB - 1)]))
557+ then throw(("The payment must be equal to tier amount: " + toString(aN[(bB - 1)])))
558+ else WriteSet([DataEntry(I(p, j), L), DataEntry(G(p, j), (an(p, j) + ((if ((bC == aH))
544559 then 1
545- else 0) * bc.amount))), DataEntry(G(p, j), (an(p, j) + ((if ((bA == aH))
560+ else 0) * be.amount))), DataEntry(H(p, j), (ao(p, j) + ((if ((bC == aI))
546561 then 1
547- else 0) * bc.amount))), DataEntry(D(p), bC), DataEntry(E(p), bB), DataEntry(J(p, j, toString(K)), bg), DataEntry(L(p, j, toString(K)), bA), DataEntry(M(p, j, toString(K)), bz)])
562+ else 0) * be.amount))), DataEntry(E(p), bE), DataEntry(F(p), bD), DataEntry(K(p, j, toString(L)), bi), DataEntry(M(p, j, toString(L)), bC), DataEntry(N(p, j, toString(L)), bB)])
548563 }
549564 }
550565
551566
552567
553-@Callable(aP)
554-func whale (p,bg) = {
555- let j = toBase58String(aP.caller.bytes)
556- let bc = extract(aP.payment)
557- if (isDefined(bc.assetId))
568+@Callable(aR)
569+func whale (p,bi) = {
570+ let j = toBase58String(aR.caller.bytes)
571+ let be = extract(aR.payment)
572+ if (isDefined(be.assetId))
558573 then throw("can use waves only at the moment")
559- else if ((aa(p) != aA))
574+ else if ((ab(p) != aB))
560575 then throw("The project hasn't accepted by community")
561- else if ((ac(p) > height))
576+ else if ((ad(p) > height))
562577 then throw("The time for crowdfunding has not expired yet")
563- else if ((height > ad(p)))
578+ else if ((height > ae(p)))
564579 then throw("The time for grant has expired")
565- else if ((aa(p) == aD))
580+ else if ((ab(p) == aE))
566581 then throw("Investement has already done")
567- else if ((((ak(p) * aO) / 100) > bc.amount))
568- then throw((("Investement must be more than " + toString(aO)) + "% of supportes funds"))
569- else WriteSet([DataEntry(t(p), aD), DataEntry(O(p, j), bg), DataEntry(l(W(p)), (T(W(p)) + ak(p))), DataEntry(P(p), bc.amount)])
582+ else if ((((al(p) * aQ) / 100) > be.amount))
583+ then throw((("Investement must be more than " + toString(aQ)) + "% of supportes funds"))
584+ else WriteSet([DataEntry(t(p), aE), DataEntry(P(p, j), bi), DataEntry(l(X(p)), (U(X(p)) + al(p))), DataEntry(Q(p), be.amount)])
570585 }
571586
572587
573588
574-@Callable(aP)
589+@Callable(aR)
575590 func claimwinnings (p,j) = {
576- let aW = aa(p)
577- let bD = if ((aW == aD))
591+ let aY = ab(p)
592+ let bF = if ((aY == aE))
578593 then 1
579594 else 0
580- let bE = if ((aW != aD))
595+ let bG = if ((aY != aE))
581596 then 1
582597 else 0
583- let bF = ak(p)
584- let bG = al(p)
585- let bH = (((bD * (am(p, j) * 100)) / (if ((0 >= bF))
598+ let bH = al(p)
599+ let bI = am(p)
600+ let bJ = (((bF * (an(p, j) * 100)) / (if ((0 >= bH))
586601 then 1
587- else bF)) + ((bE * (an(p, j) * 100)) / (if ((0 >= bG))
602+ else bH)) + ((bG * (ao(p, j) * 100)) / (if ((0 >= bI))
588603 then 1
589- else bG)))
590- let bI = ((bG * aO) / 100)
591- let bJ = ((bD * ((bH * bG) / 100)) + (bE * ((bH * (if ((bF > bI))
592- then bI
593- else bF)) / 100)))
594- let bK = (bD * ((bH * as(p)) / 100))
595- let bL = (((if ((W(p) == j))
604+ else bI)))
605+ let bK = ((bI * aQ) / 100)
606+ let bL = ((bF * ((bJ * bI) / 100)) + (bG * ((bJ * (if ((bH > bK))
607+ then bK
608+ else bH)) / 100)))
609+ let bM = (bF * ((bJ * at(p)) / 100))
610+ let bN = (((if ((X(p) == j))
596611 then 1
597- else 0) * bF) * (if ((aW != aD))
612+ else 0) * bH) * (if ((aY != aE))
598613 then 1
599614 else 0))
600- if ((aW == aB))
615+ if ((aY == aC))
601616 then throw("The project hasn't accepted by community")
602- else if (if ((aW != aD))
603- then (ad(p) >= height)
617+ else if (if ((aY != aE))
618+ then (ae(p) >= height)
604619 else false)
605620 then throw("The time for grant has not expired yet")
606- else if ((0 >= (bF + bG)))
621+ else if ((0 >= (bH + bI)))
607622 then throw("The campaign wasn't active")
608- else WriteSet([DataEntry(l(j), (((T(j) + bJ) + bK) + bL)), DataEntry(t(p), if ((bL > 0))
609- then aC
610- else aW), DataEntry(C(p, j), aF)])
623+ else WriteSet([DataEntry(l(j), (((U(j) + bL) + bM) + bN)), DataEntry(t(p), if ((bN > 0))
624+ then aD
625+ else aY), DataEntry(D(p, j), aG)])
611626 }
612627
613628
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "none"
55
66 func b (c) = {
77 let d = {
88 let e = getInteger(this, c)
99 if ($isInstanceOf(e, "Int"))
1010 then {
1111 let f = e
1212 f
1313 }
1414 else 0
1515 }
1616 d
1717 }
1818
1919
2020 func g (c) = {
2121 let h = {
2222 let e = getString(this, c)
2323 if ($isInstanceOf(e, "String"))
2424 then {
2525 let f = e
2626 f
2727 }
2828 else a
2929 }
3030 h
3131 }
3232
3333
3434 func i (j) = ("wl_ref_" + j)
3535
3636
3737 func k (j) = ("wl_sts_" + j)
3838
3939
4040 func l (j) = ("balance_" + j)
4141
4242
4343 func m (j) = ("wl_bio_" + j)
4444
4545
4646 func n (j) = ("wl_blk_" + j)
4747
4848
4949 func o (p) = ("author_" + p)
5050
5151
5252 func q (p) = ("block_" + p)
5353
5454
5555 func r (p) = ("expiration_block_" + p)
5656
5757
5858 func s (p) = ("bank_" + p)
5959
6060
6161 func t (p) = ("status_" + p)
6262
6363
6464 func u (p) = ("datajson_" + p)
6565
6666
67-func v (p) = ("expiration_one_" + p)
67+func v (p) = ("contest_datajson_" + p)
6868
6969
70-func w (p) = ("expiration_two_" + p)
70+func w (p) = ("expiration_one_" + p)
7171
7272
73-func x (p) = ("ncommits_" + p)
73+func x (p) = ("expiration_two_" + p)
7474
7575
76-func y (p,j) = ((("commit_" + p) + "_") + j)
76+func y (p) = ("ncommits_" + p)
7777
7878
79-func z (p,j) = ((("reveal_" + p) + "_") + j)
79+func z (p,j) = ((("commit_" + p) + "_") + j)
8080
8181
82-func A (p) = ("cnt_yes_" + p)
82+func A (p,j) = ((("reveal_" + p) + "_") + j)
8383
8484
85-func B (p) = ("cnt_no_" + p)
85+func B (p) = ("cnt_yes_" + p)
8686
8787
88-func C (p,j) = ((("final_" + p) + "_") + j)
88+func C (p) = ("cnt_no_" + p)
8989
9090
91-func D (p) = ("positive_fund_" + p)
91+func D (p,j) = ((("final_" + p) + "_") + j)
9292
9393
94-func E (p) = ("negative_fund_" + p)
94+func E (p) = ("positive_fund_" + p)
9595
9696
97-func F (p,j) = ((D(p) + "_") + j)
97+func F (p) = ("negative_fund_" + p)
9898
9999
100100 func G (p,j) = ((E(p) + "_") + j)
101101
102102
103-func H (p,j) = ((("reviews_cnt_" + p) + "_") + j)
103+func H (p,j) = ((F(p) + "_") + j)
104104
105105
106-func I (p,j) = ((("review_" + p) + "_") + j)
106+func I (p,j) = ((("reviews_cnt_" + p) + "_") + j)
107107
108108
109-func J (p,j,K) = ((I(p, j) + "_text_id:") + K)
109+func J (p,j) = ((("review_" + p) + "_") + j)
110110
111111
112-func L (p,j,K) = ((I(p, j) + "_mode_id:") + K)
112+func K (p,j,L) = ((J(p, j) + "_text_id:") + L)
113113
114114
115-func M (p,j,K) = ((I(p, j) + "_tier_id:") + K)
115+func M (p,j,L) = ((J(p, j) + "_mode_id:") + L)
116116
117117
118-func N (p,j) = (I(p, j) + "_votereview")
118+func N (p,j,L) = ((J(p, j) + "_tier_id:") + L)
119119
120120
121-func O (p,j) = (I(p, j) + "_whalereview")
121+func O (p,j) = (J(p, j) + "_votereview")
122122
123123
124-func P (p) = ("buyout_amount_" + p)
124+func P (p,j) = (J(p, j) + "_whalereview")
125125
126126
127-func Q (p,j) = ((("winnings_" + p) + "_") + j)
127+func Q (p) = ("buyout_amount_" + p)
128128
129129
130-func R (j) = g(i(j))
130+func R (p,j) = ((("winnings_" + p) + "_") + j)
131131
132132
133-func S (j) = g(k(j))
133+func S (j) = g(i(j))
134134
135135
136-func T (j) = b(l(j))
136+func T (j) = g(k(j))
137137
138138
139-func U (j) = g(m(j))
139+func U (j) = b(l(j))
140140
141141
142-func V (j) = g(n(j))
142+func V (j) = g(m(j))
143143
144144
145-func W (p) = g(o(p))
145+func W (j) = g(n(j))
146146
147147
148-func X (p) = b(q(p))
148+func X (p) = g(o(p))
149149
150150
151-func Y (p) = b(r(p))
151+func Y (p) = b(q(p))
152152
153153
154-func Z (p) = b(s(p))
154+func Z (p) = b(r(p))
155155
156156
157-func aa (p) = g(t(p))
157+func aa (p) = b(s(p))
158158
159159
160-func ab (p) = g(u(p))
160+func ab (p) = g(t(p))
161161
162162
163-func ac (p) = b(v(p))
163+func ac (p) = g(u(p))
164164
165165
166166 func ad (p) = b(w(p))
167167
168168
169169 func ae (p) = b(x(p))
170170
171171
172-func af (p,j) = g(y(p, j))
172+func af (p) = b(y(p))
173173
174174
175175 func ag (p,j) = g(z(p, j))
176176
177177
178-func ah (p) = b(A(p))
178+func ah (p,j) = g(A(p, j))
179179
180180
181181 func ai (p) = b(B(p))
182182
183183
184-func aj (p,j) = g(C(p, j))
184+func aj (p) = b(C(p))
185185
186186
187-func ak (p) = b(D(p))
187+func ak (p,j) = g(D(p, j))
188188
189189
190190 func al (p) = b(E(p))
191191
192192
193-func am (p,j) = b(F(p, j))
193+func am (p) = b(F(p))
194194
195195
196196 func an (p,j) = b(G(p, j))
197197
198198
199199 func ao (p,j) = b(H(p, j))
200200
201201
202-func ap (p,j,K) = g(J(p, j, K))
202+func ap (p,j) = b(I(p, j))
203203
204204
205-func aq (p,j,K) = g(L(p, j, K))
205+func aq (p,j,L) = g(K(p, j, L))
206206
207207
208-func ar (p,j,K) = b(M(p, j, K))
208+func ar (p,j,L) = g(M(p, j, L))
209209
210210
211-func as (p) = b(P(p))
211+func as (p,j,L) = b(N(p, j, L))
212212
213213
214-func at (p,j) = b(Q(p, j))
214+func at (p) = b(Q(p))
215215
216216
217-let au = "registered"
217+func au (p,j) = b(R(p, j))
218218
219-let av = "invited"
220219
221-let aw = "whale"
220+let av = "registered"
222221
223-let ax = "new"
222+let aw = "invited"
224223
225-let ay = "voting_commit"
224+let ax = "whale"
226225
227-let az = "voting_reveal"
226+let ay = "new"
228227
229-let aA = "featured"
228+let az = "voting_commit"
230229
231-let aB = "delisted"
230+let aA = "voting_reveal"
232231
233-let aC = "cashout"
232+let aB = "featured"
234233
235-let aD = "buyout"
234+let aC = "delisted"
236235
237-let aE = "finished"
236+let aD = "cashout"
238237
239-let aF = "claimed"
238+let aE = "buyout"
240239
241-let aG = "positive"
240+let aF = "finished"
242241
243-let aH = "negative"
242+let aG = "claimed"
244243
245-let aI = "3P8Fvy1yDwNHvVrabe4ek5b9dAwxFjDKV7R"
244+let aH = "positive"
246245
247-let aJ = 3
246+let aI = "negative"
248247
249-let aK = 2
248+let aJ = "3P8Fvy1yDwNHvVrabe4ek5b9dAwxFjDKV7R"
250249
251-let aL = [(3 * 100000000), (10 * 100000000), (100 * 100000000), (300 * 100000000), (1000 * 100000000)]
250+let aK = "3P9NDxt9Y6ePfM9hkQysgSvbHJvihr56Z18"
252251
253-let aM = (3 * 100000000)
252+let aL = 3
254253
255-let aN = (1 * 100000000)
254+let aM = 2
256255
257-let aO = 150
256+let aN = [(3 * 100000000), (10 * 100000000), (100 * 100000000), (300 * 100000000), (1000 * 100000000)]
258257
259-@Callable(aP)
260-func inviteuser (aQ,aR) = {
261- let j = toBase58String(aP.caller.bytes)
262- let aS = S(aQ)
263- let aT = S(j)
264- if (if ((aS == au))
258+let aO = (3 * 100000000)
259+
260+let aP = (1 * 100000000)
261+
262+let aQ = 150
263+
264+@Callable(aR)
265+func inviteuser (aS,aT) = {
266+ let j = toBase58String(aR.caller.bytes)
267+ let aU = T(aS)
268+ let aV = T(j)
269+ if (if ((aU == av))
265270 then true
266- else (aS == aw))
271+ else (aU == ax))
267272 then throw("User has already been registered")
268- else if (if (if ((aT != au))
269- then (j != aI)
273+ else if (if (if ((aV != av))
274+ then (j != aJ)
270275 else false)
271- then (aT != aw)
276+ then (aV != ax)
272277 else false)
273- then throw(("Your account should be whitelisted. status: " + aT))
274- else WriteSet([DataEntry(i(aQ), j), DataEntry(m(aQ), aR), DataEntry(k(aQ), av)])
278+ then throw(("Your account should be whitelisted. status: " + aV))
279+ else WriteSet([DataEntry(i(aS), j), DataEntry(m(aS), aT), DataEntry(k(aS), aw)])
275280 }
276281
277282
278283
279-@Callable(aP)
280-func signupbylink (aU,aR,aV) = {
281- let j = toBase58String(aP.caller.bytes)
282- let aW = S(aU)
283- if ((aW != av))
284- then throw(((((("Referral invite needed. Current status: " + aW) + ", key:") + k(aU)) + ", account:") + aU))
285- else WriteSet([DataEntry(m(j), aR), DataEntry(n(j), height), DataEntry(k(j), if ((aV == aw))
286- then aw
287- else au), DataEntry(k(aU), if ((aV == aw))
288- then aw
289- else au), DataEntry(i(j), R(aU))])
284+@Callable(aR)
285+func signupbylink (aW,aT,aX) = {
286+ let j = toBase58String(aR.caller.bytes)
287+ let aY = T(aW)
288+ if ((aY != aw))
289+ then throw(((((("Referral invite needed. Current status: " + aY) + ", key:") + k(aW)) + ", account:") + aW))
290+ else WriteSet([DataEntry(m(j), aT), DataEntry(n(j), height), DataEntry(k(j), if ((aX == ax))
291+ then ax
292+ else av), DataEntry(k(aW), if ((aX == ax))
293+ then ax
294+ else av), DataEntry(i(j), S(aW))])
290295 }
291296
292297
293298
294-@Callable(aP)
295-func signup (aR,aV) = {
296- let j = toBase58String(aP.caller.bytes)
297- let aW = S(j)
298- if ((aW == a))
299- then throw(((((("Referral invite needed. Current status: " + aW) + ", key:") + k(j)) + ", account:") + j))
300- else WriteSet([DataEntry(m(j), aR), DataEntry(n(j), height), DataEntry(k(j), if ((aV == aw))
301- then aw
302- else au)])
299+@Callable(aR)
300+func signup (aT,aX) = {
301+ let j = toBase58String(aR.caller.bytes)
302+ let aY = T(j)
303+ if ((aY == a))
304+ then throw(((((("Referral invite needed. Current status: " + aY) + ", key:") + k(j)) + ", account:") + j))
305+ else WriteSet([DataEntry(m(j), aT), DataEntry(n(j), height), DataEntry(k(j), if ((aX == ax))
306+ then ax
307+ else av)])
303308 }
304309
305310
306311
307-@Callable(aP)
308-func userupdate (aR,aV) = {
309- let j = toBase58String(aP.caller.bytes)
310- WriteSet([DataEntry(m(j), aR), DataEntry(k(j), if ((aV == aw))
311- then aw
312- else au)])
312+@Callable(aR)
313+func userupdate (aT,aX) = {
314+ let j = toBase58String(aR.caller.bytes)
315+ WriteSet([DataEntry(m(j), aT), DataEntry(k(j), if ((aX == ax))
316+ then ax
317+ else av)])
313318 }
314319
315320
316321
317-@Callable(aP)
318-func projupdate (p,aR) = {
319- let j = toBase58String(aP.caller.bytes)
320- if ((W(p) != j))
322+@Callable(aR)
323+func projupdate (p,aT) = {
324+ let j = toBase58String(aR.caller.bytes)
325+ if ((X(p) != j))
321326 then throw("You're not author")
322- else WriteSet([DataEntry(u(p), aR)])
327+ else WriteSet([DataEntry(u(p), aT)])
323328 }
324329
325330
326331
327-@Callable(aP)
328-func withdraw () = {
329- let aX = toBase58String(aP.caller.bytes)
330- let aY = T(aX)
331- if ((0 >= aY))
332- then throw("Not enough balance")
333- else ScriptResult(WriteSet([DataEntry(l(aX), 0)]), TransferSet([ScriptTransfer(aP.caller, aY, unit)]))
332+@Callable(aR)
333+func contestAddOrUpdate (p,aT) = {
334+ let j = toBase58String(aR.caller.bytes)
335+ if ((j != aK))
336+ then throw("You're not admin")
337+ else WriteSet([DataEntry(v(p), aT)])
334338 }
335339
336340
337341
338-@Callable(aP)
339-func additem (p,aZ,ba,bb,aR) = {
340- let j = toBase58String(aP.caller.bytes)
341- let bc = extract(aP.payment)
342- if (isDefined(bc.assetId))
343- then throw("can use waves only at the moment")
344- else if ((bc.amount != aM))
345- then throw(((("Please pay exact amount for the listing: " + toString(aM)) + ", actual payment is: ") + toString(bc.amount)))
346- else if (!(if (if ((aZ > 2))
347- then (ba > aZ)
348- else false)
349- then (bb > ba)
350- else false))
351- then throw("Incorrect time parameters")
352- else if ((W(p) != a))
353- then throw("Item already exist")
354- else WriteSet([DataEntry(o(p), j), DataEntry(q(p), height), DataEntry(r(p), (height + aZ)), DataEntry(s(p), aM), DataEntry(t(p), ax), DataEntry(u(p), aR), DataEntry(v(p), (height + ba)), DataEntry(w(p), (height + bb))])
342+@Callable(aR)
343+func withdraw () = {
344+ let aZ = toBase58String(aR.caller.bytes)
345+ let ba = U(aZ)
346+ if ((0 >= ba))
347+ then throw("Not enough balance")
348+ else ScriptResult(WriteSet([DataEntry(l(aZ), 0)]), TransferSet([ScriptTransfer(aR.caller, ba, unit)]))
355349 }
356350
357351
358352
359-@Callable(aP)
360-func votecommit (p,aU) = {
361- let j = toBase58String(aP.caller.bytes)
362- let bd = ae(p)
363- let aW = aa(p)
364- let bc = extract(aP.payment)
365- if (isDefined(bc.assetId))
353+@Callable(aR)
354+func additem (p,bb,bc,bd,aT) = {
355+ let j = toBase58String(aR.caller.bytes)
356+ let be = extract(aR.payment)
357+ if (isDefined(be.assetId))
366358 then throw("can use waves only at the moment")
367- else if ((bc.amount != (2 * aN)))
368- then throw("Not enough funds to vote for a new item")
369- else if ((height > Y(p)))
370- then throw("The voting has expired")
371- else if ((W(p) == j))
372- then throw("Cannot vote for own proposal")
373- else if (if ((aW != ax))
374- then (aW != ay)
375- else false)
376- then throw("Wrong item status for 'commit' action")
377- else if ((bd >= aJ))
378- then throw("No more voters for this item")
379- else if ((af(p, j) != a))
380- then throw("Can't vote twice")
381- else WriteSet([DataEntry(t(p), if (((bd + 1) == aJ))
382- then az
383- else ay), DataEntry(y(p, j), aU), DataEntry(x(p), (bd + 1))])
359+ else if ((be.amount != aO))
360+ then throw(((("Please pay exact amount for the listing: " + toString(aO)) + ", actual payment is: ") + toString(be.amount)))
361+ else if (!(if (if ((bb > 2))
362+ then (bc > bb)
363+ else false)
364+ then (bd > bc)
365+ else false))
366+ then throw("Incorrect time parameters")
367+ else if ((X(p) != a))
368+ then throw("Item already exist")
369+ else WriteSet([DataEntry(o(p), j), DataEntry(q(p), height), DataEntry(r(p), (height + bb)), DataEntry(s(p), aO), DataEntry(t(p), ay), DataEntry(u(p), aT), DataEntry(w(p), (height + bc)), DataEntry(x(p), (height + bd))])
384370 }
385371
386372
387373
388-@Callable(aP)
389-func votereveal (p,be,bf,bg) = {
390- let bh = toBase58String(sha256(toBytes((be + bf))))
391- let j = toBase58String(aP.caller.bytes)
392- let bi = if ((be == aA))
393- then 1
394- else 0
395- let bj = if ((be == aB))
396- then 1
397- else 0
398- let bk = ah(p)
399- let bl = ai(p)
400- let aS = if ((bk >= aK))
401- then aA
402- else if ((bl >= aK))
403- then aB
404- else az
405- if ((af(p, j) != bh))
406- then throw("Hashes don't match")
407- else if ((height > Y(p)))
408- then throw("The challenge has expired")
409- else if ((aJ > ae(p)))
410- then throw("It's still commit stage")
411- else if (if ((aa(p) != az))
412- then (aa(p) != aS)
413- else false)
414- then throw("Wrong item status for 'reveal' action")
415- else if ((ag(p, j) != a))
416- then throw("Can't vote twice")
417- else if (if ((be != aA))
418- then (be != aB)
419- else false)
420- then throw("Bad vote result format")
421- else ScriptResult(WriteSet([DataEntry(z(p, j), be), DataEntry(A(p), (bk + bi)), DataEntry(B(p), (bl + bj)), DataEntry(t(p), aS), DataEntry(N(p, j), bg)]), TransferSet([ScriptTransfer(addressFromStringValue(j), aN, unit)]))
374+@Callable(aR)
375+func votecommit (p,aW) = {
376+ let j = toBase58String(aR.caller.bytes)
377+ let bf = af(p)
378+ let aY = ab(p)
379+ let be = extract(aR.payment)
380+ if (isDefined(be.assetId))
381+ then throw("can use waves only at the moment")
382+ else if ((be.amount != (2 * aP)))
383+ then throw("Not enough funds to vote for a new item")
384+ else if ((height > Z(p)))
385+ then throw("The voting has expired")
386+ else if ((X(p) == j))
387+ then throw("Cannot vote for own proposal")
388+ else if (if ((aY != ay))
389+ then (aY != az)
390+ else false)
391+ then throw("Wrong item status for 'commit' action")
392+ else if ((bf >= aL))
393+ then throw("No more voters for this item")
394+ else if ((ag(p, j) != a))
395+ then throw("Can't vote twice")
396+ else WriteSet([DataEntry(t(p), if (((bf + 1) == aL))
397+ then aA
398+ else az), DataEntry(z(p, j), aW), DataEntry(y(p), (bf + 1))])
422399 }
423400
424401
425402
426-@Callable(aP)
427-func finalizevoting (p,j) = {
428- let bk = ah(p)
429- let bl = ai(p)
430- let bm = ag(p, j)
431- let bn = (j == W(p))
432- let bo = if ((bk > aK))
433- then aA
434- else if ((bl > aK))
435- then aB
436- else a
437- let bp = if (if ((bk == aJ))
438- then true
439- else (bl == aJ))
440- then 0
441- else 1
442- let bq = if ((bo == aA))
443- then bk
444- else if ((bo == aB))
445- then bl
446- else 0
447- let br = (aJ - bq)
448- let bs = if ((bo == bm))
403+@Callable(aR)
404+func votereveal (p,bg,bh,bi) = {
405+ let bj = toBase58String(sha256(toBytes((bg + bh))))
406+ let j = toBase58String(aR.caller.bytes)
407+ let bk = if ((bg == aB))
449408 then 1
450409 else 0
451- let bt = if ((bq == 0))
452- then 0
453- else (bs * (aN + ((bp * ((br * aN) + aM)) / bq)))
454- let bu = (((aM * (if (bn)
410+ let bl = if ((bg == aC))
455411 then 1
456- else 0)) * (if ((bp == 1))
457- then 0
458- else 1)) * (if ((bo == aA))
459- then 1
460- else 0))
461- if ((Y(p) > height))
462- then throw("The voting hasn't finished yet")
463- else if ((aj(p, j) == aE))
464- then throw("Account has already claimed")
465- else if (if ((bm == a))
466- then !(bn)
467- else false)
468- then throw("Account hasnot voted, hasnot reveal or isnot author")
469- else if ((bo == a))
470- then throw("Voting has expired")
471- else ScriptResult(WriteSet([DataEntry(C(p, j), aE)]), TransferSet([ScriptTransfer(addressFromStringValue(j), (bt + bu), unit)]))
412+ else 0
413+ let bm = ai(p)
414+ let bn = aj(p)
415+ let aU = if ((bm >= aM))
416+ then aB
417+ else if ((bn >= aM))
418+ then aC
419+ else aA
420+ if ((ag(p, j) != bj))
421+ then throw("Hashes don't match")
422+ else if ((height > Z(p)))
423+ then throw("The challenge has expired")
424+ else if ((aL > af(p)))
425+ then throw("It's still commit stage")
426+ else if (if ((ab(p) != aA))
427+ then (ab(p) != aU)
428+ else false)
429+ then throw("Wrong item status for 'reveal' action")
430+ else if ((ah(p, j) != a))
431+ then throw("Can't vote twice")
432+ else if (if ((bg != aB))
433+ then (bg != aC)
434+ else false)
435+ then throw("Bad vote result format")
436+ else ScriptResult(WriteSet([DataEntry(A(p, j), bg), DataEntry(B(p), (bm + bk)), DataEntry(C(p), (bn + bl)), DataEntry(t(p), aU), DataEntry(O(p, j), bi)]), TransferSet([ScriptTransfer(addressFromStringValue(j), aP, unit)]))
472437 }
473438
474439
475440
476-@Callable(aP)
477-func closeexpiredvoting (p,j) = {
478- let bo = if ((ah(p) > aK))
479- then aA
480- else if ((ai(p) > aK))
481- then aB
441+@Callable(aR)
442+func finalizevoting (p,j) = {
443+ let bm = ai(p)
444+ let bn = aj(p)
445+ let bo = ah(p, j)
446+ let bp = (j == X(p))
447+ let bq = if ((bm > aM))
448+ then aB
449+ else if ((bn > aM))
450+ then aC
482451 else a
483- let bm = ag(p, j)
484- let bn = (j == W(p))
485- let bv = af(p, j)
486- let bw = (ae(p) == aJ)
487- let bu = (aM * (if (bn)
452+ let br = if (if ((bm == aL))
453+ then true
454+ else (bn == aL))
455+ then 0
456+ else 1
457+ let bs = if ((bq == aB))
458+ then bm
459+ else if ((bq == aC))
460+ then bn
461+ else 0
462+ let bt = (aL - bs)
463+ let bu = if ((bq == bo))
464+ then 1
465+ else 0
466+ let bv = if ((bs == 0))
467+ then 0
468+ else (bu * (aP + ((br * ((bt * aP) + aO)) / bs)))
469+ let bw = (((aO * (if (bp)
470+ then 1
471+ else 0)) * (if ((br == 1))
472+ then 0
473+ else 1)) * (if ((bq == aB))
488474 then 1
489475 else 0))
490- let bx = ((aN * (if (bw)
491- then 1
492- else 0)) * (if ((bm != a))
493- then 1
494- else 0))
495- let by = (((2 * aN) * (if (bw)
496- then 0
497- else 1)) * (if ((bv != a))
498- then 1
499- else 0))
500- if ((Y(p) > height))
476+ if ((Z(p) > height))
501477 then throw("The voting hasn't finished yet")
502- else if (if (!(bn))
503- then (bv == a)
504- else false)
505- then throw("Wrong account or item")
506- else if ((aj(p, j) == aE))
507- then throw("Account has already claimed")
508- else if ((bo != a))
509- then throw("Wrong item status")
510- else ScriptResult(WriteSet([DataEntry(C(p, j), aE)]), TransferSet([ScriptTransfer(addressFromStringValue(j), ((bu + bx) + by), unit)]))
478+ else if ((ak(p, j) == aF))
479+ then throw("Account has already claimed")
480+ else if (if ((bo == a))
481+ then !(bp)
482+ else false)
483+ then throw("Account hasnot voted, hasnot reveal or isnot author")
484+ else if ((bq == a))
485+ then throw("Voting has expired")
486+ else ScriptResult(WriteSet([DataEntry(D(p, j), aF)]), TransferSet([ScriptTransfer(addressFromStringValue(j), (bv + bw), unit)]))
511487 }
512488
513489
514490
515-@Callable(aP)
516-func donate (p,bz,bA,bg) = {
517- let j = toBase58String(aP.caller.bytes)
518- let bc = extract(aP.payment)
519- if (isDefined(bc.assetId))
491+@Callable(aR)
492+func closeexpiredvoting (p,j) = {
493+ let bq = if ((ai(p) > aM))
494+ then aB
495+ else if ((aj(p) > aM))
496+ then aC
497+ else a
498+ let bo = ah(p, j)
499+ let bp = (j == X(p))
500+ let bx = ag(p, j)
501+ let by = (af(p) == aL)
502+ let bw = (aO * (if (bp)
503+ then 1
504+ else 0))
505+ let bz = ((aP * (if (by)
506+ then 1
507+ else 0)) * (if ((bo != a))
508+ then 1
509+ else 0))
510+ let bA = (((2 * aP) * (if (by)
511+ then 0
512+ else 1)) * (if ((bx != a))
513+ then 1
514+ else 0))
515+ if ((Z(p) > height))
516+ then throw("The voting hasn't finished yet")
517+ else if (if (!(bp))
518+ then (bx == a)
519+ else false)
520+ then throw("Wrong account or item")
521+ else if ((ak(p, j) == aF))
522+ then throw("Account has already claimed")
523+ else if ((bq != a))
524+ then throw("Wrong item status")
525+ else ScriptResult(WriteSet([DataEntry(D(p, j), aF)]), TransferSet([ScriptTransfer(addressFromStringValue(j), ((bw + bz) + bA), unit)]))
526+ }
527+
528+
529+
530+@Callable(aR)
531+func donate (p,bB,bC,bi) = {
532+ let j = toBase58String(aR.caller.bytes)
533+ let be = extract(aR.payment)
534+ if (isDefined(be.assetId))
520535 then throw("can use waves only at the moment")
521536 else {
522- let K = (ao(p, j) + 1)
523- let bB = (al(p) + ((if ((bA == aH))
537+ let L = (ap(p, j) + 1)
538+ let bD = (am(p) + ((if ((bC == aI))
524539 then 1
525- else 0) * bc.amount))
526- let bC = (ak(p) + ((if ((bA == aG))
540+ else 0) * be.amount))
541+ let bE = (al(p) + ((if ((bC == aH))
527542 then 1
528- else 0) * bc.amount))
529- if ((aa(p) != aA))
543+ else 0) * be.amount))
544+ if ((ab(p) != aB))
530545 then throw("The project hasn't accepted by community")
531- else if ((height >= ac(p)))
546+ else if ((height >= ad(p)))
532547 then throw("The time for crowdfunding has expired")
533- else if ((bB >= bC))
548+ else if ((bD >= bE))
534549 then throw("Negative fund can't be higher than positive fund")
535- else if (if ((bA != aG))
536- then (bA != aH)
550+ else if (if ((bC != aH))
551+ then (bC != aI)
537552 else false)
538553 then throw("Wrong mode parameter")
539- else if ((W(p) == j))
554+ else if ((X(p) == j))
540555 then throw("Can't donate own project")
541- else if ((bc.amount != aL[(bz - 1)]))
542- then throw(("The payment must be equal to tier amount: " + toString(aL[(bz - 1)])))
543- else WriteSet([DataEntry(H(p, j), K), DataEntry(F(p, j), (am(p, j) + ((if ((bA == aG))
556+ else if ((be.amount != aN[(bB - 1)]))
557+ then throw(("The payment must be equal to tier amount: " + toString(aN[(bB - 1)])))
558+ else WriteSet([DataEntry(I(p, j), L), DataEntry(G(p, j), (an(p, j) + ((if ((bC == aH))
544559 then 1
545- else 0) * bc.amount))), DataEntry(G(p, j), (an(p, j) + ((if ((bA == aH))
560+ else 0) * be.amount))), DataEntry(H(p, j), (ao(p, j) + ((if ((bC == aI))
546561 then 1
547- else 0) * bc.amount))), DataEntry(D(p), bC), DataEntry(E(p), bB), DataEntry(J(p, j, toString(K)), bg), DataEntry(L(p, j, toString(K)), bA), DataEntry(M(p, j, toString(K)), bz)])
562+ else 0) * be.amount))), DataEntry(E(p), bE), DataEntry(F(p), bD), DataEntry(K(p, j, toString(L)), bi), DataEntry(M(p, j, toString(L)), bC), DataEntry(N(p, j, toString(L)), bB)])
548563 }
549564 }
550565
551566
552567
553-@Callable(aP)
554-func whale (p,bg) = {
555- let j = toBase58String(aP.caller.bytes)
556- let bc = extract(aP.payment)
557- if (isDefined(bc.assetId))
568+@Callable(aR)
569+func whale (p,bi) = {
570+ let j = toBase58String(aR.caller.bytes)
571+ let be = extract(aR.payment)
572+ if (isDefined(be.assetId))
558573 then throw("can use waves only at the moment")
559- else if ((aa(p) != aA))
574+ else if ((ab(p) != aB))
560575 then throw("The project hasn't accepted by community")
561- else if ((ac(p) > height))
576+ else if ((ad(p) > height))
562577 then throw("The time for crowdfunding has not expired yet")
563- else if ((height > ad(p)))
578+ else if ((height > ae(p)))
564579 then throw("The time for grant has expired")
565- else if ((aa(p) == aD))
580+ else if ((ab(p) == aE))
566581 then throw("Investement has already done")
567- else if ((((ak(p) * aO) / 100) > bc.amount))
568- then throw((("Investement must be more than " + toString(aO)) + "% of supportes funds"))
569- else WriteSet([DataEntry(t(p), aD), DataEntry(O(p, j), bg), DataEntry(l(W(p)), (T(W(p)) + ak(p))), DataEntry(P(p), bc.amount)])
582+ else if ((((al(p) * aQ) / 100) > be.amount))
583+ then throw((("Investement must be more than " + toString(aQ)) + "% of supportes funds"))
584+ else WriteSet([DataEntry(t(p), aE), DataEntry(P(p, j), bi), DataEntry(l(X(p)), (U(X(p)) + al(p))), DataEntry(Q(p), be.amount)])
570585 }
571586
572587
573588
574-@Callable(aP)
589+@Callable(aR)
575590 func claimwinnings (p,j) = {
576- let aW = aa(p)
577- let bD = if ((aW == aD))
591+ let aY = ab(p)
592+ let bF = if ((aY == aE))
578593 then 1
579594 else 0
580- let bE = if ((aW != aD))
595+ let bG = if ((aY != aE))
581596 then 1
582597 else 0
583- let bF = ak(p)
584- let bG = al(p)
585- let bH = (((bD * (am(p, j) * 100)) / (if ((0 >= bF))
598+ let bH = al(p)
599+ let bI = am(p)
600+ let bJ = (((bF * (an(p, j) * 100)) / (if ((0 >= bH))
586601 then 1
587- else bF)) + ((bE * (an(p, j) * 100)) / (if ((0 >= bG))
602+ else bH)) + ((bG * (ao(p, j) * 100)) / (if ((0 >= bI))
588603 then 1
589- else bG)))
590- let bI = ((bG * aO) / 100)
591- let bJ = ((bD * ((bH * bG) / 100)) + (bE * ((bH * (if ((bF > bI))
592- then bI
593- else bF)) / 100)))
594- let bK = (bD * ((bH * as(p)) / 100))
595- let bL = (((if ((W(p) == j))
604+ else bI)))
605+ let bK = ((bI * aQ) / 100)
606+ let bL = ((bF * ((bJ * bI) / 100)) + (bG * ((bJ * (if ((bH > bK))
607+ then bK
608+ else bH)) / 100)))
609+ let bM = (bF * ((bJ * at(p)) / 100))
610+ let bN = (((if ((X(p) == j))
596611 then 1
597- else 0) * bF) * (if ((aW != aD))
612+ else 0) * bH) * (if ((aY != aE))
598613 then 1
599614 else 0))
600- if ((aW == aB))
615+ if ((aY == aC))
601616 then throw("The project hasn't accepted by community")
602- else if (if ((aW != aD))
603- then (ad(p) >= height)
617+ else if (if ((aY != aE))
618+ then (ae(p) >= height)
604619 else false)
605620 then throw("The time for grant has not expired yet")
606- else if ((0 >= (bF + bG)))
621+ else if ((0 >= (bH + bI)))
607622 then throw("The campaign wasn't active")
608- else WriteSet([DataEntry(l(j), (((T(j) + bJ) + bK) + bL)), DataEntry(t(p), if ((bL > 0))
609- then aC
610- else aW), DataEntry(C(p, j), aF)])
623+ else WriteSet([DataEntry(l(j), (((U(j) + bL) + bM) + bN)), DataEntry(t(p), if ((bN > 0))
624+ then aD
625+ else aY), DataEntry(D(p, j), aG)])
611626 }
612627
613628

github/deemru/w8io/3ef1775 
239.04 ms