tx · 6pKcdJdFiJwkFWiJLrW4R2z8BkJUTag7ogm1aFWtXmHS

3MzDGFvPnXVbA4wCacqcVnfVJPwG952KVAg:  -0.01400000 Waves

2021.12.21 19:35 [1844271] smart account 3MzDGFvPnXVbA4wCacqcVnfVJPwG952KVAg > SELF 0.00000000 Waves

{ "type": 13, "id": "6pKcdJdFiJwkFWiJLrW4R2z8BkJUTag7ogm1aFWtXmHS", "fee": 1400000, "feeAssetId": null, "timestamp": 1640104529033, "version": 2, "chainId": 84, "sender": "3MzDGFvPnXVbA4wCacqcVnfVJPwG952KVAg", "senderPublicKey": "CViCXhHrygDDAtVc1uFczxe6ANj9tBz5PGQDS1yWZqgy", "proofs": [ "aNbu48tNYxaMEbndA5X4r5TV1ynQzT7rk5PKiRGNmfCxVfJcYLPDViNX4LjwSvgXd7KiFkRJx1JdHn57d8YN7vJ", "3vEggQB86oc2Urq8R5dCmVHLntw5t47My1hAR6p7Nt1hnhVrHdmytpFLonnzPZrPwzVQAR4PVAaf3gQtWZXA5YAp" ], "script": "base64:AAIFAAAAAAAAABwIAhIECgIBCBIDCgEBEgMKAQESBAoCAQESABIAAAAASAAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAAD2tleUFkbWluUHViS2V5MQIAAAALYWRtaW5fcHViXzEAAAAAD2tleUFkbWluUHViS2V5MgIAAAALYWRtaW5fcHViXzIAAAAAD2tleUFkbWluUHViS2V5MwIAAAALYWRtaW5fcHViXzMAAAAAIWtleUxhdW5jaHBhZERhdGFUcmFuc2FjdGlvblN0YXR1cwIAAAAhbGF1bmNocGFkX2RhdGFfdHJhbnNhY3Rpb25fc3RhdHVzAAAAABJrZXlMYXVuY2hwYWROZXh0SWQCAAAAEWxhdW5jaHBhZF9uZXh0X2lkAAAAABRrZXlMYXVuY2hwYWRBY3RpdmVJZAIAAAATbGF1bmNocGFkX2FjdGl2ZV9pZAAAAAANa2V5SW5pdENhbGxlcgIAAAALaW5pdF9jYWxsZXIAAAAACmtleUFkZHJlc3MCAAAACF9hZGRyZXNzAAAAAA1rZXlJbml0SGVpZ2h0AgAAAAxfaW5pdF9oZWlnaHQAAAAADmtleVN0YXJ0SGVpZ2h0AgAAAA1fc3RhcnRfaGVpZ2h0AAAAABFrZXlGaW5hbGlzZUhlaWdodAIAAAAQX2ZpbmFsaXNlX2hlaWdodAAAAAAMa2V5Q29taXNzaW9uAgAAAApfY29taXNzaW9uAAAAAAprZXlBc3NldElkAgAAAAlfYXNzZXRfaWQAAAAAE2tleVRvdGFsVG9rZW5BbW91bnQCAAAAE190b3RhbF90b2tlbl9hbW91bnQAAAAAGmtleVRvdGFsQW1vdW50QnV5QXNzZXRTb2xkAgAAABVfdG90YWxfYnV5X2Fzc2V0X3NvbGQAAAAAEmtleVRva2Vuc1BlclRpY2tldAIAAAASX3Rva2Vuc19wZXJfdGlja2V0AAAAABBrZXlQcmljZVBlclRva2VuAgAAABBfcHJpY2VfcGVyX3Rva2VuAAAAABBrZXlTd29wUGVyVGlja2V0AgAAABBfc3dvcF9wZXJfdGlja2V0AAAAABZrZXlTd29wZmlUaWNrZXRzQW1vdW50AgAAABdfdGlja2V0c19zd29wZmlfbWVtYmVycwAAAAAXa2V5Q2FtcGFpZ25Ub2tlbnNBbW91bnQCAAAAE190b2tlbnNfYWNjZXNzX2xpc3QAAAAAFmtleVRva2Vuc1BlckFsbG9jYXRpb24CAAAAFl90b2tlbnNfcGVyX2FsbG9jYXRpb24AAAAAE2tleVRpY2tldExhc3ROdW1iZXICAAAAE190aWNrZXRfbGFzdF9udW1iZXIAAAAAE2tleUdvdmVybmFuY2VTdGFrZWQCAAAADF9TV09QX2Ftb3VudAAAAAAMa2V5VXNlclJlZklkAgAAAAdfcmVmX2lkAAAAAA1rZXlWZXJpZnlIYXNoAgAAAAxfdmVyaWZ5X2hhc2gAAAAAC2tleUR1cmF0aW9uAgAAAAlfZHVyYXRpb24AAAAAHGtleUFtb3VudEJ1eUFzc2V0SW5NYXJrZXRpbmcCAAAAJ190b3RhbF9wdXJjaGFzZWRfYnV5X2Fzc2V0X2luX21hcmtldGluZwAAAAAla2V5QW1vdW50QnV5QXNzZXRJbk1hcmtldGluZ0ZpbmFsaXplZAIAAAAxX3RvdGFsX3B1cmNoYXNlZF9idXlfYXNzZXRfaW5fbWFya2V0aW5nX2ZpbmFsaXplZAAAAAATa2V5VHJhbnNmZXJCdXlBc3NldAIAAAATX3RyYW5zZmVyX2J1eV9hc3NldAAAAAAUa2V5RnJlZXpTd29wRHVyYXRpb24CAAAAFV9mcmVlemVfc3dvcF9kdXJhdGlvbgAAAAAYa2V5RnJlZXplQWRkaXRpb25hbFRva2VuAgAAABhfZnJlZXplX2FkZGl0aW9uYWxfdG9rZW4AAAAAEGtleUZyZWV6ZVRva2VuSWQCAAAAEF9mcmVlemVfdG9rZW5faWQAAAAAFmtleUZyZWV6ZVRva2VuRHVyYXRpb24CAAAAFl9mcmVlemVfdG9rZW5fZHVyYXRpb24AAAAAF2tleUZyZWV6ZVRva2VuUGVyVGlja2V0AgAAABhfZnJlZXplX3Rva2VuX3Blcl90aWNrZXQAAAAAC2tleUJ1eVRva2VuAgAAAApfYnV5X3Rva2VuAAAAAA5rZXlDbGFpbVBhcmFtcwIAAAANX2NsYWltX3BhcmFtcwAAAAAba2V5SGlnaENvbXBldGl0aW9uQ29taXNzaW9uAgAAABtfaGlnaF9jb21wZXRpdGlvbl9jb21pc3Npb24AAAAAFmtleUhpZ2hDb21wZXRpdGlvblNhbGUCAAAAFl9oaWdoX2NvbXBldGl0aW9uX3NhbGUAAAAAFWtleUhDVGlja2V0TGFzdE51bWJlcgIAAAAkX2hpZ2hfY29tcGV0aXRpb25fdGlja2V0X2xhc3RfbnVtYmVyAAAAABhrZXlIaWdoQ29tcGV0aXRpb25BbW91bnQCAAAAGV90aWNrZXRzX2hpZ2hfY29tcGV0aXRpb24AAAAAHGtleVRvdGFsQW1vdW50QnV5QXNzZXRTb2xkSEMCAAAAJl90b3RhbF9idXlfYXNzZXRfc29sZF9oaWdoX2NvbXBldGl0aW9uAAAAABRrZXlVc2VyQ2xhaW1lZFRva2VucwIAAAAPX2NsYWltZWRfdG9rZW5zAAAAABdrZXlVc2VyQ2xhaW1lZEJ1eVRva2VucwIAAAATX2NsYWltZWRfYnV5X3Rva2VucwAAAAAaa2V5VXNlckJvdWdodFRpY2tldHNBbW91bnQCAAAAD19ib3VnaHRfdGlja2V0cwAAAAAOa2V5VXNlclRpY2tldHMCAAAAD190aWNrZXRzX251bWJlcgAAAAAQa2V5VXNlckhDVGlja2V0cwIAAAAgX3RpY2tldHNfbnVtYmVyX2hpZ2hfY29tcGV0aXRpb24AAAAAHGtleVVzZXJIQ0JvdWdodFRpY2tldHNBbW91bnQCAAAAIF9ib3VnaHRfdGlja2V0c19oaWdoX2NvbXBldGl0aW9uAAAAABtrZXlVc2VyQXZhaWxhYmxlQWxsb2NhdGlvbnMCAAAAHV9hdmFpbGFibGVfcHVyY2hhc2VfbWFya2V0aW5nAAAAACBrZXlVc2VyQW1vdW50QnV5QXNzZXRJbk1hcmtldGluZwIAAAAhX3B1cmNoYXNlZF9idXlfYXNzZXRfaW5fbWFya2V0aW5nAAAAABhrZXlVc2VyQm91Z2h0QWxsb2NhdGlvbnMCAAAAE19ib3VnaHRfYWxsb2NhdGlvbnMAAAAAEmtleVVzZXJDbGFpbVN0YXR1cwIAAAANX2NsYWltX3N0YXR1cwAAAAAaa2V5VXNlcldpbm5lZFRpY2tldHNBbW91bnQCAAAAD190aWNrZXRzX3Jlc3VsdAAAAAApa2V5VXNlcldpbm5lZEhpZ2hDb21wZXRpdGlvblRpY2tldHNBbW91bnQCAAAAIF90aWNrZXRzX3Jlc3Vs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AAAABmNhbGxlcgIAAAABXwkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAba2V5VXNlckF2YWlsYWJsZUFsbG9jYXRpb25zAAAAAAAAAAAABAAAAApjb21taXNzaW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAADGtleUNvbWlzc2lvbgQAAAASYWxsb3dlZEFsbG9jYXRpb25zCQABlwAAAAEJAARMAAAAAgUAAAARYm91Z2h0QWxsb2NhdGlvbnMJAARMAAAAAgUAAAAUYXdhaWxhYmxlQWxsb2NhdGlvbnMFAAAAA25pbAQAAAAKdG9rZW5QcmljZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABpAAAAAEFAAAAC2xhdW5jaHBhZElkBQAAABBrZXlQcmljZVBlclRva2VuBAAAAA90b2tlbnNQZXJUaWNrZXQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAASa2V5VG9rZW5zUGVyVGlja2V0BAAAAAskdDA3MDgwNzIyNAkBAAAAFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAIJAAGkAAAAAQUAAAALbGF1bmNocGFkSWQFAAAACmtleUFzc2V0SWQEAAAAB3Rva2VuSWQIBQAAAAskdDA3MDgwNzIyNAAAAAJfMQQAAAAPdG9rZW5TdHJBc3NldElkCAUAAAALJHQwNzA4MDcyMjQAAAACXzIEAAAADnRva2VuQXNzZXROYW1lCAUAAAALJHQwNzA4MDcyMjQAAAACXzMEAAAADXRva2VuRGVjaW1hbHMIBQAAAAskdDA3MDgwNzIyNAAAAAJfNAQAAAALdGlja2V0UHJpY2UJAABrAAAAAwUAAAAPdG9rZW5zUGVyVGlja2V0BQAAAAp0b2tlblByaWNlCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAADXRva2VuRGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAWa2V5VG9rZW5zUGVyQWxsb2NhdGlvbgQAAAAUdHJhbnNmZXJUb2tlbnNBbW91bnQJAABkAAAAAgkAAGQAAAACCQAAaAAAAAIFAAAADXdvbm5lZFRpY2tldHMFAAAAD3Rva2Vuc1BlclRpY2tldAkAAGgAAAACBQAAABJhbGxvd2VkQWxsb2NhdGlvbnMFAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24JAABoAAAAAgUAAAAPd29ubmVkSENUaWNrZXRzBQAAAA90b2tlbnNQZXJUaWNrZXQEAAAAG25vdEFsbG93ZWRBbGxvY2F0aW9uc1Rva2VucwkAAGgAAAACCQAAZQAAAAIFAAAAEWJvdWdodEFsbG9jYXRpb25zBQAAABJhbGxvd2VkQWxsb2NhdGlvbnMFAAAAE3Rva2Vuc1BlckFsbG9jYXRpb24EAAAAFmJ1eUFzc2V0Rm9yQWxsb2NhdGlvbnMJAABrAAAAAwkAAGsAAAADBQAAABtub3RBbGxvd2VkQWxsb2NhdGlvbnNUb2tlbnMFAAAACnRva2VuUHJpY2UJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAANdG9rZW5EZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgkAAGQAAAACAAAAAAAAAABkBQAAAApjb21taXNzaW9uAAAAAAAAAABkBAAAABpidXlBc3NldEZvclVud29ubmVkVGlja2V0cwkAAGsAAAADCQAAaAAAAAIJAABlAAAAAgUAAAANYm91Z2h0VGlja2V0cwUAAAANd29ubmVkVGlja2V0cwUAAAALdGlja2V0UHJpY2UJAABkAAAAAgAAAAAAAAAAZAUAAAAKY29tbWlzc2lvbgAAAAAAAAAAZAQAAAAcYnV5QXNzZXRGb3JIQ1Vud29ubmVkVGlja2V0cwkAAGsAAAADCQAAaAAAAAIJAABlAAAAAgUAAAAPYm91Z2h0SENUaWNrZXRzBQAAAA93b25uZWRIQ1RpY2tldHMFAAAAC3RpY2tldFByaWNlCQAAZAAAAAIAAAAAAAAAAGQFAAAACmNvbW1pc3Npb24AAAAAAAAAAGQEAAAAD2NsYWltZWRCdXlUb2tlbgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAABXwkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAXa2V5VXNlckNsYWltZWRCdXlUb2tlbnMAAAAAAAAAAAADAwMJAABmAAAAAgAAAAAAAAAAAAUAAAAWYnV5QXNzZXRGb3JBbGxvY2F0aW9ucwYJAABmAAAAAgAAAAAAAAAAAAUAAAAaYnV5QXNzZXRGb3JVbndvbm5lZFRpY2tldHMGCQAAZgAAAAIAAAAAAAAAAAAFAAAAHGJ1eUFzc2V0Rm9ySENVbndvbm5lZFRpY2tldHMJAAACAAAAAQIAAABSRXJyb3Igd2l0aCBhbGxvd2VkIGFsbG9jYXRpb24gcGFyYW0gb3Igd29ubmVkIHRpY2tldHMgcGFyYW0gcGxlYXNlIGNvbnRhY3Qgc3VwcG9ydAQAAAAWcmV0dXJuZWRCdXlBc3NldEFtb3VudAkAAGUAAAACCQAAZAAAAAIFAAAAGmJ1eUFzc2V0Rm9yVW53b25uZWRUaWNrZXRzBQAAABxidXlBc3NldEZvckhDVW53b25uZWRUaWNrZXRzBQAAAA9jbGFpbWVkQnV5VG9rZW4EAAAAEHRyYW5zZmVyQnV5QXNzZXQDCQAAZgAAAAIFAAAAFnJldHVybmVkQnV5QXNzZXRBbW91bnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABZyZXR1cm5lZEJ1eUFzc2V0QW1vdW50BQAAAApidXlBc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgIAAAABXwkAAaQAAAABBQAAAAtsYXVuY2hwYWRJZAUAAAAXa2V5VXNlckNsYWltZWRCdXlUb2tlbnMFAAAAFnJldHVybmVk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", "height": 1844271, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A64J1NzcnaKbcUQK3yJVstfDRm3nnbaR4nL1cr66h6Xb Next: 2Y8UoeoSppMRwT3DVT2aFy2n8MS9Px27UVXifkR4gsYG Diff:
OldNewDifferences
256256 else if ((claimedParams[0] == "claimPeriod"))
257257 then {
258258 let claimedTokens = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserClaimedTokens)), 0)
259- let startAmount = value(parseInt(claimedParams[0]))
260- let unlockPeriod = value(parseInt(claimedParams[0]))
261- let blockHeight = (value(parseInt(claimedParams[0])) + finalizeHeight)
259+ let startAmount = value(parseInt(claimedParams[1]))
260+ let unlockPeriod = value(parseInt(claimedParams[2]))
261+ let blockHeight = (value(parseInt(claimedParams[3])) + finalizeHeight)
262262 let unlockHeight = ((unlockPeriod + finalizeHeight) + blockHeight)
263- let allowedTokensAmount = (fraction(transferTokensAmount, value(parseInt(claimedParams[0])), 100) + (if ((height > blockHeight))
263+ let allowedTokensAmount = (fraction(transferTokensAmount, value(parseInt(claimedParams[1])), 100) + (if ((height > blockHeight))
264264 then fraction(transferTokensAmount, (height - blockHeight), unlockPeriod)
265265 else (0 - claimedTokens)))
266266 let claimStatusEntry = if ((transferTokensAmount >= (claimedTokens + allowedTokensAmount)))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let keyActive = "active"
55
66 let keyAdminPubKey1 = "admin_pub_1"
77
88 let keyAdminPubKey2 = "admin_pub_2"
99
1010 let keyAdminPubKey3 = "admin_pub_3"
1111
1212 let keyLaunchpadDataTransactionStatus = "launchpad_data_transaction_status"
1313
1414 let keyLaunchpadNextId = "launchpad_next_id"
1515
1616 let keyLaunchpadActiveId = "launchpad_active_id"
1717
1818 let keyInitCaller = "init_caller"
1919
2020 let keyAddress = "_address"
2121
2222 let keyInitHeight = "_init_height"
2323
2424 let keyStartHeight = "_start_height"
2525
2626 let keyFinaliseHeight = "_finalise_height"
2727
2828 let keyComission = "_comission"
2929
3030 let keyAssetId = "_asset_id"
3131
3232 let keyTotalTokenAmount = "_total_token_amount"
3333
3434 let keyTotalAmountBuyAssetSold = "_total_buy_asset_sold"
3535
3636 let keyTokensPerTicket = "_tokens_per_ticket"
3737
3838 let keyPricePerToken = "_price_per_token"
3939
4040 let keySwopPerTicket = "_swop_per_ticket"
4141
4242 let keySwopfiTicketsAmount = "_tickets_swopfi_members"
4343
4444 let keyCampaignTokensAmount = "_tokens_access_list"
4545
4646 let keyTokensPerAllocation = "_tokens_per_allocation"
4747
4848 let keyTicketLastNumber = "_ticket_last_number"
4949
5050 let keyGovernanceStaked = "_SWOP_amount"
5151
5252 let keyUserRefId = "_ref_id"
5353
5454 let keyVerifyHash = "_verify_hash"
5555
5656 let keyDuration = "_duration"
5757
5858 let keyAmountBuyAssetInMarketing = "_total_purchased_buy_asset_in_marketing"
5959
6060 let keyAmountBuyAssetInMarketingFinalized = "_total_purchased_buy_asset_in_marketing_finalized"
6161
6262 let keyTransferBuyAsset = "_transfer_buy_asset"
6363
6464 let keyFreezSwopDuration = "_freeze_swop_duration"
6565
6666 let keyFreezeAdditionalToken = "_freeze_additional_token"
6767
6868 let keyFreezeTokenId = "_freeze_token_id"
6969
7070 let keyFreezeTokenDuration = "_freeze_token_duration"
7171
7272 let keyFreezeTokenPerTicket = "_freeze_token_per_ticket"
7373
7474 let keyBuyToken = "_buy_token"
7575
7676 let keyClaimParams = "_claim_params"
7777
7878 let keyHighCompetitionComission = "_high_competition_comission"
7979
8080 let keyHighCompetitionSale = "_high_competition_sale"
8181
8282 let keyHCTicketLastNumber = "_high_competition_ticket_last_number"
8383
8484 let keyHighCompetitionAmount = "_tickets_high_competition"
8585
8686 let keyTotalAmountBuyAssetSoldHC = "_total_buy_asset_sold_high_competition"
8787
8888 let keyUserClaimedTokens = "_claimed_tokens"
8989
9090 let keyUserClaimedBuyTokens = "_claimed_buy_tokens"
9191
9292 let keyUserBoughtTicketsAmount = "_bought_tickets"
9393
9494 let keyUserTickets = "_tickets_number"
9595
9696 let keyUserHCTickets = "_tickets_number_high_competition"
9797
9898 let keyUserHCBoughtTicketsAmount = "_bought_tickets_high_competition"
9999
100100 let keyUserAvailableAllocations = "_available_purchase_marketing"
101101
102102 let keyUserAmountBuyAssetInMarketing = "_purchased_buy_asset_in_marketing"
103103
104104 let keyUserBoughtAllocations = "_bought_allocations"
105105
106106 let keyUserClaimStatus = "_claim_status"
107107
108108 let keyUserWinnedTicketsAmount = "_tickets_result"
109109
110110 let keyUserWinnedHighCompetitionTicketsAmount = "_tickets_result_high_competition"
111111
112112 let keyUserFreezeToken = "_freeze_token_amount"
113113
114114 let oracle = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
115115
116116 let governance = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
117117
118118 let commissionWallet = Address(base58'3N2hBdeDEs7wCNA9EY8qv3B6drjgKD64xQG')
119119
120120 let stakingUSDNAddress = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
121121
122122 let USDN = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
123123
124124 let adminPubKeyStaking = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
125125
126126 let maxAllocationsAmount = 2
127127
128128 let isActive = valueOrElse(getBoolean(this, keyActive), true)
129129
130130 let activeLaunchpadId = valueOrElse(getIntegerValue(this, keyLaunchpadActiveId), -1)
131131
132132 func getAdminPub (keyAdminPub) = match getString(oracle, keyAdminPub) {
133133 case string: String =>
134134 fromBase58String(string)
135135 case nothing =>
136136 throw("Admin public key is empty")
137137 }
138138
139139
140140 let adminPubKey1 = getAdminPub(keyAdminPubKey1)
141141
142142 let adminPubKey2 = getAdminPub(keyAdminPubKey2)
143143
144144 let adminPubKey3 = getAdminPub(keyAdminPubKey3)
145145
146146 func getAssetInfo (assetId) = match assetId {
147147 case id: ByteVector =>
148148 let stringId = toBase58String(id)
149149 let info = valueOrErrorMessage(assetInfo(id), (("Asset " + stringId) + " doesn't exist"))
150150 $Tuple3(stringId, info.name, info.decimals)
151151 case waves: Unit =>
152152 $Tuple3("WAVES", "WAVES", 8)
153153 case _ =>
154154 throw("Match error")
155155 }
156156
157157
158158 func getLaunchpadNextId () = valueOrElse(getInteger(this, keyLaunchpadNextId), 1)
159159
160160
161161 func stakedUsdnAmount () = valueOrElse(getInteger(stakingUSDNAddress, ((("rpd_balance_" + toBase58String(USDN)) + "_") + toString(this))), 0)
162162
163163
164164 func getAssetInfoFromString (assetStr) = if ((assetStr == "WAVES"))
165165 then $Tuple4(unit, "WAVES", "WAVES", 8)
166166 else {
167167 let stringId = assetStr
168168 let id = fromBase58String(assetStr)
169169 let info = valueOrErrorMessage(assetInfo(id), (("Asset " + stringId) + " doesn't exist"))
170170 $Tuple4(id, stringId, info.name, info.decimals)
171171 }
172172
173173
174174 @Callable(i)
175175 func hashingRandom (launchpadId,hash) = if (!(isActive))
176176 then throw("DApp is inactive at this moment")
177177 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
178178 then throw("Only admin can call this function")
179179 else [StringEntry((toString(launchpadId) + keyVerifyHash), hash)]
180180
181181
182182
183183 @Callable(i)
184184 func claim (launchpadId) = {
185185 let boughtTickets = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserBoughtTicketsAmount)), 0)
186186 let boughtHCTickets = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserHCBoughtTicketsAmount)), 0)
187187 let boughtAllocations = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserBoughtAllocations)), 0)
188188 let userClaimStatus = valueOrElse(getBoolean(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserClaimStatus)), false)
189189 let finalizeHeight = valueOrElse(getInteger(this, (toString(launchpadId) + keyFinaliseHeight)), 0)
190190 if (!(isActive))
191191 then throw("DApp is inactive at this moment")
192192 else if ((finalizeHeight == 0))
193193 then throw("You can't claim because results are not finalized")
194194 else if (userClaimStatus)
195195 then throw("You are already claimed")
196196 else if (if (if ((boughtTickets == 0))
197197 then (boughtAllocations == 0)
198198 else false)
199199 then (boughtHCTickets == 0)
200200 else false)
201201 then throw("You can't claim because you don't buy anything")
202202 else {
203203 let $t061266276 = getAssetInfoFromString(value(getString(this, (toString(launchpadId) + keyBuyToken))))
204204 let buyAssetId = $t061266276._1
205205 let buyAssetStrId = $t061266276._2
206206 let buyAssetName = $t061266276._3
207207 let buyAssetDecimals = $t061266276._4
208208 let wonnedTickets = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserWinnedTicketsAmount)), 0)
209209 let wonnedHCTickets = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserWinnedHighCompetitionTicketsAmount)), 0)
210210 let awailableAllocations = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserAvailableAllocations)), 0)
211211 let commission = getIntegerValue(this, (toString(launchpadId) + keyComission))
212212 let allowedAllocations = min([boughtAllocations, awailableAllocations])
213213 let tokenPrice = getIntegerValue(this, (toString(launchpadId) + keyPricePerToken))
214214 let tokensPerTicket = getIntegerValue(this, (toString(launchpadId) + keyTokensPerTicket))
215215 let $t070807224 = getAssetInfoFromString(getStringValue(this, (toString(launchpadId) + keyAssetId)))
216216 let tokenId = $t070807224._1
217217 let tokenStrAssetId = $t070807224._2
218218 let tokenAssetName = $t070807224._3
219219 let tokenDecimals = $t070807224._4
220220 let ticketPrice = fraction(tokensPerTicket, tokenPrice, pow(10, 0, tokenDecimals, 0, 0, DOWN))
221221 let tokensPerAllocation = getIntegerValue(this, (toString(launchpadId) + keyTokensPerAllocation))
222222 let transferTokensAmount = (((wonnedTickets * tokensPerTicket) + (allowedAllocations * tokensPerAllocation)) + (wonnedHCTickets * tokensPerTicket))
223223 let notAllowedAllocationsTokens = ((boughtAllocations - allowedAllocations) * tokensPerAllocation)
224224 let buyAssetForAllocations = fraction(fraction(notAllowedAllocationsTokens, tokenPrice, pow(10, 0, tokenDecimals, 0, 0, DOWN)), (100 + commission), 100)
225225 let buyAssetForUnwonnedTickets = fraction(((boughtTickets - wonnedTickets) * ticketPrice), (100 + commission), 100)
226226 let buyAssetForHCUnwonnedTickets = fraction(((boughtHCTickets - wonnedHCTickets) * ticketPrice), (100 + commission), 100)
227227 let claimedBuyToken = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserClaimedBuyTokens)), 0)
228228 if (if (if ((0 > buyAssetForAllocations))
229229 then true
230230 else (0 > buyAssetForUnwonnedTickets))
231231 then true
232232 else (0 > buyAssetForHCUnwonnedTickets))
233233 then throw("Error with allowed allocation param or wonned tickets param please contact support")
234234 else {
235235 let returnedBuyAssetAmount = ((buyAssetForUnwonnedTickets + buyAssetForHCUnwonnedTickets) - claimedBuyToken)
236236 let transferBuyAsset = if ((returnedBuyAssetAmount > 0))
237237 then [ScriptTransfer(i.caller, returnedBuyAssetAmount, buyAssetId), IntegerEntry((((toString(i.caller) + "_") + toString(launchpadId)) + keyUserClaimedBuyTokens), returnedBuyAssetAmount)]
238238 else nil
239239 let inv = if (if ((returnedBuyAssetAmount > 0))
240240 then (buyAssetId == USDN)
241241 else false)
242242 then invoke(stakingUSDNAddress, "unlockNeutrino", [returnedBuyAssetAmount, toBase58String(USDN)], nil)
243243 else 0
244244 if ((inv == inv))
245245 then {
246246 let claimedParams = split(valueOrElse(getString(this, (toString(launchpadId) + keyClaimParams)), ""), ",")
247247 if (if ((size(claimedParams) == 0))
248248 then true
249249 else (claimedParams[0] == "claimAll"))
250250 then {
251251 let transferTokens = if ((transferTokensAmount > 0))
252252 then [ScriptTransfer(i.caller, transferTokensAmount, tokenId)]
253253 else nil
254254 (([BooleanEntry((((toString(i.caller) + "_") + toString(launchpadId)) + keyUserClaimStatus), true), IntegerEntry((((toString(i.caller) + "_") + toString(launchpadId)) + keyUserClaimedTokens), transferTokensAmount)] ++ transferTokens) ++ transferBuyAsset)
255255 }
256256 else if ((claimedParams[0] == "claimPeriod"))
257257 then {
258258 let claimedTokens = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserClaimedTokens)), 0)
259- let startAmount = value(parseInt(claimedParams[0]))
260- let unlockPeriod = value(parseInt(claimedParams[0]))
261- let blockHeight = (value(parseInt(claimedParams[0])) + finalizeHeight)
259+ let startAmount = value(parseInt(claimedParams[1]))
260+ let unlockPeriod = value(parseInt(claimedParams[2]))
261+ let blockHeight = (value(parseInt(claimedParams[3])) + finalizeHeight)
262262 let unlockHeight = ((unlockPeriod + finalizeHeight) + blockHeight)
263- let allowedTokensAmount = (fraction(transferTokensAmount, value(parseInt(claimedParams[0])), 100) + (if ((height > blockHeight))
263+ let allowedTokensAmount = (fraction(transferTokensAmount, value(parseInt(claimedParams[1])), 100) + (if ((height > blockHeight))
264264 then fraction(transferTokensAmount, (height - blockHeight), unlockPeriod)
265265 else (0 - claimedTokens)))
266266 let claimStatusEntry = if ((transferTokensAmount >= (claimedTokens + allowedTokensAmount)))
267267 then [BooleanEntry((((toString(i.caller) + "_") + toString(launchpadId)) + keyUserClaimStatus), true)]
268268 else nil
269269 if (if ((allowedTokensAmount > 0))
270270 then true
271271 else (returnedBuyAssetAmount > 0))
272272 then {
273273 let transferTokens = if ((allowedTokensAmount > 0))
274274 then [IntegerEntry((((toString(i.caller) + "_") + toString(launchpadId)) + keyUserClaimedTokens), (claimedTokens + allowedTokensAmount)), ScriptTransfer(i.caller, allowedTokensAmount, tokenId)]
275275 else nil
276276 (transferBuyAsset ++ transferTokens)
277277 }
278278 else throw("Nothing to claim")
279279 }
280280 else throw("Error whith claim params: unknown function")
281281 }
282282 else throw("Strict value is not equal to itself.")
283283 }
284284 }
285285 }
286286
287287
288288
289289 @Callable(i)
290290 func claimFreezeToken (launchpadId) = {
291291 let freezeAdditionalToken = valueOrElse(getBoolean(this, (toString(launchpadId) + keyFreezeAdditionalToken)), false)
292292 if (!(isActive))
293293 then throw("DApp is inactive at this moment")
294294 else if (!(isDefined(getInteger(this, (toString(launchpadId) + keyFinaliseHeight)))))
295295 then throw("You can't claim because results are not finalized")
296296 else if (!(freezeAdditionalToken))
297297 then throw("There are no additional token freezing for this launchpad")
298298 else {
299299 let tokenId = fromBase58String(getStringValue(this, (toString(launchpadId) + keyFreezeTokenId)))
300300 let userTokensFreezed = valueOrElse(getInteger(this, (((toString(i.caller) + "_") + toString(launchpadId)) + keyUserFreezeToken)), 0)
301301 let startHeight = valueOrElse(getInteger(this, (toString(launchpadId) + keyStartHeight)), 0)
302302 let duration = valueOrElse(getInteger(this, (toString(launchpadId) + keyDuration)), 0)
303303 let freezeTokenDuration = getIntegerValue(this, (toString(launchpadId) + keyFreezeTokenDuration))
304304 let blockEndHeight = ((startHeight + duration) + freezeTokenDuration)
305305 if ((userTokensFreezed == 0))
306306 then throw("You are already claimed your tokens or not paid anything")
307307 else if ((blockEndHeight > height))
308308 then throw(("Your tokens freezed teel " + toString(blockEndHeight)))
309309 else [ScriptTransfer(i.caller, userTokensFreezed, tokenId), IntegerEntry((((toString(i.caller) + "_") + toString(launchpadId)) + keyUserFreezeToken), 0)]
310310 }
311311 }
312312
313313
314314
315315 @Callable(i)
316316 func transferBuyAsset (launchpadId,amount) = if (!(isActive))
317317 then throw("DApp is inactive")
318318 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
319319 then throw("Only admin can call this function")
320320 else {
321321 let projectAddress = addressFromStringValue(getStringValue(this, (toString(launchpadId) + keyAddress)))
322322 let $t01364513795 = getAssetInfoFromString(value(getString(this, (toString(launchpadId) + keyBuyToken))))
323323 let buyAssetId = $t01364513795._1
324324 let buyAssetStrId = $t01364513795._2
325325 let buyAssetName = $t01364513795._3
326326 let buyAssetDecimals = $t01364513795._4
327327 [IntegerEntry((toString(launchpadId) + keyTransferBuyAsset), amount), ScriptTransfer(projectAddress, amount, buyAssetId)]
328328 }
329329
330330
331331
332332 @Callable(i)
333333 func shutdown () = if (!(isActive))
334334 then throw("DApp already inactive")
335335 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
336336 then throw("Only admin can call this function")
337337 else [BooleanEntry(keyActive, false)]
338338
339339
340340
341341 @Callable(i)
342342 func activate () = if (isActive)
343343 then throw("DApp already active")
344344 else if (!(containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey)))
345345 then throw("Only admin can call this function")
346346 else [BooleanEntry(keyActive, true)]
347347
348348
349349 @Verifier(tx)
350350 func verify () = {
351351 let multiSignedByAdmins = {
352352 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
353353 then 1
354354 else 0
355355 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
356356 then 1
357357 else 0
358358 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
359359 then 1
360360 else 0
361361 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
362362 }
363363 let signedByAdmin = if (if (if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
364364 then true
365365 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey2))
366366 then true
367367 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey3))
368368 then true
369369 else sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKeyStaking)
370370 match tx {
371371 case dtx: DataTransaction =>
372372 if (valueOrElse(getBoolean(oracle, keyLaunchpadDataTransactionStatus), false))
373373 then signedByAdmin
374374 else false
375375 case _ =>
376376 multiSignedByAdmins
377377 }
378378 }
379379

github/deemru/w8io/026f985 
70.09 ms