tx · 7GwfEHQ37WfsNB7QZi1QFpLFnvB4RrC7fekWsta2BZ6s

3N1JYSyNP7mn7f1YTZ2aRdi6ThpKw23j9Sy:  -0.01000000 Waves

2022.11.05 21:03 [2304142] smart account 3N1JYSyNP7mn7f1YTZ2aRdi6ThpKw23j9Sy > SELF 0.00000000 Waves

{ "type": 13, "id": "7GwfEHQ37WfsNB7QZi1QFpLFnvB4RrC7fekWsta2BZ6s", "fee": 1000000, "feeAssetId": null, "timestamp": 1667671445124, "version": 2, "chainId": 84, "sender": "3N1JYSyNP7mn7f1YTZ2aRdi6ThpKw23j9Sy", "senderPublicKey": "65hdh3BQVcB4NhB1URp1RBWMK7AWDhrCSVjwbFjS64jo", "proofs": [ "5pTk4oqmhGYTbVeYQXUqMSP5ezqi9gGi1KRKVmHy3DkzWW8EWmYigbB1pfev2JMLrWmx2Ce5JMbpXcKy3yGdiWko" ], "script": "base64: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", "height": 2304142, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5q2uHhyUo3db3yprrkoeKnrfNFvbNodv1wPBrzq33FeB Next: Bp5Yuxvbn25WXotYiA4aVECsXpPCo2Na21rbRjCsGrN4 Diff:
OldNewDifferences
111111 let newLeaseId = calculateLeaseId(lease)
112112 [lease, BinaryEntry("leaseId", newLeaseId), IntegerEntry("leasedAmount", newAmount)]
113113 }
114- else [DeleteEntry("leaseId")]
114+ else [DeleteEntry("leaseId"), IntegerEntry("leasedAmount", 0)]
115115 let results = [LeaseCancel(leaseId), Burn(sWavesAssetId, payment.amount), ScriptTransfer(i.caller, toTransfer, unit)]
116116 (results ++ leaseResults)
117117 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let precision = 1000000000000000000
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)
4949 func init (leaserAddress) = {
5050 let checks = [mustManager(i), mustNotInited()]
5151 if ((checks == checks))
5252 then {
5353 let sWaves = Issue("sWaves", "", 0, 8, true, unit, 0)
5454 let sWavesAssetId = calculateAssetId(sWaves)
5555 [BooleanEntry("inited", true), StringEntry("sWavesAssetId", toBase58String(sWavesAssetId)), StringEntry("leaserAddress", leaserAddress), IntegerEntry("ratio", precision), IntegerEntry("leasedAmount", 0), sWaves]
5656 }
5757 else throw("Strict value is not equal to itself.")
5858 }
5959
6060
6161
6262 @Callable(i)
6363 func stake () = {
6464 let payment = i.payments[0]
6565 if ((payment.assetId != unit))
6666 then throw("Only WAVES supported")
6767 else if ((size(i.payments) != 1))
6868 then throw("Wrong payments amount")
6969 else {
7070 let ratio = getIntegerValue("ratio")
7171 let toReissue = fraction(payment.amount, precision, ratio)
7272 let sWavesAssetId = fromBase58String(getStringValue("sWavesAssetId"))
7373 let leasedAmount = getIntegerValue("leasedAmount")
7474 let newAmount = (leasedAmount + payment.amount)
7575 let leaserAddress = Address(fromBase58String(getStringValue("leaserAddress")))
7676 let lease = Lease(leaserAddress, newAmount)
7777 let newLeaseId = calculateLeaseId(lease)
7878 let results = [BinaryEntry("leaseId", newLeaseId), lease, IntegerEntry("leasedAmount", newAmount), Reissue(sWavesAssetId, toReissue, true), ScriptTransfer(i.caller, toReissue, sWavesAssetId)]
7979 match getBinary("leaseId") {
8080 case leaseId: ByteVector =>
8181 LeaseCancel(leaseId) :: results
8282 case _: Unit =>
8383 results
8484 case _ =>
8585 throw("Match error")
8686 }
8787 }
8888 }
8989
9090
9191
9292 @Callable(i)
9393 func unstake () = {
9494 let payment = i.payments[0]
9595 let sWavesAssetId = fromBase58String(getStringValue("sWavesAssetId"))
9696 if ((payment.assetId != sWavesAssetId))
9797 then throw("Only sWAVES supported")
9898 else if ((size(i.payments) != 1))
9999 then throw("Wrong payments amount")
100100 else {
101101 let ratio = getIntegerValue("ratio")
102102 let toTransfer = fraction(payment.amount, ratio, precision)
103103 let assetId = getStringValue("internalAssetId")
104104 let leasedAmount = getIntegerValue("leasedAmount")
105105 let newAmount = (leasedAmount - toTransfer)
106106 let leaseId = getBinaryValue("leaseId")
107107 let leaseResults = if ((newAmount > 0))
108108 then {
109109 let leaserAddress = Address(fromBase58String(getStringValue("leaserAddress")))
110110 let lease = Lease(leaserAddress, newAmount)
111111 let newLeaseId = calculateLeaseId(lease)
112112 [lease, BinaryEntry("leaseId", newLeaseId), IntegerEntry("leasedAmount", newAmount)]
113113 }
114- else [DeleteEntry("leaseId")]
114+ else [DeleteEntry("leaseId"), IntegerEntry("leasedAmount", 0)]
115115 let results = [LeaseCancel(leaseId), Burn(sWavesAssetId, payment.amount), ScriptTransfer(i.caller, toTransfer, unit)]
116116 (results ++ leaseResults)
117117 }
118118 }
119119
120120
121121 @Verifier(tx)
122122 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
123123

github/deemru/w8io/03bedc9 
85.56 ms