2019.10.20 12:20 [728201] smart account 3N3iL6znDFhJNWj7NKfRKoYVG1hdboZ8iC7 > SELF 0.00000000 Waves

{ "type": 13, "id": "FPqHSqPCsGnTaXZcBRG49Wc5reVhSQNQ5Suubi5tfdih", "fee": 1400000, "feeAssetId": null, "timestamp": 1571563206163, "version": 1, "sender": "3N3iL6znDFhJNWj7NKfRKoYVG1hdboZ8iC7", "senderPublicKey": "E7ctE5XJHaksUWy2PHrQGj5FRLQk6FezFZrhnphjpgUt", "proofs": [ "unA4yAatiL3kjMdFHidTYZTmFD4DZtMs53t6wrACbPoojQJLtYdUnGmR6f76ojgTkKJumByRp5EwnXSN1QnFr25" ], "script": "base64:AAIDAAAAAAAAABEIARIGCgQBAQgBEgMKAQgSAAAAAAkAAAAAB1JVTk5JTkcCAAAAB1JVTk5JTkcAAAAABkNMT1NFRAIAAAAGQ0xPU0VEAAAAAAhDQU5DRUxFRAIAAAAIQ0FOQ0VMRUQAAAAACURBUFBPV05FUgIAAAAjM04zaUw2em5ERmhKTldqN05LZlJLb1lWRzFoZGJvWjhpQzcAAAAAC1ZPVEVBU1NFVElEAQAAACBdzVgyIDG1TTrr2IC+hZgKEiTPyt49R9i8wN0ZNQ6rqgAAAAAETk9ORQIAAAAETk9ORQAAAAAKVk9USU5HQ09TVAAAAAAAAAGGoAEAAAALZ2V0U3RyVmFsdWUAAAABAAAAA2tleQQAAAAGdmFsT3B0CQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZ2YWxPcHQJAQAAAAdleHRyYWN0AAAAAQUAAAAGdmFsT3B0CQAAAgAAAAEJAAEsAAAAAgUAAAADa2V5AgAAAC8gd2FzIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgY29udHJhY3QgZGVwbG95bWVudAEAAAALZ2V0SW50VmFsdWUAAAABAAAAA2tleQQAAAAGdmFsT3B0CQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZ2YWxPcHQJAQAAAAdleHRyYWN0AAAAAQUAAAAGdmFsT3B0CQAAAgAAAAEJAAEsAAAAAgUAAAADa2V5AgAAAC8gd2FzIG5vdCBpbml0aWFsaXplZCBiZWZvcmUgY29udHJhY3QgZGVwbG95bWVudAAAAAMAAAABaQEAAAAKaW5pdGlhbGl6ZQAAAAQAAAAOc3RhcnRpbmdIZWlnaHQAAAAIZHVyYXRpb24AAAANdm90aW5nQXNzZXRJZAAAAAp2b3RpbmdDb3N0BAAAAAdhY2NvdW50CQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAEnZvdGF0aW9uQ3Vyck51bWJlcgkBAAAAC2dldEludFZhbHVlAAAAAQIAAAAWdm90YXRpb25fY3VycmVudG51bWJlcgQAAAASdm90YXRpb25DdXJyU3RhdHVzCQEAAAALZ2V0U3RyVmFsdWUAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAJdm90YXRpb25fCQABpAAAAAEFAAAAEnZvdGF0aW9uQ3Vyck51bWJlcgIAAAAHX3N0YXR1cwMJAQAAAAIhPQAAAAIFAAAAB2FjY291bnQFAAAACURBUFBPV05FUgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAADdPbmx5IGRBUFAgT3duZXIgY2FuY29uZmlndXJlIHZvdGF0aW9uLiBDYWxsZXIgYWNjb3VudDogBQAAAAdhY2NvdW50AgAAAA0gZGFwcCBvd25lcjogBQAAAAlEQVBQT1dORVIDCQAAAAAAAAIFAAAAEnZvdGF0aW9uQ3VyclN0YXR1cwUAAAAHUlVOTklORwkAAAIAAAABCQABLAAAAAICAAAAPVlvdSBjYW5ub3QgY29uZmlndXJlIGEgbmV3IFZvdGF0aW9uIHdoaWxlIGN1cnJlbnQgc3RhdHVzIGlzOiAFAAAAEnZvdGF0aW9uQ3VyclN0YXR1cwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAA5zdGFydGluZ0hlaWdodAkAAAIAAAABAgAAAD9TdGFydGluZyBIZWlnaHQgbXVzdCBiZSBncmVhdGVyIHRoYW4gY3VycmVudCBibG9ja2NoYWluIGhlaWdodC4EAAAAEXZvdGF0aW9uTmV3TnVtYmVyCQAAZAAAAAIFAAAAEnZvdGF0aW9uQ3Vyck51bWJlcgAAAAAAAAAAAQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAWdm90YXRpb25fY3VycmVudG51bWJlcgUAAAARdm90YXRpb25OZXdOdW1iZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAFHZvdGF0aW9uX3ZvdGluZ2Fzc2V0BQAAAA12b3RpbmdBc3NldElkCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAABN2b3RhdGlvbl92b3Rpbmdjb3N0BQAAAAp2b3RpbmdDb3N0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJdm90YXRpb25fCQABpAAAAAEFAAAAEXZvdGF0aW9uTmV3TnVtYmVyAgAAAAxfc3RhcnRoZWlnaHQFAAAADnN0YXJ0aW5nSGVpZ2h0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJdm90YXRpb25fCQABpAAAAAEFAAAAEXZvdGF0aW9uTmV3TnVtYmVyAgAAAA1fZmluaXNoaGVpZ2h0CQAAZAAAAAIFAAAADnN0YXJ0aW5nSGVpZ2h0BQAAAAhkdXJhdGlvbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACXZvdGF0aW9uXwkAAaQAAAABBQAAABF2b3RhdGlvbk5ld051bWJlcgIAAAAHX3N0YXR1cwUAAAAHUlVOTklORwUAAAADbmlsAAAAAWkBAAAABHZvdGUAAAABAAAABm9wdGlvbgQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAQAAAASdm90YXRpb25DdXJyTnVtYmVyCQEAAAALZ2V0SW50VmFsdWUAAAABAgAAABZ2b3RhdGlvbl9jdXJyZW50bnVtYmVyBAAAABN2b3RhdGlvblZvdGluZ0Fzc2V0CQACWQAAAAEJAQAAAAtnZXRTdHJWYWx1ZQAAAAECAAAAFHZvdGF0aW9uX3ZvdGluZ2Fzc2V0BAAAABJ2b3RhdGlvblZvdGluZ0Nvc3QJAQAAAAtnZXRJbnRWYWx1ZQAAAAECAAAAE3ZvdGF0aW9uX3ZvdGluZ2Nvc3QEAAAAF3ZvdGF0aW9uQ3Vyck9wdGlvblZhbHVlCQEAAAALZ2V0SW50VmFsdWUAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAl2b3RhdGlvbl8JAAGkAAAAAQUAAAASdm90YXRpb25DdXJyTnVtYmVyAgAAAAFfBQAAAAZvcHRpb24EAAAAE3ZvdGF0aW9uU3RhcnRIZWlnaHQJAQAAAAtnZXRJbnRWYWx1ZQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAl2b3RhdGlvbl8JAAGkAAAAAQUAAAASdm90YXRpb25DdXJyTnVtYmVyAgAAAAxfc3RhcnRoZWlnaHQEAAAAFHZvdGF0aW9uRmlu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", "chainId": 84, "height": 728201, "spentComplexity": 0 } View: original | compacted Prev: 5q15HYjPcLqNDdaWt8F8URTUqyqnmHLqehaJ8YDCwDH9 Next: none Diff:
OldNewDifferences
3535 func initialize (startingHeight,duration,votingAssetId,votingCost) = {
3636 let account = toBase58String(i.caller.bytes)
3737 let votationCurrNumber = getIntValue("votation_currentnumber")
38- let votationCurrStatus = getStrValue((("votation" + toString(votationCurrNumber)) + "_status"))
38+ 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))
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")
38- let votationCurrStatus = getStrValue((("votation" + toString(votationCurrNumber)) + "_status"))
38+ 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"))
8383 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 
23.78 ms