tx · DpJ6F73LB42TawkjWSnaymnFSo8ZYetqZfrNZ7DQ9gKS 3NBB3iv7YDRsD8ZM2Pw2V5eTcsfqh3j2mvF: -0.01400000 Waves 2019.06.23 20:42 [555010] smart account 3NBB3iv7YDRsD8ZM2Pw2V5eTcsfqh3j2mvF > SELF 0.00000000 Waves
{ "type": 13, "id": "DpJ6F73LB42TawkjWSnaymnFSo8ZYetqZfrNZ7DQ9gKS", "fee": 1400000, "feeAssetId": null, "timestamp": 1561311724523, "version": 1, "sender": "3NBB3iv7YDRsD8ZM2Pw2V5eTcsfqh3j2mvF", "senderPublicKey": "9i5FpMUFCwhogG5euZDBZKV6NehQN4xX83qvNr8NWipE", "proofs": [ "5oTWi4gMjZaAdz3BTj2fGXaj3oRXQJDiK1csYK5Mm9DaXnYxtzAtC6wox7bxGKRQwp68DZQXao5sizhxEps7nMNE" ], "script": "base64:AAIDAAAAAAAAAAAAAABSAAAAAAROT05FAgAAAARub25lAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAAEmdldEtleVdoaXRlbGlzdFJlZgAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAd3bF9yZWZfBQAAAAdhY2NvdW50AQAAAB1nZXRLZXlXaGl0ZWxpc3RJbnZpdGF0aW9uRGF0YQAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAt3bF9pbnZkYXRhXwUAAAAHYWNjb3VudAEAAAAVZ2V0S2V5V2hpdGVsaXN0U3RhdHVzAAAAAQAAAAdhY2NvdW50CQABLAAAAAICAAAAB3dsX3N0c18FAAAAB2FjY291bnQBAAAADWdldEtleUJhbGFuY2UAAAABAAAAB2FjY291bnQJAAEsAAAAAgIAAAAIYmFsYW5jZV8FAAAAB2FjY291bnQBAAAAEmdldEtleVdoaXRlbGlzdEJpbwAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAd3bF9iaW9fBQAAAAdhY2NvdW50AQAAABRnZXRLZXlXaGl0ZWxpc3RCbG9jawAAAAEAAAAHYWNjb3VudAkAASwAAAACAgAAAAd3bF9ibGtfBQAAAAdhY2NvdW50AQAAABBnZXRLZXlJdGVtQXV0aG9yAAAAAQAAAARpdGVtCQABLAAAAAICAAAAB2F1dGhvcl8FAAAABGl0ZW0BAAAAD2dldEtleUl0ZW1CbG9jawAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAZibG9ja18FAAAABGl0ZW0BAAAAGmdldEtleUl0ZW1Wb3RpbmdFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQABLAAAAAICAAAAEWV4cGlyYXRpb25fYmxvY2tfBQAAAARpdGVtAQAAAA5nZXRLZXlJdGVtQmFuawAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAViYW5rXwUAAAAEaXRlbQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAdzdGF0dXNfBQAAAARpdGVtAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAlkYXRhanNvbl8FAAAABGl0ZW0BAAAAGWdldEtleUl0ZW1Dcm93ZEV4cGlyYXRpb24AAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAPZXhwaXJhdGlvbl9vbmVfBQAAAARpdGVtAQAAABlnZXRLZXlJdGVtV2hhbGVFeHBpcmF0aW9uAAAAAQAAAARpdGVtCQABLAAAAAICAAAAD2V4cGlyYXRpb25fdHdvXwUAAAAEaXRlbQEAAAASZ2V0S2V5SXRlbU5Db21taXRzAAAAAQAAAARpdGVtCQABLAAAAAICAAAACW5jb21taXRzXwUAAAAEaXRlbQEAAAATZ2V0S2V5SXRlbUFjY0NvbW1pdAAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdjb21taXRfBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABNnZXRLZXlJdGVtQWNjUmV2ZWFsAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAB3JldmVhbF8FAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAEmdldEtleUl0ZW1Wb3Rlc1llcwAAAAEAAAAEaXRlbQkAASwAAAACAgAAAAhjbnRfeWVzXwUAAAAEaXRlbQEAAAARZ2V0S2V5SXRlbVZvdGVzTm8AAAABAAAABGl0ZW0JAAEsAAAAAgIAAAAHY250X25vXwUAAAAEaXRlbQEAAAASZ2V0S2V5SXRlbUFjY0ZpbmFsAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABmZpbmFsXwUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAAWZ2V0S2V5SXRlbUZ1bmRQb3NpdGl2ZQAAAAEAAAAEaXRlbQkAASwAAAACAgAAAA5wb3NpdGl2ZV9mdW5kXwUAAAAEaXRlbQEAAAAWZ2V0S2V5SXRlbUZ1bmROZWdhdGl2ZQAAAAEAAAAEaXRlbQkAASwAAAACAgAAAA5uZWdhdGl2ZV9mdW5kXwUAAAAEaXRlbQEAAAAZZ2V0S2V5SXRlbUFjY0Z1bmRQb3NpdGl2ZQAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkBAAAAFmdldEtleUl0ZW1GdW5kUG9zaXRpdmUAAAABBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABlnZXRLZXlJdGVtQWNjRnVuZE5lZ2F0aXZlAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkAASwAAAACCQEAAAAWZ2V0S2V5SXRlbUZ1bmROZWdhdGl2ZQAAAAEFAAAABGl0ZW0CAAAAAV8FAAAAB2FjY291bnQBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdzQ250AAAAAgAAAARpdGVtAAAAB2FjY291bnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADHJldmlld3NfY250XwUAAAAEaXRlbQIAAAABXwUAAAAHYWNjb3VudAEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAdyZXZpZXdfBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3VGV4dAAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkAASwAAAACCQABLAAAAAIJAQAAABNnZXRLZXlJdGVtQWNjUmV2aWV3AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAIAAAAJX3RleHRfaWQ6BQAAAANjbnQBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdNb2RlAAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQABLAAAAAIJAAEsAAAAAgkBAAAAE2dldEtleUl0ZW1BY2NSZXZpZXcAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AgAAAAlfbW9kZV9pZDoFAAAAA2NudAEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld1RpZXIAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAAEsAAAAAgkAASwAAAACCQEAAAATZ2V0S2V5SXRlbUFjY1JldmlldwAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQCAAAACV90aWVyX2lkOgUAAAADY250AQAAABZnZXRLZXlJdGVtQnV5b3V0QW1vdW50AAAAAQAAAARpdGVtCQABLAAAAAICAAAADmJ1eW91dF9hbW91bnRfBQAAAARpdGVtAQAAABVnZXRLZXlJdGVtQWNjV2lubmluZ3MAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJd2lubmluZ3NfBQAAAARpdGVtAgAAAAFfBQAAAAdhY2NvdW50AQAAABRnZXRWYWx1ZVdoaXRlbGlzdFJlZgAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleVdoaXRlbGlzdFJlZgAAAAEFAAAAB2FjY291bnQBAAAAF2dldFZhbHVlV2hpdGVsaXN0U3RhdHVzAAAAAQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAVZ2V0S2V5V2hpdGVsaXN0U3RhdHVzAAAAAQUAAAAHYWNjb3VudAEAAAAPZ2V0VmFsdWVCYWxhbmNlAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAANZ2V0S2V5QmFsYW5jZQAAAAEFAAAAB2FjY291bnQBAAAAFGdldFZhbHVlV2hpdGVsaXN0QmlvAAAAAQAAAAdhY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAASZ2V0S2V5V2hpdGVsaXN0QmlvAAAAAQUAAAAHYWNjb3VudAEAAAAWZ2V0VmFsdWVXaGl0ZWxpc3RCbG9jawAAAAEAAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAFGdldEtleVdoaXRlbGlzdEJsb2NrAAAAAQUAAAAHYWNjb3VudAEAAAASZ2V0VmFsdWVJdGVtQXV0aG9yAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbUF1dGhvcgAAAAEFAAAABGl0ZW0BAAAAEWdldFZhbHVlSXRlbUJsb2NrAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0S2V5SXRlbUJsb2NrAAAAAQUAAAAEaXRlbQEAAAAcZ2V0VmFsdWVJdGVtVm90aW5nRXhwaXJhdGlvbgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGmdldEtleUl0ZW1Wb3RpbmdFeHBpcmF0aW9uAAAAAQUAAAAEaXRlbQEAAAAQZ2V0VmFsdWVJdGVtQmFuawAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAADmdldEtleUl0ZW1CYW5rAAAAAQUAAAAEaXRlbQEAAAASZ2V0VmFsdWVJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEFAAAABGl0ZW0BAAAAEGdldFZhbHVlSXRlbURhdGEAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEFAAAABGl0ZW0BAAAAG2dldFZhbHVlSXRlbUNyb3dkRXhwaXJhdGlvbgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGWdldEtleUl0ZW1Dcm93ZEV4cGlyYXRpb24AAAABBQAAAARpdGVtAQAAABtnZXRWYWx1ZUl0ZW1XaGFsZUV4cGlyYXRpb24AAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABlnZXRLZXlJdGVtV2hhbGVFeHBpcmF0aW9uAAAAAQUAAAAEaXRlbQEAAAAUZ2V0VmFsdWVJdGVtTkNvbW1pdHMAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtTkNvbW1pdHMAAAABBQAAAARpdGVtAQAAABVnZXRWYWx1ZUl0ZW1BY2NDb21taXQAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAE2dldEtleUl0ZW1BY2NDb21taXQAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AQAAABVnZXRWYWx1ZUl0ZW1BY2NSZXZlYWwAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAE2dldEtleUl0ZW1BY2NSZXZlYWwAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AQAAABRnZXRWYWx1ZUl0ZW1Wb3Rlc1llcwAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1Wb3Rlc1llcwAAAAEFAAAABGl0ZW0BAAAAE2dldFZhbHVlSXRlbVZvdGVzTm8AAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABFnZXRLZXlJdGVtVm90ZXNObwAAAAEFAAAABGl0ZW0BAAAAFGdldFZhbHVlSXRlbUFjY0ZpbmFsAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtQWNjRmluYWwAAAACBQAAAARpdGVtBQAAAAdhY2NvdW50AQAAABhnZXRWYWx1ZUl0ZW1GdW5kUG9zaXRpdmUAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRLZXlJdGVtRnVuZFBvc2l0aXZlAAAAAQUAAAAEaXRlbQEAAAAYZ2V0VmFsdWVJdGVtRnVuZE5lZ2F0aXZlAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAWZ2V0S2V5SXRlbUZ1bmROZWdhdGl2ZQAAAAEFAAAABGl0ZW0BAAAAG2dldFZhbHVlSXRlbUFjY0Z1bmRQb3NpdGl2ZQAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAZZ2V0S2V5SXRlbUFjY0Z1bmRQb3NpdGl2ZQAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAG2dldFZhbHVlSXRlbUFjY0Z1bmROZWdhdGl2ZQAAAAIAAAAEaXRlbQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAZZ2V0S2V5SXRlbUFjY0Z1bmROZWdhdGl2ZQAAAAIFAAAABGl0ZW0FAAAAB2FjY291bnQBAAAAGWdldFZhbHVlSXRlbUFjY1Jldmlld3NDbnQAAAACAAAABGl0ZW0AAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdzQ250AAAAAgUAAAAEaXRlbQUAAAAHYWNjb3VudAEAAAAZZ2V0VmFsdWVJdGVtQWNjUmV2aWV3VGV4dAAAAAMAAAAEaXRlbQAAAAdhY2NvdW50AAAAA2NudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAF2dldEtleUl0ZW1BY2NSZXZpZXdUZXh0AAAAAwUAAAAEaXRlbQUAAAAHYWNjb3VudAUAAAADY250AQAAABlnZXRWYWx1ZUl0ZW1BY2NSZXZpZXdNb2RlAAAAAwAAAARpdGVtAAAAB2FjY291bnQAAAADY250CQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAXZ2V0S2V5SXRlbUFjY1Jldmlld01vZGUAAAADBQAAAARpdGVtBQAAAAdhY2NvdW50BQAAAANjbnQBAAAAGWdldFZhbHVlSXRlbUFjY1Jldmlld1RpZXIAAAADAAAABGl0ZW0AAAAHYWNjb3VudAAAAANjbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABdnZXRLZXlJdGVtQWNjUmV2aWV3VGllcgAAAAMFAAAABGl0ZW0FAAAAB2FjY291bnQFAAAAA2NudAEAAAAYZ2V0VmFsdWVJdGVtQnV5b3V0QW1vdW50AAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAWZ2V0S2V5SXRlbUJ1eW91dEFtb3VudAAAAAEFAAAABGl0ZW0BAAAAF2dldFZhbHVlSXRlbUFjY1dpbm5pbmdzAAAAAgAAAARpdGVtAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABVnZXRLZXlJdGVtQWNjV2lubmluZ3MAAAACBQAAAARpdGVt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", "chainId": 84, "height": 555010, "spentComplexity": 0 } View: original | compacted Prev: none Next: EFnd6Gnt74Qd7ZXFFzDP9RzttDtE9roj8166LAWqGhTu Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let NONE = "none" | |
5 | + | ||
6 | + | func getNumberByKey (key) = { | |
7 | + | let num = match getInteger(this, key) { | |
8 | + | case a: Int => | |
9 | + | a | |
10 | + | case _ => | |
11 | + | 0 | |
12 | + | } | |
13 | + | num | |
14 | + | } | |
15 | + | ||
16 | + | ||
17 | + | func getStrByKey (key) = { | |
18 | + | let str = match getString(this, key) { | |
19 | + | case a: String => | |
20 | + | a | |
21 | + | case _ => | |
22 | + | NONE | |
23 | + | } | |
24 | + | str | |
25 | + | } | |
26 | + | ||
27 | + | ||
28 | + | func getKeyWhitelistRef (account) = ("wl_ref_" + account) | |
29 | + | ||
30 | + | ||
31 | + | func getKeyWhitelistInvitationData (account) = ("wl_invdata_" + account) | |
32 | + | ||
33 | + | ||
34 | + | func getKeyWhitelistStatus (account) = ("wl_sts_" + account) | |
35 | + | ||
36 | + | ||
37 | + | func getKeyBalance (account) = ("balance_" + account) | |
38 | + | ||
39 | + | ||
40 | + | func getKeyWhitelistBio (account) = ("wl_bio_" + account) | |
41 | + | ||
42 | + | ||
43 | + | func getKeyWhitelistBlock (account) = ("wl_blk_" + account) | |
44 | + | ||
45 | + | ||
46 | + | func getKeyItemAuthor (item) = ("author_" + item) | |
47 | + | ||
48 | + | ||
49 | + | func getKeyItemBlock (item) = ("block_" + item) | |
50 | + | ||
51 | + | ||
52 | + | func getKeyItemVotingExpiration (item) = ("expiration_block_" + item) | |
53 | + | ||
54 | + | ||
55 | + | func getKeyItemBank (item) = ("bank_" + item) | |
56 | + | ||
57 | + | ||
58 | + | func getKeyItemStatus (item) = ("status_" + item) | |
59 | + | ||
60 | + | ||
61 | + | func getKeyItemData (item) = ("datajson_" + item) | |
62 | + | ||
63 | + | ||
64 | + | func getKeyItemCrowdExpiration (item) = ("expiration_one_" + item) | |
65 | + | ||
66 | + | ||
67 | + | func getKeyItemWhaleExpiration (item) = ("expiration_two_" + item) | |
68 | + | ||
69 | + | ||
70 | + | func getKeyItemNCommits (item) = ("ncommits_" + item) | |
71 | + | ||
72 | + | ||
73 | + | func getKeyItemAccCommit (item,account) = ((("commit_" + item) + "_") + account) | |
74 | + | ||
75 | + | ||
76 | + | func getKeyItemAccReveal (item,account) = ((("reveal_" + item) + "_") + account) | |
77 | + | ||
78 | + | ||
79 | + | func getKeyItemVotesYes (item) = ("cnt_yes_" + item) | |
80 | + | ||
81 | + | ||
82 | + | func getKeyItemVotesNo (item) = ("cnt_no_" + item) | |
83 | + | ||
84 | + | ||
85 | + | func getKeyItemAccFinal (item,account) = ((("final_" + item) + "_") + account) | |
86 | + | ||
87 | + | ||
88 | + | func getKeyItemFundPositive (item) = ("positive_fund_" + item) | |
89 | + | ||
90 | + | ||
91 | + | func getKeyItemFundNegative (item) = ("negative_fund_" + item) | |
92 | + | ||
93 | + | ||
94 | + | func getKeyItemAccFundPositive (item,account) = ((getKeyItemFundPositive(item) + "_") + account) | |
95 | + | ||
96 | + | ||
97 | + | func getKeyItemAccFundNegative (item,account) = ((getKeyItemFundNegative(item) + "_") + account) | |
98 | + | ||
99 | + | ||
100 | + | func getKeyItemAccReviewsCnt (item,account) = ((("reviews_cnt_" + item) + "_") + account) | |
101 | + | ||
102 | + | ||
103 | + | func getKeyItemAccReview (item,account) = ((("review_" + item) + "_") + account) | |
104 | + | ||
105 | + | ||
106 | + | func getKeyItemAccReviewText (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_text_id:") + cnt) | |
107 | + | ||
108 | + | ||
109 | + | func getKeyItemAccReviewMode (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_mode_id:") + cnt) | |
110 | + | ||
111 | + | ||
112 | + | func getKeyItemAccReviewTier (item,account,cnt) = ((getKeyItemAccReview(item, account) + "_tier_id:") + cnt) | |
113 | + | ||
114 | + | ||
115 | + | func getKeyItemBuyoutAmount (item) = ("buyout_amount_" + item) | |
116 | + | ||
117 | + | ||
118 | + | func getKeyItemAccWinnings (item,account) = ((("winnings_" + item) + "_") + account) | |
119 | + | ||
120 | + | ||
121 | + | func getValueWhitelistRef (account) = getStrByKey(getKeyWhitelistRef(account)) | |
122 | + | ||
123 | + | ||
124 | + | func getValueWhitelistStatus (account) = getStrByKey(getKeyWhitelistStatus(account)) | |
125 | + | ||
126 | + | ||
127 | + | func getValueBalance (account) = getNumberByKey(getKeyBalance(account)) | |
128 | + | ||
129 | + | ||
130 | + | func getValueWhitelistBio (account) = getStrByKey(getKeyWhitelistBio(account)) | |
131 | + | ||
132 | + | ||
133 | + | func getValueWhitelistBlock (account) = getStrByKey(getKeyWhitelistBlock(account)) | |
134 | + | ||
135 | + | ||
136 | + | func getValueItemAuthor (item) = getStrByKey(getKeyItemAuthor(item)) | |
137 | + | ||
138 | + | ||
139 | + | func getValueItemBlock (item) = getNumberByKey(getKeyItemBlock(item)) | |
140 | + | ||
141 | + | ||
142 | + | func getValueItemVotingExpiration (item) = getNumberByKey(getKeyItemVotingExpiration(item)) | |
143 | + | ||
144 | + | ||
145 | + | func getValueItemBank (item) = getNumberByKey(getKeyItemBank(item)) | |
146 | + | ||
147 | + | ||
148 | + | func getValueItemStatus (item) = getStrByKey(getKeyItemStatus(item)) | |
149 | + | ||
150 | + | ||
151 | + | func getValueItemData (item) = getStrByKey(getKeyItemData(item)) | |
152 | + | ||
153 | + | ||
154 | + | func getValueItemCrowdExpiration (item) = getNumberByKey(getKeyItemCrowdExpiration(item)) | |
155 | + | ||
156 | + | ||
157 | + | func getValueItemWhaleExpiration (item) = getNumberByKey(getKeyItemWhaleExpiration(item)) | |
158 | + | ||
159 | + | ||
160 | + | func getValueItemNCommits (item) = getNumberByKey(getKeyItemNCommits(item)) | |
161 | + | ||
162 | + | ||
163 | + | func getValueItemAccCommit (item,account) = getStrByKey(getKeyItemAccCommit(item, account)) | |
164 | + | ||
165 | + | ||
166 | + | func getValueItemAccReveal (item,account) = getStrByKey(getKeyItemAccReveal(item, account)) | |
167 | + | ||
168 | + | ||
169 | + | func getValueItemVotesYes (item) = getNumberByKey(getKeyItemVotesYes(item)) | |
170 | + | ||
171 | + | ||
172 | + | func getValueItemVotesNo (item) = getNumberByKey(getKeyItemVotesNo(item)) | |
173 | + | ||
174 | + | ||
175 | + | func getValueItemAccFinal (item,account) = getStrByKey(getKeyItemAccFinal(item, account)) | |
176 | + | ||
177 | + | ||
178 | + | func getValueItemFundPositive (item) = getNumberByKey(getKeyItemFundPositive(item)) | |
179 | + | ||
180 | + | ||
181 | + | func getValueItemFundNegative (item) = getNumberByKey(getKeyItemFundNegative(item)) | |
182 | + | ||
183 | + | ||
184 | + | func getValueItemAccFundPositive (item,account) = getNumberByKey(getKeyItemAccFundPositive(item, account)) | |
185 | + | ||
186 | + | ||
187 | + | func getValueItemAccFundNegative (item,account) = getNumberByKey(getKeyItemAccFundNegative(item, account)) | |
188 | + | ||
189 | + | ||
190 | + | func getValueItemAccReviewsCnt (item,account) = getNumberByKey(getKeyItemAccReviewsCnt(item, account)) | |
191 | + | ||
192 | + | ||
193 | + | func getValueItemAccReviewText (item,account,cnt) = getStrByKey(getKeyItemAccReviewText(item, account, cnt)) | |
194 | + | ||
195 | + | ||
196 | + | func getValueItemAccReviewMode (item,account,cnt) = getStrByKey(getKeyItemAccReviewMode(item, account, cnt)) | |
197 | + | ||
198 | + | ||
199 | + | func getValueItemAccReviewTier (item,account,cnt) = getNumberByKey(getKeyItemAccReviewTier(item, account, cnt)) | |
200 | + | ||
201 | + | ||
202 | + | func getValueItemBuyoutAmount (item) = getNumberByKey(getKeyItemBuyoutAmount(item)) | |
203 | + | ||
204 | + | ||
205 | + | func getValueItemAccWinnings (item,account) = getNumberByKey(getKeyItemAccWinnings(item, account)) | |
206 | + | ||
207 | + | ||
208 | + | let WHITELISTED = "whitelisted" | |
209 | + | ||
210 | + | let NEW = "new" | |
211 | + | ||
212 | + | let COMMIT = "voting_commit" | |
213 | + | ||
214 | + | let REVEAL = "voting_reveal" | |
215 | + | ||
216 | + | let FEATURED = "featured" | |
217 | + | ||
218 | + | let DELISTED = "delisted" | |
219 | + | ||
220 | + | let CASHOUT = "cashout" | |
221 | + | ||
222 | + | let BUYOUT = "buyout" | |
223 | + | ||
224 | + | let FINISHED = "finished" | |
225 | + | ||
226 | + | let CLAIMED = "claimed" | |
227 | + | ||
228 | + | let POSITIVE = "positive" | |
229 | + | ||
230 | + | let NEGATIVE = "negative" | |
231 | + | ||
232 | + | let GENESIS = "3Ms9dv5wrt3kPXeT2g9yLM2LhS33CT7iuiQ" | |
233 | + | ||
234 | + | let VOTERS = 3 | |
235 | + | ||
236 | + | let QUORUM = 2 | |
237 | + | ||
238 | + | let LISTINGFEE = (500000000 / 1000) | |
239 | + | ||
240 | + | let VOTEBET = (150000000 / 1000) | |
241 | + | ||
242 | + | let TIERS = [10, 50, 250, 1250, 6250] | |
243 | + | ||
244 | + | let MULTIPLIER = 150 | |
245 | + | ||
246 | + | @Callable(i) | |
247 | + | func inviteuser (newaccount,data) = { | |
248 | + | let account = toBase58String(i.caller.bytes) | |
249 | + | if ((getValueWhitelistRef(newaccount) != NONE)) | |
250 | + | then throw("User has already been invited") | |
251 | + | else if (if ((getKeyWhitelistStatus(account) != WHITELISTED)) | |
252 | + | then (account != GENESIS) | |
253 | + | else false) | |
254 | + | then throw("Your account should be whitelisted") | |
255 | + | else WriteSet([DataEntry(getKeyWhitelistRef(newaccount), account), DataEntry(getKeyWhitelistInvitationData(newaccount), data)]) | |
256 | + | } | |
257 | + | ||
258 | + | ||
259 | + | ||
260 | + | @Callable(i) | |
261 | + | func signup (data) = { | |
262 | + | let account = toBase58String(i.caller.bytes) | |
263 | + | if ((getKeyWhitelistRef(account) == NONE)) | |
264 | + | then throw("Referral invite needed") | |
265 | + | else WriteSet([DataEntry(getKeyWhitelistBio(account), data), DataEntry(getKeyWhitelistBlock(account), height), DataEntry(getKeyWhitelistStatus(account), WHITELISTED)]) | |
266 | + | } | |
267 | + | ||
268 | + | ||
269 | + | ||
270 | + | @Callable(i) | |
271 | + | func withdraw () = { | |
272 | + | let currentKey = toBase58String(i.caller.bytes) | |
273 | + | let amount = getValueBalance(currentKey) | |
274 | + | if ((0 >= amount)) | |
275 | + | then throw("Not enough balance") | |
276 | + | else ScriptResult(WriteSet([DataEntry(getKeyBalance(currentKey), 0)]), TransferSet([ScriptTransfer(i.caller, amount, unit)])) | |
277 | + | } | |
278 | + | ||
279 | + | ||
280 | + | ||
281 | + | @Callable(i) | |
282 | + | func additem (item,expVoting,expCrowd,expWhale,data) = { | |
283 | + | let account = toBase58String(i.caller.bytes) | |
284 | + | let pmt = extract(i.payment) | |
285 | + | if (isDefined(pmt.assetId)) | |
286 | + | then throw("can use waves only at the moment") | |
287 | + | else if ((pmt.amount != LISTINGFEE)) | |
288 | + | then throw("Please pay exact amount for the listing") | |
289 | + | else if (if (if ((expVoting > 2)) | |
290 | + | then (expCrowd > 3) | |
291 | + | else false) | |
292 | + | then (expWhale > 4) | |
293 | + | else false) | |
294 | + | then throw("Incorrect time parameters") | |
295 | + | else if ((getValueItemAuthor(item) != NONE)) | |
296 | + | then throw("Item already exist") | |
297 | + | else WriteSet([DataEntry(getKeyItemAuthor(item), account), DataEntry(getKeyItemBlock(item), height), DataEntry(getKeyItemVotingExpiration(item), (height + expVoting)), DataEntry(getKeyItemBank(item), LISTINGFEE), DataEntry(getKeyItemStatus(item), NEW), DataEntry(getKeyItemData(item), data), DataEntry(getKeyItemCrowdExpiration(item), (height + expCrowd)), DataEntry(getKeyItemWhaleExpiration(item), (height + expWhale))]) | |
298 | + | } | |
299 | + | ||
300 | + | ||
301 | + | ||
302 | + | @Callable(i) | |
303 | + | func votecommit (item,hash) = { | |
304 | + | let account = toBase58String(i.caller.bytes) | |
305 | + | let commits = getValueItemNCommits(item) | |
306 | + | let status = getValueItemStatus(item) | |
307 | + | let pmt = extract(i.payment) | |
308 | + | if (isDefined(pmt.assetId)) | |
309 | + | then throw("can use waves only at the moment") | |
310 | + | else if ((pmt.amount != (2 * VOTEBET))) | |
311 | + | then throw("Not enough funds to vote for a new item") | |
312 | + | else if ((height > getValueItemVotingExpiration(item))) | |
313 | + | then throw("The voting has expired") | |
314 | + | else if ((getValueItemAuthor(item) == account)) | |
315 | + | then throw("Cannot vote for own proposal") | |
316 | + | else if (if ((status != NEW)) | |
317 | + | then (status != COMMIT) | |
318 | + | else false) | |
319 | + | then throw("Wrong item status for 'commit' action") | |
320 | + | else if ((commits >= VOTERS)) | |
321 | + | then throw("No more voters for this item") | |
322 | + | else if ((getValueItemAccCommit(item, account) != NONE)) | |
323 | + | then throw("Can't vote twice") | |
324 | + | else WriteSet([DataEntry(getKeyItemStatus(item), if (((commits + 1) == VOTERS)) | |
325 | + | then REVEAL | |
326 | + | else COMMIT), DataEntry(getKeyItemAccCommit(item, account), hash), DataEntry(getKeyItemNCommits(item), (commits + 1))]) | |
327 | + | } | |
328 | + | ||
329 | + | ||
330 | + | ||
331 | + | @Callable(i) | |
332 | + | func votereveal (item,vote,salt) = { | |
333 | + | let ridehash = toBase58String(sha256(toBytes((vote + salt)))) | |
334 | + | let account = toBase58String(i.caller.bytes) | |
335 | + | let yesmltp = if ((vote == FEATURED)) | |
336 | + | then 1 | |
337 | + | else 0 | |
338 | + | let notmltp = if ((vote == DELISTED)) | |
339 | + | then 1 | |
340 | + | else 0 | |
341 | + | let yescnt = getValueItemVotesYes(item) | |
342 | + | let notcnt = getValueItemVotesNo(item) | |
343 | + | let newstatus = if ((yescnt >= QUORUM)) | |
344 | + | then FEATURED | |
345 | + | else if ((notcnt >= QUORUM)) | |
346 | + | then DELISTED | |
347 | + | else REVEAL | |
348 | + | if ((getValueItemAccCommit(item, account) != ridehash)) | |
349 | + | then throw("Hashes don't match") | |
350 | + | else if ((height > getValueItemVotingExpiration(item))) | |
351 | + | then throw("The challenge has expired") | |
352 | + | else if ((VOTERS > getValueItemNCommits(item))) | |
353 | + | then throw("It's still commit stage") | |
354 | + | else if (if ((getValueItemStatus(item) != REVEAL)) | |
355 | + | then (getValueItemStatus(item) != newstatus) | |
356 | + | else false) | |
357 | + | then throw("Wrong item status for 'reveal' action") | |
358 | + | else if ((getValueItemAccReveal(item, account) != NONE)) | |
359 | + | then throw("Can't vote twice") | |
360 | + | else if (if ((vote != FEATURED)) | |
361 | + | then (vote != DELISTED) | |
362 | + | else false) | |
363 | + | then throw("Bad vote result format") | |
364 | + | else WriteSet([DataEntry(getKeyItemAccReveal(item, account), vote), DataEntry(getKeyItemVotesYes(item), (yescnt + yesmltp)), DataEntry(getKeyItemVotesNo(item), (notcnt + notmltp)), DataEntry(getKeyItemStatus(item), newstatus), DataEntry(getKeyBalance(account), (getValueBalance(account) + VOTEBET))]) | |
365 | + | } | |
366 | + | ||
367 | + | ||
368 | + | ||
369 | + | @Callable(i) | |
370 | + | func finalizevoting (item,account) = { | |
371 | + | let yescnt = getValueItemVotesYes(item) | |
372 | + | let notcnt = getValueItemVotesNo(item) | |
373 | + | let accvote = getValueItemAccReveal(item, account) | |
374 | + | let isauthor = (account == getValueItemAuthor(item)) | |
375 | + | let finalstatus = if ((yescnt > QUORUM)) | |
376 | + | then FEATURED | |
377 | + | else if ((notcnt > QUORUM)) | |
378 | + | then DELISTED | |
379 | + | else NONE | |
380 | + | let mltisnotfullmajority = if (if ((yescnt == VOTERS)) | |
381 | + | then true | |
382 | + | else (notcnt == VOTERS)) | |
383 | + | then 0 | |
384 | + | else 1 | |
385 | + | let nwinners = if ((finalstatus == FEATURED)) | |
386 | + | then yescnt | |
387 | + | else if ((finalstatus == DELISTED)) | |
388 | + | then notcnt | |
389 | + | else 0 | |
390 | + | let nloosers = (VOTERS - nwinners) | |
391 | + | let mltacciswinner = if ((finalstatus == accvote)) | |
392 | + | then 1 | |
393 | + | else 0 | |
394 | + | let voteprofit = if ((nwinners == 0)) | |
395 | + | then 0 | |
396 | + | else (mltacciswinner * (VOTEBET + ((mltisnotfullmajority * ((nloosers * VOTEBET) + LISTINGFEE)) / nwinners))) | |
397 | + | let authorreturn = (((LISTINGFEE * (if (isauthor) | |
398 | + | then 1 | |
399 | + | else 0)) * (if ((mltisnotfullmajority == 1)) | |
400 | + | then 0 | |
401 | + | else 1)) * (if ((finalstatus == FEATURED)) | |
402 | + | then 1 | |
403 | + | else 0)) | |
404 | + | if ((getValueItemVotingExpiration(item) > height)) | |
405 | + | then throw("The voting hasn't finished yet") | |
406 | + | else if ((getValueItemAccFinal(item, account) == FINISHED)) | |
407 | + | then throw("Account has already claimed") | |
408 | + | else if (if ((accvote == NONE)) | |
409 | + | then !(isauthor) | |
410 | + | else false) | |
411 | + | then throw("Account hasnot voted, hasnot reveal or isnot author") | |
412 | + | else if ((finalstatus == NONE)) | |
413 | + | then throw("Voting has expired") | |
414 | + | else WriteSet([DataEntry(getKeyItemAccFinal(item, account), FINISHED), DataEntry(getKeyBalance(account), ((getValueBalance(account) + voteprofit) + authorreturn))]) | |
415 | + | } | |
416 | + | ||
417 | + | ||
418 | + | ||
419 | + | @Callable(i) | |
420 | + | func closeexpiredvoting (item,account) = { | |
421 | + | let finalstatus = if ((getValueItemVotesYes(item) > QUORUM)) | |
422 | + | then FEATURED | |
423 | + | else if ((getValueItemVotesNo(item) > QUORUM)) | |
424 | + | then DELISTED | |
425 | + | else NONE | |
426 | + | let accvote = getValueItemAccReveal(item, account) | |
427 | + | let isauthor = (account == getValueItemAuthor(item)) | |
428 | + | let acccomi = getValueItemAccCommit(item, account) | |
429 | + | let hasrevealstage = (getValueItemNCommits(item) == VOTERS) | |
430 | + | let authorreturn = (LISTINGFEE * (if (isauthor) | |
431 | + | then 1 | |
432 | + | else 0)) | |
433 | + | let votersreturn1 = ((VOTEBET * (if (hasrevealstage) | |
434 | + | then 1 | |
435 | + | else 0)) * (if ((accvote != NONE)) | |
436 | + | then 1 | |
437 | + | else 0)) | |
438 | + | let votersreturn2 = (((2 * VOTEBET) * (if (hasrevealstage) | |
439 | + | then 0 | |
440 | + | else 1)) * (if ((acccomi != NONE)) | |
441 | + | then 1 | |
442 | + | else 0)) | |
443 | + | if ((getValueItemVotingExpiration(item) > height)) | |
444 | + | then throw("The voting hasn't finished yet") | |
445 | + | else if (if (!(isauthor)) | |
446 | + | then (acccomi == NONE) | |
447 | + | else false) | |
448 | + | then throw("Wrong account or item") | |
449 | + | else if ((getValueItemAccFinal(item, account) == FINISHED)) | |
450 | + | then throw("Account has already claimed") | |
451 | + | else if ((finalstatus != NONE)) | |
452 | + | then throw("Wrong item status") | |
453 | + | else WriteSet([DataEntry(getKeyItemAccFinal(item, account), FINISHED), DataEntry(getKeyBalance(account), (((getValueBalance(account) + authorreturn) + votersreturn1) + votersreturn2))]) | |
454 | + | } | |
455 | + | ||
456 | + | ||
457 | + | ||
458 | + | @Callable(i) | |
459 | + | func donate (item,tier,mode,review) = { | |
460 | + | let account = toBase58String(i.caller.bytes) | |
461 | + | let pmt = extract(i.payment) | |
462 | + | if (isDefined(pmt.assetId)) | |
463 | + | then throw("can use waves only at the moment") | |
464 | + | else { | |
465 | + | let cnt = (getValueItemAccReviewsCnt(item, account) + 1) | |
466 | + | let newnegativefund = (getValueItemFundNegative(item) + ((if ((mode == NEGATIVE)) | |
467 | + | then 1 | |
468 | + | else 0) * pmt.amount)) | |
469 | + | let newpositivefund = (getValueItemFundPositive(item) + ((if ((mode == POSITIVE)) | |
470 | + | then 1 | |
471 | + | else 0) * pmt.amount)) | |
472 | + | if ((getValueItemStatus(item) != FEATURED)) | |
473 | + | then throw("The project hasn't accepted by community") | |
474 | + | else if ((height >= getValueItemCrowdExpiration(item))) | |
475 | + | then throw("The time for crowdfunding has expired") | |
476 | + | else if ((newnegativefund >= newpositivefund)) | |
477 | + | then throw("Negative fund can't be higher than positive fund") | |
478 | + | else if (if ((mode != POSITIVE)) | |
479 | + | then (mode != NEGATIVE) | |
480 | + | else false) | |
481 | + | then throw("Wrong mode parameter") | |
482 | + | else if ((getValueItemAuthor(item) == account)) | |
483 | + | then throw("Can't donate own project") | |
484 | + | else if ((pmt.amount != TIERS[(tier - 1)])) | |
485 | + | then throw(("The payment must be equal to tier amount: " + toString(TIERS[(tier - 1)]))) | |
486 | + | else WriteSet([DataEntry(getKeyItemAccReviewsCnt(item, account), cnt), DataEntry(getKeyItemAccFundPositive(item, account), (getValueItemAccFundPositive(item, account) + ((if ((mode == POSITIVE)) | |
487 | + | then 1 | |
488 | + | else 0) * pmt.amount))), DataEntry(getKeyItemAccFundNegative(item, account), (getValueItemAccFundNegative(item, account) + ((if ((mode == NEGATIVE)) | |
489 | + | then 1 | |
490 | + | else 0) * pmt.amount))), DataEntry(getKeyItemFundPositive(item), newpositivefund), DataEntry(getKeyItemFundNegative(item), newnegativefund), DataEntry(getKeyItemAccReviewText(item, account, toString(cnt)), review), DataEntry(getKeyItemAccReviewMode(item, account, toString(cnt)), mode), DataEntry(getKeyItemAccReviewTier(item, account, toString(cnt)), tier)]) | |
491 | + | } | |
492 | + | } | |
493 | + | ||
494 | + | ||
495 | + | ||
496 | + | @Callable(i) | |
497 | + | func whale (item) = { | |
498 | + | let pmt = extract(i.payment) | |
499 | + | if (isDefined(pmt.assetId)) | |
500 | + | then throw("can use waves only at the moment") | |
501 | + | else if ((getValueItemStatus(item) != FEATURED)) | |
502 | + | then throw("The project hasn't accepted by community") | |
503 | + | else if ((getValueItemCrowdExpiration(item) > height)) | |
504 | + | then throw("The time for crowdfunding has not expired yet") | |
505 | + | else if ((height > getValueItemWhaleExpiration(item))) | |
506 | + | then throw("The time for grant has expired") | |
507 | + | else if ((getValueItemStatus(item) == BUYOUT)) | |
508 | + | then throw("Investement has already done") | |
509 | + | else if ((((getValueItemFundPositive(item) * MULTIPLIER) / 100) > pmt.amount)) | |
510 | + | then throw((("Investement must be more than " + toString(MULTIPLIER)) + "% of supportes funds")) | |
511 | + | else WriteSet([DataEntry(getKeyItemStatus(item), BUYOUT), DataEntry(getKeyBalance(getValueItemAuthor(item)), (getValueBalance(getValueItemAuthor(item)) + getValueItemFundPositive(item))), DataEntry(getKeyItemBuyoutAmount(item), pmt.amount)]) | |
512 | + | } | |
513 | + | ||
514 | + | ||
515 | + | ||
516 | + | @Callable(i) | |
517 | + | func claimwinnings (item,account) = { | |
518 | + | let status = getValueItemStatus(item) | |
519 | + | let isbayout = if ((status == BUYOUT)) | |
520 | + | then 1 | |
521 | + | else 0 | |
522 | + | let iscrowdf = if ((status != BUYOUT)) | |
523 | + | then 1 | |
524 | + | else 0 | |
525 | + | let positivefund = getValueItemFundPositive(item) | |
526 | + | let negativefund = getValueItemFundNegative(item) | |
527 | + | let share = (((isbayout * (getValueItemAccFundPositive(item, account) * 100)) / (if ((0 >= positivefund)) | |
528 | + | then 1 | |
529 | + | else positivefund)) + ((iscrowdf * (getValueItemAccFundNegative(item, account) * 100)) / (if ((0 >= negativefund)) | |
530 | + | then 1 | |
531 | + | else negativefund))) | |
532 | + | let tmpnegwin = ((negativefund * MULTIPLIER) / 100) | |
533 | + | let betprofit = ((isbayout * ((share * negativefund) / 100)) + (iscrowdf * ((share * (if ((positivefund > tmpnegwin)) | |
534 | + | then tmpnegwin | |
535 | + | else positivefund)) / 100))) | |
536 | + | let roiprofit = (isbayout * ((share * getValueItemBuyoutAmount(item)) / 100)) | |
537 | + | let authorprofit = (((if ((getValueItemAuthor(item) == account)) | |
538 | + | then 1 | |
539 | + | else 0) * positivefund) * (if ((status != BUYOUT)) | |
540 | + | then 1 | |
541 | + | else 0)) | |
542 | + | if ((status == DELISTED)) | |
543 | + | then throw("The project hasn't accepted by community") | |
544 | + | else if (if ((status != BUYOUT)) | |
545 | + | then (getValueItemWhaleExpiration(item) >= height) | |
546 | + | else false) | |
547 | + | then throw("The time for grant has not expired yet") | |
548 | + | else if ((0 >= (positivefund + negativefund))) | |
549 | + | then throw("The campaign wasn't active") | |
550 | + | else WriteSet([DataEntry(getKeyBalance(account), (((getValueBalance(account) + betprofit) + roiprofit) + authorprofit)), DataEntry(getKeyItemStatus(item), if ((authorprofit > 0)) | |
551 | + | then CASHOUT | |
552 | + | else status), DataEntry(getKeyItemAccFinal(item, account), CLAIMED)]) | |
553 | + | } | |
554 | + | ||
555 | + |
github/deemru/w8io/169f3d6 34.86 ms ◑![]()