tx · 3fXypbTBE36wWsqVSsBGNsMPpCMHCfwFiFFL3VnkrybY

3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh:  -0.01000000 Waves

2022.12.07 02:00 [2349117] smart account 3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh > SELF 0.00000000 Waves

{ "type": 13, "id": "3fXypbTBE36wWsqVSsBGNsMPpCMHCfwFiFFL3VnkrybY", "fee": 1000000, "feeAssetId": null, "timestamp": 1670367676817, "version": 2, "chainId": 84, "sender": "3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh", "senderPublicKey": "HscGVyJG5M3NMHWKfQbucCBsFLGPi8VmTxTAmcBbaWTa", "proofs": [ "2dxxxG8FYqUYahCsVD997mCZnqrkCWS578zZkhjJWg5UK5rhX9QrHwQkdzASCdJiqpZyaQ3dA3mHTnXM2omLefAm" ], "script": "base64:BgITCAISAwoBCBIDCgEIEgASAwoBARcABlNjYWxlNgDAhD0ABlNjYWxlOACAwtcvAAdTY2FsZTE2CQBoAgUGU2NhbGU4BQZTY2FsZTgACnZhbGlkYXRvcnMJAMwIAgIjM05BbXFHanhSQlJQb1JIWlVVcXZoaU5TNmF4bkdwaW5MSEMFA25pbAAPbW9uZXlCb3hBZGRyZXNzCQEHQWRkcmVzcwEBGgFUZKnP467xWXotJQOt2k8QiNBvrQpHH8SpAAdhc3NldElkAixISG1hRlFwVW9id0t4emp6NEVDYUJQdG9GNjlrdWpLd1UyY296YVV6VHNndgALcHV6emxlUG9vbHMJAMwIAgIjM042U3RKZGdtVGZBUnNSTm45WHQ1ckRZRXMzcHI0S0d5MXYFA25pbAEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAF4BQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQEFdmFsdWUBBQdhc3NldElkAQl0cnlHZXRJbnQCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEJdHJ5R2V0U3RyAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBG2dldFB1enpsZVBvb2xTdXBwbGllZEFtb3VudAEGcG9vbElkBAdiYWxhbmNlCQDwBwIJAQdBZGRyZXNzAQkA2QQBBQZwb29sSWQJANkEAQUHYXNzZXRJZAUHYmFsYW5jZQEWZ2V0VG90YWxTdXBwbGllZEFtb3VudAAEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDCQAAAgULY3VycmVudFBvb2wCAAkAAgEJAKwCAgIZQ2Fubm90IGZpbmQgcG9vbCB3aXRoIGlkIAULY3VycmVudFBvb2wJARtnZXRQdXp6bGVQb29sU3VwcGxpZWRBbW91bnQBBQtjdXJyZW50UG9vbAEWd2l0aGRyYXdGcm9tUHV6emxlUG9vbAIGcG9vbElkBmFtb3VudAQLcG9vbEFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBBQZwb29sSWQECndpdGhkcmF3VHgDCQBmAgUGYW1vdW50AAAJAPwHBAULcG9vbEFkZHJlc3MCCHdpdGhkcmF3CQDMCAIFB2Fzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAIAAwkAAAIFCndpdGhkcmF3VHgFCndpdGhkcmF3VHgFCndpdGhkcmF3VHgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDGNhbGN1bGF0ZUZlZQAEDHN0YWtlZEFtb3VudAkBCXRyeUdldEludAIFBHRoaXMCDWdsb2JhbF9zdGFrZWQECWxhc3RTUmF0ZQkBCXRyeUdldEludAIFBHRoaXMCFWdsb2JhbF9sYXN0Q2hlY2tTUmF0ZQQHc0Ftb3VudAkAawMFDHN0YWtlZEFtb3VudAUJbGFzdFNSYXRlBQZTY2FsZTgEDXRvdGFsU3VwcGxpZWQJARZnZXRUb3RhbFN1cHBsaWVkQW1vdW50AAQEZGlmZgkAZQIFDXRvdGFsU3VwcGxpZWQFB3NBbW91bnQEA2ZlZQkAawMFBGRpZmYAwJaxAgUGU2NhbGU4AwkAZgIFA2ZlZQAABQNmZWUAAAEOY2FsY3VsYXRlU1JhdGUABA5sYXN0Q2hlY2tTUmF0ZQkBCXRyeUdldEludAIFBHRoaXMCFWdsb2JhbF9sYXN0Q2hlY2tTUmF0ZQQMc3Rha2VkQW1vdW50CQEJdHJ5R2V0SW50AgUEdGhpcwINZ2xvYmFsX3N0YWtlZAQRbGFzdENoZWNrU0Ftb3VudXQJAGsDBQxzdGFrZWRBbW91bnQFDmxhc3RDaGVja1NSYXRlBQZTY2FsZTgDCQAAAgUObGFzdENoZWNrU1JhdGUAAAUGU2NhbGU4AwkAAAIFEWxhc3RDaGVja1NBbW91bnV0AAAFDmxhc3RDaGVja1NSYXRlBAVzUmF0ZQkAawMFDmxhc3RDaGVja1NSYXRlCQBkAgkAawMJAGUCCQBrAwkBFmdldFRvdGFsU3VwcGxpZWRBbW91bnQABQZTY2FsZTYFEWxhc3RDaGVja1NBbW91bnV0BQZTY2FsZTYJAGUCBQZTY2FsZTgAwJaxAgUGU2NhbGU4BQZTY2FsZTYFBlNjYWxlNgMJAGYCBQZTY2FsZTgFBXNSYXRlBQ5sYXN0Q2hlY2tTUmF0ZQUFc1JhdGUBDHJlY2FsY1Jlc3VsdAEMc3Rha2VkQ2hhbmdlBAxzdGFrZWRBbW91bnQJAQl0cnlHZXRJbnQCBQR0aGlzAg1nbG9iYWxfc3Rha2VkBAVzUmF0ZQkBDmNhbGN1bGF0ZVNSYXRlAAkAzAgCCQEMSW50ZWdlckVudHJ5AgINZ2xvYmFsX3N0YWtlZAkAZAIFDHN0YWtlZEFtb3VudAUMc3Rha2VkQ2hhbmdlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhVnbG9iYWxfbGFzdENoZWNrU1JhdGUFBXNSYXRlBQNuaWwBDHN1cHBseVJlc3VsdAEGcG9vbElkAwkAAAIJAM8IAgULcHV6emxlUG9vbHMFBnBvb2xJZAUEdW5pdAkAAgEJAKwCAgIPVW5rbm93biBwb29sSWQgBQZwb29sSWQECmFzc2V0Qnl0ZXMJANkEAQUHYXNzZXRJZAQHYmFsYW5jZQkBCmdldEJhbGFuY2UBBQphc3NldEJ5dGVzBANpbnYJAPwHBAkBB0FkZHJlc3MBCQDZBAEFBnBvb2xJZAIGc3VwcGx5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFCmFzc2V0Qnl0ZXMFB2JhbGFuY2UFA25pbAMJAAACBQNpbnYFA2ludgkAzAgCCQELU3RyaW5nRW50cnkCAgtjdXJyZW50UG9vbAUGcG9vbElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BD2NoYXJnZUZlZVJlc3VsdAIGcG9vbElkA2ZlZQQBYQMJAGYCBQNmZWUFBlNjYWxlNgkAAgEJAKwCAgIHMSkgRmVlIAkApAMBBQNmZWUCAAMJAAACBQFhBQFhBA13aXRoZHJhd0ZlZVR4CQEWd2l0aGRyYXdGcm9tUHV6emxlUG9vbAIFBnBvb2xJZAUDZmVlAwkAAAIFDXdpdGhkcmF3RmVlVHgFDXdpdGhkcmF3RmVlVHgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUPbW9uZXlCb3hBZGRyZXNzBQNmZWUJANkEAQUHYXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ53aXRoZHJhd1Jlc3VsdAAEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDCQAAAgULY3VycmVudFBvb2wCAAkAAgEJAKwCAgIZQ2Fubm90IGZpbmQgcG9vbCB3aXRoIGlkIAULY3VycmVudFBvb2wEBmFtb3VudAkBG2dldFB1enpsZVBvb2xTdXBwbGllZEFtb3VudAEFC2N1cnJlbnRQb29sBAJ0eAkBFndpdGhkcmF3RnJvbVB1enpsZVBvb2wCBQtjdXJyZW50UG9vbAUGYW1vdW50AwkAAAIFAnR4BQJ0eAUCdHgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BC3N0YWtlUmVzdWx0AgR1c2VyBmFtb3VudAQHc0Ftb3VudAkAawMFBmFtb3VudAUGU2NhbGU4CQEOY2FsY3VsYXRlU1JhdGUACQDOCAIJAQxyZWNhbGNSZXN1bHQBBQdzQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXICB19zdGFrZWQJAGQCCQEJdHJ5R2V0SW50AgUEdGhpcwkArAICBQR1c2VyAgdfc3Rha2VkBQdzQW1vdW50BQNuaWwBDXVuc3Rha2VSZXN1bHQCBHVzZXIGYW1vdW50BAdzQW1vdW50CQBrAwUGYW1vdW50BQZTY2FsZTgJAQ5jYWxjdWxhdGVTUmF0ZQAECnVzZXJTdGFrZWQJAQl0cnlHZXRJbnQCBQR0aGlzCQCsAgIFBHVzZXICB19zdGFrZWQEDXVuc3Rha2VBbW91bnQDCQBmAgUHc0Ftb3VudAUKdXNlclN0YWtlZAUKdXNlclN0YWtlZAUHc0Ftb3VudAkAzggCCQEMcmVjYWxjUmVzdWx0AQkBAS0BBQ11bnN0YWtlQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHVzZXICB19zdGFrZWQJAGUCBQp1c2VyU3Rha2VkBQ11bnN0YWtlQW1vdW50BQNuaWwBGHVuc3Rha2VBbmRUcmFuc2ZlclJlc3VsdAMLY3VycmVudFBvb2wGY2FsbGVyBmFtb3VudAQCdHgJARZ3aXRoZHJhd0Zyb21QdXp6bGVQb29sAgULY3VycmVudFBvb2wFBmFtb3VudAMJAAACBQJ0eAUCdHgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQZhbW91bnQJANkEAQUHYXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAFpAQRpbml0AQZwb29sSWQEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDCQAAAgkAzwgCBQp2YWxpZGF0b3JzCQClCAEIBQFpBmNhbGxlcgUEdW5pdAkAAgECDUFjY2VzcyBkZW5pZWQDCQAAAgULY3VycmVudFBvb2wCAAkAzAgCCQELU3RyaW5nRW50cnkCAgtjdXJyZW50UG9vbAUGcG9vbElkBQNuaWwFA25pbAFpAQlyZWJhbGFuY2UBBnBvb2xJZAQLY3VycmVudFBvb2wJAQl0cnlHZXRTdHICBQR0aGlzAgtjdXJyZW50UG9vbAMJAAACCQDPCAIFCnZhbGlkYXRvcnMJAKUIAQgFAWkGY2FsbGVyBQR1bml0CQACAQINQWNjZXNzIGRlbmllZAMJAAACBQtjdXJyZW50UG9vbAUGcG9vbElkCQACAQkArAICAhNBbHJlYWR5IHN1cHBsaWVkIHRvBQtjdXJyZW50UG9vbAQKd2l0aGRyYXdUeAkBDndpdGhkcmF3UmVzdWx0AAMJAAACBQp3aXRoZHJhd1R4BQp3aXRoZHJhd1R4CQEMc3VwcGx5UmVzdWx0AQUGcG9vbElkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXN0YWtlAAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDAwkAZwIAAAUGYW1vdW50BgkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQDZBAEFB2Fzc2V0SWQJAAIBAhZpbnZhbGlkIHRva2VuIGF0dGFjaGVkAwkAAAIFC2N1cnJlbnRQb29sAgAJAAIBAhRQb29sIG5vdCBpbml0aWFsaXplZAQDZmVlCQEMY2FsY3VsYXRlRmVlAAQBYQMJAGYCBQNmZWUFBlNjYWxlNgkAAgEJAKwCAgIHMCkgRmVlIAkApAMBBQNmZWUCAAMJAAACBQFhBQFhCQDOCAIJAM4IAgkBC3N0YWtlUmVzdWx0AgUEdXNlcgUGYW1vdW50CQEMc3VwcGx5UmVzdWx0AQULY3VycmVudFBvb2wJAQ9jaGFyZ2VGZWVSZXN1bHQCBQtjdXJyZW50UG9vbAUDZmVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB3Vuc3Rha2UBBmFtb3VudAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wEA2ZlZQkBDGNhbGN1bGF0ZUZlZQAEBWFzc2V0CQDZBAEFB2Fzc2V0SWQJAM4IAgkAzggCCQENdW5zdGFrZVJlc3VsdAIFBHVzZXIFBmFtb3VudAkBGHVuc3Rha2VBbmRUcmFuc2ZlclJlc3VsdAMFC2N1cnJlbnRQb29sCAUBaQZjYWxsZXIFBmFtb3VudAkBD2NoYXJnZUZlZVJlc3VsdAIFC2N1cnJlbnRQb29sBQNmZWUBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5LLy0VA==", "height": 2349117, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: VjuBveLRCbWkYYcdEMfpaxftZEMDZpLkDh1HftJtz2D Next: Do2tm3St31PnVxJKrxbsMCVo4Z8v5RKkxqxcthhPjnzL Diff:
OldNewDifferences
123123
124124 func chargeFeeResult (poolId,fee) = {
125125 let a = if ((fee > Scale6))
126- then throw(("Fee " + toString(fee)))
126+ then throw(("1) Fee " + toString(fee)))
127127 else ""
128128 if ((a == a))
129129 then {
216216 then throw("Pool not initialized")
217217 else {
218218 let fee = calculateFee()
219- ((stakeResult(user, amount) ++ supplyResult(currentPool)) ++ chargeFeeResult(currentPool, fee))
219+ let a = if ((fee > Scale6))
220+ then throw(("0) Fee " + toString(fee)))
221+ else ""
222+ if ((a == a))
223+ then ((stakeResult(user, amount) ++ supplyResult(currentPool)) ++ chargeFeeResult(currentPool, fee))
224+ else throw("Strict value is not equal to itself.")
220225 }
221226 }
222227
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"]
1111
1212 let moneyBoxAddress = Address(base58'3My6LmrRSRvJ73T14oT5k53SGPavGFoacWc')
1313
1414 let assetId = "HHmaFQpUobwKxzjz4ECaBPtoF69kujKwU2cozaUzTsgv"
1515
1616 let puzzlePools = ["3N6StJdgmTfARsRNn9Xt5rDYEs3pr4KGy1v"]
1717
1818 func getBalance (assetId) = match assetId {
1919 case x: Unit =>
2020 wavesBalance(this).available
2121 case _ =>
2222 assetBalance(this, value(assetId))
2323 }
2424
2525
2626 func tryGetInt (address,key) = match getInteger(address, key) {
2727 case b: Int =>
2828 b
2929 case _ =>
3030 0
3131 }
3232
3333
3434 func tryGetStr (address,key) = match getString(address, key) {
3535 case b: String =>
3636 b
3737 case _ =>
3838 ""
3939 }
4040
4141
4242 func getAssetString (assetId) = match assetId {
4343 case b: ByteVector =>
4444 toBase58String(b)
4545 case _ =>
4646 "WAVES"
4747 }
4848
4949
5050 func getPuzzlePoolSuppliedAmount (poolId) = {
5151 let balance = assetBalance(Address(fromBase58String(poolId)), fromBase58String(assetId))
5252 balance
5353 }
5454
5555
5656 func getTotalSuppliedAmount () = {
5757 let currentPool = tryGetStr(this, "currentPool")
5858 if ((currentPool == ""))
5959 then throw(("Cannot find pool with id " + currentPool))
6060 else getPuzzlePoolSuppliedAmount(currentPool)
6161 }
6262
6363
6464 func withdrawFromPuzzlePool (poolId,amount) = {
6565 let poolAddress = Address(fromBase58String(poolId))
6666 let withdrawTx = if ((amount > 0))
6767 then invoke(poolAddress, "withdraw", [assetId, amount], nil)
6868 else ""
6969 if ((withdrawTx == withdrawTx))
7070 then withdrawTx
7171 else throw("Strict value is not equal to itself.")
7272 }
7373
7474
7575 func calculateFee () = {
7676 let stakedAmount = tryGetInt(this, "global_staked")
7777 let lastSRate = tryGetInt(this, "global_lastCheckSRate")
7878 let sAmount = fraction(stakedAmount, lastSRate, Scale8)
7979 let totalSupplied = getTotalSuppliedAmount()
8080 let diff = (totalSupplied - sAmount)
8181 let fee = fraction(diff, 5000000, Scale8)
8282 if ((fee > 0))
8383 then fee
8484 else 0
8585 }
8686
8787
8888 func calculateSRate () = {
8989 let lastCheckSRate = tryGetInt(this, "global_lastCheckSRate")
9090 let stakedAmount = tryGetInt(this, "global_staked")
9191 let lastCheckSAmounut = fraction(stakedAmount, lastCheckSRate, Scale8)
9292 if ((lastCheckSRate == 0))
9393 then Scale8
9494 else if ((lastCheckSAmounut == 0))
9595 then lastCheckSRate
9696 else {
9797 let sRate = fraction(lastCheckSRate, (fraction((fraction(getTotalSuppliedAmount(), Scale6, lastCheckSAmounut) - Scale6), (Scale8 - 5000000), Scale8) + Scale6), Scale6)
9898 if ((Scale8 > sRate))
9999 then lastCheckSRate
100100 else sRate
101101 }
102102 }
103103
104104
105105 func recalcResult (stakedChange) = {
106106 let stakedAmount = tryGetInt(this, "global_staked")
107107 let sRate = calculateSRate()
108108 [IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", sRate)]
109109 }
110110
111111
112112 func supplyResult (poolId) = if ((indexOf(puzzlePools, poolId) == unit))
113113 then throw(("Unknown poolId " + poolId))
114114 else {
115115 let assetBytes = fromBase58String(assetId)
116116 let balance = getBalance(assetBytes)
117117 let inv = invoke(Address(fromBase58String(poolId)), "supply", nil, [AttachedPayment(assetBytes, balance)])
118118 if ((inv == inv))
119119 then [StringEntry("currentPool", poolId)]
120120 else throw("Strict value is not equal to itself.")
121121 }
122122
123123
124124 func chargeFeeResult (poolId,fee) = {
125125 let a = if ((fee > Scale6))
126- then throw(("Fee " + toString(fee)))
126+ then throw(("1) Fee " + toString(fee)))
127127 else ""
128128 if ((a == a))
129129 then {
130130 let withdrawFeeTx = withdrawFromPuzzlePool(poolId, fee)
131131 if ((withdrawFeeTx == withdrawFeeTx))
132132 then [ScriptTransfer(moneyBoxAddress, fee, fromBase58String(assetId))]
133133 else throw("Strict value is not equal to itself.")
134134 }
135135 else throw("Strict value is not equal to itself.")
136136 }
137137
138138
139139 func withdrawResult () = {
140140 let currentPool = tryGetStr(this, "currentPool")
141141 if ((currentPool == ""))
142142 then throw(("Cannot find pool with id " + currentPool))
143143 else {
144144 let amount = getPuzzlePoolSuppliedAmount(currentPool)
145145 let tx = withdrawFromPuzzlePool(currentPool, amount)
146146 if ((tx == tx))
147147 then tx
148148 else throw("Strict value is not equal to itself.")
149149 }
150150 }
151151
152152
153153 func stakeResult (user,amount) = {
154154 let sAmount = fraction(amount, Scale8, calculateSRate())
155155 (recalcResult(sAmount) ++ [IntegerEntry((user + "_staked"), (tryGetInt(this, (user + "_staked")) + sAmount))])
156156 }
157157
158158
159159 func unstakeResult (user,amount) = {
160160 let sAmount = fraction(amount, Scale8, calculateSRate())
161161 let userStaked = tryGetInt(this, (user + "_staked"))
162162 let unstakeAmount = if ((sAmount > userStaked))
163163 then userStaked
164164 else sAmount
165165 (recalcResult(-(unstakeAmount)) ++ [IntegerEntry((user + "_staked"), (userStaked - unstakeAmount))])
166166 }
167167
168168
169169 func unstakeAndTransferResult (currentPool,caller,amount) = {
170170 let tx = withdrawFromPuzzlePool(currentPool, amount)
171171 if ((tx == tx))
172172 then [ScriptTransfer(caller, amount, fromBase58String(assetId))]
173173 else throw("Strict value is not equal to itself.")
174174 }
175175
176176
177177 @Callable(i)
178178 func init (poolId) = {
179179 let currentPool = tryGetStr(this, "currentPool")
180180 if ((indexOf(validators, toString(i.caller)) == unit))
181181 then throw("Access denied")
182182 else if ((currentPool == ""))
183183 then [StringEntry("currentPool", poolId)]
184184 else nil
185185 }
186186
187187
188188
189189 @Callable(i)
190190 func rebalance (poolId) = {
191191 let currentPool = tryGetStr(this, "currentPool")
192192 if ((indexOf(validators, toString(i.caller)) == unit))
193193 then throw("Access denied")
194194 else if ((currentPool == poolId))
195195 then throw(("Already supplied to" + currentPool))
196196 else {
197197 let withdrawTx = withdrawResult()
198198 if ((withdrawTx == withdrawTx))
199199 then supplyResult(poolId)
200200 else throw("Strict value is not equal to itself.")
201201 }
202202 }
203203
204204
205205
206206 @Callable(i)
207207 func stake () = {
208208 let user = toString(i.caller)
209209 let amount = i.payments[0].amount
210210 let currentPool = tryGetStr(this, "currentPool")
211211 if (if ((0 >= amount))
212212 then true
213213 else (i.payments[0].assetId != fromBase58String(assetId)))
214214 then throw("invalid token attached")
215215 else if ((currentPool == ""))
216216 then throw("Pool not initialized")
217217 else {
218218 let fee = calculateFee()
219- ((stakeResult(user, amount) ++ supplyResult(currentPool)) ++ chargeFeeResult(currentPool, fee))
219+ let a = if ((fee > Scale6))
220+ then throw(("0) Fee " + toString(fee)))
221+ else ""
222+ if ((a == a))
223+ then ((stakeResult(user, amount) ++ supplyResult(currentPool)) ++ chargeFeeResult(currentPool, fee))
224+ else throw("Strict value is not equal to itself.")
220225 }
221226 }
222227
223228
224229
225230 @Callable(i)
226231 func unstake (amount) = {
227232 let user = toString(i.caller)
228233 let currentPool = tryGetStr(this, "currentPool")
229234 let fee = calculateFee()
230235 let asset = fromBase58String(assetId)
231236 ((unstakeResult(user, amount) ++ unstakeAndTransferResult(currentPool, i.caller, amount)) ++ chargeFeeResult(currentPool, fee))
232237 }
233238
234239
235240 @Verifier(tx)
236241 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
237242

github/deemru/w8io/873ac7e 
30.78 ms