tx · FV2jCuEQBtCPBK6EqvawZ1QmYNzQXnRhusbSrU6hGbL5

3PM1rLmzig8f3aAwgPzNcqEHrK7739yqipe:  -0.00700000 Waves

2022.09.11 21:16 [3290297] smart account 3PM1rLmzig8f3aAwgPzNcqEHrK7739yqipe > SELF 0.00000000 Waves

{ "type": 13, "id": "FV2jCuEQBtCPBK6EqvawZ1QmYNzQXnRhusbSrU6hGbL5", "fee": 700000, "feeAssetId": null, "timestamp": 1662920226637, "version": 2, "chainId": 87, "sender": "3PM1rLmzig8f3aAwgPzNcqEHrK7739yqipe", "senderPublicKey": "2cQ896ajFpwtrs1irqizzzzCkJvDj2qkbU2mouQAheTJ", "proofs": [ "iQtAfM6R93nwPMDkUZ1CnWEMKWFkDW1xVqnM4WtuSgeozo3Q7SJquSwsf1AduQTAwJqRAy5awVjDbw6QkDT1KRp" ], "script": "base64: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", "height": 3290297, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F4YJRVXSU8RTGSLTXaiw5X8KdxuNJJwRXiRdpMrWF1UG Next: none Diff:
OldNewDifferences
4949 func startVesting (address,months) = {
5050 let amount = i.payments[0].amount
5151 let assetIdStr = getAssetString(i.payments[0].assetId)
52-[IntegerEntry((address + "_amount"), amount), StringEntry((address + "_assetId"), assetIdStr), IntegerEntry((address + "_start"), height), IntegerEntry((address + "_blocks"), (((months * 30) * 24) * 60)), IntegerEntry((address + "_lastHeight"), height), StringEntry((address + "_owner"), toString(i.caller))]
52+ if (if ((tryGetString((address + "_owner")) != ""))
53+ then (tryGetString((address + "_owner")) != toString(i.caller))
54+ else false)
55+ then throw("you have to be vesting owner")
56+ else [IntegerEntry((address + "_amount"), amount), StringEntry((address + "_assetId"), assetIdStr), IntegerEntry((address + "_start"), height), IntegerEntry((address + "_blocks"), (((months * 30) * 24) * 60)), IntegerEntry((address + "_lastHeight"), height), StringEntry((address + "_owner"), toString(i.caller))]
5357 }
58+
59+
60+
61+@Callable(i)
62+func updateVesting (address,months) = if (if ((tryGetString((address + "_owner")) != ""))
63+ then (tryGetString((address + "_owner")) != toString(i.caller))
64+ else false)
65+ then throw("you have to be vesting owner")
66+ else [IntegerEntry((address + "_blocks"), (((months * 30) * 24) * 60))]
5467
5568
5669
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getAssetString (assetId) = match assetId {
55 case b: ByteVector =>
66 toBase58String(b)
77 case _ =>
88 "WAVES"
99 }
1010
1111
1212 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
1313 then unit
1414 else fromBase58String(assetIdStr)
1515
1616
1717 func tryGetInteger (key) = match getInteger(this, key) {
1818 case b: Int =>
1919 b
2020 case _ =>
2121 0
2222 }
2323
2424
2525 func tryGetString (key) = match getString(this, key) {
2626 case b: String =>
2727 b
2828 case _ =>
2929 ""
3030 }
3131
3232
3333 @Callable(i)
3434 func claim () = {
3535 let address = toString(i.caller)
3636 let amount = tryGetInteger((address + "_amount"))
3737 let assetIdStr = tryGetString((address + "_assetId"))
3838 let startHeight = tryGetInteger((address + "_start"))
3939 let blocks = tryGetInteger((address + "_blocks"))
4040 let lastHeight = tryGetInteger((address + "_lastHeight"))
4141 let heightDelta = (min([height, (blocks + startHeight)]) - lastHeight)
4242 let toPay = fraction(amount, heightDelta, blocks)
4343 [ScriptTransfer(i.caller, toPay, getAssetBytes(assetIdStr)), IntegerEntry((address + "_lastHeight"), height)]
4444 }
4545
4646
4747
4848 @Callable(i)
4949 func startVesting (address,months) = {
5050 let amount = i.payments[0].amount
5151 let assetIdStr = getAssetString(i.payments[0].assetId)
52-[IntegerEntry((address + "_amount"), amount), StringEntry((address + "_assetId"), assetIdStr), IntegerEntry((address + "_start"), height), IntegerEntry((address + "_blocks"), (((months * 30) * 24) * 60)), IntegerEntry((address + "_lastHeight"), height), StringEntry((address + "_owner"), toString(i.caller))]
52+ if (if ((tryGetString((address + "_owner")) != ""))
53+ then (tryGetString((address + "_owner")) != toString(i.caller))
54+ else false)
55+ then throw("you have to be vesting owner")
56+ else [IntegerEntry((address + "_amount"), amount), StringEntry((address + "_assetId"), assetIdStr), IntegerEntry((address + "_start"), height), IntegerEntry((address + "_blocks"), (((months * 30) * 24) * 60)), IntegerEntry((address + "_lastHeight"), height), StringEntry((address + "_owner"), toString(i.caller))]
5357 }
58+
59+
60+
61+@Callable(i)
62+func updateVesting (address,months) = if (if ((tryGetString((address + "_owner")) != ""))
63+ then (tryGetString((address + "_owner")) != toString(i.caller))
64+ else false)
65+ then throw("you have to be vesting owner")
66+ else [IntegerEntry((address + "_blocks"), (((months * 30) * 24) * 60))]
5467
5568
5669
5770 @Callable(i)
5871 func cancelVesting () = nil
5972
6073
6174 @Verifier(tx)
6275 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
6376

github/deemru/w8io/873ac7e 
38.88 ms