tx · GGzAuvHnfpMgBNmRK73AonzjT7H8eU8wVqiGmZAkXEga

3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT:  -0.01400000 Waves

2023.04.10 12:49 [2528320] smart account 3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT > SELF 0.00000000 Waves

{ "type": 13, "id": "GGzAuvHnfpMgBNmRK73AonzjT7H8eU8wVqiGmZAkXEga", "fee": 1400000, "feeAssetId": null, "timestamp": 1681120182230, "version": 2, "chainId": 84, "sender": "3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT", "senderPublicKey": "86kQutchNhkrbHTdTXbAFXcJ8bPWQC8G4RGzAYcspLvb", "proofs": [ "zmaNUVv7gaGkkYqkRWYjBVD5TJ1iZ8MPnscXwek9hL2zPLBPEQL5akrBGQTS27hkkViAnfGh5f1qXUEQbzW2YM7" ], "script": "base64:AAIEAAAAAAAAABMIAhIFCgMIAQESAwoBARIDCgEIAAAACQAAAAADQTRBAQAAACAIZYS3D/CKahrz4mjoLgiQJMPTJ1gDzSz2Ll4L39oVpAAAAAAOQTRBU3Rha2luZ0RBcHAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNONm9XTHlRWTJnTTdRVWtVdkJtZTFSRW5BNmQxVjd5M0FUAAAAACJ2b3RpbmdfdGltZXN0YW1wX2NvbnRyb2xsZXJfcHVia2V5AQAAACAbvUu+h+2As3kugOhMQC3bvgebie3kDmlbUlrvLFQPbQAAAAASY29udHJvbGxlcl9hZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAACJ2b3RpbmdfdGltZXN0YW1wX2NvbnRyb2xsZXJfcHVia2V5AAAAAAxsYXVuY2hfZXJyb3ICAAAAJERhcHAgd2lsbCBzdGFydCBWb3RpbmcgYXQgVGltZXN0YW1wIAAAAAADbXNnAgAAAC48aDE+WW91ciBWb3RlIFN1Ym1pdHRlZCBTdWNjZXNzZnVsbHkhPC9oMT48YnI+AAAAAAlweW10ZXJyb3ICAAAANERBcHAgTmVlZCAwLjAwMDAwMDAxIEE0QSBUb2tlbiBhcyBBdHRhY2ggcGF5bWVudFsxXS4AAAAACGFzc2V0ZXJyCQABLAAAAAIJAAEsAAAAAgIAAAAmSW5jb3JyZWN0IGFzc2V0IGF0dGFjaCwgcGxlYXNlIGF0dGFjaCAJAAJYAAAAAQUAAAADQTRBAgAAAA4gQXNzZXRJRCBPbmx5LgAAAAAHdm90ZUVycgIAAAAdVm90aW5nIGlzIE92ZXIgZm9yIHRoaXMgRGFwcC4AAAADAAAAAWkBAAAAE1NldFZvdGluZ1RpbWVTdGFtcHMAAAADAAAACFByb3Bvc2FsAAAAFlZvdGluZ19TdGFydF9UaW1lU3RhbXAAAAAUVm90aW5nX0VuZF9UaW1lU3RhbXAEAAAAB1N0YXJ0VFMFAAAAFlZvdGluZ19TdGFydF9UaW1lU3RhbXAEAAAABUVuZFRTBQAAABRWb3RpbmdfRW5kX1RpbWVTdGFtcAQAAAAGcHVia2V5CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAFlBy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", "height": 2528320, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HVorMwhDZHkQKKnP24ugFM6dngYt6SUmmnYn2YjTFLYq Next: 6uWNqrm3pc1Bh6gk3uPWDh4xC5MznDgt9kujPB49jKb6 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let VOTE = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
4+let A4A = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
55
6-let voting_timestamp_controller_pubkey = base58'FpQDPkicMwf8q2FJRfT3wfh4RxXy5C8pgqMSQRZdfW3W'
6+let A4AStakingDApp = addressFromStringValue("3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT")
7+
8+let voting_timestamp_controller_pubkey = base58'2sHRUrJCMpDhAQEcN7Zhk3LqnD9zizebpxeQXpPoscQU'
79
810 let controller_address = addressFromPublicKey(voting_timestamp_controller_pubkey)
911
1113
1214 let msg = "<h1>Your Vote Submitted Successfully!</h1><br>"
1315
14-let pymterror = "DApp Need 0.00000001 VOTE Token as Attach payment[1]."
16+let pymterror = "DApp Need 0.00000001 A4A Token as Attach payment[1]."
1517
16-let minbalerror = "Min. 0.00000001 VOTE required on Your Address to Vote. Please Mint or hold min. 0.00000001 VOTE on this Address."
17-
18-let asseterr = (("Incorrect asset attach, please attach " + toBase58String(VOTE)) + " AssetID Only.")
18+let asseterr = (("Incorrect asset attach, please attach " + toBase58String(A4A)) + " AssetID Only.")
1919
2020 let voteErr = "Voting is Over for this Dapp."
2121
4646 let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
4747 let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
4848 let pubkey = toBase58String(i.caller.bytes)
49- let pmt = if ((size(i.payments) == 1))
50- then i.payments[0]
51- else throw(pymterror)
52- let assetbal = assetBalance(addressFromPublicKey(i.callerPublicKey), VOTE)
49+ let readA4AStakingAmount = valueOrErrorMessage(getIntegerValue(A4AStakingDApp, ("Deposit_Amount_Of_" + pubkey)), "Address not found in A4A Staking.")
5350 let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
5451 case a: Int =>
5552 a
5653 case _ =>
5754 0
5855 }
59- let totalvotes = (Previoustotalvotes + pmt.amount)
56+ let totalvotes = (Previoustotalvotes + readA4AStakingAmount)
6057 let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
6158 case a: Int =>
6259 a
6360 case _ =>
6461 0
6562 }
66- let ATVO = (FTVO + pmt.amount)
63+ let ATVO = (FTVO + readA4AStakingAmount)
6764 if ((StartTS > lastBlock.timestamp))
6865 then throw((launch_error + toString(StartTS)))
69- else if ((1 > assetbal))
70- then throw(minbalerror)
71- else if ((pmt.assetId != VOTE))
72- then throw(asseterr)
73- else if ((lastBlock.timestamp > EndTS))
74- then throw(voteErr)
75- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
76- }
77-
78-
79-
80-@Callable(i)
81-func No (Porposal_ID) = {
82- let VoteAst = "No"
83- let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
84- let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
85- let pubkey = toBase58String(i.caller.bytes)
86- let pmt = if ((size(i.payments) == 1))
87- then i.payments[0]
88- else throw(pymterror)
89- let assetbal = assetBalance(addressFromPublicKey(i.callerPublicKey), VOTE)
90- let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
91- case a: Int =>
92- a
93- case _ =>
94- 0
95- }
96- let totalvotes = (Previoustotalvotes + pmt.amount)
97- let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
98- case a: Int =>
99- a
100- case _ =>
101- 0
102- }
103- let ATVO = (FTVO + pmt.amount)
104- if ((StartTS > lastBlock.timestamp))
105- then throw((launch_error + toString(StartTS)))
106- else if ((1 > assetbal))
107- then throw(minbalerror)
108- else if ((pmt.assetId != VOTE))
109- then throw(asseterr)
110- else if ((lastBlock.timestamp > EndTS))
111- then throw(voteErr)
112- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
113- }
114-
115-
116-
117-@Callable(i)
118-func Abstain (Porposal_ID) = {
119- let VoteAst = "Abstain"
120- let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
121- let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
122- let pubkey = toBase58String(i.caller.bytes)
123- let pmt = if ((size(i.payments) == 1))
124- then i.payments[0]
125- else throw(pymterror)
126- let assetbal = assetBalance(addressFromPublicKey(i.callerPublicKey), VOTE)
127- let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
128- case a: Int =>
129- a
130- case _ =>
131- 0
132- }
133- let totalvotes = (Previoustotalvotes + pmt.amount)
134- let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
135- case a: Int =>
136- a
137- case _ =>
138- 0
139- }
140- let ATVO = (FTVO + pmt.amount)
141- if ((StartTS > lastBlock.timestamp))
142- then throw((launch_error + toString(StartTS)))
143- else if ((1 > assetbal))
144- then throw(minbalerror)
145- else if ((pmt.assetId != VOTE))
146- then throw(asseterr)
147- else if ((lastBlock.timestamp > EndTS))
148- then throw(voteErr)
149- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
66+ else if ((lastBlock.timestamp > EndTS))
67+ then throw(voteErr)
68+ else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
15069 }
15170
15271
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let VOTE = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
4+let A4A = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
55
6-let voting_timestamp_controller_pubkey = base58'FpQDPkicMwf8q2FJRfT3wfh4RxXy5C8pgqMSQRZdfW3W'
6+let A4AStakingDApp = addressFromStringValue("3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT")
7+
8+let voting_timestamp_controller_pubkey = base58'2sHRUrJCMpDhAQEcN7Zhk3LqnD9zizebpxeQXpPoscQU'
79
810 let controller_address = addressFromPublicKey(voting_timestamp_controller_pubkey)
911
1012 let launch_error = "Dapp will start Voting at Timestamp "
1113
1214 let msg = "<h1>Your Vote Submitted Successfully!</h1><br>"
1315
14-let pymterror = "DApp Need 0.00000001 VOTE Token as Attach payment[1]."
16+let pymterror = "DApp Need 0.00000001 A4A Token as Attach payment[1]."
1517
16-let minbalerror = "Min. 0.00000001 VOTE required on Your Address to Vote. Please Mint or hold min. 0.00000001 VOTE on this Address."
17-
18-let asseterr = (("Incorrect asset attach, please attach " + toBase58String(VOTE)) + " AssetID Only.")
18+let asseterr = (("Incorrect asset attach, please attach " + toBase58String(A4A)) + " AssetID Only.")
1919
2020 let voteErr = "Voting is Over for this Dapp."
2121
2222 @Callable(i)
2323 func SetVotingTimeStamps (Proposal,Voting_Start_TimeStamp,Voting_End_TimeStamp) = {
2424 let StartTS = Voting_Start_TimeStamp
2525 let EndTS = Voting_End_TimeStamp
2626 let pubkey = toBase58String(i.caller.bytes)
2727 let Previoustotalproposals = match getInteger(this, "Total_Proposals") {
2828 case a: Int =>
2929 a
3030 case _ =>
3131 0
3232 }
3333 let totalproposals = (Previoustotalproposals + 1)
3434 if ((size(Proposal) > 5100))
3535 then throw("Subject Char Limits are Over. Reduce length less than 5100 Char.")
3636 else if ((i.caller != controller_address))
3737 then throw((("This Address is not Authorized. Only " + toString(controller_address)) + " is Authorized Address to Sign it."))
3838 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)]
3939 }
4040
4141
4242
4343 @Callable(i)
4444 func Yes (Porposal_ID) = {
4545 let VoteAst = "Yes"
4646 let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
4747 let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
4848 let pubkey = toBase58String(i.caller.bytes)
49- let pmt = if ((size(i.payments) == 1))
50- then i.payments[0]
51- else throw(pymterror)
52- let assetbal = assetBalance(addressFromPublicKey(i.callerPublicKey), VOTE)
49+ let readA4AStakingAmount = valueOrErrorMessage(getIntegerValue(A4AStakingDApp, ("Deposit_Amount_Of_" + pubkey)), "Address not found in A4A Staking.")
5350 let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
5451 case a: Int =>
5552 a
5653 case _ =>
5754 0
5855 }
59- let totalvotes = (Previoustotalvotes + pmt.amount)
56+ let totalvotes = (Previoustotalvotes + readA4AStakingAmount)
6057 let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
6158 case a: Int =>
6259 a
6360 case _ =>
6461 0
6562 }
66- let ATVO = (FTVO + pmt.amount)
63+ let ATVO = (FTVO + readA4AStakingAmount)
6764 if ((StartTS > lastBlock.timestamp))
6865 then throw((launch_error + toString(StartTS)))
69- else if ((1 > assetbal))
70- then throw(minbalerror)
71- else if ((pmt.assetId != VOTE))
72- then throw(asseterr)
73- else if ((lastBlock.timestamp > EndTS))
74- then throw(voteErr)
75- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
76- }
77-
78-
79-
80-@Callable(i)
81-func No (Porposal_ID) = {
82- let VoteAst = "No"
83- let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
84- let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
85- let pubkey = toBase58String(i.caller.bytes)
86- let pmt = if ((size(i.payments) == 1))
87- then i.payments[0]
88- else throw(pymterror)
89- let assetbal = assetBalance(addressFromPublicKey(i.callerPublicKey), VOTE)
90- let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
91- case a: Int =>
92- a
93- case _ =>
94- 0
95- }
96- let totalvotes = (Previoustotalvotes + pmt.amount)
97- let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
98- case a: Int =>
99- a
100- case _ =>
101- 0
102- }
103- let ATVO = (FTVO + pmt.amount)
104- if ((StartTS > lastBlock.timestamp))
105- then throw((launch_error + toString(StartTS)))
106- else if ((1 > assetbal))
107- then throw(minbalerror)
108- else if ((pmt.assetId != VOTE))
109- then throw(asseterr)
110- else if ((lastBlock.timestamp > EndTS))
111- then throw(voteErr)
112- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
113- }
114-
115-
116-
117-@Callable(i)
118-func Abstain (Porposal_ID) = {
119- let VoteAst = "Abstain"
120- let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
121- let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
122- let pubkey = toBase58String(i.caller.bytes)
123- let pmt = if ((size(i.payments) == 1))
124- then i.payments[0]
125- else throw(pymterror)
126- let assetbal = assetBalance(addressFromPublicKey(i.callerPublicKey), VOTE)
127- let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
128- case a: Int =>
129- a
130- case _ =>
131- 0
132- }
133- let totalvotes = (Previoustotalvotes + pmt.amount)
134- let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
135- case a: Int =>
136- a
137- case _ =>
138- 0
139- }
140- let ATVO = (FTVO + pmt.amount)
141- if ((StartTS > lastBlock.timestamp))
142- then throw((launch_error + toString(StartTS)))
143- else if ((1 > assetbal))
144- then throw(minbalerror)
145- else if ((pmt.assetId != VOTE))
146- then throw(asseterr)
147- else if ((lastBlock.timestamp > EndTS))
148- then throw(voteErr)
149- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
66+ else if ((lastBlock.timestamp > EndTS))
67+ then throw(voteErr)
68+ else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
15069 }
15170
15271
15372
15473 @Callable(i)
15574 func DeleteKey (Key) = [DeleteEntry(Key)]
15675
15776
15877 @Verifier(tx)
15978 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
16079

github/deemru/w8io/873ac7e 
69.95 ms