tx · HmRviMS5VcsoU9Y4EB5oBaYvDjnrAjMmx8K8xA8pV31v

3N8dYK8BQhY7z1yKFRFhdw4m9b4JjsNQJVd:  -0.01400000 Waves

2023.04.10 13:12 [2528344] smart account 3N8dYK8BQhY7z1yKFRFhdw4m9b4JjsNQJVd > SELF 0.00000000 Waves

{ "type": 13, "id": "HmRviMS5VcsoU9Y4EB5oBaYvDjnrAjMmx8K8xA8pV31v", "fee": 1400000, "feeAssetId": null, "timestamp": 1681121636162, "version": 2, "chainId": 84, "sender": "3N8dYK8BQhY7z1yKFRFhdw4m9b4JjsNQJVd", "senderPublicKey": "AK6rRKpHobxNveEtJE5BBXbdwm9BpGL7ewP9Xb6VYuHx", "proofs": [ "taHH45aMQPvEexQcvtkiYxkGmHL7cya9McGrJ2Zyt6F7bRF1AQWF2dVZPXbzk7zPYquA7XeiGwHJfsibuCik61n" ], "script": "base64:AAIEAAAAAAAAABMIAhIFCgMIAQESAwoBARIDCgEIAAAACgAAAAADQTRBAQAAACAIZYS3D/CKahrz4mjoLgiQJMPTJ1gDzSz2Ll4L39oVpAAAAAAOQTRBU3Rha2luZ0RBcHAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNONm9XTHlRWTJnTTdRVWtVdkJtZTFSRW5BNmQxVjd5M0FUAAAAACJ2b3RpbmdfdGltZXN0YW1wX2NvbnRyb2xsZXJfcHVia2V5AQAAACAbvUu+h+2As3kugOhMQC3bvgebie3kDmlbUlrvLFQPbQAAAAASY29udHJvbGxlcl9hZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAACJ2b3RpbmdfdGltZXN0YW1wX2NvbnRyb2xsZXJfcHVia2V5AAAAAAxsYXVuY2hfZXJyb3ICAAAAJERhcHAgd2lsbCBzdGFydCBWb3RpbmcgYXQgVGltZXN0YW1wIAAAAAADbXNnAgAAAC48aDE+WW91ciBWb3RlIFN1Ym1pdHRlZCBTdWNjZXNzZnVsbHkhPC9oMT48YnI+AAAAAAlweW10ZXJyb3ICAAAANERBcHAgTmVlZCAwLjAwMDAwMDAxIEE0QSBUb2tlbiBhcyBBdHRhY2ggcGF5bWVudFsxXS4AAAAAEUFscmVhZHlWb3RlZEVycm9yAgAAAD5UaGlzIEFkZHJlc3MgQWxyZWFkeSBwYXJ0aWNpcGF0ZWQgZm9yIFZvdGluZyBpbiB0aGlzIFByb3Bvc2FsLgAAAAAIYXNzZXRlcnIJAAEsAAAAAgkAASwAAAACAgAAACZJbmNvcnJlY3QgYXNzZXQgYXR0YWNoLCBwbGVhc2UgYXR0YWNoIAkAAlgAAAABBQAAAANBNEECAAAADiBBc3NldElEIE9ubHkuAAAAAAd2b3RlRXJyAgAAAB1Wb3RpbmcgaXMgT3ZlciBmb3IgdGhpcyBEYXBwLgAAAAMAAAABaQEAAAATU2V0Vm90aW5nVGltZVN0YW1wcwAAAAMAAAAIUHJvcG9zYWwAAAAWVm90aW5nX1N0YXJ0X1RpbWVTdGFtcAAAABRWb3RpbmdfRW5kX1RpbWVTdGFtcAQAAAAHU3RhcnRUUwUAAAAWVm90aW5nX1N0YXJ0X1RpbWVTdGFt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", "height": 2528344, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HWUK4APAeFbTJMwCUmNiGqYcVej4nbQrmEMyeAkTS46S Next: 2XbTfKF8e72N7x6f6XyFxBtCzDLbJxWZJHA7SKG7AcZk Diff:
OldNewDifferences
1414 let msg = "<h1>Your Vote Submitted Successfully!</h1><br>"
1515
1616 let pymterror = "DApp Need 0.00000001 A4A Token as Attach payment[1]."
17+
18+let AlreadyVotedError = "This Address Already participated for Voting in this Proposal."
1719
1820 let asseterr = (("Incorrect asset attach, please attach " + toBase58String(A4A)) + " AssetID Only.")
1921
6163 0
6264 }
6365 let ATVO = (FTVO + readA4AStakingAmount)
66+ let PreviousUserCountforVoting = match getInteger(this, ((pubkey + "_") + toString(Porposal_ID))) {
67+ case a: Int =>
68+ a
69+ case _ =>
70+ 0
71+ }
72+ let LatestUserCountforVoting = (PreviousUserCountforVoting + 1)
6473 if ((StartTS > lastBlock.timestamp))
6574 then throw((launch_error + toString(StartTS)))
6675 else if ((lastBlock.timestamp > EndTS))
6776 then throw(voteErr)
68- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
77+ else if ((LatestUserCountforVoting > 1))
78+ then throw(AlreadyVotedError)
79+ else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), IntegerEntry(((pubkey + "_") + toString(Porposal_ID)), LatestUserCountforVoting), StringEntry("message", msg)]
6980 }
7081
7182
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let A4A = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
55
66 let A4AStakingDApp = addressFromStringValue("3N6oWLyQY2gM7QUkUvBme1REnA6d1V7y3AT")
77
88 let voting_timestamp_controller_pubkey = base58'2sHRUrJCMpDhAQEcN7Zhk3LqnD9zizebpxeQXpPoscQU'
99
1010 let controller_address = addressFromPublicKey(voting_timestamp_controller_pubkey)
1111
1212 let launch_error = "Dapp will start Voting at Timestamp "
1313
1414 let msg = "<h1>Your Vote Submitted Successfully!</h1><br>"
1515
1616 let pymterror = "DApp Need 0.00000001 A4A Token as Attach payment[1]."
17+
18+let AlreadyVotedError = "This Address Already participated for Voting in this Proposal."
1719
1820 let asseterr = (("Incorrect asset attach, please attach " + toBase58String(A4A)) + " AssetID Only.")
1921
2022 let voteErr = "Voting is Over for this Dapp."
2123
2224 @Callable(i)
2325 func SetVotingTimeStamps (Proposal,Voting_Start_TimeStamp,Voting_End_TimeStamp) = {
2426 let StartTS = Voting_Start_TimeStamp
2527 let EndTS = Voting_End_TimeStamp
2628 let pubkey = toBase58String(i.caller.bytes)
2729 let Previoustotalproposals = match getInteger(this, "Total_Proposals") {
2830 case a: Int =>
2931 a
3032 case _ =>
3133 0
3234 }
3335 let totalproposals = (Previoustotalproposals + 1)
3436 if ((size(Proposal) > 5100))
3537 then throw("Subject Char Limits are Over. Reduce length less than 5100 Char.")
3638 else if ((i.caller != controller_address))
3739 then throw((("This Address is not Authorized. Only " + toString(controller_address)) + " is Authorized Address to Sign it."))
3840 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)]
3941 }
4042
4143
4244
4345 @Callable(i)
4446 func Yes (Porposal_ID) = {
4547 let VoteAst = "Yes"
4648 let StartTS = getIntegerValue(this, ("Voting_Start_TimeStamp_" + toString(Porposal_ID)))
4749 let EndTS = getIntegerValue(this, ("Voting_End_TimeStamp_" + toString(Porposal_ID)))
4850 let pubkey = toBase58String(i.caller.bytes)
4951 let readA4AStakingAmount = valueOrErrorMessage(getInteger(A4AStakingDApp, ("Deposit_Amount_Of_" + pubkey)), "Address not found in A4A Staking.")
5052 let Previoustotalvotes = match getInteger(this, ("Total_Votes_" + toString(Porposal_ID))) {
5153 case a: Int =>
5254 a
5355 case _ =>
5456 0
5557 }
5658 let totalvotes = (Previoustotalvotes + readA4AStakingAmount)
5759 let FTVO = match getInteger(this, ((("Total_" + VoteAst) + "_") + toString(Porposal_ID))) {
5860 case a: Int =>
5961 a
6062 case _ =>
6163 0
6264 }
6365 let ATVO = (FTVO + readA4AStakingAmount)
66+ let PreviousUserCountforVoting = match getInteger(this, ((pubkey + "_") + toString(Porposal_ID))) {
67+ case a: Int =>
68+ a
69+ case _ =>
70+ 0
71+ }
72+ let LatestUserCountforVoting = (PreviousUserCountforVoting + 1)
6473 if ((StartTS > lastBlock.timestamp))
6574 then throw((launch_error + toString(StartTS)))
6675 else if ((lastBlock.timestamp > EndTS))
6776 then throw(voteErr)
68- else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), StringEntry("message", msg)]
77+ else if ((LatestUserCountforVoting > 1))
78+ then throw(AlreadyVotedError)
79+ else [IntegerEntry(("Total_Votes_" + toString(Porposal_ID)), totalvotes), IntegerEntry(((("Total_" + VoteAst) + "_") + toString(Porposal_ID)), ATVO), IntegerEntry(((pubkey + "_") + toString(Porposal_ID)), LatestUserCountforVoting), StringEntry("message", msg)]
6980 }
7081
7182
7283
7384 @Callable(i)
7485 func DeleteKey (Key) = [DeleteEntry(Key)]
7586
7687
7788 @Verifier(tx)
7889 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
7990

github/deemru/w8io/c3f4982 
42.37 ms