tx · FjvegMYvh3kBJGBJMSXDAqTxZwyWLXTz7syrJ7GKntDP

3Mv7nXq2V2Dnn9oSkB5feRt6RxtqnPiAXNH:  -0.01400000 Waves

2022.04.11 07:28 [2003442] smart account 3Mv7nXq2V2Dnn9oSkB5feRt6RxtqnPiAXNH > SELF 0.00000000 Waves

{ "type": 13, "id": "FjvegMYvh3kBJGBJMSXDAqTxZwyWLXTz7syrJ7GKntDP", "fee": 1400000, "feeAssetId": null, "timestamp": 1649651301480, "version": 2, "chainId": 84, "sender": "3Mv7nXq2V2Dnn9oSkB5feRt6RxtqnPiAXNH", "senderPublicKey": "HJ4JLtArYaaiBiWho6gzLRbKUVM6ZVTaKmci6sgFQtEm", "proofs": [ "3Td15wUpWarrQMBURidLkqctdrgHCTmkQWKEnnArfEPWGhXbSap12PTPEQqASG97Vsy3q2cX89SSshkxebQVC11p" ], "script": "base64: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", "height": 2003442, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AHsRxHZqML38ooraMUyBNd5Xf2x4W8BF8o9MCj7dLqZy Next: CTguqxwJF4xNCkWq4AdWt4WpibyEQQs5hBBTQnC4erj2 Diff:
OldNewDifferences
99
1010 @Callable(i)
1111 func stake () = {
12- let pmt = i.payments[0]
12+ let pmt = value(i.payments[0])
1313 let pmtAmount = pmt.amount
1414 if ((pmt.assetId != ID))
1515 then throw("attach testNSBT tokens only")
2323 case _ =>
2424 throw("Can't find asset")
2525 }
26- let toIssue = (inTreasury / totalIssued)
27-[Reissue(LP, toIssue, true), ScriptTransfer(i.caller, toIssue, LP)]
26+ let singleLPinValue = fraction(totalIssued, 1, inTreasury)
27+ let amountToIssue = fraction(pmtAmount, singleLPinValue, 1)
28+ let LPIssue = Reissue(LP, singleLPinValue, true)
29+ let transfer = ScriptTransfer(i.caller, amountToIssue, LP)
30+[LPIssue, transfer]
2831 }
2932 }
3033
34+
35+
36+@Callable(i)
37+func withdraw (amount) = {
38+ let attached = i.payments[0]
39+ let paymentID = i.payments[0].assetId
40+ if ((paymentID != LP))
41+ then throw("Attach the correct LP token")
42+ else {
43+ let newAmount = (attached.amount - amount)
44+ if ((0 > amount))
45+ then throw("Can't withdraw negative amount")
46+ else if ((0 > newAmount))
47+ then throw("Not enough balance")
48+ else {
49+ let burning = Burn(LP, amount)
50+ let transfer = ScriptTransfer(i.caller, newAmount, ID)
51+[burning, transfer]
52+ }
53+ }
54+ }
55+
56+
57+@Verifier(tx)
58+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
3159
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let ID = base58'JAfMu2seKNzTVfqi5w5Pjh4kwwPTZPCEFpc2q2vDyFeh'
55
66 let LP = base58'6gryiTrJoLkNzBtZLVBuCyCvnxPY77TVUS2ouYYjjVTU'
77
88 let isStopped = false
99
1010 @Callable(i)
1111 func stake () = {
12- let pmt = i.payments[0]
12+ let pmt = value(i.payments[0])
1313 let pmtAmount = pmt.amount
1414 if ((pmt.assetId != ID))
1515 then throw("attach testNSBT tokens only")
1616 else if (isStopped)
1717 then throw("smart contract is on lock")
1818 else {
1919 let inTreasury = assetBalance(this, ID)
2020 let totalIssued = match assetInfo(LP) {
2121 case asset: Asset =>
2222 asset.quantity
2323 case _ =>
2424 throw("Can't find asset")
2525 }
26- let toIssue = (inTreasury / totalIssued)
27-[Reissue(LP, toIssue, true), ScriptTransfer(i.caller, toIssue, LP)]
26+ let singleLPinValue = fraction(totalIssued, 1, inTreasury)
27+ let amountToIssue = fraction(pmtAmount, singleLPinValue, 1)
28+ let LPIssue = Reissue(LP, singleLPinValue, true)
29+ let transfer = ScriptTransfer(i.caller, amountToIssue, LP)
30+[LPIssue, transfer]
2831 }
2932 }
3033
34+
35+
36+@Callable(i)
37+func withdraw (amount) = {
38+ let attached = i.payments[0]
39+ let paymentID = i.payments[0].assetId
40+ if ((paymentID != LP))
41+ then throw("Attach the correct LP token")
42+ else {
43+ let newAmount = (attached.amount - amount)
44+ if ((0 > amount))
45+ then throw("Can't withdraw negative amount")
46+ else if ((0 > newAmount))
47+ then throw("Not enough balance")
48+ else {
49+ let burning = Burn(LP, amount)
50+ let transfer = ScriptTransfer(i.caller, newAmount, ID)
51+[burning, transfer]
52+ }
53+ }
54+ }
55+
56+
57+@Verifier(tx)
58+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
3159

github/deemru/w8io/c3f4982 
37.84 ms