tx · EJ2Y6VgYqkZyUgrPfspvCV54ffLPDXjPnnkbMQeMFq7i

3N2ewmJdcFYwdM3mPpRapXZ1aaSWTpTGuE5:  -0.10000000 Waves

2021.05.11 18:05 [1521178] smart account 3N2ewmJdcFYwdM3mPpRapXZ1aaSWTpTGuE5 > SELF 0.00000000 Waves

{ "type": 13, "id": "EJ2Y6VgYqkZyUgrPfspvCV54ffLPDXjPnnkbMQeMFq7i", "fee": 10000000, "feeAssetId": null, "timestamp": 1620745613921, "version": 2, "chainId": 84, "sender": "3N2ewmJdcFYwdM3mPpRapXZ1aaSWTpTGuE5", "senderPublicKey": "2icPa3y8k81CaH7dsVJZZjVYGYkD35waVbs6YAzU1oaL", "proofs": [ "2EbmZ5xE71sCbwtKUKvMrFRqS3b7YhfB5sSkYUjMhWFYC7ipbJFoqRxqckUL5s5kfMAofvYv5ZKMcQ44qE44RBTh" ], "script": "base64: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", "height": 1521178, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J41wckgn6FnamjafMku7bpqqpp61fCtGmGNfn6mfqbvt Next: 8mLTC3JyCWbF5FC8DfuXWxuF7vgtixhKyGzzd7LJry5k Diff:
OldNewDifferences
4848 then if ((tryGetInteger(((caller + "_voted_working_group_members_for_") + memberAddress)) != 1))
4949 then WriteSet([DataEntry(votingKey, votesAmountState), DataEntry(((caller + "_voted_working_group_members_for_") + memberAddress), 1)])
5050 else throw("You have already voted")
51- else throw("You have no rights")
51+ else throw(caller)
5252 }
5353
5454
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func isOwner (address) = (address == this)
55
66
77 func tryGetInteger (key) = {
88 let val = match getInteger(this, key) {
99 case b: Int =>
1010 b
1111 case _ =>
1212 0
1313 }
1414 val
1515 }
1616
1717
1818 func getGroup () = {
1919 let val = match getString(this, "working_group_members") {
2020 case b: String =>
2121 b
2222 case _ =>
2323 ""
2424 }
2525 val
2626 }
2727
2828
2929 func isGroupMember (a) = (tryGetInteger((("working_group_member_" + toString(a)) + "_weight")) > 0)
3030
3131
3232 func isVoted (a) = (tryGetInteger((("working_group_member_" + toString(a)) + "_weight")) > 0)
3333
3434
3535 func getDecisionValue (d) = if ((d == "rejected"))
3636 then "rejected"
3737 else if ((d == "approved"))
3838 then "approved"
3939 else throw("you need to vote with 'approved' or 'rejected' value")
4040
4141
4242 @Callable(i)
4343 func votesOnMember (memberAddress) = {
4444 let votingKey = (("dao_member_" + memberAddress) + "_voting_state")
4545 let votesAmountState = (tryGetInteger(votingKey) + 1)
4646 let caller = toString(i.caller)
4747 if (!(isGroupMember(i.caller)))
4848 then if ((tryGetInteger(((caller + "_voted_working_group_members_for_") + memberAddress)) != 1))
4949 then WriteSet([DataEntry(votingKey, votesAmountState), DataEntry(((caller + "_voted_working_group_members_for_") + memberAddress), 1)])
5050 else throw("You have already voted")
51- else throw("You have no rights")
51+ else throw(caller)
5252 }
5353
5454
5555
5656 @Callable(i)
5757 func proposeMember (memberAddress) = {
5858 let caller = toString(i.caller)
5959 if ((tryGetInteger(("dao_member_" + memberAddress)) == 1))
6060 then throw("This user already exists")
6161 else WriteSet([DataEntry(("dao_member_" + memberAddress), "proposed")])
6262 }
6363
6464
6565
6666 @Callable(i)
6767 func addGroupMember (memberAddress) = if (!(isOwner(i.caller)))
6868 then throw("access only to the owner")
6969 else if ((tryGetInteger((("working_group_member_" + memberAddress) + "_weight")) == 1))
7070 then throw("This user already exists")
7171 else {
7272 let group = getGroup()
7373 let newGroup = ((group + ";") + memberAddress)
7474 WriteSet([DataEntry("working_group_members", newGroup), DataEntry((("working_group_member_" + memberAddress) + "_weight"), 1)])
7575 }
7676
7777
7878
7979 @Callable(i)
8080 func decisionOnMember (memberAddress,decisionValue) = if (!(isOwner(i.caller)))
8181 then throw("access only to the owner")
8282 else WriteSet([DataEntry(("dao_member_" + memberAddress), getDecisionValue(decisionValue))])
8383
8484

github/deemru/w8io/169f3d6 
38.71 ms