tx · AV6LNnpCmZaQpp7FVdiCHf8cAJ2d9L7B2eDKPg6sF5Rc

3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh:  -0.00900000 Waves

2022.12.02 00:59 [2341836] smart account 3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh > SELF 0.00000000 Waves

{ "type": 13, "id": "AV6LNnpCmZaQpp7FVdiCHf8cAJ2d9L7B2eDKPg6sF5Rc", "fee": 900000, "feeAssetId": null, "timestamp": 1669932073964, "version": 2, "chainId": 84, "sender": "3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh", "senderPublicKey": "HscGVyJG5M3NMHWKfQbucCBsFLGPi8VmTxTAmcBbaWTa", "proofs": [ "5TqM29awiQCoTqXwjvkpjN1kF8V57LUZ5orccwPuuaFj3RY1iuqgBMBGSVRVzd8mLHyrk6HGqHEQNjYB5qsqfVNn" ], "script": "base64:BgITCAISAwoBCBIDCgEIEgASAwoBARQABlNjYWxlNgDAhD0ABlNjYWxlOACAwtcvAAdTY2FsZTE2CQBoAgUGU2NhbGU4BQZTY2FsZTgACnZhbGlkYXRvcnMJAMwIAgIjM05BbXFHanhSQlJQb1JIWlVVcXZoaU5TNmF4bkdwaW5MSEMFA25pbAATcG9maXRBY2NvdW50QWRkcmVzcwkBB0FkZHJlc3MBARoBVOTLNQrXvZ0T4sLuN4IVu970uKp+JCCZjwAHYXNzZXRJZAIsSEhtYUZRcFVvYndLeHpqejRFQ2FCUHRvRjY5a3VqS3dVMmNvemFVelRzZ3YAC3B1enpsZVBvb2xzCQDMCAICIzNONlN0SmRnbVRmQVJzUk5uOVh0NXJEWUVzM3ByNEtHeTF2BQNuaWwBCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIEVW5pdAQBeAUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkBBXZhbHVlAQUHYXNzZXRJZAEJdHJ5R2V0SW50AgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwBQFiAAABCXRyeUdldFN0cgIHYWRkcmVzcwNrZXkEByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICBVdBVkVTARtnZXRQdXp6bGVQb29sU3VwcGxpZWRBbW91bnQBBnBvb2xJZAQHYmFsYW5jZQkA8AcCCQEHQWRkcmVzcwEJANkEAQUGcG9vbElkCQDZBAEFB2Fzc2V0SWQFB2JhbGFuY2UBFmdldFRvdGFsU3VwcGxpZWRBbW91bnQABAtjdXJyZW50UG9vbAkBCXRyeUdldFN0cgIFBHRoaXMCC2N1cnJlbnRQb29sAwkAAAIFC2N1cnJlbnRQb29sAgAJAAIBCQCsAgICGUNhbm5vdCBmaW5kIHBvb2wgd2l0aCBpZCAFC2N1cnJlbnRQb29sCQEbZ2V0UHV6emxlUG9vbFN1cHBsaWVkQW1vdW50AQULY3VycmVudFBvb2wBFndpdGhkcmF3RnJvbVB1enpsZVBvb2wCBnBvb2xJZAZhbW91bnQEC3Bvb2xBZGRyZXNzCQEHQWRkcmVzcwEJANkEAQUGcG9vbElkBAp3aXRoZHJhd1R4AwkAZgIFBmFtb3VudAAACQD8BwQFC3Bvb2xBZGRyZXNzAgh3aXRoZHJhdwkAzAgCBQdhc3NldElkCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwCAAMJAAACBQp3aXRoZHJhd1R4BQp3aXRoZHJhd1R4BQp3aXRoZHJhd1R4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ5jYWxjdWxhdGVTUmF0ZQAEDmxhc3RDaGVja1NSYXRlCQEJdHJ5R2V0SW50AgUEdGhpcwIVZ2xvYmFsX2xhc3RDaGVja1NSYXRlBAxzdGFrZWRBbW91bnQJAQl0cnlHZXRJbnQCBQR0aGlzAg1nbG9iYWxfc3Rha2VkBBFsYXN0Q2hlY2tTQW1vdW51dAkAawMFDHN0YWtlZEFtb3VudAUObGFzdENoZWNrU1JhdGUFBlNjYWxlOAQTdG90YWxTdXBwbGllZEFtb3VudAkBFmdldFRvdGFsU3VwcGxpZWRBbW91bnQAAwkAAAIFEWxhc3RDaGVja1NBbW91bnV0AAAFBlNjYWxlOAQDZmVlCQBrAwkAZQIFE3RvdGFsU3VwcGxpZWRBbW91bnQFEWxhc3RDaGVja1NBbW91bnV0AMCrpi0FBlNjYWxlOAQIZmVlQW1vbnQDCQBmAgUDZmVlAAAFA2ZlZQAABAVzUmF0ZQkAawMFDmxhc3RDaGVja1NSYXRlCQBlAgUTdG90YWxTdXBwbGllZEFtb3VudAUDZmVlBRFsYXN0Q2hlY2tTQW1vdW51dAMJAGYCBQZTY2FsZTgFBXNSYXRlBQZTY2FsZTgFBXNSYXRlAQxyZWNhbGNSZXN1bHQBDHN0YWtlZENoYW5nZQQMc3Rha2VkQW1vdW50CQEJdHJ5R2V0SW50AgUEdGhpcwINZ2xvYmFsX3N0YWtlZAQFc1JhdGUJAQ5jYWxjdWxhdGVTUmF0ZQAEBnByb2ZpdAkAZQIJARZnZXRUb3RhbFN1cHBsaWVkQW1vdW50AAkAawMFDHN0YWtlZEFtb3VudAUFc1JhdGUFBlNjYWxlOAQMcHJvZml0QW1vdW50AwkAZgIFBnByb2ZpdAAABQZwcm9maXQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNwb2ZpdEFjY291bnRBZGRyZXNzBQxwcm9maXRBbW91bnQJANkEAQUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgINZ2xvYmFsX3N0YWtlZAkAZAIFDHN0YWtlZEFtb3VudAUMc3Rha2VkQ2hhbmdlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhVnbG9iYWxfbGFzdENoZWNrU1JhdGUFBXNSYXRlBQNuaWwBDHN1cHBseVJlc3VsdAEGcG9vbElkAwkAAAIJAM8IAgULcHV6emxlUG9vbHMFBnBvb2xJZAUEdW5pdAkAAgEJAKwCAgIPVW5rbm93biBwb29sSWQgBQZwb29sSWQECmFzc2V0Qnl0ZXMJANkEAQUHYXNzZXRJZAQHYmFsYW5jZQkBCmdldEJhbGFuY2UBBQphc3NldEJ5dGVzBANpbnYJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBnBvb2xJZAIGc3VwcGx5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCmFzc2V0Qnl0ZXMFB2JhbGFuY2UFA25pbAMJAAACBQNpbnYFA2ludgkAzAgCCQELU3RyaW5nRW50cnkCAgtjdXJyZW50UG9vbAUGcG9vbElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDndpdGhkcmF3UmVzdWx0AAQLY3VycmVudFBvb2wJAQl0cnlHZXRTdHICBQR0aGlzAgtjdXJyZW50UG9vbAMJAAACBQtjdXJyZW50UG9vbAIACQACAQkArAICAhlDYW5ub3QgZmluZCBwb29sIHdpdGggaWQgBQtjdXJyZW50UG9vbAQGYW1vdW50CQEbZ2V0UHV6emxlUG9vbFN1cHBsaWVkQW1vdW50AQULY3VycmVudFBvb2wEAnR4CQEWd2l0aGRyYXdGcm9tUHV6emxlUG9vbAIFC2N1cnJlbnRQb29sBQZhbW91bnQDCQAAAgUCdHgFAnR4BQJ0eAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgELc3Rha2VSZXN1bHQCBHVzZXIGYW1vdW50BAdzQW1vdW50CQBrAwUGYW1vdW50BQZTY2FsZTgJAQ5jYWxjdWxhdGVTUmF0ZQAJAM4IAgkBDHJlY2FsY1Jlc3VsdAEFB3NBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgIHX3N0YWtlZAkAZAIJAQl0cnlHZXRJbnQCBQR0aGlzCQCsAgIFBHVzZXICB19zdGFrZWQFB3NBbW91bnQFA25pbAENdW5zdGFrZVJlc3VsdAIEdXNlcgZhbW91bnQEB3NBbW91bnQJAGsDBQZhbW91bnQFBlNjYWxlOAkBDmNhbGN1bGF0ZVNSYXRlAAQKdXNlclN0YWtlZAkBCXRyeUdldEludAIFBHRoaXMJAKwCAgUEdXNlcgIHX3N0YWtlZAQNdW5zdGFrZUFtb3VudAMJAGYCBQdzQW1vdW50BQp1c2VyU3Rha2VkBQp1c2VyU3Rha2VkBQdzQW1vdW50CQDOCAIJAQxyZWNhbGNSZXN1bHQBCQEBLQEFDXVuc3Rha2VBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgIHX3N0YWtlZAkAZQIFCnVzZXJTdGFrZWQFDXVuc3Rha2VBbW91bnQFA25pbAQBaQEEaW5pdAEGcG9vbElkBAtjdXJyZW50UG9vbAkBCXRyeUdldFN0cgIFBHRoaXMCC2N1cnJlbnRQb29sAwkAAAIJAM8IAgUKdmFsaWRhdG9ycwkApQgBCAUBaQZjYWxsZXIFBHVuaXQJAAIBAg1BY2Nlc3MgZGVuaWVkAwkAAAIFC2N1cnJlbnRQb29sAgAJAMwIAgkBC1N0cmluZ0VudHJ5AgILY3VycmVudFBvb2wFBnBvb2xJZAUDbmlsBQNuaWwBaQEJcmViYWxhbmNlAQZwb29sSWQEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDCQAAAgkAzwgCBQp2YWxpZGF0b3JzCQClCAEIBQFpBmNhbGxlcgUEdW5pdAkAAgECDUFjY2VzcyBkZW5pZWQDCQAAAgULY3VycmVudFBvb2wFBnBvb2xJZAkAAgEJAKwCAgITQWxyZWFkeSBzdXBwbGllZCB0bwULY3VycmVudFBvb2wECndpdGhkcmF3VHgJAQ53aXRoZHJhd1Jlc3VsdAADCQAAAgUKd2l0aGRyYXdUeAUKd2l0aGRyYXdUeAkAzggCCQEMc3VwcGx5UmVzdWx0AQUGcG9vbElkCQEMcmVjYWxjUmVzdWx0AQAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXN0YWtlAAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDAwkAZwIAAAUGYW1vdW50BgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQDZBAEFB2Fzc2V0SWQJAAIBAhZpbnZhbGlkIHRva2VuIGF0dGFjaGVkAwkAAAIFC2N1cnJlbnRQb29sAgAJAAIBAhRQb29sIG5vdCBpbml0aWFsaXplZAkAzggCCQELc3Rha2VSZXN1bHQCBQR1c2VyBQZhbW91bnQJAQxzdXBwbHlSZXN1bHQBBQtjdXJyZW50UG9vbAFpAQd1bnN0YWtlAQZhbW91bnQEBHVzZXIJAKUIAQgFAWkGY2FsbGVyBAtjdXJyZW50UG9vbAkBCXRyeUdldFN0cgIFBHRoaXMCC2N1cnJlbnRQb29sBAJ0eAkBFndpdGhkcmF3RnJvbVB1enpsZVBvb2wCBQtjdXJyZW50UG9vbAUGYW1vdW50AwkAAAIFAnR4BQJ0eAkAzggCCQENdW5zdGFrZVJlc3VsdAIFBHVzZXIFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAkA2QQBBQdhc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5JLobvw==", "height": 2341836, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ChtSv1AseKpKtu36yP5ZvmQnnUXbfv1EekzVwjGGh36e Next: 2tuBm5WxkwdxSedtLSYaDjwMUe8RiEbZ8S8QgteitUg6 Diff:
OldNewDifferences
88 let Scale16 = (Scale8 * Scale8)
99
1010 let validators = ["3NAmqGjxRBRPoRHZUUqvhiNS6axnGpinLHC"]
11+
12+let pofitAccountAddress = Address(base58'3NAmqGjxRBRPoRHZUUqvhiNS6axnGpinLHC')
1113
1214 let assetId = "HHmaFQpUobwKxzjz4ECaBPtoF69kujKwU2cozaUzTsgv"
1315
7476 let lastCheckSRate = tryGetInt(this, "global_lastCheckSRate")
7577 let stakedAmount = tryGetInt(this, "global_staked")
7678 let lastCheckSAmounut = fraction(stakedAmount, lastCheckSRate, Scale8)
79+ let totalSuppliedAmount = getTotalSuppliedAmount()
7780 if ((lastCheckSAmounut == 0))
7881 then Scale8
7982 else {
80- let sRate = fraction(lastCheckSRate, getTotalSuppliedAmount(), lastCheckSAmounut)
83+ let fee = fraction((totalSuppliedAmount - lastCheckSAmounut), 95000000, Scale8)
84+ let feeAmont = if ((fee > 0))
85+ then fee
86+ else 0
87+ let sRate = fraction(lastCheckSRate, (totalSuppliedAmount - fee), lastCheckSAmounut)
8188 if ((Scale8 > sRate))
8289 then Scale8
8390 else sRate
8895 func recalcResult (stakedChange) = {
8996 let stakedAmount = tryGetInt(this, "global_staked")
9097 let sRate = calculateSRate()
91-[IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", sRate)]
98+ let profit = (getTotalSuppliedAmount() - fraction(stakedAmount, sRate, Scale8))
99+ let profitAmount = if ((profit > 0))
100+ then profit
101+ else 0
102+[ScriptTransfer(pofitAccountAddress, profitAmount, fromBase58String(assetId)), IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", sRate)]
92103 }
93104
94105
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let Scale6 = 1000000
55
66 let Scale8 = 100000000
77
88 let Scale16 = (Scale8 * Scale8)
99
1010 let validators = ["3NAmqGjxRBRPoRHZUUqvhiNS6axnGpinLHC"]
11+
12+let pofitAccountAddress = Address(base58'3NAmqGjxRBRPoRHZUUqvhiNS6axnGpinLHC')
1113
1214 let assetId = "HHmaFQpUobwKxzjz4ECaBPtoF69kujKwU2cozaUzTsgv"
1315
1416 let puzzlePools = ["3N6StJdgmTfARsRNn9Xt5rDYEs3pr4KGy1v"]
1517
1618 func getBalance (assetId) = match assetId {
1719 case x: Unit =>
1820 wavesBalance(this).available
1921 case _ =>
2022 assetBalance(this, value(assetId))
2123 }
2224
2325
2426 func tryGetInt (address,key) = match getInteger(address, key) {
2527 case b: Int =>
2628 b
2729 case _ =>
2830 0
2931 }
3032
3133
3234 func tryGetStr (address,key) = match getString(address, key) {
3335 case b: String =>
3436 b
3537 case _ =>
3638 ""
3739 }
3840
3941
4042 func getAssetString (assetId) = match assetId {
4143 case b: ByteVector =>
4244 toBase58String(b)
4345 case _ =>
4446 "WAVES"
4547 }
4648
4749
4850 func getPuzzlePoolSuppliedAmount (poolId) = {
4951 let balance = assetBalance(Address(fromBase58String(poolId)), fromBase58String(assetId))
5052 balance
5153 }
5254
5355
5456 func getTotalSuppliedAmount () = {
5557 let currentPool = tryGetStr(this, "currentPool")
5658 if ((currentPool == ""))
5759 then throw(("Cannot find pool with id " + currentPool))
5860 else getPuzzlePoolSuppliedAmount(currentPool)
5961 }
6062
6163
6264 func withdrawFromPuzzlePool (poolId,amount) = {
6365 let poolAddress = Address(fromBase58String(poolId))
6466 let withdrawTx = if ((amount > 0))
6567 then invoke(poolAddress, "withdraw", [assetId, amount], nil)
6668 else ""
6769 if ((withdrawTx == withdrawTx))
6870 then withdrawTx
6971 else throw("Strict value is not equal to itself.")
7072 }
7173
7274
7375 func calculateSRate () = {
7476 let lastCheckSRate = tryGetInt(this, "global_lastCheckSRate")
7577 let stakedAmount = tryGetInt(this, "global_staked")
7678 let lastCheckSAmounut = fraction(stakedAmount, lastCheckSRate, Scale8)
79+ let totalSuppliedAmount = getTotalSuppliedAmount()
7780 if ((lastCheckSAmounut == 0))
7881 then Scale8
7982 else {
80- let sRate = fraction(lastCheckSRate, getTotalSuppliedAmount(), lastCheckSAmounut)
83+ let fee = fraction((totalSuppliedAmount - lastCheckSAmounut), 95000000, Scale8)
84+ let feeAmont = if ((fee > 0))
85+ then fee
86+ else 0
87+ let sRate = fraction(lastCheckSRate, (totalSuppliedAmount - fee), lastCheckSAmounut)
8188 if ((Scale8 > sRate))
8289 then Scale8
8390 else sRate
8491 }
8592 }
8693
8794
8895 func recalcResult (stakedChange) = {
8996 let stakedAmount = tryGetInt(this, "global_staked")
9097 let sRate = calculateSRate()
91-[IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", sRate)]
98+ let profit = (getTotalSuppliedAmount() - fraction(stakedAmount, sRate, Scale8))
99+ let profitAmount = if ((profit > 0))
100+ then profit
101+ else 0
102+[ScriptTransfer(pofitAccountAddress, profitAmount, fromBase58String(assetId)), IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", sRate)]
92103 }
93104
94105
95106 func supplyResult (poolId) = if ((indexOf(puzzlePools, poolId) == unit))
96107 then throw(("Unknown poolId " + poolId))
97108 else {
98109 let assetBytes = fromBase58String(assetId)
99110 let balance = getBalance(assetBytes)
100111 let inv = invoke(Address(fromBase58String(poolId)), "supply", nil, [AttachedPayment(assetBytes, balance)])
101112 if ((inv == inv))
102113 then [StringEntry("currentPool", poolId)]
103114 else throw("Strict value is not equal to itself.")
104115 }
105116
106117
107118 func withdrawResult () = {
108119 let currentPool = tryGetStr(this, "currentPool")
109120 if ((currentPool == ""))
110121 then throw(("Cannot find pool with id " + currentPool))
111122 else {
112123 let amount = getPuzzlePoolSuppliedAmount(currentPool)
113124 let tx = withdrawFromPuzzlePool(currentPool, amount)
114125 if ((tx == tx))
115126 then tx
116127 else throw("Strict value is not equal to itself.")
117128 }
118129 }
119130
120131
121132 func stakeResult (user,amount) = {
122133 let sAmount = fraction(amount, Scale8, calculateSRate())
123134 (recalcResult(sAmount) ++ [IntegerEntry((user + "_staked"), (tryGetInt(this, (user + "_staked")) + sAmount))])
124135 }
125136
126137
127138 func unstakeResult (user,amount) = {
128139 let sAmount = fraction(amount, Scale8, calculateSRate())
129140 let userStaked = tryGetInt(this, (user + "_staked"))
130141 let unstakeAmount = if ((sAmount > userStaked))
131142 then userStaked
132143 else sAmount
133144 (recalcResult(-(unstakeAmount)) ++ [IntegerEntry((user + "_staked"), (userStaked - unstakeAmount))])
134145 }
135146
136147
137148 @Callable(i)
138149 func init (poolId) = {
139150 let currentPool = tryGetStr(this, "currentPool")
140151 if ((indexOf(validators, toString(i.caller)) == unit))
141152 then throw("Access denied")
142153 else if ((currentPool == ""))
143154 then [StringEntry("currentPool", poolId)]
144155 else nil
145156 }
146157
147158
148159
149160 @Callable(i)
150161 func rebalance (poolId) = {
151162 let currentPool = tryGetStr(this, "currentPool")
152163 if ((indexOf(validators, toString(i.caller)) == unit))
153164 then throw("Access denied")
154165 else if ((currentPool == poolId))
155166 then throw(("Already supplied to" + currentPool))
156167 else {
157168 let withdrawTx = withdrawResult()
158169 if ((withdrawTx == withdrawTx))
159170 then (supplyResult(poolId) ++ recalcResult(0))
160171 else throw("Strict value is not equal to itself.")
161172 }
162173 }
163174
164175
165176
166177 @Callable(i)
167178 func stake () = {
168179 let user = toString(i.caller)
169180 let amount = i.payments[0].amount
170181 let currentPool = tryGetStr(this, "currentPool")
171182 if (if ((0 >= amount))
172183 then true
173184 else (i.payments[0].assetId != fromBase58String(assetId)))
174185 then throw("invalid token attached")
175186 else if ((currentPool == ""))
176187 then throw("Pool not initialized")
177188 else (stakeResult(user, amount) ++ supplyResult(currentPool))
178189 }
179190
180191
181192
182193 @Callable(i)
183194 func unstake (amount) = {
184195 let user = toString(i.caller)
185196 let currentPool = tryGetStr(this, "currentPool")
186197 let tx = withdrawFromPuzzlePool(currentPool, amount)
187198 if ((tx == tx))
188199 then (unstakeResult(user, amount) ++ [ScriptTransfer(i.caller, amount, fromBase58String(assetId))])
189200 else throw("Strict value is not equal to itself.")
190201 }
191202
192203
193204 @Verifier(tx)
194205 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
195206

github/deemru/w8io/c3f4982 
122.00 ms