2019.10.20 12:15 [728196] smart account 3N3iL6znDFhJNWj7NKfRKoYVG1hdboZ8iC7 > SELF 0.00000000 Waves

{ "type": 13, "id": "2Qi7NDdAheotZecA1iqo3dX6DbXGRZXMu3SPAjUTmzNK", "fee": 1400000, "feeAssetId": null, "timestamp": 1571562985813, "version": 1, "sender": "3N3iL6znDFhJNWj7NKfRKoYVG1hdboZ8iC7", "senderPublicKey": "E7ctE5XJHaksUWy2PHrQGj5FRLQk6FezFZrhnphjpgUt", "proofs": [ "5CBPmcTHufnGfLBHDJRmJyqcRtUkEwv3mkQwampyD34J5NB7kpkywo767A57mmRCHUJcarJBEF313jjUwfHJyyHu" ], "script": "base64:AAIDAAAAAAAAABEIARIGCgQBAQgBEgMKAQgSAAAAAAkAAAAAB1JVTk5JTkcCAAAAB1JVTk5JTkcAAAAABkNMT1NFRAIAAAAGQ0xPU0VEAAAAAAhDQU5DRUxFRAIAAAAIQ0FOQ0VMRUQAAAAACURBUFBPV05FUgIAAAAjM04zaUw2em5ERmhKTldqN05LZlJLb1lWRzFoZGJvWjhpQzcAAAAAC1ZPVEVBU1NFVElEAQAAACBdzVgyIDG1TTrr2IC+hZgKEiTPyt49R9i8wN0ZNQ6rqgAAAAAETk9ORQIAAAAETk9ORQAAAAAKVk9USU5HQ09TVAAAAAAAAAGGoAEAAAALZ2V0U3RyVmFsdWUAAAABAAAAA2tleQQAAAAGdmFsT3B0CQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZ2YWxPcHQJAQAAAAdleHRyYWN0AAAAAQUAAAAGdmFsT3B0CQAAAgAAAAEJAAEsAAAAAgUAAAADa2V5AgAAAC8gd2FzIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgY29udHJhY3QgZGVwbG95bWVudAEAAAALZ2V0SW50VmFsdWUAAAABAAAAA2tleQQAAAAGdmFsT3B0CQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZ2YWxPcHQJAQAAAAdleHRyYWN0AAAAAQUAAAAGdmFsT3B0CQAAAgAAAAEJAAEsAAAAAgUAAAADa2V5AgAAAC8gd2FzIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgY29udHJhY3QgZGVwbG95bWVudAAAAAMAAAABaQEAAAAKaW5pdGlhbGl6ZQAAAAQAAAAOc3RhcnRpbmdIZWlnaHQAAAAIZHVyYXRpb24AAAANdm90aW5nQXNzZXRJZAAAAAp2b3RpbmdDb3N0BAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAEnZvdGF0aW9uQ3Vyck51bWJlcgkBAAAAC2dldEludFZhbHVlAAAAAQIAAAAWdm90YXRpb25fY3VycmVudG51bWJlcgQAAAASdm90YXRpb25DdXJyU3RhdHVzCQEAAAALZ2V0U3RyVmFsdWUAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIdm90YXRpb24JAAGkAAAAAQUAAAASdm90YXRpb25DdXJyTnVtYmVyAgAAAAdfc3RhdHVzAwkBAAAAAiE9AAAAAgUAAAAHYWNjb3VudAUAAAAJREFQUE9XTkVSCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAN09ubHkgZEFQUCBPd25lciBjYW5jb25maWd1cmUgdm90YXRpb24uIENhbGxlciBhY2NvdW50OiAFAAAAB2FjY291bnQCAAAADSBkYXBwIG93bmVyOiAFAAAACURBUFBPV05FUgMJAAAAAAAAAgUAAAASdm90YXRpb25DdXJyU3RhdHVzBQAAAAdSVU5OSU5HCQAAAgAAAAEJAAEsAAAAAgIAAAA9WW91IGNhbm5vdCBjb25maWd1cmUgYSBuZXcgVm90YXRpb24gd2hpbGUgY3VycmVudCBzdGF0dXMgaXM6IAUAAAASdm90YXRpb25DdXJyU3RhdHVzAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAADnN0YXJ0aW5nSGVpZ2h0CQAAAgAAAAECAAAAP1N0YXJ0aW5nIEhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBjdXJyZW50IGJsb2NrY2hhaW4gaGVpZ2h0LgQAAAARdm90YXRpb25OZXdOdW1iZXIJAABkAAAAAgUAAAASdm90YXRpb25DdXJyTnVtYmVyAAAAAAAAAAABCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAABZ2b3RhdGlvbl9jdXJyZW50bnVtYmVyBQAAABF2b3RhdGlvbk5ld051bWJlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAUdm90YXRpb25fdm90aW5nYXNzZXQFAAAADXZvdGluZ0Fzc2V0SWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAE3ZvdGF0aW9uX3ZvdGluZ2Nvc3QFAAAACnZvdGluZ0Nvc3QJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAl2b3RhdGlvbl8JAAGkAAAAAQUAAAARdm90YXRpb25OZXdOdW1iZXICAAAADF9zdGFydGhlaWdodAUAAAAOc3RhcnRpbmdIZWlnaHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAl2b3RhdGlvbl8JAAGkAAAAAQUAAAARdm90YXRpb25OZXdOdW1iZXICAAAADV9maW5pc2hoZWlnaHQJAABkAAAAAgUAAAAOc3RhcnRpbmdIZWlnaHQFAAAACGR1cmF0aW9uCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJdm90YXRpb25fCQABpAAAAAEFAAAAEXZvdGF0aW9uTmV3TnVtYmVyAgAAAAdfc3RhdHVzBQAAAAdSVU5OSU5HBQAAAANuaWwAAAABaQEAAAAEdm90ZQAAAAEAAAAGb3B0aW9uBAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAABJ2b3RhdGlvbkN1cnJOdW1iZXIJAQAAAAtnZXRJbnRWYWx1ZQAAAAECAAAAFnZvdGF0aW9uX2N1cnJlbnRudW1iZXIEAAAAE3ZvdGF0aW9uVm90aW5nQXNzZXQJAAJZAAAAAQkBAAAAC2dldFN0clZhbHVlAAAAAQIAAAAUdm90YXRpb25fdm90aW5nYXNzZXQEAAAAEnZvdGF0aW9uVm90aW5nQ29zdAkBAAAAC2dldEludFZhbHVlAAAAAQIAAAATdm90YXRpb25fdm90aW5nY29zdAQAAAAXdm90YXRpb25DdXJyT3B0aW9uVmFsdWUJAQAAAAtnZXRJbnRWYWx1ZQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACXZvdGF0aW9uXwkAAaQAAAABBQAAABJ2b3RhdGlvbkN1cnJOdW1iZXICAAAAAV8FAAAABm9wdGlvbgQAAAATdm90YXRpb25TdGFydEhlaWdodAkBAAAAC2dldEludFZhbHVlAAAAAQkAASwAAAACCQABLAAAAAICAAAACXZvdGF0aW9uXwkAAaQAAAABBQAAABJ2b3RhdGlvbkN1cnJOdW1iZXICAAAADF9zdGFydGhlaWdodAQAAAAUdm90YXRpb25GaW5p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", "chainId": 84, "height": 728196, "spentComplexity": 0 } View: original | compacted Prev: A8HRouvpTtbTRiRzCLJVXHVdCzypx8NAsi12uN9XADsv Next: 5q15HYjPcLqNDdaWt8F8URTUqyqnmHLqehaJ8YDCwDH9 Diff:
OldNewDifferences
6161 let votationStartHeight = getIntValue((("votation_" + toString(votationCurrNumber)) + "_startheight"))
6262 let votationFinishHeight = getIntValue((("votation_" + toString(votationCurrNumber)) + "_finishheight"))
6363 let votationCurrStatus = getStrValue((("votation_" + toString(votationCurrNumber)) + "_status"))
64- let votationStatus = getStrValue((("votation_" + toString(votationCurrNumber)) + "_status"))
6564 if ((height > votationFinishHeight))
6665 then throw("You cannot vote anymore at this height.")
6766 else if ((votationCurrStatus != RUNNING))
7170 else (pmt.amount != votationVotingCost))
7271 then throw(((("You must pay at least: " + toString(VOTINGCOST)) + " WLT to vote. You paid: ") + toString(pmt.amount)))
7372 else WriteSet([DataEntry(((((("votation_" + toString(votationCurrNumber)) + "_") + option) + "_") + account), pmt.amount), DataEntry((((("votation_" + toString(votationCurrNumber)) + "_") + account) + "_bets"), (votationCurrOptionValue + pmt.amount))])
73+ }
74+
75+
76+
77+@Callable(i)
78+func close () = {
79+ let account = toBase58String(i.caller.bytes)
80+ let pmt = extract(i.payment)
81+ let votationCurrNumber = getIntValue("votation_currentnumber")
82+ let votationCurrStatus = getStrValue((("votation_" + toString(votationCurrNumber)) + "_status"))
83+ if ((votationCurrStatus != CLOSED))
84+ then throw("Invalid status: you cannot close a CLOSED vote.")
85+ else WriteSet([DataEntry((("votation_" + toString(votationCurrNumber)) + "_status"), CLOSED)])
7486 }
7587
7688
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RUNNING = "RUNNING"
55
66 let CLOSED = "CLOSED"
77
88 let CANCELED = "CANCELED"
99
1010 let DAPPOWNER = "3N3iL6znDFhJNWj7NKfRKoYVG1hdboZ8iC7"
1111
1212 let VOTEASSETID = base58'7KAXNTswj6947a6cVpGhVrh1utWpLcjwf8AFpWCtuMT7'
1313
1414 let NONE = "NONE"
1515
1616 let VOTINGCOST = 100000
1717
1818 func getStrValue (key) = {
1919 let valOpt = getString(this, key)
2020 if (isDefined(valOpt))
2121 then extract(valOpt)
2222 else throw((key + " was not initialized before contract deployment"))
2323 }
2424
2525
2626 func getIntValue (key) = {
2727 let valOpt = getInteger(this, key)
2828 if (isDefined(valOpt))
2929 then extract(valOpt)
3030 else throw((key + " was not initialized before contract deployment"))
3131 }
3232
3333
3434 @Callable(i)
3535 func initialize (startingHeight,duration,votingAssetId,votingCost) = {
3636 let account = toBase58String(i.caller.bytes)
3737 let votationCurrNumber = getIntValue("votation_currentnumber")
3838 let votationCurrStatus = getStrValue((("votation" + toString(votationCurrNumber)) + "_status"))
3939 if ((account != DAPPOWNER))
4040 then throw(((("Only dAPP Owner canconfigure votation. Caller account: " + account) + " dapp owner: ") + DAPPOWNER))
4141 else if ((votationCurrStatus == RUNNING))
4242 then throw(("You cannot configure a new Votation while current status is: " + votationCurrStatus))
4343 else if ((height > startingHeight))
4444 then throw("Starting Height must be greater than current blockchain height.")
4545 else {
4646 let votationNewNumber = (votationCurrNumber + 1)
4747 WriteSet([DataEntry("votation_currentnumber", votationNewNumber), DataEntry("votation_votingasset", votingAssetId), DataEntry("votation_votingcost", votingCost), DataEntry((("votation_" + toString(votationNewNumber)) + "_startheight"), startingHeight), DataEntry((("votation_" + toString(votationNewNumber)) + "_finishheight"), (startingHeight + duration)), DataEntry((("votation_" + toString(votationNewNumber)) + "_status"), RUNNING)])
4848 }
4949 }
5050
5151
5252
5353 @Callable(i)
5454 func vote (option) = {
5555 let account = toBase58String(i.caller.bytes)
5656 let pmt = extract(i.payment)
5757 let votationCurrNumber = getIntValue("votation_currentnumber")
5858 let votationVotingAsset = fromBase58String(getStrValue("votation_votingasset"))
5959 let votationVotingCost = getIntValue("votation_votingcost")
6060 let votationCurrOptionValue = getIntValue(((("votation_" + toString(votationCurrNumber)) + "_") + option))
6161 let votationStartHeight = getIntValue((("votation_" + toString(votationCurrNumber)) + "_startheight"))
6262 let votationFinishHeight = getIntValue((("votation_" + toString(votationCurrNumber)) + "_finishheight"))
6363 let votationCurrStatus = getStrValue((("votation_" + toString(votationCurrNumber)) + "_status"))
64- let votationStatus = getStrValue((("votation_" + toString(votationCurrNumber)) + "_status"))
6564 if ((height > votationFinishHeight))
6665 then throw("You cannot vote anymore at this height.")
6766 else if ((votationCurrStatus != RUNNING))
6867 then throw(("Invalid status: you cannot vote now, votation status is: " + votationCurrStatus))
6968 else if (if ((pmt.assetId != votationVotingAsset))
7069 then true
7170 else (pmt.amount != votationVotingCost))
7271 then throw(((("You must pay at least: " + toString(VOTINGCOST)) + " WLT to vote. You paid: ") + toString(pmt.amount)))
7372 else WriteSet([DataEntry(((((("votation_" + toString(votationCurrNumber)) + "_") + option) + "_") + account), pmt.amount), DataEntry((((("votation_" + toString(votationCurrNumber)) + "_") + account) + "_bets"), (votationCurrOptionValue + pmt.amount))])
73+ }
74+
75+
76+
77+@Callable(i)
78+func close () = {
79+ let account = toBase58String(i.caller.bytes)
80+ let pmt = extract(i.payment)
81+ let votationCurrNumber = getIntValue("votation_currentnumber")
82+ let votationCurrStatus = getStrValue((("votation_" + toString(votationCurrNumber)) + "_status"))
83+ if ((votationCurrStatus != CLOSED))
84+ then throw("Invalid status: you cannot close a CLOSED vote.")
85+ else WriteSet([DataEntry((("votation_" + toString(votationCurrNumber)) + "_status"), CLOSED)])
7486 }
7587
7688
7789 @Verifier(tx)
7890 func verify () = match tx {
7991 case _: SetScriptTransaction|DataTransaction =>
8092 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
8193 case _: InvokeScriptTransaction =>
8294 true
8395 case _ =>
8496 true
8597 }
8698

github/deemru/w8io/786bc32 
24.85 ms