tx · 3b6YjoVMye43yA3vMbLB12odXsBhdWNVAD7fze31aWNR

3N86AryjXNvAuNs3mV9xKPTjXnAYQimiHDF:  -0.01000000 Waves

2023.09.18 16:20 [2760877] smart account 3N86AryjXNvAuNs3mV9xKPTjXnAYQimiHDF > SELF 0.00000000 Waves

{ "type": 13, "id": "3b6YjoVMye43yA3vMbLB12odXsBhdWNVAD7fze31aWNR", "fee": 1000000, "feeAssetId": null, "timestamp": 1695043277081, "version": 2, "chainId": 84, "sender": "3N86AryjXNvAuNs3mV9xKPTjXnAYQimiHDF", "senderPublicKey": "7Zo8C4qkZishvcPg5SUixQPySKeM49Jeui21Tih7iPr9", "proofs": [ "rkzEsLRexH2M2kw3JbGJjEi9eaJGjAzNYCTUZcJAWB6JY7Z8ngoSaB9YrijU6Ry6Pj5NEedJLL9ryquYsnFtQg4" ], "script": "base64:BgIbCAISABIDCgEBEgQKAgICEgQKAggIEgQKAgEEGAADU0VQAgJfXwAPcmVwdXRhdGlvbkFzc2V0ASBp6x+DcpBVAG0dTZ5QIAuA7CaS8wuiEOK6KQOBSERbTgAMcHJvcG9zYWxUaW1lCQBoAgkAaAIJAGgCCQBoAgDoBwA8ADwAGAADAQtwcm9wb3NhbEtleQECaWQJALkJAgkAzAgCAgFwCQDMCAIJAKQDAQUCaWQFA25pbAUDU0VQAQtzZXRQcm9wb3NhbAcCaWQHY3JlYXRvcgV0aXRsZQR0ZXh0EXRpbWVzdGFtcENyZWF0aW9uDWNvdW50Vm90ZXNGb3IRQ291bnRWb3Rlc0FnYWluc3QJAQtTdHJpbmdFbnRyeQIJAQtwcm9wb3NhbEtleQEFAmlkCQC5CQIJAMwIAgkA2AQBCAUHY3JlYXRvcgVieXRlcwkAzAgCBQV0aXRsZQkAzAgCBQR0ZXh0CQDMCAIJAKQDAQURdGltZXN0YW1wQ3JlYXRpb24JAMwIAgkApAMBBQ1jb3VudFZvdGVzRm9yCQDMCAIJAKQDAQURQ291bnRWb3Rlc0FnYWluc3QFA25pbAUDU0VQAQtnZXRQcm9wb3NhbAECaWQEC3NhdmVkU3RyaW5nCQC1CQIEByRtYXRjaDAJAJ0IAgUEdGhpcwkBC3Byb3Bvc2FsS2V5AQUCaWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIScHJvcG9zYWwgbm90IGZvdW5kBQNTRVAJAJgKBgkA2QQBCQCRAwIFC3NhdmVkU3RyaW5nAAAJAJEDAgULc2F2ZWRTdHJpbmcAAQkAkQMCBQtzYXZlZFN0cmluZwACCQC2CQEJAJEDAgULc2F2ZWRTdHJpbmcAAwkAtgkBCQCRAwIFC3NhdmVkU3RyaW5nAAQJALYJAQkAkQMCBQtzYXZlZFN0cmluZwAFARJ1bmxvY2tUaW1lc3RhbXBLZXkBB2FkZHJlc3MJALkJAgkAzAgCAgJ1dAkAzAgCCQDYBAEFB2FkZHJlc3MFA25pbAUDU0VQARFjb3VudFByb3Bvc2Fsc0tleQACAmNwARBwcm9wb3NhbFRpdGxlS2V5AQJpZAkAuQkCCQDMCAICA3B0aQkAzAgCCQCkAwEFAmlkBQNuaWwFA1NFUAEPcHJvcG9zYWxUZXh0S2V5AQJpZAkAuQkCCQDMCAICA3B0ZQkAzAgCCQCkAwEFAmlkBQNuaWwFA1NFUAEccHJvcG9zYWxUaW1lc3RhbXBDcmVhdGlvbktleQECaWQJALkJAgkAzAgCAgNwdGMJAMwIAgkApAMBBQJpZAUDbmlsBQNTRVABGHByb3Bvc2FsQ291bnRWb3Rlc0ZvcktleQECaWQJALkJAgkAzAgCAgRwY3ZmCQDMCAIJAKQDAQUCaWQFA25pbAUDU0VQARxwcm9wb3NhbENvdW50Vm90ZXNBZ2FpbnN0S2V5AQJpZAkAuQkCCQDMCAICBHBjdmEJAMwIAgkApAMBBQJpZAUDbmlsBQNTRVABE3VzZXJQcm9wb3NhbFZvdGVLZXkCB2FkZHJlc3MCaWQJALkJAgkAzAgCAgN1cHYJAMwIAgkApAMBBQJpZAkAzAgCCQDYBAEFB2FkZHJlc3MFA25pbAUDU0VQARh1c2VyUHJvcG9zYWxWb3RlUG93ZXJLZXkCB2FkZHJlc3MCaWQJALkJAgkAzAgCAgR1cHZwCQDMCAIJAKQDAQUCaWQJAMwIAgkA2AQBBQdhZGRyZXNzBQNuaWwFA1NFUAEScG10UmVwdXRhdGlvbkFzc2V0AQFpAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFD3JlcHV0YXRpb25Bc3NldAYJAAIBAhZvbmx5IHJlcHV0YXRpb24gYXNzZXRzCQACAQIOb25seSAxIHBheW1lbnQBEmdldFVubG9ja1RpbWVzdGFtcAEHYWRkcmVzcwQHJG1hdGNoMAkAmggCBQR0aGlzCQESdW5sb2NrVGltZXN0YW1wS2V5AQUHYWRkcmVzcwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAEOY291bnRQcm9wb3NhbHMABAckbWF0Y2gwCQCaCAIFBHRoaXMJARFjb3VudFByb3Bvc2Fsc0tleQADCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABDWNvdW50Vm90ZXNGb3IBAmlkBAckbWF0Y2gwCQCaCAIFBHRoaXMJARhwcm9wb3NhbENvdW50Vm90ZXNGb3JLZXkBBQJpZAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAERY291bnRWb3Rlc0FnYWluc3QBAmlkBAckbWF0Y2gwCQCaCAIFBHRoaXMJARxwcm9wb3NhbENvdW50Vm90ZXNBZ2FpbnN0S2V5AQUCaWQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABDmNvdW50Vm90ZXNVc2VyAgdhZGRyZXNzAmlkBAckbWF0Y2gwCQCaCAIFBHRoaXMJARh1c2VyUHJvcG9zYWxWb3RlUG93ZXJLZXkCBQdhZGRyZXNzBQJpZAMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAFAWEAAAEWYmFsYW5jZVJlcHV0YXRpb25Bc3NldAEHYWRkcmVzcwQHJG1hdGNoMAkAmggCBQR0aGlzCQDYBAEFB2FkZHJlc3MDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAABGXByb3Bvc2FsVGltZXN0YW1wQ3JlYXRpb24BAmlkBAckbWF0Y2gwCQCaCAIFBHRoaXMJARxwcm9wb3NhbFRpbWVzdGFtcENyZWF0aW9uS2V5AQUCaWQDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhCQACAQIUcHJvcG9zYWwgbm90IGNyZWF0ZWQBD2lzUHJvcG9zYWxBbGl2ZQECaWQDAwkAZgIJAQ5jb3VudFByb3Bvc2FscwAFAmlkCQBmAgkAZAIJARlwcm9wb3NhbFRpbWVzdGFtcENyZWF0aW9uAQUCaWQFDHByb3Bvc2FsVGltZQgFCWxhc3RCbG9jawl0aW1lc3RhbXAHBgkAAgECEHByb3Bvc2FsTm90QWxpdmUFAWkBB2RlcG9zaXQABAZjaGVja3MJAMwIAgkBEnBtdFJlcHV0YXRpb25Bc3NldAEFAWkFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50CQEWYmFsYW5jZVJlcHV0YXRpb25Bc3NldAEICAUBaQZjYWxsZXIFYnl0ZXMECW5ld0Ftb3VudAkAZAIFDWN1cnJlbnRBbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQpjdXJyZW50S2V5BQluZXdBbW91bnQFA25pbAkAAgECE29ubHlSZXB1dGF0aW9uQXNzZXQBaQEId2l0aGRyYXcBBmFtb3VudAQKY3VycmVudEtleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBA1jdXJyZW50QW1vdW50BAckbWF0Y2gwCQCaCAIFBHRoaXMFCmN1cnJlbnRLZXkDCQABAgUHJG1hdGNoMAIDSW50BAFhBQckbWF0Y2gwBQFhAAAECW5ld0Ftb3VudAkAZQIFDWN1cnJlbnRBbW91bnQFBmFtb3VudAMJAGYCAAAFBmFtb3VudAkAAgECHkNhbid0IHdpdGhkcmF3IG5lZ2F0aXZlIGFtb3VudAMJAGYCCQESZ2V0VW5sb2NrVGltZXN0YW1wAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAAIBAgZMb2NrZWQDCQBmAgAABQluZXdBbW91bnQJAAIBAhJOb3QgZW5vdWdoIGJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIFCmN1cnJlbnRLZXkFCW5ld0Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAUPcmVwdXRhdGlvbkFzc2V0BQNuaWwBaQERY3JlYXRlUHJvcG9zYWxOZXcCBXRpdGxlBHRleHQEBWNvdW50CQEOY291bnRQcm9wb3NhbHMACQDMCAIJAQtzZXRQcm9wb3NhbAcFBWNvdW50CAUBaQZjYWxsZXIJANwEAQUFdGl0bGUJANwEAQUEdGV4dAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwBaQEOY3JlYXRlUHJvcG9zYWwCBXRpdGxlBHRleHQEBWNvdW50CQEOY291bnRQcm9wb3NhbHMACQDMCAIJAQtTdHJpbmdFbnRyeQIJARBwcm9wb3NhbFRpdGxlS2V5AQUFY291bnQFBXRpdGxlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9wcm9wb3NhbFRleHRLZXkBBQVjb3VudAUEdGV4dAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHHByb3Bvc2FsVGltZXN0YW1wQ3JlYXRpb25LZXkBBQVjb3VudAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJARFjb3VudFByb3Bvc2Fsc0tleQAJAGQCBQVjb3VudAABBQNuaWwBaQEEdm90ZQICaWQEdm90ZQMJAQ9pc1Byb3Bvc2FsQWxpdmUBBQJpZAQKdW5sb2NrVGltZQkAlgMBCQDMCAIJAGQCCQEZcHJvcG9zYWxUaW1lc3RhbXBDcmVhdGlvbgEFAmlkBQxwcm9wb3NhbFRpbWUJAMwIAgkBEmdldFVubG9ja1RpbWVzdGFtcAEICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAQBdQQHJG1hdGNoMAkAmwgCBQR0aGlzCQETdXNlclByb3Bvc2FsVm90ZUtleQIICAUBaQZjYWxsZXIFYnl0ZXMFAmlkAwkAAQIFByRtYXRjaDACB0Jvb2xlYW4EAWEFByRtYXRjaDADBQFhCQEMSW50ZWdlckVudHJ5AgkBGHByb3Bvc2FsQ291bnRWb3Rlc0ZvcktleQEFAmlkCQBlAgkBDWNvdW50Vm90ZXNGb3IBBQJpZAkBDmNvdW50Vm90ZXNVc2VyAggIBQFpBmNhbGxlcgVieXRlcwUCaWQJAQxJbnRlZ2VyRW50cnkCCQEccHJvcG9zYWxDb3VudFZvdGVzQWdhaW5zdEtleQEFAmlkCQBlAgkBDWNvdW50Vm90ZXNGb3IBBQJpZAkBDmNvdW50Vm90ZXNVc2VyAggIBQFpBmNhbGxlcgVieXRlcwUCaWQFBHVuaXQDCQAAAgUEdm90ZQYJAMwIAgkBDEludGVnZXJFbnRyeQIJARhwcm9wb3NhbENvdW50Vm90ZXNGb3JLZXkBBQJpZAkAZAIJAQ1jb3VudFZvdGVzRm9yAQUCaWQJARZiYWxhbmNlUmVwdXRhdGlvbkFzc2V0AQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEnVubG9ja1RpbWVzdGFtcEtleQEICAUBaQZjYWxsZXIFYnl0ZXMFCnVubG9ja1RpbWUJAMwIAgkBDEJvb2xlYW5FbnRyeQIJARN1c2VyUHJvcG9zYWxWb3RlS2V5AggIBQFpBmNhbGxlcgVieXRlcwUCaWQFBHZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJARh1c2VyUHJvcG9zYWxWb3RlUG93ZXJLZXkCCAgFAWkGY2FsbGVyBWJ5dGVzBQJpZAkBFmJhbGFuY2VSZXB1dGF0aW9uQXNzZXQBCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARxwcm9wb3NhbENvdW50Vm90ZXNBZ2FpbnN0S2V5AQUCaWQJAGQCCQERY291bnRWb3Rlc0FnYWluc3QBBQJpZAkBFmJhbGFuY2VSZXB1dGF0aW9uQXNzZXQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESdW5sb2NrVGltZXN0YW1wS2V5AQgIBQFpBmNhbGxlcgVieXRlcwUKdW5sb2NrVGltZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBE3VzZXJQcm9wb3NhbFZvdGVLZXkCCAgFAWkGY2FsbGVyBWJ5dGVzBQJpZAUEdm90ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGHVzZXJQcm9wb3NhbFZvdGVQb3dlcktleQIICAUBaQZjYWxsZXIFYnl0ZXMFAmlkCQEWYmFsYW5jZVJlcHV0YXRpb25Bc3NldAEICAUBaQZjYWxsZXIFYnl0ZXMFA25pbAkAAgECEHByb3Bvc2FsTm90QWxpdmUBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5XS4ZHw==", "height": 2760877, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: npn3zUSY7zetmEtDjeh9MMkHej2pe1GN59bzsMT6nsL Next: DyeEnGvQ9VF7asVeY3wWvAuTENpD9D2JcKqepC3MopT3 Diff:
OldNewDifferences
66 let reputationAsset = base58'88Tkdpqchhiqc9tNNG3SWQ2gfhZB4rBJKhMNS5Xmxhqw'
77
88 let proposalTime = ((((1000 * 60) * 60) * 24) * 3)
9+
10+func proposalKey (id) = makeString(["p", toString(id)], SEP)
11+
12+
13+func setProposal (id,creator,title,text,timestampCreation,countVotesFor,CountVotesAgainst) = StringEntry(proposalKey(id), makeString([toBase58String(creator.bytes), title, text, toString(timestampCreation), toString(countVotesFor), toString(CountVotesAgainst)], SEP))
14+
15+
16+func getProposal (id) = {
17+ let savedString = split( match getString(this, proposalKey(id)) {
18+ case s: String =>
19+ s
20+ case _ =>
21+ throw("proposal not found")
22+ }, SEP)
23+ $Tuple6(fromBase58String(savedString[0]), savedString[1], savedString[2], parseInt(savedString[3]), parseInt(savedString[4]), parseInt(savedString[5]))
24+ }
25+
926
1027 func unlockTimestampKey (address) = makeString(["ut", toBase58String(address)], SEP)
1128
141158
142159
143160 @Callable(i)
161+func createProposalNew (title,text) = {
162+ let count = countProposals()
163+[setProposal(count, i.caller, toBase16String(title), toBase16String(text), lastBlock.timestamp, 0, 0)]
164+ }
165+
166+
167+
168+@Callable(i)
144169 func createProposal (title,text) = {
145170 let count = countProposals()
146171 [StringEntry(proposalTitleKey(count), title), StringEntry(proposalTextKey(count), text), IntegerEntry(proposalTimestampCreationKey(count), lastBlock.timestamp), IntegerEntry(countProposalsKey(), (count + 1))]
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let reputationAsset = base58'88Tkdpqchhiqc9tNNG3SWQ2gfhZB4rBJKhMNS5Xmxhqw'
77
88 let proposalTime = ((((1000 * 60) * 60) * 24) * 3)
9+
10+func proposalKey (id) = makeString(["p", toString(id)], SEP)
11+
12+
13+func setProposal (id,creator,title,text,timestampCreation,countVotesFor,CountVotesAgainst) = StringEntry(proposalKey(id), makeString([toBase58String(creator.bytes), title, text, toString(timestampCreation), toString(countVotesFor), toString(CountVotesAgainst)], SEP))
14+
15+
16+func getProposal (id) = {
17+ let savedString = split( match getString(this, proposalKey(id)) {
18+ case s: String =>
19+ s
20+ case _ =>
21+ throw("proposal not found")
22+ }, SEP)
23+ $Tuple6(fromBase58String(savedString[0]), savedString[1], savedString[2], parseInt(savedString[3]), parseInt(savedString[4]), parseInt(savedString[5]))
24+ }
25+
926
1027 func unlockTimestampKey (address) = makeString(["ut", toBase58String(address)], SEP)
1128
1229
1330 func countProposalsKey () = "cp"
1431
1532
1633 func proposalTitleKey (id) = makeString(["pti", toString(id)], SEP)
1734
1835
1936 func proposalTextKey (id) = makeString(["pte", toString(id)], SEP)
2037
2138
2239 func proposalTimestampCreationKey (id) = makeString(["ptc", toString(id)], SEP)
2340
2441
2542 func proposalCountVotesForKey (id) = makeString(["pcvf", toString(id)], SEP)
2643
2744
2845 func proposalCountVotesAgainstKey (id) = makeString(["pcva", toString(id)], SEP)
2946
3047
3148 func userProposalVoteKey (address,id) = makeString(["upv", toString(id), toBase58String(address)], SEP)
3249
3350
3451 func userProposalVotePowerKey (address,id) = makeString(["upvp", toString(id), toBase58String(address)], SEP)
3552
3653
3754 func pmtReputationAsset (i) = if ((size(i.payments) == 1))
3855 then if ((i.payments[0].assetId == reputationAsset))
3956 then true
4057 else throw("only reputation assets")
4158 else throw("only 1 payment")
4259
4360
4461 func getUnlockTimestamp (address) = match getInteger(this, unlockTimestampKey(address)) {
4562 case a: Int =>
4663 a
4764 case _ =>
4865 0
4966 }
5067
5168
5269 func countProposals () = match getInteger(this, countProposalsKey()) {
5370 case a: Int =>
5471 a
5572 case _ =>
5673 0
5774 }
5875
5976
6077 func countVotesFor (id) = match getInteger(this, proposalCountVotesForKey(id)) {
6178 case a: Int =>
6279 a
6380 case _ =>
6481 0
6582 }
6683
6784
6885 func countVotesAgainst (id) = match getInteger(this, proposalCountVotesAgainstKey(id)) {
6986 case a: Int =>
7087 a
7188 case _ =>
7289 0
7390 }
7491
7592
7693 func countVotesUser (address,id) = match getInteger(this, userProposalVotePowerKey(address, id)) {
7794 case a: Int =>
7895 a
7996 case _ =>
8097 0
8198 }
8299
83100
84101 func balanceReputationAsset (address) = match getInteger(this, toBase58String(address)) {
85102 case a: Int =>
86103 a
87104 case _ =>
88105 0
89106 }
90107
91108
92109 func proposalTimestampCreation (id) = match getInteger(this, proposalTimestampCreationKey(id)) {
93110 case a: Int =>
94111 a
95112 case _ =>
96113 throw("proposal not created")
97114 }
98115
99116
100117 func isProposalAlive (id) = if (if ((countProposals() > id))
101118 then ((proposalTimestampCreation(id) + proposalTime) > lastBlock.timestamp)
102119 else false)
103120 then true
104121 else throw("proposalNotAlive")
105122
106123
107124 @Callable(i)
108125 func deposit () = {
109126 let checks = [pmtReputationAsset(i)]
110127 if ((checks == checks))
111128 then {
112129 let currentKey = toBase58String(i.caller.bytes)
113130 let currentAmount = balanceReputationAsset(i.caller.bytes)
114131 let newAmount = (currentAmount + i.payments[0].amount)
115132 [IntegerEntry(currentKey, newAmount)]
116133 }
117134 else throw("onlyReputationAsset")
118135 }
119136
120137
121138
122139 @Callable(i)
123140 func withdraw (amount) = {
124141 let currentKey = toBase58String(i.caller.bytes)
125142 let currentAmount = match getInteger(this, currentKey) {
126143 case a: Int =>
127144 a
128145 case _ =>
129146 0
130147 }
131148 let newAmount = (currentAmount - amount)
132149 if ((0 > amount))
133150 then throw("Can't withdraw negative amount")
134151 else if ((getUnlockTimestamp(i.caller.bytes) > lastBlock.timestamp))
135152 then throw("Locked")
136153 else if ((0 > newAmount))
137154 then throw("Not enough balance")
138155 else [IntegerEntry(currentKey, newAmount), ScriptTransfer(i.caller, amount, reputationAsset)]
139156 }
140157
141158
142159
143160 @Callable(i)
161+func createProposalNew (title,text) = {
162+ let count = countProposals()
163+[setProposal(count, i.caller, toBase16String(title), toBase16String(text), lastBlock.timestamp, 0, 0)]
164+ }
165+
166+
167+
168+@Callable(i)
144169 func createProposal (title,text) = {
145170 let count = countProposals()
146171 [StringEntry(proposalTitleKey(count), title), StringEntry(proposalTextKey(count), text), IntegerEntry(proposalTimestampCreationKey(count), lastBlock.timestamp), IntegerEntry(countProposalsKey(), (count + 1))]
147172 }
148173
149174
150175
151176 @Callable(i)
152177 func vote (id,vote) = if (isProposalAlive(id))
153178 then {
154179 let unlockTime = max([(proposalTimestampCreation(id) + proposalTime), getUnlockTimestamp(i.caller.bytes)])
155180 let u = match getBoolean(this, userProposalVoteKey(i.caller.bytes, id)) {
156181 case a: Boolean =>
157182 if (a)
158183 then IntegerEntry(proposalCountVotesForKey(id), (countVotesFor(id) - countVotesUser(i.caller.bytes, id)))
159184 else IntegerEntry(proposalCountVotesAgainstKey(id), (countVotesFor(id) - countVotesUser(i.caller.bytes, id)))
160185 case _ =>
161186 unit
162187 }
163188 if ((vote == true))
164189 then [IntegerEntry(proposalCountVotesForKey(id), (countVotesFor(id) + balanceReputationAsset(i.caller.bytes))), IntegerEntry(unlockTimestampKey(i.caller.bytes), unlockTime), BooleanEntry(userProposalVoteKey(i.caller.bytes, id), vote), IntegerEntry(userProposalVotePowerKey(i.caller.bytes, id), balanceReputationAsset(i.caller.bytes))]
165190 else [IntegerEntry(proposalCountVotesAgainstKey(id), (countVotesAgainst(id) + balanceReputationAsset(i.caller.bytes))), IntegerEntry(unlockTimestampKey(i.caller.bytes), unlockTime), BooleanEntry(userProposalVoteKey(i.caller.bytes, id), vote), IntegerEntry(userProposalVotePowerKey(i.caller.bytes, id), balanceReputationAsset(i.caller.bytes))]
166191 }
167192 else throw("proposalNotAlive")
168193
169194
170195 @Verifier(tx)
171196 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
172197

github/deemru/w8io/6500d08 
34.75 ms