2019.10.20 12:17 [728197] smart account 3N3iL6znDFhJNWj7NKfRKoYVG1hdboZ8iC7 > SELF 0.00000000 Waves

{ "type": 13, "id": "5q15HYjPcLqNDdaWt8F8URTUqyqnmHLqehaJ8YDCwDH9", "fee": 1400000, "feeAssetId": null, "timestamp": 1571563044065, "version": 1, "sender": "3N3iL6znDFhJNWj7NKfRKoYVG1hdboZ8iC7", "senderPublicKey": "E7ctE5XJHaksUWy2PHrQGj5FRLQk6FezFZrhnphjpgUt", "proofs": [ "2CECDKWGspDKYPzVrNuo2s6MnkfVPqt1jvj2Jxf2hhxfBBiQMJC7hXaFJUaHhwHuTUcSXzsxFaBgZwjxD6pk9VoZ" ], "script": "base64:AAIDAAAAAAAAABEIARIGCgQBAQgBEgMKAQgSAAAAAAkAAAAAB1JVTk5JTkcCAAAAB1JVTk5JTkcAAAAABkNMT1NFRAIAAAAGQ0xPU0VEAAAAAAhDQU5DRUxFRAIAAAAIQ0FOQ0VMRUQAAAAACURBUFBPV05FUgIAAAAjM04zaUw2em5ERmhKTldqN05LZlJLb1lWRzFoZGJvWjhpQzcAAAAAC1ZPVEVBU1NFVElEAQAAACBdzVgyIDG1TTrr2IC+hZgKEiTPyt49R9i8wN0ZNQ6rqgAAAAAETk9ORQIAAAAETk9ORQAAAAAKVk9USU5HQ09TVAAAAAAAAAGGoAEAAAALZ2V0U3RyVmFsdWUAAAABAAAAA2tleQQAAAAGdmFsT3B0CQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZ2YWxPcHQJAQAAAAdleHRyYWN0AAAAAQUAAAAGdmFsT3B0CQAAAgAAAAEJAAEsAAAAAgUAAAADa2V5AgAAAC8gd2FzIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgY29udHJhY3QgZGVwbG95bWVudAEAAAALZ2V0SW50VmFsdWUAAAABAAAAA2tleQQAAAAGdmFsT3B0CQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZ2YWxPcHQJAQAAAAdleHRyYWN0AAAAAQUAAAAGdmFsT3B0CQAAAgAAAAEJAAEsAAAAAgUAAAADa2V5AgAAAC8gd2FzIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgY29udHJhY3QgZGVwbG95bWVudAAAAAMAAAABaQEAAAAKaW5pdGlhbGl6ZQAAAAQAAAAOc3RhcnRpbmdIZWlnaHQAAAAIZHVyYXRpb24AAAANdm90aW5nQXNzZXRJZAAAAAp2b3RpbmdDb3N0BAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAEnZvdGF0aW9uQ3Vyck51bWJlcgkBAAAAC2dldEludFZhbHVlAAAAAQIAAAAWdm90YXRpb25fY3VycmVudG51bWJlcgQAAAASdm90YXRpb25DdXJyU3RhdHVzCQEAAAALZ2V0U3RyVmFsdWUAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIdm90YXRpb24JAAGkAAAAAQUAAAASdm90YXRpb25DdXJyTnVtYmVyAgAAAAdfc3RhdHVzAwkBAAAAAiE9AAAAAgUAAAAHYWNjb3VudAUAAAAJREFQUE9XTkVSCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAN09ubHkgZEFQUCBPd25lciBjYW5jb25maWd1cmUgdm90YXRpb24uIENhbGxlciBhY2NvdW50OiAFAAAAB2FjY291bnQCAAAADSBkYXBwIG93bmVyOiAFAAAACURBUFBPV05FUgMJAAAAAAAAAgUAAAASdm90YXRpb25DdXJyU3RhdHVzBQAAAAdSVU5OSU5HCQAAAgAAAAEJAAEsAAAAAgIAAAA9WW91IGNhbm5vdCBjb25maWd1cmUgYSBuZXcgVm90YXRpb24gd2hpbGUgY3VycmVudCBzdGF0dXMgaXM6IAUAAAASdm90YXRpb25DdXJyU3RhdHVzAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAADnN0YXJ0aW5nSGVpZ2h0CQAAAgAAAAECAAAAP1N0YXJ0aW5nIEhlaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBjdXJyZW50IGJsb2NrY2hhaW4gaGVpZ2h0LgQAAAARdm90YXRpb25OZXdOdW1iZXIJAABkAAAAAgUAAAASdm90YXRpb25DdXJyTnVtYmVyAAAAAAAAAAABCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAABZ2b3RhdGlvbl9jdXJyZW50bnVtYmVyBQAAABF2b3RhdGlvbk5ld051bWJlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAUdm90YXRpb25fdm90aW5nYXNzZXQFAAAADXZvdGluZ0Fzc2V0SWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAE3ZvdGF0aW9uX3ZvdGluZ2Nvc3QFAAAACnZvdGluZ0Nvc3QJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAl2b3RhdGlvbl8JAAGkAAAAAQUAAAARdm90YXRpb25OZXdOdW1iZXICAAAADF9zdGFydGhlaWdodAUAAAAOc3RhcnRpbmdIZWlnaHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAl2b3RhdGlvbl8JAAGkAAAAAQUAAAARdm90YXRpb25OZXdOdW1iZXICAAAADV9maW5pc2hoZWlnaHQJAABkAAAAAgUAAAAOc3RhcnRpbmdIZWlnaHQFAAAACGR1cmF0aW9uCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJdm90YXRpb25fCQABpAAAAAEFAAAAEXZvdGF0aW9uTmV3TnVtYmVyAgAAAAdfc3RhdHVzBQAAAAdSVU5OSU5HBQAAAANuaWwAAAABaQEAAAAEdm90ZQAAAAEAAAAGb3B0aW9uBAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAABJ2b3RhdGlvbkN1cnJOdW1iZXIJAQAAAAtnZXRJbnRWYWx1ZQAAAAECAAAAFnZvdGF0aW9uX2N1cnJlbnRudW1iZXIEAAAAE3ZvdGF0aW9uVm90aW5nQXNzZXQJAAJZAAAAAQkBAAAAC2dldFN0clZhbHVlAAAAAQIAAAAUdm90YXRpb25fdm90aW5nYXNzZXQEAAAAEnZvdGF0aW9uVm90aW5nQ29zdAkBAAAAC2dldEludFZhbHVlAAAAAQIAAAATdm90YXRpb25fdm90aW5nY29zdAQAAAAXdm90YXRpb25DdXJyT3B0aW9uVmFsdWUJAQAAAAtnZXRJbnRWYWx1ZQAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACXZvdGF0aW9uXwkAAaQAAAABBQAAABJ2b3RhdGlvbkN1cnJOdW1iZXICAAAAAV8FAAAABm9wdGlvbgQAAAATdm90YXRpb25TdGFydEhlaWdodAkBAAAAC2dldEludFZhbHVlAAAAAQkAASwAAAACCQABLAAAAAICAAAACXZvdGF0aW9uXwkAAaQAAAABBQAAABJ2b3RhdGlvbkN1cnJOdW1iZXICAAAADF9zdGFydGhlaWdodAQAAAAUdm90YXRpb25GaW5p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", "chainId": 84, "height": 728197, "spentComplexity": 0 } View: original | compacted Prev: 2Qi7NDdAheotZecA1iqo3dX6DbXGRZXMu3SPAjUTmzNK Next: FPqHSqPCsGnTaXZcBRG49Wc5reVhSQNQ5Suubi5tfdih Diff:
OldNewDifferences
8080 let pmt = extract(i.payment)
8181 let votationCurrNumber = getIntValue("votation_currentnumber")
8282 let votationCurrStatus = getStrValue((("votation_" + toString(votationCurrNumber)) + "_status"))
83- if ((votationCurrStatus != CLOSED))
83+ if ((votationCurrStatus == CLOSED))
8484 then throw("Invalid status: you cannot close a CLOSED vote.")
8585 else WriteSet([DataEntry((("votation_" + toString(votationCurrNumber)) + "_status"), CLOSED)])
8686 }
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"))
6464 if ((height > votationFinishHeight))
6565 then throw("You cannot vote anymore at this height.")
6666 else if ((votationCurrStatus != RUNNING))
6767 then throw(("Invalid status: you cannot vote now, votation status is: " + votationCurrStatus))
6868 else if (if ((pmt.assetId != votationVotingAsset))
6969 then true
7070 else (pmt.amount != votationVotingCost))
7171 then throw(((("You must pay at least: " + toString(VOTINGCOST)) + " WLT to vote. You paid: ") + toString(pmt.amount)))
7272 else WriteSet([DataEntry(((((("votation_" + toString(votationCurrNumber)) + "_") + option) + "_") + account), pmt.amount), DataEntry((((("votation_" + toString(votationCurrNumber)) + "_") + account) + "_bets"), (votationCurrOptionValue + pmt.amount))])
7373 }
7474
7575
7676
7777 @Callable(i)
7878 func close () = {
7979 let account = toBase58String(i.caller.bytes)
8080 let pmt = extract(i.payment)
8181 let votationCurrNumber = getIntValue("votation_currentnumber")
8282 let votationCurrStatus = getStrValue((("votation_" + toString(votationCurrNumber)) + "_status"))
83- if ((votationCurrStatus != CLOSED))
83+ if ((votationCurrStatus == CLOSED))
8484 then throw("Invalid status: you cannot close a CLOSED vote.")
8585 else WriteSet([DataEntry((("votation_" + toString(votationCurrNumber)) + "_status"), CLOSED)])
8686 }
8787
8888
8989 @Verifier(tx)
9090 func verify () = match tx {
9191 case _: SetScriptTransaction|DataTransaction =>
9292 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
9393 case _: InvokeScriptTransaction =>
9494 true
9595 case _ =>
9696 true
9797 }
9898

github/deemru/w8io/786bc32 
28.72 ms