tx · 92njsk8b2LnSTSqJj4JDfqoy9E3XGKJhG94ZccpQmr54

3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh:  -0.00900000 Waves

2022.12.02 18:01 [2342880] smart account 3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh > SELF 0.00000000 Waves

{ "type": 13, "id": "92njsk8b2LnSTSqJj4JDfqoy9E3XGKJhG94ZccpQmr54", "fee": 900000, "feeAssetId": null, "timestamp": 1669993329747, "version": 2, "chainId": 84, "sender": "3MwLW8P5yh5T2xML9QqFuVxkVkm9RXqnzXh", "senderPublicKey": "HscGVyJG5M3NMHWKfQbucCBsFLGPi8VmTxTAmcBbaWTa", "proofs": [ "218QhXqmPw3uudhrnEesV5eHz4RtpntiePNskRjkZ2BkgQEigLCuwhPs6hRKCpEqBqQjo39FD93TA4UPwjKDrwrp" ], "script": "base64:BgITCAISAwoBCBIDCgEIEgASAwoBARYABlNjYWxlNgDAhD0ABlNjYWxlOACAwtcvAAdTY2FsZTE2CQBoAgUGU2NhbGU4BQZTY2FsZTgACnZhbGlkYXRvcnMJAMwIAgIjM05BbXFHanhSQlJQb1JIWlVVcXZoaU5TNmF4bkdwaW5MSEMFA25pbAAPbW9uZXlCb3hBZGRyZXNzCQEHQWRkcmVzcwEBGgFUZKnP467xWXotJQOt2k8QiNBvrQpHH8SpAAdhc3NldElkAixISG1hRlFwVW9id0t4emp6NEVDYUJQdG9GNjlrdWpLd1UyY296YVV6VHNndgALcHV6emxlUG9vbHMJAMwIAgIjM042U3RKZGdtVGZBUnNSTm45WHQ1ckRZRXMzcHI0S0d5MXYFA25pbAEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgRVbml0BAF4BQckbWF0Y2gwCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQEFdmFsdWUBBQdhc3NldElkAQl0cnlHZXRJbnQCB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEJdHJ5R2V0U3RyAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgABDmdldEFzc2V0U3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgIFV0FWRVMBG2dldFB1enpsZVBvb2xTdXBwbGllZEFtb3VudAEGcG9vbElkBAdiYWxhbmNlCQDwBwIJAQdBZGRyZXNzAQkA2QQBBQZwb29sSWQJANkEAQUHYXNzZXRJZAUHYmFsYW5jZQEWZ2V0VG90YWxTdXBwbGllZEFtb3VudAAEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDCQAAAgULY3VycmVudFBvb2wCAAkAAgEJAKwCAgIZQ2Fubm90IGZpbmQgcG9vbCB3aXRoIGlkIAULY3VycmVudFBvb2wJARtnZXRQdXp6bGVQb29sU3VwcGxpZWRBbW91bnQBBQtjdXJyZW50UG9vbAEWd2l0aGRyYXdGcm9tUHV6emxlUG9vbAIGcG9vbElkBmFtb3VudAQLcG9vbEFkZHJlc3MJAQdBZGRyZXNzAQkA2QQBBQZwb29sSWQECndpdGhkcmF3VHgDCQBmAgUGYW1vdW50AAAJAPwHBAULcG9vbEFkZHJlc3MCCHdpdGhkcmF3CQDMCAIFB2Fzc2V0SWQJAMwIAgUGYW1vdW50BQNuaWwFA25pbAIAAwkAAAIFCndpdGhkcmF3VHgFCndpdGhkcmF3VHgFCndpdGhkcmF3VHgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDmNhbGN1bGF0ZVNSYXRlAAQObGFzdENoZWNrU1JhdGUJAQl0cnlHZXRJbnQCBQR0aGlzAhVnbG9iYWxfbGFzdENoZWNrU1JhdGUEDHN0YWtlZEFtb3VudAkBCXRyeUdldEludAIFBHRoaXMCDWdsb2JhbF9zdGFrZWQEEWxhc3RDaGVja1NBbW91bnV0CQBrAwUMc3Rha2VkQW1vdW50BQ5sYXN0Q2hlY2tTUmF0ZQUGU2NhbGU4BBN0b3RhbFN1cHBsaWVkQW1vdW50CQEWZ2V0VG90YWxTdXBwbGllZEFtb3VudAADCQAAAgURbGFzdENoZWNrU0Ftb3VudXQAAAUGU2NhbGU4BAx0b3RhbFN1cGxpZWQFE3RvdGFsU3VwcGxpZWRBbW91bnQEBXNSYXRlCQBrAwUObGFzdENoZWNrU1JhdGUFDHRvdGFsU3VwbGllZAURbGFzdENoZWNrU0Ftb3VudXQDCQBmAgUGU2NhbGU4BQVzUmF0ZQUGU2NhbGU4BQVzUmF0ZQEHY2FsY0ZlZQAEDHN0YWtlZEFtb3VudAkBCXRyeUdldEludAIFBHRoaXMCDWdsb2JhbF9zdGFrZWQECWxhc3RTUmF0ZQkBCXRyeUdldEludAIFBHRoaXMCFWdsb2JhbF9sYXN0Q2hlY2tTUmF0ZQQEZGlmZgkAZQIJARZnZXRUb3RhbFN1cHBsaWVkQW1vdW50AAkAawMFDHN0YWtlZEFtb3VudAUJbGFzdFNSYXRlBQZTY2FsZTgEA2ZlZQkAawMFBGRpZmYAwJaxAgUGU2NhbGU4AwkAZgIFA2ZlZQAABQNmZWUAAAEPY2hhcmdlRmVlUmVzdWx0AAQLY3VycmVudFBvb2wJAQl0cnlHZXRTdHICBQR0aGlzAgtjdXJyZW50UG9vbAQDZmVlCQEHY2FsY0ZlZQADCQAAAgULY3VycmVudFBvb2wCAAkAAgEJAKwCAgIZQ2Fubm90IGZpbmQgcG9vbCB3aXRoIGlkIAULY3VycmVudFBvb2wECndpdGhkcmF3VHgJARZ3aXRoZHJhd0Zyb21QdXp6bGVQb29sAgULY3VycmVudFBvb2wFA2ZlZQMJAAACBQp3aXRoZHJhd1R4BQp3aXRoZHJhd1R4BAhjaGFyZ2VUeAkA/AcEBQ9tb25leUJveEFkZHJlc3MCB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQdhc3NldElkBQNmZWUFA25pbAMJAAACBQhjaGFyZ2VUeAUIY2hhcmdlVHgFCGNoYXJnZVR4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxyZWNhbGNSZXN1bHQBDHN0YWtlZENoYW5nZQQMc3Rha2VkQW1vdW50CQEJdHJ5R2V0SW50AgUEdGhpcwINZ2xvYmFsX3N0YWtlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgINZ2xvYmFsX3N0YWtlZAkAZAIFDHN0YWtlZEFtb3VudAUMc3Rha2VkQ2hhbmdlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhVnbG9iYWxfbGFzdENoZWNrU1JhdGUJAQ5jYWxjdWxhdGVTUmF0ZQAFA25pbAEMc3VwcGx5UmVzdWx0AQZwb29sSWQDCQAAAgkAzwgCBQtwdXp6bGVQb29scwUGcG9vbElkBQR1bml0CQACAQkArAICAg9Vbmtub3duIHBvb2xJZCAFBnBvb2xJZAQKYXNzZXRCeXRlcwkA2QQBBQdhc3NldElkBAdiYWxhbmNlCQEKZ2V0QmFsYW5jZQEFCmFzc2V0Qnl0ZXMEA2ludgkA/AcECQEHQWRkcmVzcwEJANkEAQUGcG9vbElkAgZzdXBwbHkFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUKYXNzZXRCeXRlcwUHYmFsYW5jZQUDbmlsAwkAAAIFA2ludgUDaW52CQDMCAIJAQtTdHJpbmdFbnRyeQICC2N1cnJlbnRQb29sBQZwb29sSWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOd2l0aGRyYXdSZXN1bHQABAtjdXJyZW50UG9vbAkBCXRyeUdldFN0cgIFBHRoaXMCC2N1cnJlbnRQb29sAwkAAAIFC2N1cnJlbnRQb29sAgAJAAIBCQCsAgICGUNhbm5vdCBmaW5kIHBvb2wgd2l0aCBpZCAFC2N1cnJlbnRQb29sBAZhbW91bnQJARtnZXRQdXp6bGVQb29sU3VwcGxpZWRBbW91bnQBBQtjdXJyZW50UG9vbAQCdHgJARZ3aXRoZHJhd0Zyb21QdXp6bGVQb29sAgULY3VycmVudFBvb2wFBmFtb3VudAMJAAACBQJ0eAUCdHgFAnR4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQtzdGFrZVJlc3VsdAIEdXNlcgZhbW91bnQEB3NBbW91bnQJAGsDBQZhbW91bnQFBlNjYWxlOAkBDmNhbGN1bGF0ZVNSYXRlAAQLY2hhcmdlRmVlVHgJAQ9jaGFyZ2VGZWVSZXN1bHQAAwkAAAIFC2NoYXJnZUZlZVR4BQtjaGFyZ2VGZWVUeAkAzggCCQEMcmVjYWxjUmVzdWx0AQUHc0Ftb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyAgdfc3Rha2VkCQBkAgkBCXRyeUdldEludAIFBHRoaXMJAKwCAgUEdXNlcgIHX3N0YWtlZAUHc0Ftb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ11bnN0YWtlUmVzdWx0AgR1c2VyBmFtb3VudAQHc0Ftb3VudAkAawMFBmFtb3VudAUGU2NhbGU4CQEOY2FsY3VsYXRlU1JhdGUABAp1c2VyU3Rha2VkCQEJdHJ5R2V0SW50AgUEdGhpcwkArAICBQR1c2VyAgdfc3Rha2VkBA11bnN0YWtlQW1vdW50AwkAZgIFB3NBbW91bnQFCnVzZXJTdGFrZWQFCnVzZXJTdGFrZWQFB3NBbW91bnQEC2NoYXJnZUZlZVR4CQEPY2hhcmdlRmVlUmVzdWx0AAMJAAACBQtjaGFyZ2VGZWVUeAULY2hhcmdlRmVlVHgJAM4IAgkBDHJlY2FsY1Jlc3VsdAEJAQEtAQUNdW5zdGFrZUFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQR1c2VyAgdfc3Rha2VkCQBlAgUKdXNlclN0YWtlZAUNdW5zdGFrZUFtb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAFpAQRpbml0AQZwb29sSWQEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wDCQAAAgkAzwgCBQp2YWxpZGF0b3JzCQClCAEIBQFpBmNhbGxlcgUEdW5pdAkAAgECDUFjY2VzcyBkZW5pZWQDCQAAAgULY3VycmVudFBvb2wCAAkAzAgCCQELU3RyaW5nRW50cnkCAgtjdXJyZW50UG9vbAUGcG9vbElkBQNuaWwFA25pbAFpAQlyZWJhbGFuY2UBBnBvb2xJZAQLY3VycmVudFBvb2wJAQl0cnlHZXRTdHICBQR0aGlzAgtjdXJyZW50UG9vbAMJAAACCQDPCAIFCnZhbGlkYXRvcnMJAKUIAQgFAWkGY2FsbGVyBQR1bml0CQACAQINQWNjZXNzIGRlbmllZAMJAAACBQtjdXJyZW50UG9vbAUGcG9vbElkCQACAQkArAICAhNBbHJlYWR5IHN1cHBsaWVkIHRvBQtjdXJyZW50UG9vbAQKd2l0aGRyYXdUeAkBDndpdGhkcmF3UmVzdWx0AAMJAAACBQp3aXRoZHJhd1R4BQp3aXRoZHJhd1R4CQDOCAIJAQxzdXBwbHlSZXN1bHQBBQZwb29sSWQJAQxyZWNhbGNSZXN1bHQBAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UABAR1c2VyCQClCAEIBQFpBmNhbGxlcgQGYW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQLY3VycmVudFBvb2wJAQl0cnlHZXRTdHICBQR0aGlzAgtjdXJyZW50UG9vbAMDCQBnAgAABQZhbW91bnQGCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJANkEAQUHYXNzZXRJZAkAAgECFmludmFsaWQgdG9rZW4gYXR0YWNoZWQDCQAAAgULY3VycmVudFBvb2wCAAkAAgECFFBvb2wgbm90IGluaXRpYWxpemVkCQDOCAIJAQtzdGFrZVJlc3VsdAIFBHVzZXIFBmFtb3VudAkBDHN1cHBseVJlc3VsdAEFC2N1cnJlbnRQb29sAWkBB3Vuc3Rha2UBBmFtb3VudAQEdXNlcgkApQgBCAUBaQZjYWxsZXIEC2N1cnJlbnRQb29sCQEJdHJ5R2V0U3RyAgUEdGhpcwILY3VycmVudFBvb2wEAnR4CQEWd2l0aGRyYXdGcm9tUHV6emxlUG9vbAIFC2N1cnJlbnRQb29sBQZhbW91bnQDCQAAAgUCdHgFAnR4CQDOCAIJAQ11bnN0YWtlUmVzdWx0AgUEdXNlcgUGYW1vdW50CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50CQDZBAEFB2Fzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmIalFf", "height": 2342880, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HJDexyHNWhhogFU8eWXHsr6R94iU86X99WsXwXV6147J Next: 2k6WvzLhEbW6LhgTTxsyFLMx6ME7tgJibc9t3o9qLTSc Diff:
OldNewDifferences
109109 let withdrawTx = withdrawFromPuzzlePool(currentPool, fee)
110110 if ((withdrawTx == withdrawTx))
111111 then {
112- let chargeTx = if ((fee > 0))
113- then invoke(moneyBoxAddress, "deposit", nil, [AttachedPayment(fromBase58String(assetId), fee)])
114- else ""
112+ let chargeTx = invoke(moneyBoxAddress, "deposit", nil, [AttachedPayment(fromBase58String(assetId), fee)])
115113 if ((chargeTx == chargeTx))
116114 then chargeTx
117115 else throw("Strict value is not equal to itself.")
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 calculateSRate () = {
7676 let lastCheckSRate = tryGetInt(this, "global_lastCheckSRate")
7777 let stakedAmount = tryGetInt(this, "global_staked")
7878 let lastCheckSAmounut = fraction(stakedAmount, lastCheckSRate, Scale8)
7979 let totalSuppliedAmount = getTotalSuppliedAmount()
8080 if ((lastCheckSAmounut == 0))
8181 then Scale8
8282 else {
8383 let totalSuplied = totalSuppliedAmount
8484 let sRate = fraction(lastCheckSRate, totalSuplied, lastCheckSAmounut)
8585 if ((Scale8 > sRate))
8686 then Scale8
8787 else sRate
8888 }
8989 }
9090
9191
9292 func calcFee () = {
9393 let stakedAmount = tryGetInt(this, "global_staked")
9494 let lastSRate = tryGetInt(this, "global_lastCheckSRate")
9595 let diff = (getTotalSuppliedAmount() - fraction(stakedAmount, lastSRate, Scale8))
9696 let fee = fraction(diff, 5000000, Scale8)
9797 if ((fee > 0))
9898 then fee
9999 else 0
100100 }
101101
102102
103103 func chargeFeeResult () = {
104104 let currentPool = tryGetStr(this, "currentPool")
105105 let fee = calcFee()
106106 if ((currentPool == ""))
107107 then throw(("Cannot find pool with id " + currentPool))
108108 else {
109109 let withdrawTx = withdrawFromPuzzlePool(currentPool, fee)
110110 if ((withdrawTx == withdrawTx))
111111 then {
112- let chargeTx = if ((fee > 0))
113- then invoke(moneyBoxAddress, "deposit", nil, [AttachedPayment(fromBase58String(assetId), fee)])
114- else ""
112+ let chargeTx = invoke(moneyBoxAddress, "deposit", nil, [AttachedPayment(fromBase58String(assetId), fee)])
115113 if ((chargeTx == chargeTx))
116114 then chargeTx
117115 else throw("Strict value is not equal to itself.")
118116 }
119117 else throw("Strict value is not equal to itself.")
120118 }
121119 }
122120
123121
124122 func recalcResult (stakedChange) = {
125123 let stakedAmount = tryGetInt(this, "global_staked")
126124 [IntegerEntry("global_staked", (stakedAmount + stakedChange)), IntegerEntry("global_lastCheckSRate", calculateSRate())]
127125 }
128126
129127
130128 func supplyResult (poolId) = if ((indexOf(puzzlePools, poolId) == unit))
131129 then throw(("Unknown poolId " + poolId))
132130 else {
133131 let assetBytes = fromBase58String(assetId)
134132 let balance = getBalance(assetBytes)
135133 let inv = invoke(Address(fromBase58String(poolId)), "supply", nil, [AttachedPayment(assetBytes, balance)])
136134 if ((inv == inv))
137135 then [StringEntry("currentPool", poolId)]
138136 else throw("Strict value is not equal to itself.")
139137 }
140138
141139
142140 func withdrawResult () = {
143141 let currentPool = tryGetStr(this, "currentPool")
144142 if ((currentPool == ""))
145143 then throw(("Cannot find pool with id " + currentPool))
146144 else {
147145 let amount = getPuzzlePoolSuppliedAmount(currentPool)
148146 let tx = withdrawFromPuzzlePool(currentPool, amount)
149147 if ((tx == tx))
150148 then tx
151149 else throw("Strict value is not equal to itself.")
152150 }
153151 }
154152
155153
156154 func stakeResult (user,amount) = {
157155 let sAmount = fraction(amount, Scale8, calculateSRate())
158156 let chargeFeeTx = chargeFeeResult()
159157 if ((chargeFeeTx == chargeFeeTx))
160158 then (recalcResult(sAmount) ++ [IntegerEntry((user + "_staked"), (tryGetInt(this, (user + "_staked")) + sAmount))])
161159 else throw("Strict value is not equal to itself.")
162160 }
163161
164162
165163 func unstakeResult (user,amount) = {
166164 let sAmount = fraction(amount, Scale8, calculateSRate())
167165 let userStaked = tryGetInt(this, (user + "_staked"))
168166 let unstakeAmount = if ((sAmount > userStaked))
169167 then userStaked
170168 else sAmount
171169 let chargeFeeTx = chargeFeeResult()
172170 if ((chargeFeeTx == chargeFeeTx))
173171 then (recalcResult(-(unstakeAmount)) ++ [IntegerEntry((user + "_staked"), (userStaked - unstakeAmount))])
174172 else throw("Strict value is not equal to itself.")
175173 }
176174
177175
178176 @Callable(i)
179177 func init (poolId) = {
180178 let currentPool = tryGetStr(this, "currentPool")
181179 if ((indexOf(validators, toString(i.caller)) == unit))
182180 then throw("Access denied")
183181 else if ((currentPool == ""))
184182 then [StringEntry("currentPool", poolId)]
185183 else nil
186184 }
187185
188186
189187
190188 @Callable(i)
191189 func rebalance (poolId) = {
192190 let currentPool = tryGetStr(this, "currentPool")
193191 if ((indexOf(validators, toString(i.caller)) == unit))
194192 then throw("Access denied")
195193 else if ((currentPool == poolId))
196194 then throw(("Already supplied to" + currentPool))
197195 else {
198196 let withdrawTx = withdrawResult()
199197 if ((withdrawTx == withdrawTx))
200198 then (supplyResult(poolId) ++ recalcResult(0))
201199 else throw("Strict value is not equal to itself.")
202200 }
203201 }
204202
205203
206204
207205 @Callable(i)
208206 func stake () = {
209207 let user = toString(i.caller)
210208 let amount = i.payments[0].amount
211209 let currentPool = tryGetStr(this, "currentPool")
212210 if (if ((0 >= amount))
213211 then true
214212 else (i.payments[0].assetId != fromBase58String(assetId)))
215213 then throw("invalid token attached")
216214 else if ((currentPool == ""))
217215 then throw("Pool not initialized")
218216 else (stakeResult(user, amount) ++ supplyResult(currentPool))
219217 }
220218
221219
222220
223221 @Callable(i)
224222 func unstake (amount) = {
225223 let user = toString(i.caller)
226224 let currentPool = tryGetStr(this, "currentPool")
227225 let tx = withdrawFromPuzzlePool(currentPool, amount)
228226 if ((tx == tx))
229227 then (unstakeResult(user, amount) ++ [ScriptTransfer(i.caller, amount, fromBase58String(assetId))])
230228 else throw("Strict value is not equal to itself.")
231229 }
232230
233231
234232 @Verifier(tx)
235233 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
236234

github/deemru/w8io/873ac7e 
46.37 ms