tx · CSpS8oMzpVDqhXQHJ3TcMtg3oQbygFssLWtLbe3iz6gZ

3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT:  -0.01400000 Waves

2023.04.10 13:46 [2528380] smart account 3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT > SELF 0.00000000 Waves

{ "type": 13, "id": "CSpS8oMzpVDqhXQHJ3TcMtg3oQbygFssLWtLbe3iz6gZ", "fee": 1400000, "feeAssetId": null, "timestamp": 1681123638727, "version": 2, "chainId": 84, "sender": "3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT", "senderPublicKey": "86kQutchNhkrbHTdTXbAFXcJ8bPWQC8G4RGzAYcspLvb", "proofs": [ "4QJUm3GFRp3eJpp1Xf1v5iKFXvHSy7b7funu8seFAvHHyHFgN7f7gAttdpMggirHPqyKcEcSgg1kksFaVKEsPguJ" ], "script": "base64:AAIEAAAAAAAAABgIAhIFCgMIAQESAwoBARIDCgEBEgMKAQgAAAAHAAAAAA5BNEFTdGFraW5nREFwcAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQIAAAAjM042b1dMeVFZMmdNN1FVa1V2Qm1lMVJFbkE2ZDFWN3kzQVQAAAAAInZvdGluZ190aW1lc3RhbXBfY29udHJvbGxlcl9wdWJrZXkBAAAAIBu9S76H7YCzeS6A6ExALdu+B5uJ7eQOaVtSWu8sVA9tAAAAABJjb250cm9sbGVyX2FkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEFAAAAInZvdGluZ190aW1lc3RhbXBfY29udHJvbGxlcl9wdWJrZXkAAAAADGxhdW5jaF9lcnJvcgIAAAAkRGFwcCB3aWxsIHN0YXJ0IFZvdGluZyBhdCBUaW1lc3RhbXAgAAAAAANtc2cCAAAALjxoMT5Zb3VyIFZvdGUgU3VibWl0dGVkIFN1Y2Nlc3NmdWxseSE8L2gxPjxicj4AAAAAEUFscmVhZHlWb3RlZEVycm9yAgAAAD5UaGlzIEFkZHJlc3MgQWxyZWFkeSBwYXJ0aWNpcGF0ZWQgZm9yIFZvdGluZyBpbiB0aGlzIFByb3Bvc2FsLgAAAAAHdm90ZUVycgIAAAAdVm90aW5nIGlzIE92ZXIgZm9yIHRoaXMgRGFwcC4AAAAEAAAAAWkBAAAAE1NldFZvdGluZ1RpbWVTdGFtcHMAAAADAAAACFByb3Bvc2FsAAAAFlZvdGluZ19TdGFydF9UaW1lU3RhbXAAAAAUVm90aW5nX0VuZF9UaW1lU3RhbXAEAAAAB1N0YXJ0VFMFAAAAFlZvdGluZ19TdGFydF9UaW1lU3RhbXAEAAAABUVuZFRTBQAAABRWb3RpbmdfRW5kX1RpbWVTdGFtcAQAAAAGcHVia2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAFlByZXZpb3VzdG90YWxwcm9wb3NhbHMEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAAPVG90YWxfUHJvcG9zYWxzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAA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", "height": 2528380, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3F2Lrdvaefq6NudRSpLwTi5435uJqcoEEdpQLnqHggkg Next: 5Hwg6vHVTGjdHNMnK2PZzXYQkTRfwPPgr1a63jqo6bTS Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let A4A = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
5-
64 let A4AStakingDApp = addressFromStringValue("3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT")
75
86 let voting_timestamp_controller_pubkey = base58'2sHRUrJCMpDhAQEcN7Zhk3LqnD9zizebpxeQXpPoscQU'
1311
1412 let msg = "<h1>Your Vote Submitted Successfully!</h1><br>"
1513
16-let pymterror = "DApp Need 0.00000001 A4A Token as Attach payment[1]."
17-
18-let asseterr = (("Incorrect asset attach, please attach " + toBase58String(A4A)) + " AssetID Only.")
14+let AlreadyVotedError = "This Address Already participated for Voting in this Proposal."
1915
2016 let voteErr = "Voting is Over for this Dapp."
2117
3531 then throw("Subject Char Limits are Over. Reduce length less than 5100 Char.")
3632 else if ((i.caller != controller_address))
3733 then throw((("This Address is not Authorized. Only " + toString(controller_address)) + " is Authorized Address to Sign it."))
38- else [StringEntry(("Proposal_Text_" + toString(totalproposals)), Proposal), IntegerEntry("Total_Proposals", totalproposals), StringEntry(("Proposer_" + toString(totalproposals)), pubkey), IntegerEntry(("Voting_Start_TimeStamp_" + toString(totalproposals)), StartTS), IntegerEntry(("Voting_End_TimeStamp_" + toString(totalproposals)), EndTS)]
34+ else [StringEntry(("Proposal_Text_" + toString(totalproposals)), Proposal), IntegerEntry("Total_Proposals", totalproposals), StringEntry(("Proposer_" + toString(totalproposals)), pubkey), IntegerEntry(("Voting_Start_TimeStamp_" + toString(totalproposals)), StartTS), IntegerEntry(("Voting_End_TimeStamp_" + toString(totalproposals)), EndTS), IntegerEntry(("Total_No_" + toString(totalproposals)), 0), IntegerEntry(("Total_Yes_" + toString(totalproposals)), 0)]
3935 }
4036
4137
4642 let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
4743 let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
4844 let pubkey = toBase58String(i.caller.bytes)
49- let readA4AStakingAmount = getIntegerValue(A4AStakingDApp, ("Deposit_Amount_Of_" + pubkey))
45+ let readA4AStakingAmount = valueOrErrorMessage(getInteger(A4AStakingDApp, ("Deposit_Amount_Of_" + pubkey)), "Address not found in A4A Staking.")
5046 let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
5147 case a: Int =>
5248 a
6157 0
6258 }
6359 let ATVO = (FTVO + readA4AStakingAmount)
60+ let PreviousUserCountforVoting = match getInteger(this, ((pubkey + "_") + toString(Porposal_ID))) {
61+ case a: Int =>
62+ a
63+ case _ =>
64+ 0
65+ }
66+ let LatestUserCountforVoting = (PreviousUserCountforVoting + 1)
6467 if ((StartTS > lastBlock.timestamp))
6568 then throw((launch_error + toString(StartTS)))
6669 else if ((lastBlock.timestamp > EndTS))
6770 then throw(voteErr)
68- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
71+ else if ((LatestUserCountforVoting > 1))
72+ then throw(AlreadyVotedError)
73+ else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), IntegerEntry(((pubkey + "_") + toString(Porposal_ID)), LatestUserCountforVoting), StringEntry("message", msg)]
74+ }
75+
76+
77+
78+@Callable(i)
79+func No (Porposal_ID) = {
80+ let VoteAst = "No"
81+ let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
82+ let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
83+ let pubkey = toBase58String(i.caller.bytes)
84+ let readA4AStakingAmount = valueOrErrorMessage(getInteger(A4AStakingDApp, ("Deposit_Amount_Of_" + pubkey)), "Address not found in A4A Staking.")
85+ let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
86+ case a: Int =>
87+ a
88+ case _ =>
89+ 0
90+ }
91+ let totalvotes = (Previoustotalvotes + readA4AStakingAmount)
92+ let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
93+ case a: Int =>
94+ a
95+ case _ =>
96+ 0
97+ }
98+ let ATVO = (FTVO + readA4AStakingAmount)
99+ let PreviousUserCountforVoting = match getInteger(this, ((pubkey + "_") + toString(Porposal_ID))) {
100+ case a: Int =>
101+ a
102+ case _ =>
103+ 0
104+ }
105+ let LatestUserCountforVoting = (PreviousUserCountforVoting + 1)
106+ if ((StartTS > lastBlock.timestamp))
107+ then throw((launch_error + toString(StartTS)))
108+ else if ((lastBlock.timestamp > EndTS))
109+ then throw(voteErr)
110+ else if ((LatestUserCountforVoting > 1))
111+ then throw(AlreadyVotedError)
112+ else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), IntegerEntry(((pubkey + "_") + toString(Porposal_ID)), LatestUserCountforVoting), StringEntry("message", msg)]
69113 }
70114
71115
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let A4A = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
5-
64 let A4AStakingDApp = addressFromStringValue("3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT")
75
86 let voting_timestamp_controller_pubkey = base58'2sHRUrJCMpDhAQEcN7Zhk3LqnD9zizebpxeQXpPoscQU'
97
108 let controller_address = addressFromPublicKey(voting_timestamp_controller_pubkey)
119
1210 let launch_error = "Dapp will start Voting at Timestamp "
1311
1412 let msg = "<h1>Your Vote Submitted Successfully!</h1><br>"
1513
16-let pymterror = "DApp Need 0.00000001 A4A Token as Attach payment[1]."
17-
18-let asseterr = (("Incorrect asset attach, please attach " + toBase58String(A4A)) + " AssetID Only.")
14+let AlreadyVotedError = "This Address Already participated for Voting in this Proposal."
1915
2016 let voteErr = "Voting is Over for this Dapp."
2117
2218 @Callable(i)
2319 func SetVotingTimeStamps (Proposal,Voting_Start_TimeStamp,Voting_End_TimeStamp) = {
2420 let StartTS = Voting_Start_TimeStamp
2521 let EndTS = Voting_End_TimeStamp
2622 let pubkey = toBase58String(i.caller.bytes)
2723 let Previoustotalproposals = match getInteger(this, "Total_Proposals") {
2824 case a: Int =>
2925 a
3026 case _ =>
3127 0
3228 }
3329 let totalproposals = (Previoustotalproposals + 1)
3430 if ((size(Proposal) > 5100))
3531 then throw("Subject Char Limits are Over. Reduce length less than 5100 Char.")
3632 else if ((i.caller != controller_address))
3733 then throw((("This Address is not Authorized. Only " + toString(controller_address)) + " is Authorized Address to Sign it."))
38- else [StringEntry(("Proposal_Text_" + toString(totalproposals)), Proposal), IntegerEntry("Total_Proposals", totalproposals), StringEntry(("Proposer_" + toString(totalproposals)), pubkey), IntegerEntry(("Voting_Start_TimeStamp_" + toString(totalproposals)), StartTS), IntegerEntry(("Voting_End_TimeStamp_" + toString(totalproposals)), EndTS)]
34+ else [StringEntry(("Proposal_Text_" + toString(totalproposals)), Proposal), IntegerEntry("Total_Proposals", totalproposals), StringEntry(("Proposer_" + toString(totalproposals)), pubkey), IntegerEntry(("Voting_Start_TimeStamp_" + toString(totalproposals)), StartTS), IntegerEntry(("Voting_End_TimeStamp_" + toString(totalproposals)), EndTS), IntegerEntry(("Total_No_" + toString(totalproposals)), 0), IntegerEntry(("Total_Yes_" + toString(totalproposals)), 0)]
3935 }
4036
4137
4238
4339 @Callable(i)
4440 func Yes (Porposal_ID) = {
4541 let VoteAst = "Yes"
4642 let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
4743 let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
4844 let pubkey = toBase58String(i.caller.bytes)
49- let readA4AStakingAmount = getIntegerValue(A4AStakingDApp, ("Deposit_Amount_Of_" + pubkey))
45+ let readA4AStakingAmount = valueOrErrorMessage(getInteger(A4AStakingDApp, ("Deposit_Amount_Of_" + pubkey)), "Address not found in A4A Staking.")
5046 let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
5147 case a: Int =>
5248 a
5349 case _ =>
5450 0
5551 }
5652 let totalvotes = (Previoustotalvotes + readA4AStakingAmount)
5753 let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
5854 case a: Int =>
5955 a
6056 case _ =>
6157 0
6258 }
6359 let ATVO = (FTVO + readA4AStakingAmount)
60+ let PreviousUserCountforVoting = match getInteger(this, ((pubkey + "_") + toString(Porposal_ID))) {
61+ case a: Int =>
62+ a
63+ case _ =>
64+ 0
65+ }
66+ let LatestUserCountforVoting = (PreviousUserCountforVoting + 1)
6467 if ((StartTS > lastBlock.timestamp))
6568 then throw((launch_error + toString(StartTS)))
6669 else if ((lastBlock.timestamp > EndTS))
6770 then throw(voteErr)
68- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
71+ else if ((LatestUserCountforVoting > 1))
72+ then throw(AlreadyVotedError)
73+ else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), IntegerEntry(((pubkey + "_") + toString(Porposal_ID)), LatestUserCountforVoting), StringEntry("message", msg)]
74+ }
75+
76+
77+
78+@Callable(i)
79+func No (Porposal_ID) = {
80+ let VoteAst = "No"
81+ let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
82+ let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
83+ let pubkey = toBase58String(i.caller.bytes)
84+ let readA4AStakingAmount = valueOrErrorMessage(getInteger(A4AStakingDApp, ("Deposit_Amount_Of_" + pubkey)), "Address not found in A4A Staking.")
85+ let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
86+ case a: Int =>
87+ a
88+ case _ =>
89+ 0
90+ }
91+ let totalvotes = (Previoustotalvotes + readA4AStakingAmount)
92+ let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
93+ case a: Int =>
94+ a
95+ case _ =>
96+ 0
97+ }
98+ let ATVO = (FTVO + readA4AStakingAmount)
99+ let PreviousUserCountforVoting = match getInteger(this, ((pubkey + "_") + toString(Porposal_ID))) {
100+ case a: Int =>
101+ a
102+ case _ =>
103+ 0
104+ }
105+ let LatestUserCountforVoting = (PreviousUserCountforVoting + 1)
106+ if ((StartTS > lastBlock.timestamp))
107+ then throw((launch_error + toString(StartTS)))
108+ else if ((lastBlock.timestamp > EndTS))
109+ then throw(voteErr)
110+ else if ((LatestUserCountforVoting > 1))
111+ then throw(AlreadyVotedError)
112+ else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), IntegerEntry(((pubkey + "_") + toString(Porposal_ID)), LatestUserCountforVoting), StringEntry("message", msg)]
69113 }
70114
71115
72116
73117 @Callable(i)
74118 func DeleteKey (Key) = [DeleteEntry(Key)]
75119
76120
77121 @Verifier(tx)
78122 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
79123

github/deemru/w8io/873ac7e 
30.82 ms