tx · 2APsWTGr7kSHB8wvQBK1VeortcvKnQ38r8HSrHLFkzLH

3ND8WogVWB75u56huNDjLxm7tNqAj1pbB5W:  -0.01000000 Waves

2022.11.05 19:57 [2304069] smart account 3ND8WogVWB75u56huNDjLxm7tNqAj1pbB5W > SELF 0.00000000 Waves

{ "type": 13, "id": "2APsWTGr7kSHB8wvQBK1VeortcvKnQ38r8HSrHLFkzLH", "fee": 1000000, "feeAssetId": null, "timestamp": 1667667467205, "version": 2, "chainId": 84, "sender": "3ND8WogVWB75u56huNDjLxm7tNqAj1pbB5W", "senderPublicKey": "BnSNSWnbk9bwniqubAETucmcH3Wy96Ar9X5Vrnxpjw6e", "proofs": [ "21tb1wiyKJwA5xjkQiUZ8XyQsRWtN5kx88sVStY4PEFD9dUfPqLxvhZN1M3AuCsFEEFBinPvmERLcPi9PZspxQgm" ], "script": "base64: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", "height": 2304069, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GVxe7LcgJWtZPMz6NGkUTb4GaLGmQAL7RX8vEwmg8k5V Next: 91Zi8kMe1W767ma8HTqo3vN5E8S3BQ9VzkU4EbcpV9S3 Diff:
OldNewDifferences
4646
4747
4848 @Callable(i)
49-func debug () = [IntegerEntry("leasedAmount", 0)]
50-
51-
52-
53-@Callable(i)
5449 func init (leaserAddress) = {
55- let check = mustManager(i)
56- if ((check == check))
50+ let checks = [mustManager(i), mustNotInited()]
51+ if ((checks == checks))
5752 then {
58- let inited = mustNotInited()
59- if ((inited == inited))
60- then {
61- let sWaves = Issue("sWaves", "", 0, 8, true, unit, 0)
62- let sWavesAssetId = calculateAssetId(sWaves)
53+ let sWaves = Issue("sWaves", "", 0, 8, true, unit, 0)
54+ let sWavesAssetId = calculateAssetId(sWaves)
6355 [BooleanEntry("inited", true), StringEntry("sWavesAssetId", toBase58String(sWavesAssetId)), StringEntry("leaserAddress", leaserAddress), IntegerEntry("ratio", precision), IntegerEntry("leasedAmount", 0), sWaves]
64- }
65- else throw("Strict value is not equal to itself.")
6656 }
6757 else throw("Strict value is not equal to itself.")
6858 }
8070 let ratio = getIntegerValue("ratio")
8171 let toReissue = fraction(payment.amount, precision, ratio)
8272 let sWavesAssetId = fromBase58String(getStringValue("sWavesAssetId"))
83-[Reissue(sWavesAssetId, toReissue, true), ScriptTransfer(i.caller, toReissue, sWavesAssetId)]
73+ let leasedAmount = getIntegerValue("leasedAmount")
74+ let leasedAddress = Address(fromBase58String(getStringValue("leaserAddress")))
75+ let newAmount = (leasedAmount + payment.amount)
76+ let lease = Lease(leasedAddress, newAmount)
77+ let newLeaseId = calculateLeaseId(lease)
78+ let results = [BinaryEntry("leaseId", newLeaseId), lease, IntegerEntry("leasedAmount", newAmount), Reissue(sWavesAssetId, toReissue, true), ScriptTransfer(i.caller, toReissue, sWavesAssetId)]
79+ match getBinary("leaseId") {
80+ case leaseId: ByteVector =>
81+LeaseCancel(leaseId) :: results
82+ case _: Unit =>
83+ results
84+ case _ =>
85+ throw("Match error")
86+ }
8487 }
8588 }
8689
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let precision = 10000000000
55
66 func keyManagerPublicKey () = getString("managerPublicKey")
77
88
99 func managerPublicKeyOrUnit () = match keyManagerPublicKey() {
1010 case s: String =>
1111 fromBase58String(s)
1212 case _: Unit =>
1313 unit
1414 case _ =>
1515 throw("Match error")
1616 }
1717
1818
1919 func mustManager (i) = {
2020 let pd = throw("permission denied")
2121 match managerPublicKeyOrUnit() {
2222 case pk: ByteVector =>
2323 if ((i.callerPublicKey == pk))
2424 then true
2525 else pd
2626 case _: Unit =>
2727 if ((i.caller == this))
2828 then true
2929 else pd
3030 case _ =>
3131 throw("Match error")
3232 }
3333 }
3434
3535
3636 func mustNotInited () = match getBoolean("inited") {
3737 case inited: Boolean =>
3838 if ((inited == false))
3939 then true
4040 else throw("Already inited")
4141 case _: Unit =>
4242 false
4343 case _ =>
4444 throw("Match error")
4545 }
4646
4747
4848 @Callable(i)
49-func debug () = [IntegerEntry("leasedAmount", 0)]
50-
51-
52-
53-@Callable(i)
5449 func init (leaserAddress) = {
55- let check = mustManager(i)
56- if ((check == check))
50+ let checks = [mustManager(i), mustNotInited()]
51+ if ((checks == checks))
5752 then {
58- let inited = mustNotInited()
59- if ((inited == inited))
60- then {
61- let sWaves = Issue("sWaves", "", 0, 8, true, unit, 0)
62- let sWavesAssetId = calculateAssetId(sWaves)
53+ let sWaves = Issue("sWaves", "", 0, 8, true, unit, 0)
54+ let sWavesAssetId = calculateAssetId(sWaves)
6355 [BooleanEntry("inited", true), StringEntry("sWavesAssetId", toBase58String(sWavesAssetId)), StringEntry("leaserAddress", leaserAddress), IntegerEntry("ratio", precision), IntegerEntry("leasedAmount", 0), sWaves]
64- }
65- else throw("Strict value is not equal to itself.")
6656 }
6757 else throw("Strict value is not equal to itself.")
6858 }
6959
7060
7161
7262 @Callable(i)
7363 func stake () = {
7464 let payment = i.payments[0]
7565 if ((payment.assetId != unit))
7666 then throw("Only WAVES supported")
7767 else if ((size(i.payments) != 1))
7868 then throw("Wrong payments amount")
7969 else {
8070 let ratio = getIntegerValue("ratio")
8171 let toReissue = fraction(payment.amount, precision, ratio)
8272 let sWavesAssetId = fromBase58String(getStringValue("sWavesAssetId"))
83-[Reissue(sWavesAssetId, toReissue, true), ScriptTransfer(i.caller, toReissue, sWavesAssetId)]
73+ let leasedAmount = getIntegerValue("leasedAmount")
74+ let leasedAddress = Address(fromBase58String(getStringValue("leaserAddress")))
75+ let newAmount = (leasedAmount + payment.amount)
76+ let lease = Lease(leasedAddress, newAmount)
77+ let newLeaseId = calculateLeaseId(lease)
78+ let results = [BinaryEntry("leaseId", newLeaseId), lease, IntegerEntry("leasedAmount", newAmount), Reissue(sWavesAssetId, toReissue, true), ScriptTransfer(i.caller, toReissue, sWavesAssetId)]
79+ match getBinary("leaseId") {
80+ case leaseId: ByteVector =>
81+LeaseCancel(leaseId) :: results
82+ case _: Unit =>
83+ results
84+ case _ =>
85+ throw("Match error")
86+ }
8487 }
8588 }
8689
8790
8891
8992 @Callable(i)
9093 func unstake () = {
9194 let payment = i.payments[0]
9295 let sWavesAssetId = fromBase58String(getStringValue("sWavesAssetId"))
9396 if ((payment.assetId != sWavesAssetId))
9497 then throw("Only sWAVES suppoerted")
9598 else if ((size(i.payments) != 1))
9699 then throw("Wrong payments amount")
97100 else {
98101 let ratio = getIntegerValue("ratio")
99102 let toTransfer = fraction(payment.amount, ratio, precision)
100103 let assetId = getStringValue("internalAssetId")
101104 [Burn(sWavesAssetId, payment.amount), ScriptTransfer(i.caller, toTransfer, unit)]
102105 }
103106 }
104107
105108
106109 @Verifier(tx)
107110 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
108111

github/deemru/w8io/169f3d6 
132.46 ms