tx · HsT7hAfvd3PqREvak2ng9VC37kFLpg5xwBwoW9eiPutv

3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh:  -0.00900000 Waves

2022.12.06 23:57 [2348988] smart account 3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh > SELF 0.00000000 Waves

{ "type": 13, "id": "HsT7hAfvd3PqREvak2ng9VC37kFLpg5xwBwoW9eiPutv", "fee": 900000, "feeAssetId": null, "timestamp": 1670360288899, "version": 2, "chainId": 84, "sender": "3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh", "senderPublicKey": "HscGVyJG5M3NMHWKfQbucCBsFLGPi8VmTxTAmcBbaWTa", "proofs": [ "52dcCsPHBXgHFu6dNmeMHLQWEvi1yrp4xcupycYM3rDZLxmuN3u8pY7dicQY6aNAko5baFJNPGAPftDuNQNta3Jo" ], "script": "base64:BgITCAISAwoBCBIDCgEIEgASAwoBARUABlNjYWxlNgDAhD0ABlNjYWxlOACAwtcvAAdTY2FsZTE2CQBoAgUGU2NhbGU4BQZTY2FsZTgACnZhbGlkYXRvcnMJAMwIAgIjM05BbXFHanhSQlJQb1JIWlVVcXZoaU5TNmF4bkdwaW5MSEMFA25pbAAPbW9uZXlCb3hBZGRyZXNzCQEHQWRkcmVzcwEBGgFUZKnP467xWXotJQOt2k8QiNBvrQpHH8SpAAdhc3NldElkAixISG1hRlFwVW9id0t4emp6NEVDYUJQdG9GNjlrdWpLd1UyY296YVV6VHNndgALcHV6emxlUG9vbHMJAMwIAgIjM042U3RKZGdtVGZBUnNSTm45WHQ1ckRZRXMzcHI0S0d5MXYFA25pbAEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAF4BQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQEFdmFsdWUBBQdhc3NldElkAQl0cnlHZXRJbnQCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEJdHJ5R2V0U3RyAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBG2dldFB1enpsZVBvb2xTdXBwbGllZEFtb3VudAEGcG9vbElkBAdiYWxhbmNlCQDwBwIJAQdBZGRyZXNzAQkA2QQBBQZwb29sSWQJANkEAQUHYXNzZXRJZAUHYmFsYW5jZQEWZ2V0VG90YWxTdXBwbGllZEFtb3VudAAEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDCQAAAgULY3VycmVudFBvb2wCAAkAAgEJAKwCAgIZQ2Fubm90IGZpbmQgcG9vbCB3aXRoIGlkIAULY3VycmVudFBvb2wJARtnZXRQdXp6bGVQb29sU3VwcGxpZWRBbW91bnQBBQtjdXJyZW50UG9vbAEWd2l0aGRyYXdGcm9tUHV6emxlUG9vbAIGcG9vbElkBmFtb3VudAQLcG9vbEFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBBQZwb29sSWQECndpdGhkcmF3VHgDCQBmAgUGYW1vdW50AAAJAPwHBAULcG9vbEFkZHJlc3MCCHdpdGhkcmF3CQDMCAIFB2Fzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAIAAwkAAAIFCndpdGhkcmF3VHgFCndpdGhkcmF3VHgFCndpdGhkcmF3VHgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BB2NhbGNGZWUABAxzdGFrZWRBbW91bnQJAQl0cnlHZXRJbnQCBQR0aGlzAg1nbG9iYWxfc3Rha2VkBAlsYXN0U1JhdGUJAQl0cnlHZXRJbnQCBQR0aGlzAhVnbG9iYWxfbGFzdENoZWNrU1JhdGUEB3NBbW91bnQJAGsDBQxzdGFrZWRBbW91bnQFCWxhc3RTUmF0ZQUGU2NhbGU4BA10b3RhbFN1cHBsaWVkCQEWZ2V0VG90YWxTdXBwbGllZEFtb3VudAAEBGRpZmYJAGUCBQ10b3RhbFN1cHBsaWVkBQdzQW1vdW50BANmZWUJAGsDBQRkaWZmAMCWsQIFBlNjYWxlOAMJAGYCBQNmZWUAAAUDZmVlAAABDmNhbGN1bGF0ZVNSYXRlAAQObGFzdENoZWNrU1JhdGUJAQl0cnlHZXRJbnQCBQR0aGlzAhVnbG9iYWxfbGFzdENoZWNrU1JhdGUEDHN0YWtlZEFtb3VudAkBCXRyeUdldEludAIFBHRoaXMCDWdsb2JhbF9zdGFrZWQEEWxhc3RDaGVja1NBbW91bnV0CQBrAwUMc3Rha2VkQW1vdW50BQ5sYXN0Q2hlY2tTUmF0ZQUGU2NhbGU4AwkAAAIFDmxhc3RDaGVja1NSYXRlAAAFBlNjYWxlOAMJAAACBRFsYXN0Q2hlY2tTQW1vdW51dAAABQ5sYXN0Q2hlY2tTUmF0ZQQFc1JhdGUJAGsDBQ5sYXN0Q2hlY2tTUmF0ZQkAZAIJAGsDCQBlAgkAawMJARZnZXRUb3RhbFN1cHBsaWVkQW1vdW50AAUGU2NhbGU2BRFsYXN0Q2hlY2tTQW1vdW51dAUGU2NhbGU2CQBlAgUGU2NhbGU4AMCWsQIFBlNjYWxlOAUGU2NhbGU2BQZTY2FsZTYDCQBmAgUGU2NhbGU4BQVzUmF0ZQUObGFzdENoZWNrU1JhdGUFBXNSYXRlAQxyZWNhbGNSZXN1bHQBDHN0YWtlZENoYW5nZQQMc3Rha2VkQW1vdW50CQEJdHJ5R2V0SW50AgUEdGhpcwINZ2xvYmFsX3N0YWtlZAQFc1JhdGUJAQ5jYWxjdWxhdGVTUmF0ZQAJAMwIAgkBDEludGVnZXJFbnRyeQICDWdsb2JhbF9zdGFrZWQJAGQCBQxzdGFrZWRBbW91bnQFDHN0YWtlZENoYW5nZQkAzAgCCQEMSW50ZWdlckVudHJ5AgIVZ2xvYmFsX2xhc3RDaGVja1NSYXRlBQVzUmF0ZQUDbmlsAQxzdXBwbHlSZXN1bHQCBnBvb2xJZANmZWUDCQAAAgkAzwgCBQtwdXp6bGVQb29scwUGcG9vbElkBQR1bml0CQACAQkArAICAg9Vbmtub3duIHBvb2xJZCAFBnBvb2xJZAQKYXNzZXRCeXRlcwkA2QQBBQdhc3NldElkBAdiYWxhbmNlCQEKZ2V0QmFsYW5jZQEFCmFzc2V0Qnl0ZXMECHN1cHBseVR4CQD8BwQJAQdBZGRyZXNzAQkA2QQBBQZwb29sSWQCBnN1cHBseQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQphc3NldEJ5dGVzBQdiYWxhbmNlBQNuaWwDCQAAAgUIc3VwcGx5VHgFCHN1cHBseVR4BA13aXRoZHJhd0ZlZVR4CQEWd2l0aGRyYXdGcm9tUHV6emxlUG9vbAIFBnBvb2xJZAUDZmVlAwkAAAIFDXdpdGhkcmF3RmVlVHgFDXdpdGhkcmF3RmVlVHgJAMwIAgkBC1N0cmluZ0VudHJ5AgILY3VycmVudFBvb2wFBnBvb2xJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9tb25leUJveEFkZHJlc3MFA2ZlZQkA2QQBBQdhc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDndpdGhkcmF3UmVzdWx0AAQLY3VycmVudFBvb2wJAQl0cnlHZXRTdHICBQR0aGlzAgtjdXJyZW50UG9vbAMJAAACBQtjdXJyZW50UG9vbAIACQACAQkArAICAhlDYW5ub3QgZmluZCBwb29sIHdpdGggaWQgBQtjdXJyZW50UG9vbAQGYW1vdW50CQEbZ2V0UHV6emxlUG9vbFN1cHBsaWVkQW1vdW50AQULY3VycmVudFBvb2wEAnR4CQEWd2l0aGRyYXdGcm9tUHV6emxlUG9vbAIFC2N1cnJlbnRQb29sBQZhbW91bnQDCQAAAgUCdHgFAnR4BQJ0eAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgELc3Rha2VSZXN1bHQCBHVzZXIGYW1vdW50BAdzQW1vdW50CQBrAwUGYW1vdW50BQZTY2FsZTgJAQ5jYWxjdWxhdGVTUmF0ZQAJAM4IAgkBDHJlY2FsY1Jlc3VsdAEFB3NBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgIHX3N0YWtlZAkAZAIJAQl0cnlHZXRJbnQCBQR0aGlzCQCsAgIFBHVzZXICB19zdGFrZWQFB3NBbW91bnQFA25pbAENdW5zdGFrZVJlc3VsdAIEdXNlcgZhbW91bnQEB3NBbW91bnQJAGsDBQZhbW91bnQFBlNjYWxlOAkBDmNhbGN1bGF0ZVNSYXRlAAQKdXNlclN0YWtlZAkBCXRyeUdldEludAIFBHRoaXMJAKwCAgUEdXNlcgIHX3N0YWtlZAQNdW5zdGFrZUFtb3VudAMJAGYCBQdzQW1vdW50BQp1c2VyU3Rha2VkBQp1c2VyU3Rha2VkBQdzQW1vdW50CQDOCAIJAQxyZWNhbGNSZXN1bHQBCQEBLQEFDXVuc3Rha2VBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUEdXNlcgIHX3N0YWtlZAkAZQIFCnVzZXJTdGFrZWQFDXVuc3Rha2VBbW91bnQFA25pbAQBaQEEaW5pdAEGcG9vbElkBAtjdXJyZW50UG9vbAkBCXRyeUdldFN0cgIFBHRoaXMCC2N1cnJlbnRQb29sAwkAAAIJAM8IAgUKdmFsaWRhdG9ycwkApQgBCAUBaQZjYWxsZXIFBHVuaXQJAAIBAg1BY2Nlc3MgZGVuaWVkAwkAAAIFC2N1cnJlbnRQb29sAgAJAMwIAgkBC1N0cmluZ0VudHJ5AgILY3VycmVudFBvb2wFBnBvb2xJZAUDbmlsBQNuaWwBaQEJcmViYWxhbmNlAQZwb29sSWQEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDCQAAAgkAzwgCBQp2YWxpZGF0b3JzCQClCAEIBQFpBmNhbGxlcgUEdW5pdAkAAgECDUFjY2VzcyBkZW5pZWQDCQAAAgULY3VycmVudFBvb2wFBnBvb2xJZAkAAgEJAKwCAgITQWxyZWFkeSBzdXBwbGllZCB0bwULY3VycmVudFBvb2wECndpdGhkcmF3VHgJAQ53aXRoZHJhd1Jlc3VsdAADCQAAAgUKd2l0aGRyYXdUeAUKd2l0aGRyYXdUeAkAzggCCQEMc3VwcGx5UmVzdWx0AgUGcG9vbElkAAAJAQxyZWNhbGNSZXN1bHQBAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UABAR1c2VyCQClCAEIBQFpBmNhbGxlcgQGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQLY3VycmVudFBvb2wJAQl0cnlHZXRTdHICBQR0aGlzAgtjdXJyZW50UG9vbAMDCQBnAgAABQZhbW91bnQGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJANkEAQUHYXNzZXRJZAkAAgECFmludmFsaWQgdG9rZW4gYXR0YWNoZWQDCQAAAgULY3VycmVudFBvb2wCAAkAAgECFFBvb2wgbm90IGluaXRpYWxpemVkBANmZWUJAQdjYWxjRmVlAAkAzggCCQELc3Rha2VSZXN1bHQCBQR1c2VyBQZhbW91bnQJAQxzdXBwbHlSZXN1bHQCBQtjdXJyZW50UG9vbAUDZmVlAWkBB3Vuc3Rha2UBBmFtb3VudAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wEA2ZlZQkBB2NhbGNGZWUABAVhc3NldAkA2QQBBQdhc3NldElkBBJ1bnN0YWtlUmVzdWx0U3RhdGUJAQ11bnN0YWtlUmVzdWx0AgUEdXNlcgUGYW1vdW50BAJ0eAkBFndpdGhkcmF3RnJvbVB1enpsZVBvb2wCBQtjdXJyZW50UG9vbAkAZAIFBmFtb3VudAUDZmVlAwkAAAIFAnR4BQJ0eAkAzggCBRJ1bnN0YWtlUmVzdWx0U3RhdGUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQFBWFzc2V0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFD21vbmV5Qm94QWRkcmVzcwUDZmVlBQVhc3NldAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleYQyf58=", "height": 2348988, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2T9x4237eCjnebo1SBn8idqzf4PeLAnCtXk8aihJwAfi Next: HxEv2bmkMuQYShH8eE9nj6ueGG8M52TMRBtvePdbbPzQ Diff:
OldNewDifferences
105105 func recalcResult (stakedChange) = {
106106 let stakedAmount = tryGetInt(this, "global_staked")
107107 let sRate = calculateSRate()
108- if ((sRate > 0))
109- then throw(("sRate: " + toString(sRate)))
110- else [IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", sRate)]
108+[IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", sRate)]
111109 }
112110
113111
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 calcFee () = {
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()
108- if ((sRate > 0))
109- then throw(("sRate: " + toString(sRate)))
110- else [IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", sRate)]
108+[IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", sRate)]
111109 }
112110
113111
114112 func supplyResult (poolId,fee) = if ((indexOf(puzzlePools, poolId) == unit))
115113 then throw(("Unknown poolId " + poolId))
116114 else {
117115 let assetBytes = fromBase58String(assetId)
118116 let balance = getBalance(assetBytes)
119117 let supplyTx = invoke(Address(fromBase58String(poolId)), "supply", nil, [AttachedPayment(assetBytes, balance)])
120118 if ((supplyTx == supplyTx))
121119 then {
122120 let withdrawFeeTx = withdrawFromPuzzlePool(poolId, fee)
123121 if ((withdrawFeeTx == withdrawFeeTx))
124122 then [StringEntry("currentPool", poolId), ScriptTransfer(moneyBoxAddress, fee, fromBase58String(assetId))]
125123 else throw("Strict value is not equal to itself.")
126124 }
127125 else throw("Strict value is not equal to itself.")
128126 }
129127
130128
131129 func withdrawResult () = {
132130 let currentPool = tryGetStr(this, "currentPool")
133131 if ((currentPool == ""))
134132 then throw(("Cannot find pool with id " + currentPool))
135133 else {
136134 let amount = getPuzzlePoolSuppliedAmount(currentPool)
137135 let tx = withdrawFromPuzzlePool(currentPool, amount)
138136 if ((tx == tx))
139137 then tx
140138 else throw("Strict value is not equal to itself.")
141139 }
142140 }
143141
144142
145143 func stakeResult (user,amount) = {
146144 let sAmount = fraction(amount, Scale8, calculateSRate())
147145 (recalcResult(sAmount) ++ [IntegerEntry((user + "_staked"), (tryGetInt(this, (user + "_staked")) + sAmount))])
148146 }
149147
150148
151149 func unstakeResult (user,amount) = {
152150 let sAmount = fraction(amount, Scale8, calculateSRate())
153151 let userStaked = tryGetInt(this, (user + "_staked"))
154152 let unstakeAmount = if ((sAmount > userStaked))
155153 then userStaked
156154 else sAmount
157155 (recalcResult(-(unstakeAmount)) ++ [IntegerEntry((user + "_staked"), (userStaked - unstakeAmount))])
158156 }
159157
160158
161159 @Callable(i)
162160 func init (poolId) = {
163161 let currentPool = tryGetStr(this, "currentPool")
164162 if ((indexOf(validators, toString(i.caller)) == unit))
165163 then throw("Access denied")
166164 else if ((currentPool == ""))
167165 then [StringEntry("currentPool", poolId)]
168166 else nil
169167 }
170168
171169
172170
173171 @Callable(i)
174172 func rebalance (poolId) = {
175173 let currentPool = tryGetStr(this, "currentPool")
176174 if ((indexOf(validators, toString(i.caller)) == unit))
177175 then throw("Access denied")
178176 else if ((currentPool == poolId))
179177 then throw(("Already supplied to" + currentPool))
180178 else {
181179 let withdrawTx = withdrawResult()
182180 if ((withdrawTx == withdrawTx))
183181 then (supplyResult(poolId, 0) ++ recalcResult(0))
184182 else throw("Strict value is not equal to itself.")
185183 }
186184 }
187185
188186
189187
190188 @Callable(i)
191189 func stake () = {
192190 let user = toString(i.caller)
193191 let amount = i.payments[0].amount
194192 let currentPool = tryGetStr(this, "currentPool")
195193 if (if ((0 >= amount))
196194 then true
197195 else (i.payments[0].assetId != fromBase58String(assetId)))
198196 then throw("invalid token attached")
199197 else if ((currentPool == ""))
200198 then throw("Pool not initialized")
201199 else {
202200 let fee = calcFee()
203201 (stakeResult(user, amount) ++ supplyResult(currentPool, fee))
204202 }
205203 }
206204
207205
208206
209207 @Callable(i)
210208 func unstake (amount) = {
211209 let user = toString(i.caller)
212210 let currentPool = tryGetStr(this, "currentPool")
213211 let fee = calcFee()
214212 let asset = fromBase58String(assetId)
215213 let unstakeResultState = unstakeResult(user, amount)
216214 let tx = withdrawFromPuzzlePool(currentPool, (amount + fee))
217215 if ((tx == tx))
218216 then (unstakeResultState ++ [ScriptTransfer(i.caller, amount, asset), ScriptTransfer(moneyBoxAddress, fee, asset)])
219217 else throw("Strict value is not equal to itself.")
220218 }
221219
222220
223221 @Verifier(tx)
224222 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
225223

github/deemru/w8io/873ac7e 
53.13 ms