tx · 2A8tU5AXsf5vVhQnwHJ5X4FJTZfsb4ND73Gknkurqnaj

3N5YzdqDE6FDdsLNGXU4G4yrmirb2oiifEc:  -0.01000000 Waves

2022.10.21 11:08 [2281910] smart account 3N5YzdqDE6FDdsLNGXU4G4yrmirb2oiifEc > SELF 0.00000000 Waves

{ "type": 13, "id": "2A8tU5AXsf5vVhQnwHJ5X4FJTZfsb4ND73Gknkurqnaj", "fee": 1000000, "feeAssetId": null, "timestamp": 1666339708155, "version": 2, "chainId": 84, "sender": "3N5YzdqDE6FDdsLNGXU4G4yrmirb2oiifEc", "senderPublicKey": "E3rsNDJ7CyVzRYUkm1k4GYLuZYYxzQioRgWedzPYXTSL", "proofs": [ "4fgeQAuzW7pb5qRgQBfvb3tpGRwGBj6Xx1nocqT88hghhi8L6oWFBTbjgGrVWgGk4SFbdPB38ZTXDcjVrfvyQigw" ], "script": "base64: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", "height": 2281910, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9tuUdbBR7tbAzRv6ZQCayo4wQPV51ehYozhLhUEHXfXo Next: CwKnpEMwVKg5B4gCdryW29Ju92F6eCPErhdKaWEKoYN5 Diff:
OldNewDifferences
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let voteAsset = base58'43W4FcqA1rEpSmUGHoGiXvpSLfhadws9LS5j3SJsKxxS'
5+
6+let gAsset = base58'AkU3DaDKndbWSVaw4LmxuduVQBXkwkKZ7mV5dxrAqLvT'
7+
8+let voteAssetStr = "43W4FcqA1rEpSmUGHoGiXvpSLfhadws9LS5j3SJsKxxS"
9+
10+let gAssetStr = "AkU3DaDKndbWSVaw4LmxuduVQBXkwkKZ7mV5dxrAqLvT"
511
612 let newPurposePrice = 10000000000
713
1016 let newPurposeKey = "purpose"
1117
1218 let purposeIdKey = "purposeId"
19+
20+let multiplier = 2
1321
1422 func isPaymentOk (i) = {
1523 let acceptableAssetId = voteAsset
6169 if (if ((startHeight > height))
6270 then true
6371 else (height > endHeight))
64- then throw(("voting period is over for purpose: " + toString(purposeId)))
72+ then throw(("voting period is over for purposal: " + toString(purposeId)))
6573 else if (if ((0 >= vote))
6674 then true
6775 else (vote > 2))
6977 else {
7078 let amount = i.payments[0].amount
7179 let lockTill = (height + voteDuration)
72- if (if ((0 >= amount))
80+ if (if (if ((0 >= amount))
7381 then true
7482 else (i.payments[0].assetId != voteAsset))
83+ then true
84+ else (i.payments[0].assetId != gAsset))
7585 then throw("invalid token attached")
7686 else {
7787 let totalVote = valueOrElse(getInteger(this, (((newPurposeKey + "_") + toString(purposeId)) + "_totalVote")), 0)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let voteAsset = base58'43W4FcqA1rEpSmUGHoGiXvpSLfhadws9LS5j3SJsKxxS'
5+
6+let gAsset = base58'AkU3DaDKndbWSVaw4LmxuduVQBXkwkKZ7mV5dxrAqLvT'
7+
8+let voteAssetStr = "43W4FcqA1rEpSmUGHoGiXvpSLfhadws9LS5j3SJsKxxS"
9+
10+let gAssetStr = "AkU3DaDKndbWSVaw4LmxuduVQBXkwkKZ7mV5dxrAqLvT"
511
612 let newPurposePrice = 10000000000
713
814 let voteDuration = (7 * 1440)
915
1016 let newPurposeKey = "purpose"
1117
1218 let purposeIdKey = "purposeId"
19+
20+let multiplier = 2
1321
1422 func isPaymentOk (i) = {
1523 let acceptableAssetId = voteAsset
1624 if ((size(i.payments) == 0))
1725 then throw("payment not attached")
1826 else {
1927 let p = i.payments[0]
2028 match p.assetId {
2129 case assetId: ByteVector =>
2230 if ((assetId == acceptableAssetId))
2331 then (p.amount == newPurposePrice)
2432 else false
2533 case _ =>
2634 throw("wrong payment asset")
2735 }
2836 }
2937 }
3038
3139
3240 @Callable(i)
3341 func newPurpose (purpose) = {
3442 let stringSize = size(toBytes(purpose))
3543 let currentKey = toBase58String(i.caller.bytes)
3644 let purposeId = valueOrElse(getInteger(this, purposeIdKey), 0)
3745 if (if ((stringSize > 200))
3846 then true
3947 else (10 > stringSize))
4048 then throw("purpose text cannot be more than 200")
4149 else if (!(isPaymentOk(i)))
4250 then throw(("you have to pay " + toString(newPurposePrice)))
4351 else {
4452 let startHeight = height
4553 let endHeight = (height + voteDuration)
4654 let text = toBase64String(toBytes(purpose))
4755 let id = (purposeId + 1)
4856 [StringEntry((((newPurposeKey + "_") + toString(id)) + "_text"), text), IntegerEntry(purposeIdKey, id), StringEntry((((newPurposeKey + "_") + toString(id)) + "_duration"), ((toString(startHeight) + "_") + toString(endHeight))), StringEntry((((newPurposeKey + "_") + toString(id)) + "_owner"), currentKey)]
4957 }
5058 }
5159
5260
5361
5462 @Callable(i)
5563 func vote4EnnoDAO (purposeId,vote) = {
5664 let getDuration = valueOrErrorMessage(getString(this, (((newPurposeKey + "_") + toString(purposeId)) + "_duration")), "purpose not found")
5765 let duration = split(getDuration, "_")
5866 let startHeight = valueOrElse(parseInt(duration[0]), 0)
5967 let endHeight = valueOrElse(parseInt(duration[1]), 0)
6068 let currentKey = toBase58String(i.caller.bytes)
6169 if (if ((startHeight > height))
6270 then true
6371 else (height > endHeight))
64- then throw(("voting period is over for purpose: " + toString(purposeId)))
72+ then throw(("voting period is over for purposal: " + toString(purposeId)))
6573 else if (if ((0 >= vote))
6674 then true
6775 else (vote > 2))
6876 then throw("vote must be yes or no")
6977 else {
7078 let amount = i.payments[0].amount
7179 let lockTill = (height + voteDuration)
72- if (if ((0 >= amount))
80+ if (if (if ((0 >= amount))
7381 then true
7482 else (i.payments[0].assetId != voteAsset))
83+ then true
84+ else (i.payments[0].assetId != gAsset))
7585 then throw("invalid token attached")
7686 else {
7787 let totalVote = valueOrElse(getInteger(this, (((newPurposeKey + "_") + toString(purposeId)) + "_totalVote")), 0)
7888 let walletTotalVote = valueOrElse(getInteger(this, ((((newPurposeKey + "_") + toString(purposeId)) + currentKey) + "_walletTotalVote")), 0)
7989 let firstVoteCast = valueOrElse(getInteger(this, (((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_firstVoteBlock")), height)
8090 if ((vote == 1))
8191 then {
8292 let getYes = valueOrElse(getInteger(this, (((newPurposeKey + "_") + toString(purposeId)) + "_yes")), 0)
8393 let getYesUser = valueOrElse(getInteger(this, (((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_yes")), 0)
8494 let total = (getYes + amount)
8595 [IntegerEntry((((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_yes"), (getYesUser + amount)), IntegerEntry((((newPurposeKey + "_") + toString(purposeId)) + "_yes"), total), IntegerEntry((((newPurposeKey + "_") + toString(purposeId)) + "_totalVote"), (amount + totalVote)), IntegerEntry((((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_firstVoteBlock"), firstVoteCast), IntegerEntry((((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_walletTotalVote"), (amount + walletTotalVote))]
8696 }
8797 else if ((vote == 2))
8898 then {
8999 let getNo = valueOrElse(getInteger(this, (((newPurposeKey + "_") + toString(purposeId)) + "_no")), 0)
90100 let getNoUser = valueOrElse(getInteger(this, (((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_no")), 0)
91101 let total = (getNo + amount)
92102 [IntegerEntry((((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_no"), (getNoUser + amount)), IntegerEntry((((newPurposeKey + "_") + toString(purposeId)) + "_no"), total), IntegerEntry((((newPurposeKey + "_") + toString(purposeId)) + "_totalVote"), (amount + totalVote)), IntegerEntry((((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_firstVoteBlock"), firstVoteCast), IntegerEntry((((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_walletTotalVote"), (amount + walletTotalVote))]
93103 }
94104 else throw("nothing to do my friend")
95105 }
96106 }
97107 }
98108
99109
100110
101111 @Callable(i)
102112 func claimBack (purposeId) = {
103113 let currentKey = toBase58String(i.caller.bytes)
104114 let getYesUser = valueOrElse(getInteger(this, (((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_yes")), 0)
105115 let getNoUser = valueOrElse(getInteger(this, (((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_no")), 0)
106116 let getLockBlock = valueOrErrorMessage(getInteger(this, (((((newPurposeKey + "_") + toString(purposeId)) + "_") + currentKey) + "_firstVoteBlock")), "something went wrong. probably you did not vote for this!")
107117 let lockBlock = (getLockBlock + voteDuration)
108118 let total = (getYesUser + getNoUser)
109119 if ((height > lockBlock))
110120 then if ((total > 0))
111121 then [ScriptTransfer(i.caller, total, voteAsset)]
112122 else throw("nothing to claim!")
113123 else throw(("still locked! will be available at: " + toString(getLockBlock)))
114124 }
115125
116126

github/deemru/w8io/873ac7e 
34.41 ms