tx · 6iC86GF5aeFH7XfETzdhFQaJBYJwknK73MjdasZKBNfr

3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj:  -0.01000000 Waves

2024.05.07 12:57 [4161503] smart account 3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj > SELF 0.00000000 Waves

{ "type": 13, "id": "6iC86GF5aeFH7XfETzdhFQaJBYJwknK73MjdasZKBNfr", "fee": 1000000, "feeAssetId": null, "timestamp": 1715075862876, "version": 2, "chainId": 87, "sender": "3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj", "senderPublicKey": "3C2anUH59qjkVSB8AuFYGBNhSqcgvJhq1BBRodM74pEf", "proofs": [ "F1wYRVekY52kpsLjriZKDVdFzNoJ9JKsiPALPqjhNJzAzcopcYQ4HEYx8YFmpG2VgfX7sXZTQB2B94CAu2SzSGE" ], "script": "base64:BgIICAISABIAEgAbAQlhc0FueUxpc3QBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQKdmFsQW55TGlzdAUHJG1hdGNoMAUKdmFsQW55TGlzdAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAWkFByRtYXRjaDAFAWkJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQAC3B1enpsZUlkU3RyAixIRUI4UWF3OXhyV3BXczh0SHNpQVRZR0JXREJ0UDJTN2tjUEFMck11NDNBUwAIcHV6emxlSWQJANkEAQULcHV6emxlSWRTdHIACHh0bklkU3RyAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAAFeHRuSWQJANkEAQUIeHRuSWRTdHIACHB6Rm9yYmVzCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUFFuenA1WW9nQnZKbXdQbnZTV29hcmdQTWNkMVI0R0xhOAANcHpCYXNpY1B1enpsZQkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BRQWhQTTVpSFF5WXJBcVRWdHM1M1VnaUxHdFZ1U1o4eEQABnd4UmVzdAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A4TW9QbnNhdXJvZmsxVnloc2RBRmtlUTZpanBKWVhDcFcABnd4U3dvcAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A2OHpOaXVmc3UxdmlacHUxYVkzY2RhaFJSS2N2VjVOOTMADXd4UHV6emxlV2F2ZXMJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQUWFZbTRwYlJWck5UVG5MOHBESlpUeGhjbUQ0alJza3J6AA93eFB1enpsZVdhdmVzTHACLDdHNjg3dWkzbTU5b0FkNnFreW5pMnZ0NzdiSEY0YmJBNnhjUGZEbzN1aVR1AAt3eFB1enpsZVh0bgkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A2MTV5WGVROVF1NHFCTTFRR2ltR3ppeHlNUzVXNEt0dWcACnd4V2F2ZXNYdG4JARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQUFpXZ0ZOUktITHZNNTFwd1M5MzRDOFZaN2QyRjRaNThnAAx3eFdhdmVzWHRuTHACLDdLWmJKclZvcHdKaGtkd2JlMWVGREJiZXg0ZGtZNjNNeGpUTmpxWHRyemoxAA1zd29wUHV6emxlWHRuCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEJIeUV3bUVSUjFDRWtyVE5iUGoyYmd5aXNUZlBScWZlZQAMc3dvcFdhdmVzWHRuCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEhhTmdvbUJrcnZFTDJRbnVKYXJRVkphNzF3anc5cWlxRwAIZWdnSWRTdHICLEMxaVdzS0dxTHdqSFVuZGlRN2lYcGRtUHVtOVBlQ0RGZnlYQmRKSm9zRFJTAAVlZ2dJZAkA2QQBBQhlZ2dJZFN0cgAKd3hFZ2dXYXZlcwkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BKa1VobkFITWFCVGp5YzdGa0JmSGFudE5VeTg3MWtCQlcADHd4RWdnV2F2ZXNMcAkBEUBleHRyTmF0aXZlKDEwNjIpAQIsM1VueXRObmtkNDhmSG9mSFBCcDU5QmtwWkExdU1TSjhQZGhXVUN1ZXJpY3MADHN3b3BFZ2dXYXZlcwkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BOVkZXb3B3Q0Q5Q2dHWGtwWVdFWTk0b1E1WENBRVhCbVEBC3N3b3BCYWxhbmNlAgtwb29sQWRkcmVzcwRBb3JCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQtwb29sQWRkcmVzcwkArAICBQRBb3JCAg5fYXNzZXRfYmFsYW5jZQENd3hQb29sQmFsYW5jZQIGcG9vbExwCmFzc2V0SW5kZXgEDHd4UmVzdFJlc3VsdAkAtQkCCQEIYXNTdHJpbmcBCQD8BwQFBnd4UmVzdAIRcG9vbFN0YXRzUkVBRE9OTFkJAMwIAgUGcG9vbExwBQNuaWwFA25pbAICX18JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQx3eFJlc3RSZXN1bHQFCmFzc2V0SW5kZXgBCXB6QmFsYW5jZQILcG9vbEFkZHJlc3MHYXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTApAgULcG9vbEFkZHJlc3MJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFB2Fzc2V0SWQCCF9iYWxhbmNlARRidXlYdG5Gb3JXYXZlc0NvbW1vbgEId2F2ZXNBbXQED3dhdmVzVG9YdG5WaWFXeAkBDXd4UG9vbEJhbGFuY2UCBQx3eFdhdmVzWHRuTHAAAQQRd2F2ZXNUb1h0blZpYVN3b3AJAQtzd29wQmFsYW5jZQIFDHN3b3BXYXZlc1h0bgIBQQQPd2F2ZXNUb1h0blRvdGFsCQBkAgUPd2F2ZXNUb1h0blZpYVd4BRF3YXZlc1RvWHRuVmlhU3dvcAQSd2F2ZXNUb1h0blZpYVd4QW10CQBrAwUId2F2ZXNBbXQFD3dhdmVzVG9YdG5WaWFXeAUPd2F2ZXNUb1h0blRvdGFsBBR3YXZlc1RvWHRuVmlhU3dvcEFtdAkAawMFCHdhdmVzQW10BRF3YXZlc1RvWHRuVmlhU3dvcAUPd2F2ZXNUb1h0blRvdGFsBBV3YXZlc1RvWHRuVmlhV3hSZXN1bHQJAPwHBAUGd3hTd29wAgRzd2FwCQDMCAIAAQkAzAgCBQh4dG5JZFN0cgkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUSd2F2ZXNUb1h0blZpYVd4QW10BQNuaWwDCQAAAgUVd2F2ZXNUb1h0blZpYVd4UmVzdWx0BRV3YXZlc1RvWHRuVmlhV3hSZXN1bHQEF3dhdmVzVG9YdG5WaWFTd29wUmVzdWx0CQEJYXNBbnlMaXN0AQkA/AcEBQxzd29wV2F2ZXNYdG4CCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BRR3YXZlc1RvWHRuVmlhU3dvcEFtdAUDbmlsAwkAAAIFF3dhdmVzVG9YdG5WaWFTd29wUmVzdWx0BRd3YXZlc1RvWHRuVmlhU3dvcFJlc3VsdAQGeHRuQW10CQDwBwIFBHRoaXMFBXh0bklkCQCUCgIFA25pbAUGeHRuQW10CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwFpAQ5idXlYdG5Gb3JXYXZlcwAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAh3YXZlc0FtdAgFA3BtdAZhbW91bnQJARRidXlYdG5Gb3JXYXZlc0NvbW1vbgEFCHdhdmVzQW10AWkBEWJ1eVB1enpsZUZvcldhdmVzAAQNcHpGb3JiZXNWYWx1ZQkBCXB6QmFsYW5jZQIFCHB6Rm9yYmVzBQhwdXp6bGVJZAQScHpCYXNpY1B1enpsZVZhbHVlCQEJcHpCYWxhbmNlAgUNcHpCYXNpY1B1enpsZQUIcHV6emxlSWQEEnd4UHV6emxlV2F2ZXNWYWx1ZQkBDXd4UG9vbEJhbGFuY2UCBQ93eFB1enpsZVdhdmVzTHAAAQQSc3dvcFB1enpsZVh0blZhbHVlCQELc3dvcEJhbGFuY2UCBQ1zd29wUHV6emxlWHRuAgFBBAV0b3RhbAkAZAIJAGQCCQBkAgUNcHpGb3JiZXNWYWx1ZQUScHpCYXNpY1B1enpsZVZhbHVlBRJ3eFB1enpsZVdhdmVzVmFsdWUFEnN3b3BQdXp6bGVYdG5WYWx1ZQQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBnBtdEFtdAgFA3BtdAZhbW91bnQEDHB6Rm9yYmVzUGFydAkAawMFDXB6Rm9yYmVzVmFsdWUFBnBtdEFtdAUFdG90YWwEEXB6QmFzaWNQdXp6bGVQYXJ0CQBrAwUScHpCYXNpY1B1enpsZVZhbHVlBQZwbXRBbXQFBXRvdGFsBBF3eFB1enpsZVdhdmVzUGFydAkAawMFEnd4UHV6emxlV2F2ZXNWYWx1ZQUGcG10QW10BQV0b3RhbAQRc3dvcFB1enpsZVh0blBhcnQJAGsDBRJzd29wUHV6emxlWHRuVmFsdWUFBnBtdEFtdAUFdG90YWwEBnh0bkFtdAgJARRidXlYdG5Gb3JXYXZlc0NvbW1vbgEFEXN3b3BQdXp6bGVYdG5QYXJ0Al8yAwkAAAIFBnh0bkFtdAUGeHRuQW10BBx3YXZlc1RvUHV6emxlVmlhRm9yYmVzUmVzdWx0CQD8BwQFCHB6Rm9yYmVzAgRzd2FwCQDMCAIFC3B1enpsZUlkU3RyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQxwekZvcmJlc1BhcnQFA25pbAMJAAACBRx3YXZlc1RvUHV6emxlVmlhRm9yYmVzUmVzdWx0BRx3YXZlc1RvUHV6emxlVmlhRm9yYmVzUmVzdWx0BBt3YXZlc1RvUHV6emxlVmlhQmFzaWNSZXN1bHQJAPwHBAUNcHpCYXNpY1B1enpsZQIEc3dhcAkAzAgCBQtwdXp6bGVJZFN0cgkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAURcHpCYXNpY1B1enpsZVBhcnQFA25pbAMJAAACBRt3YXZlc1RvUHV6emxlVmlhQmFzaWNSZXN1bHQFG3dhdmVzVG9QdXp6bGVWaWFCYXNpY1Jlc3VsdAQYd2F2ZXNUb1B1enpsZVZpYVd4UmVzdWx0CQD8BwQFBnd4U3dvcAIEc3dhcAkAzAgCAAEJAMwIAgULcHV6emxlSWRTdHIJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFEXd4UHV6emxlV2F2ZXNQYXJ0BQNuaWwDCQAAAgUYd2F2ZXNUb1B1enpsZVZpYVd4UmVzdWx0BRh3YXZlc1RvUHV6emxlVmlhV3hSZXN1bHQEGHh0blRvUHV6emxlVmlhU3dvcFJlc3VsdAkBCWFzQW55TGlzdAEJAPwHBAUNc3dvcFB1enpsZVh0bgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBXh0bklkBQZ4dG5BbXQFA25pbAMJAAACBRh4dG5Ub1B1enpsZVZpYVN3b3BSZXN1bHQFGHh0blRvUHV6emxlVmlhU3dvcFJlc3VsdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAPAHAgUEdGhpcwUIcHV6emxlSWQFCHB1enpsZUlkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOYnV5RWdnRm9yV2F2ZXMABAdzd29wUG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB3N3b3BBbXQIBQdzd29wUG10BmFtb3VudAQFd3hQbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQQFd3hBbXQIBQV3eFBtdAZhbW91bnQEF3dhdmVzVG9FZ2dWaWFTd29wUmVzdWx0CQEJYXNBbnlMaXN0AQkA/AcEBQxzd29wRWdnV2F2ZXMCCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQdzd29wQW10BQNuaWwDCQAAAgUXd2F2ZXNUb0VnZ1ZpYVN3b3BSZXN1bHQFF3dhdmVzVG9FZ2dWaWFTd29wUmVzdWx0BBV3YXZlc1RvRWdnVmlhV3hSZXN1bHQJAPwHBAUGd3hTd29wAgRzd2FwCQDMCAIAAQkAzAgCBQhlZ2dJZFN0cgkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUFd3hBbXQFA25pbAMJAAACBRV3YXZlc1RvRWdnVmlhV3hSZXN1bHQFFXdhdmVzVG9FZ2dWaWFXeFJlc3VsdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAPAHAgUEdGhpcwUFZWdnSWQFBWVnZ0lkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AG7IY3g==", "height": 4161503, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E8DuY8fN8Hnx1DhnCdf7ygvXF83VCW9btxmQU1zfYYvK Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func asWithdrawResultSTRUCT (val) = {
5- let t = {
6- let @ = val
7- if ($isInstanceOf(@, "(Int, ByteVector|Unit, Int, Int, Int, Int, Int, Int, String, Int)"))
8- then @
9- else throw(($getType(@) + " couldn't be cast to (Int, ByteVector|Unit, Int, Int, Int, Int, Int, Int, String, Int)"))
10- }
11- t
4+func asAnyList (val) = match val {
5+ case valAnyList: List[Any] =>
6+ valAnyList
7+ case _ =>
8+ throw("fail to cast into List[Any]")
9+}
10+
11+
12+func asString (v) = match v {
13+ case s: String =>
14+ s
15+ case _ =>
16+ throw("fail to cast into String")
17+}
18+
19+
20+func asInt (v) = match v {
21+ case i: Int =>
22+ i
23+ case _ =>
24+ throw("fail to cast into Int")
25+}
26+
27+
28+let puzzleIdStr = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS"
29+
30+let puzzleId = fromBase58String(puzzleIdStr)
31+
32+let xtnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
33+
34+let xtnId = fromBase58String(xtnIdStr)
35+
36+let pzForbes = addressFromStringValue("3PQnzp5YogBvJmwPnvSWoargPMcd1R4GLa8")
37+
38+let pzBasicPuzzle = addressFromStringValue("3PQAhPM5iHQyYrAqTVts53UgiLGtVuSZ8xD")
39+
40+let wxRest = addressFromStringValue("3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW")
41+
42+let wxSwop = addressFromStringValue("3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93")
43+
44+let wxPuzzleWaves = addressFromStringValue("3PQaYm4pbRVrNTTnL8pDJZTxhcmD4jRskrz")
45+
46+let wxPuzzleWavesLp = "7G687ui3m59oAd6qkyni2vt77bHF4bbA6xcPfDo3uiTu"
47+
48+let wxPuzzleXtn = addressFromStringValue("3P615yXeQ9Qu4qBM1QGimGzixyMS5W4Ktug")
49+
50+let wxWavesXtn = addressFromStringValue("3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g")
51+
52+let wxWavesXtnLp = "7KZbJrVopwJhkdwbe1eFDBbex4dkY63MxjTNjqXtrzj1"
53+
54+let swopPuzzleXtn = addressFromStringValue("3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee")
55+
56+let swopWavesXtn = addressFromStringValue("3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG")
57+
58+let eggIdStr = "C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS"
59+
60+let eggId = fromBase58String(eggIdStr)
61+
62+let wxEggWaves = addressFromStringValue("3PJkUhnAHMaBTjyc7FkBfHantNUy871kBBW")
63+
64+let wxEggWavesLp = addressFromStringValue("3UnytNnkd48fHofHPBp59BkpZA1uMSJ8PdhWUCuerics")
65+
66+let swopEggWaves = addressFromStringValue("3PNVFWopwCD9CgGXkpYWEY94oQ5XCAEXBmQ")
67+
68+func swopBalance (poolAddress,AorB) = getIntegerValue(poolAddress, (AorB + "_asset_balance"))
69+
70+
71+func wxPoolBalance (poolLp,assetIndex) = {
72+ let wxRestResult = split(asString(invoke(wxRest, "poolStatsREADONLY", [poolLp], nil)), "__")
73+ parseIntValue(wxRestResult[assetIndex])
1274 }
1375
1476
15-func s (i) = (toString(i) + " ")
77+func pzBalance (poolAddress,assetId) = getIntegerValue(poolAddress, (("global_" + toBase58String(assetId)) + "_balance"))
1678
1779
18-func testV1 () = {
19- let t = $Tuple11(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
20- ((((((((((s(t._1) + s(t._2)) + s(t._3)) + s(t._4)) + s(t._5)) + s(t._6)) + s(t._7)) + s(t._8)) + s(t._9)) + s(t._10)) + s(t._11))
21- }
22-
23-
24-func tuple11 () = $Tuple11(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
25-
26-
27-func testV2 () = {
28- let t = tuple11()
29- ((((((((((s(t._1) + s(t._2)) + s(t._3)) + s(t._4)) + s(t._5)) + s(t._6)) + s(t._7)) + s(t._8)) + s(t._9)) + s(t._10)) + s(t._11))
30- }
31-
32-
33-func print (t) = ((((((((((s(t._1) + s(t._2)) + s(t._3)) + s(t._4)) + s(t._5)) + s(t._6)) + s(t._7)) + s(t._8)) + s(t._9)) + s(t._10)) + s(t._11))
34-
35-
36-func testV3 () = {
37- let t = $Tuple11(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
38- print(t)
80+func buyXtnForWavesCommon (wavesAmt) = {
81+ let wavesToXtnViaWx = wxPoolBalance(wxWavesXtnLp, 1)
82+ let wavesToXtnViaSwop = swopBalance(swopWavesXtn, "A")
83+ let wavesToXtnTotal = (wavesToXtnViaWx + wavesToXtnViaSwop)
84+ let wavesToXtnViaWxAmt = fraction(wavesAmt, wavesToXtnViaWx, wavesToXtnTotal)
85+ let wavesToXtnViaSwopAmt = fraction(wavesAmt, wavesToXtnViaSwop, wavesToXtnTotal)
86+ let wavesToXtnViaWxResult = invoke(wxSwop, "swap", [1, xtnIdStr, toString(this)], [AttachedPayment(unit, wavesToXtnViaWxAmt)])
87+ if ((wavesToXtnViaWxResult == wavesToXtnViaWxResult))
88+ then {
89+ let wavesToXtnViaSwopResult = asAnyList(invoke(swopWavesXtn, "exchange", [1], [AttachedPayment(unit, wavesToXtnViaSwopAmt)]))
90+ if ((wavesToXtnViaSwopResult == wavesToXtnViaSwopResult))
91+ then {
92+ let xtnAmt = assetBalance(this, xtnId)
93+ $Tuple2(nil, xtnAmt)
94+ }
95+ else throw("Strict value is not equal to itself.")
96+ }
97+ else throw("Strict value is not equal to itself.")
3998 }
4099
41100
42101 @Callable(i)
43-func call () = nil
102+func buyXtnForWaves () = {
103+ let pmt = value(i.payments[0])
104+ let wavesAmt = pmt.amount
105+ buyXtnForWavesCommon(wavesAmt)
106+ }
107+
108+
109+
110+@Callable(i)
111+func buyPuzzleForWaves () = {
112+ let pzForbesValue = pzBalance(pzForbes, puzzleId)
113+ let pzBasicPuzzleValue = pzBalance(pzBasicPuzzle, puzzleId)
114+ let wxPuzzleWavesValue = wxPoolBalance(wxPuzzleWavesLp, 1)
115+ let swopPuzzleXtnValue = swopBalance(swopPuzzleXtn, "A")
116+ let total = (((pzForbesValue + pzBasicPuzzleValue) + wxPuzzleWavesValue) + swopPuzzleXtnValue)
117+ let pmt = value(i.payments[0])
118+ let pmtAmt = pmt.amount
119+ let pzForbesPart = fraction(pzForbesValue, pmtAmt, total)
120+ let pzBasicPuzzlePart = fraction(pzBasicPuzzleValue, pmtAmt, total)
121+ let wxPuzzleWavesPart = fraction(wxPuzzleWavesValue, pmtAmt, total)
122+ let swopPuzzleXtnPart = fraction(swopPuzzleXtnValue, pmtAmt, total)
123+ let xtnAmt = buyXtnForWavesCommon(swopPuzzleXtnPart)._2
124+ if ((xtnAmt == xtnAmt))
125+ then {
126+ let wavesToPuzzleViaForbesResult = invoke(pzForbes, "swap", [puzzleIdStr, 1], [AttachedPayment(unit, pzForbesPart)])
127+ if ((wavesToPuzzleViaForbesResult == wavesToPuzzleViaForbesResult))
128+ then {
129+ let wavesToPuzzleViaBasicResult = invoke(pzBasicPuzzle, "swap", [puzzleIdStr, 1], [AttachedPayment(unit, pzBasicPuzzlePart)])
130+ if ((wavesToPuzzleViaBasicResult == wavesToPuzzleViaBasicResult))
131+ then {
132+ let wavesToPuzzleViaWxResult = invoke(wxSwop, "swap", [1, puzzleIdStr, toString(this)], [AttachedPayment(unit, wxPuzzleWavesPart)])
133+ if ((wavesToPuzzleViaWxResult == wavesToPuzzleViaWxResult))
134+ then {
135+ let xtnToPuzzleViaSwopResult = asAnyList(invoke(swopPuzzleXtn, "exchange", [1], [AttachedPayment(xtnId, xtnAmt)]))
136+ if ((xtnToPuzzleViaSwopResult == xtnToPuzzleViaSwopResult))
137+ then [ScriptTransfer(i.caller, assetBalance(this, puzzleId), puzzleId)]
138+ else throw("Strict value is not equal to itself.")
139+ }
140+ else throw("Strict value is not equal to itself.")
141+ }
142+ else throw("Strict value is not equal to itself.")
143+ }
144+ else throw("Strict value is not equal to itself.")
145+ }
146+ else throw("Strict value is not equal to itself.")
147+ }
148+
149+
150+
151+@Callable(i)
152+func buyEggForWaves () = {
153+ let swopPmt = value(i.payments[0])
154+ let swopAmt = swopPmt.amount
155+ let wxPmt = value(i.payments[1])
156+ let wxAmt = wxPmt.amount
157+ let wavesToEggViaSwopResult = asAnyList(invoke(swopEggWaves, "exchange", [1], [AttachedPayment(unit, swopAmt)]))
158+ if ((wavesToEggViaSwopResult == wavesToEggViaSwopResult))
159+ then {
160+ let wavesToEggViaWxResult = invoke(wxSwop, "swap", [1, eggIdStr, toString(this)], [AttachedPayment(unit, wxAmt)])
161+ if ((wavesToEggViaWxResult == wavesToEggViaWxResult))
162+ then [ScriptTransfer(i.caller, assetBalance(this, eggId), eggId)]
163+ else throw("Strict value is not equal to itself.")
164+ }
165+ else throw("Strict value is not equal to itself.")
166+ }
44167
45168

github/deemru/w8io/3ef1775 
24.05 ms