tx · 33Ao5KdDTtofVakiURYwneYuowHxA6UHqWJjaiVBfE8m 3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj: -0.01000000 Waves 2024.04.19 18:20 [4135796] smart account 3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj > SELF 0.00000000 Waves
{ "type": 13, "id": "33Ao5KdDTtofVakiURYwneYuowHxA6UHqWJjaiVBfE8m", "fee": 1000000, "feeAssetId": null, "timestamp": 1713540096134, "version": 2, "chainId": 87, "sender": "3P2YBCpek2KbwaxHBSRRa4DWcJUkPu2mCCj", "senderPublicKey": "3C2anUH59qjkVSB8AuFYGBNhSqcgvJhq1BBRodM74pEf", "proofs": [ "5GaJytirgWwUSg2RgUzSasGrY3aN4e7JL9mDCX98oJM6dTTvuLfZuuZ9L8oF9VPRXFTuDKPA6zJJx1pT3xS1cryV" ], "script": "base64:BgIICAISABIAEgAbAQlhc0FueUxpc3QBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQKdmFsQW55TGlzdAUHJG1hdGNoMAUKdmFsQW55TGlzdAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAWkFByRtYXRjaDAFAWkJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQAC3B1enpsZUlkU3RyAixIRUI4UWF3OXhyV3BXczh0SHNpQVRZR0JXREJ0UDJTN2tjUEFMck11NDNBUwAIcHV6emxlSWQJANkEAQULcHV6emxlSWRTdHIACHh0bklkU3RyAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAAFeHRuSWQJANkEAQUIeHRuSWRTdHIACHB6Rm9yYmVzCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUFFuenA1WW9nQnZKbXdQbnZTV29hcmdQTWNkMVI0R0xhOAANcHpCYXNpY1B1enpsZQkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BRQWhQTTVpSFF5WXJBcVRWdHM1M1VnaUxHdFZ1U1o4eEQABnd4UmVzdAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A4TW9QbnNhdXJvZmsxVnloc2RBRmtlUTZpanBKWVhDcFcABnd4U3dvcAkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A2OHpOaXVmc3UxdmlacHUxYVkzY2RhaFJSS2N2VjVOOTMADXd4UHV6emxlV2F2ZXMJARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQUWFZbTRwYlJWck5UVG5MOHBESlpUeGhjbUQ0alJza3J6AA93eFB1enpsZVdhdmVzTHACLDdHNjg3dWkzbTU5b0FkNnFreW5pMnZ0NzdiSEY0YmJBNnhjUGZEbzN1aVR1AAt3eFB1enpsZVh0bgkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1A2MTV5WGVROVF1NHFCTTFRR2ltR3ppeHlNUzVXNEt0dWcACnd4V2F2ZXNYdG4JARFAZXh0ck5hdGl2ZSgxMDYyKQECIzNQUFpXZ0ZOUktITHZNNTFwd1M5MzRDOFZaN2QyRjRaNThnAAx3eFdhdmVzWHRuTHACLDdLWmJKclZvcHdKaGtkd2JlMWVGREJiZXg0ZGtZNjNNeGpUTmpxWHRyemoxAA1zd29wUHV6emxlWHRuCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEJIeUV3bUVSUjFDRWtyVE5iUGoyYmd5aXNUZlBScWZlZQAMc3dvcFdhdmVzWHRuCQERQGV4dHJOYXRpdmUoMTA2MikBAiMzUEhhTmdvbUJrcnZFTDJRbnVKYXJRVkphNzF3anc5cWlxRwAIZWdnSWRTdHICLEMxaVdzS0dxTHdqSFVuZGlRN2lYcGRtUHVtOVBlQ0RGZnlYQmRKSm9zRFJTAAVlZ2dJZAkA2QQBBQhlZ2dJZFN0cgAKd3hFZ2dXYXZlcwkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BKa1VobkFITWFCVGp5YzdGa0JmSGFudE5VeTg3MWtCQlcADHd4RWdnV2F2ZXNMcAkBEUBleHRyTmF0aXZlKDEwNjIpAQIsM1VueXRObmtkNDhmSG9mSFBCcDU5QmtwWkExdU1TSjhQZGhXVUN1ZXJpY3MADHN3b3BFZ2dXYXZlcwkBEUBleHRyTmF0aXZlKDEwNjIpAQIjM1BOVkZXb3B3Q0Q5Q2dHWGtwWVdFWTk0b1E1WENBRVhCbVEBC3N3b3BCYWxhbmNlAgtwb29sQWRkcmVzcwRBb3JCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQtwb29sQWRkcmVzcwkArAICBQRBb3JCAg5fYXNzZXRfYmFsYW5jZQENd3hQb29sQmFsYW5jZQIGcG9vbExwCmFzc2V0SW5kZXgEDHd4UmVzdFJlc3VsdAkAtQkCCQEIYXNTdHJpbmcBCQD8BwQFBnd4UmVzdAIRcG9vbFN0YXRzUkVBRE9OTFkJAMwIAgUGcG9vbExwBQNuaWwFA25pbAICX18JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQx3eFJlc3RSZXN1bHQFCmFzc2V0SW5kZXgBCXB6QmFsYW5jZQILcG9vbEFkZHJlc3MHYXNzZXRJZAkBEUBleHRyTmF0aXZlKDEwNTApAgULcG9vbEFkZHJlc3MJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFB2Fzc2V0SWQCCF9iYWxhbmNlARRidXlYdG5Gb3JXYXZlc0NvbW1vbgEId2F2ZXNBbXQED3dhdmVzVG9YdG5WaWFXeAkBDXd4UG9vbEJhbGFuY2UCBQx3eFdhdmVzWHRuTHAAAQQRd2F2ZXNUb1h0blZpYVN3b3AJAQtzd29wQmFsYW5jZQIFDHN3b3BXYXZlc1h0bgIBQQQPd2F2ZXNUb1h0blRvdGFsCQBkAgUPd2F2ZXNUb1h0blZpYVd4BRF3YXZlc1RvWHRuVmlhU3dvcAQSd2F2ZXNUb1h0blZpYVd4QW10CQBrAwUId2F2ZXNBbXQFD3dhdmVzVG9YdG5WaWFXeAUPd2F2ZXNUb1h0blRvdGFsBBR3YXZlc1RvWHRuVmlhU3dvcEFtdAkAawMFCHdhdmVzQW10BRF3YXZlc1RvWHRuVmlhU3dvcAUPd2F2ZXNUb1h0blRvdGFsBBV3YXZlc1RvWHRuVmlhV3hSZXN1bHQJAPwHBAUGd3hTd29wAgRzd2FwCQDMCAIAAQkAzAgCBQh4dG5JZFN0cgkAzAgCCQClCAEFBHRoaXMFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUSd2F2ZXNUb1h0blZpYVd4QW10BQNuaWwDCQAAAgUVd2F2ZXNUb1h0blZpYVd4UmVzdWx0BRV3YXZlc1RvWHRuVmlhV3hSZXN1bHQEF3dhdmVzVG9YdG5WaWFTd29wUmVzdWx0CQEJYXNBbnlMaXN0AQkA/AcEBQxzd29wV2F2ZXNYdG4CCGV4Y2hhbmdlCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BRR3YXZlc1RvWHRuVmlhU3dvcEFtdAUDbmlsAwkAAAIFF3dhdmVzVG9YdG5WaWFTd29wUmVzdWx0BRd3YXZlc1RvWHRuVmlhU3dvcFJlc3VsdAQGeHRuQW10CQDwBwIFBHRoaXMFBXh0bklkCQCUCgIFA25pbAUGeHRuQW10CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwFpAQ5idXlYdG5Gb3JXYXZlcwAEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAh3YXZlc0FtdAgFA3BtdAZhbW91bnQJARRidXlYdG5Gb3JXYXZlc0NvbW1vbgEFCHdhdmVzQW10AWkBEWJ1eVB1enpsZUZvcldhdmVzAAQNcHpGb3JiZXNWYWx1ZQkBCXB6QmFsYW5jZQIFCHB6Rm9yYmVzBQhwdXp6bGVJZAQScHpCYXNpY1B1enpsZVZhbHVlCQEJcHpCYWxhbmNlAgUNcHpCYXNpY1B1enpsZQUIcHV6emxlSWQEEnd4UHV6emxlV2F2ZXNWYWx1ZQkBDXd4UG9vbEJhbGFuY2UCBQ93eFB1enpsZVdhdmVzTHAAAQQSc3dvcFB1enpsZVh0blZhbHVlCQELc3dvcEJhbGFuY2UCBQ1zd29wUHV6emxlWHRuAgFBBAV0b3RhbAkAZAIJAGQCCQBkAgUNcHpGb3JiZXNWYWx1ZQUScHpCYXNpY1B1enpsZVZhbHVlBRJ3eFB1enpsZVdhdmVzVmFsdWUFEnN3b3BQdXp6bGVYdG5WYWx1ZQQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBnBtdEFtdAgFA3BtdAZhbW91bnQEDHB6Rm9yYmVzUGFydAkAawMFDXB6Rm9yYmVzVmFsdWUFBnBtdEFtdAUFdG90YWwEEXB6QmFzaWNQdXp6bGVQYXJ0CQBrAwUScHpCYXNpY1B1enpsZVZhbHVlBQZwbXRBbXQFBXRvdGFsBBF3eFB1enpsZVdhdmVzUGFydAkAawMFEnd4UHV6emxlV2F2ZXNWYWx1ZQUGcG10QW10BQV0b3RhbAQRc3dvcFB1enpsZVh0blBhcnQJAGsDBRJzd29wUHV6emxlWHRuVmFsdWUFBnBtdEFtdAUFdG90YWwEBnh0bkFtdAgJARRidXlYdG5Gb3JXYXZlc0NvbW1vbgEFEXN3b3BQdXp6bGVYdG5QYXJ0Al8yAwkAAAIFBnh0bkFtdAUGeHRuQW10BBx3YXZlc1RvUHV6emxlVmlhRm9yYmVzUmVzdWx0CQD8BwQFCHB6Rm9yYmVzAgRzd2FwCQDMCAIFC3B1enpsZUlkU3RyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQR1bml0BQxwekZvcmJlc1BhcnQFA25pbAMJAAACBRx3YXZlc1RvUHV6emxlVmlhRm9yYmVzUmVzdWx0BRx3YXZlc1RvUHV6emxlVmlhRm9yYmVzUmVzdWx0BBt3YXZlc1RvUHV6emxlVmlhQmFzaWNSZXN1bHQJAPwHBAUNcHpCYXNpY1B1enpsZQIEc3dhcAkAzAgCBQtwdXp6bGVJZFN0cgkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAURcHpCYXNpY1B1enpsZVBhcnQFA25pbAMJAAACBRt3YXZlc1RvUHV6emxlVmlhQmFzaWNSZXN1bHQFG3dhdmVzVG9QdXp6bGVWaWFCYXNpY1Jlc3VsdAQYd2F2ZXNUb1B1enpsZVZpYVd4UmVzdWx0CQD8BwQFBnd4U3dvcAIEc3dhcAkAzAgCAAEJAMwIAgULcHV6emxlSWRTdHIJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFEXd4UHV6emxlV2F2ZXNQYXJ0BQNuaWwDCQAAAgUYd2F2ZXNUb1B1enpsZVZpYVd4UmVzdWx0BRh3YXZlc1RvUHV6emxlVmlhV3hSZXN1bHQEGHh0blRvUHV6emxlVmlhU3dvcFJlc3VsdAkBCWFzQW55TGlzdAEJAPwHBAUNc3dvcFB1enpsZVh0bgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBXh0bklkBQZ4dG5BbXQFA25pbAMJAAACBRh4dG5Ub1B1enpsZVZpYVN3b3BSZXN1bHQFGHh0blRvUHV6emxlVmlhU3dvcFJlc3VsdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAPAHAgUEdGhpcwUIcHV6emxlSWQFCHB1enpsZUlkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOYnV5RWdnRm9yV2F2ZXMABAdzd29wUG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB3N3b3BBbXQIBQdzd29wUG10BmFtb3VudAQFd3hQbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAQQFd3hBbXQIBQV3eFBtdAZhbW91bnQEF3dhdmVzVG9FZ2dWaWFTd29wUmVzdWx0CQEJYXNBbnlMaXN0AQkA/AcEBQ1zd29wUHV6emxlWHRuAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEdW5pdAUHc3dvcEFtdAUDbmlsAwkAAAIFF3dhdmVzVG9FZ2dWaWFTd29wUmVzdWx0BRd3YXZlc1RvRWdnVmlhU3dvcFJlc3VsdAQVd2F2ZXNUb0VnZ1ZpYVd4UmVzdWx0CQD8BwQFBnd4U3dvcAIEc3dhcAkAzAgCAAEJAMwIAgUIZWdnSWRTdHIJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBHVuaXQFBXd4QW10BQNuaWwDCQAAAgUVd2F2ZXNUb0VnZ1ZpYVd4UmVzdWx0BRV3YXZlc1RvRWdnVmlhV3hSZXN1bHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQDwBwIFBHRoaXMFBWVnZ0lkBQVlZ2dJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAE1j4og=", "height": 4135796, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CYbPwWuo5TWCYcdxmK65adkjrYnQi5kFuUTVUkUgABLv Next: EEa4CVcGycDeDyH8bFBAeWVu8BdHxXkUf14ioKBud5KZ Diff:
Old | New | Differences | |
---|---|---|---|
54 | 54 | let swopPuzzleXtn = addressFromStringValue("3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee") | |
55 | 55 | ||
56 | 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") | |
57 | 67 | ||
58 | 68 | func swopBalance (poolAddress,AorB) = getIntegerValue(poolAddress, (AorB + "_asset_balance")) | |
59 | 69 | ||
137 | 147 | } | |
138 | 148 | ||
139 | 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(swopPuzzleXtn, "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 | + | } | |
167 | + | ||
168 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func asAnyList (val) = match val { | |
5 | 5 | case valAnyList: List[Any] => | |
6 | 6 | valAnyList | |
7 | 7 | case _ => | |
8 | 8 | throw("fail to cast into List[Any]") | |
9 | 9 | } | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | func asString (v) = match v { | |
13 | 13 | case s: String => | |
14 | 14 | s | |
15 | 15 | case _ => | |
16 | 16 | throw("fail to cast into String") | |
17 | 17 | } | |
18 | 18 | ||
19 | 19 | ||
20 | 20 | func asInt (v) = match v { | |
21 | 21 | case i: Int => | |
22 | 22 | i | |
23 | 23 | case _ => | |
24 | 24 | throw("fail to cast into Int") | |
25 | 25 | } | |
26 | 26 | ||
27 | 27 | ||
28 | 28 | let puzzleIdStr = "HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS" | |
29 | 29 | ||
30 | 30 | let puzzleId = fromBase58String(puzzleIdStr) | |
31 | 31 | ||
32 | 32 | let xtnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p" | |
33 | 33 | ||
34 | 34 | let xtnId = fromBase58String(xtnIdStr) | |
35 | 35 | ||
36 | 36 | let pzForbes = addressFromStringValue("3PQnzp5YogBvJmwPnvSWoargPMcd1R4GLa8") | |
37 | 37 | ||
38 | 38 | let pzBasicPuzzle = addressFromStringValue("3PQAhPM5iHQyYrAqTVts53UgiLGtVuSZ8xD") | |
39 | 39 | ||
40 | 40 | let wxRest = addressFromStringValue("3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW") | |
41 | 41 | ||
42 | 42 | let wxSwop = addressFromStringValue("3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93") | |
43 | 43 | ||
44 | 44 | let wxPuzzleWaves = addressFromStringValue("3PQaYm4pbRVrNTTnL8pDJZTxhcmD4jRskrz") | |
45 | 45 | ||
46 | 46 | let wxPuzzleWavesLp = "7G687ui3m59oAd6qkyni2vt77bHF4bbA6xcPfDo3uiTu" | |
47 | 47 | ||
48 | 48 | let wxPuzzleXtn = addressFromStringValue("3P615yXeQ9Qu4qBM1QGimGzixyMS5W4Ktug") | |
49 | 49 | ||
50 | 50 | let wxWavesXtn = addressFromStringValue("3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g") | |
51 | 51 | ||
52 | 52 | let wxWavesXtnLp = "7KZbJrVopwJhkdwbe1eFDBbex4dkY63MxjTNjqXtrzj1" | |
53 | 53 | ||
54 | 54 | let swopPuzzleXtn = addressFromStringValue("3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee") | |
55 | 55 | ||
56 | 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") | |
57 | 67 | ||
58 | 68 | func swopBalance (poolAddress,AorB) = getIntegerValue(poolAddress, (AorB + "_asset_balance")) | |
59 | 69 | ||
60 | 70 | ||
61 | 71 | func wxPoolBalance (poolLp,assetIndex) = { | |
62 | 72 | let wxRestResult = split(asString(invoke(wxRest, "poolStatsREADONLY", [poolLp], nil)), "__") | |
63 | 73 | parseIntValue(wxRestResult[assetIndex]) | |
64 | 74 | } | |
65 | 75 | ||
66 | 76 | ||
67 | 77 | func pzBalance (poolAddress,assetId) = getIntegerValue(poolAddress, (("global_" + toBase58String(assetId)) + "_balance")) | |
68 | 78 | ||
69 | 79 | ||
70 | 80 | func buyXtnForWavesCommon (wavesAmt) = { | |
71 | 81 | let wavesToXtnViaWx = wxPoolBalance(wxWavesXtnLp, 1) | |
72 | 82 | let wavesToXtnViaSwop = swopBalance(swopWavesXtn, "A") | |
73 | 83 | let wavesToXtnTotal = (wavesToXtnViaWx + wavesToXtnViaSwop) | |
74 | 84 | let wavesToXtnViaWxAmt = fraction(wavesAmt, wavesToXtnViaWx, wavesToXtnTotal) | |
75 | 85 | let wavesToXtnViaSwopAmt = fraction(wavesAmt, wavesToXtnViaSwop, wavesToXtnTotal) | |
76 | 86 | let wavesToXtnViaWxResult = invoke(wxSwop, "swap", [1, xtnIdStr, toString(this)], [AttachedPayment(unit, wavesToXtnViaWxAmt)]) | |
77 | 87 | if ((wavesToXtnViaWxResult == wavesToXtnViaWxResult)) | |
78 | 88 | then { | |
79 | 89 | let wavesToXtnViaSwopResult = asAnyList(invoke(swopWavesXtn, "exchange", [1], [AttachedPayment(unit, wavesToXtnViaSwopAmt)])) | |
80 | 90 | if ((wavesToXtnViaSwopResult == wavesToXtnViaSwopResult)) | |
81 | 91 | then { | |
82 | 92 | let xtnAmt = assetBalance(this, xtnId) | |
83 | 93 | $Tuple2(nil, xtnAmt) | |
84 | 94 | } | |
85 | 95 | else throw("Strict value is not equal to itself.") | |
86 | 96 | } | |
87 | 97 | else throw("Strict value is not equal to itself.") | |
88 | 98 | } | |
89 | 99 | ||
90 | 100 | ||
91 | 101 | @Callable(i) | |
92 | 102 | func buyXtnForWaves () = { | |
93 | 103 | let pmt = value(i.payments[0]) | |
94 | 104 | let wavesAmt = pmt.amount | |
95 | 105 | buyXtnForWavesCommon(wavesAmt) | |
96 | 106 | } | |
97 | 107 | ||
98 | 108 | ||
99 | 109 | ||
100 | 110 | @Callable(i) | |
101 | 111 | func buyPuzzleForWaves () = { | |
102 | 112 | let pzForbesValue = pzBalance(pzForbes, puzzleId) | |
103 | 113 | let pzBasicPuzzleValue = pzBalance(pzBasicPuzzle, puzzleId) | |
104 | 114 | let wxPuzzleWavesValue = wxPoolBalance(wxPuzzleWavesLp, 1) | |
105 | 115 | let swopPuzzleXtnValue = swopBalance(swopPuzzleXtn, "A") | |
106 | 116 | let total = (((pzForbesValue + pzBasicPuzzleValue) + wxPuzzleWavesValue) + swopPuzzleXtnValue) | |
107 | 117 | let pmt = value(i.payments[0]) | |
108 | 118 | let pmtAmt = pmt.amount | |
109 | 119 | let pzForbesPart = fraction(pzForbesValue, pmtAmt, total) | |
110 | 120 | let pzBasicPuzzlePart = fraction(pzBasicPuzzleValue, pmtAmt, total) | |
111 | 121 | let wxPuzzleWavesPart = fraction(wxPuzzleWavesValue, pmtAmt, total) | |
112 | 122 | let swopPuzzleXtnPart = fraction(swopPuzzleXtnValue, pmtAmt, total) | |
113 | 123 | let xtnAmt = buyXtnForWavesCommon(swopPuzzleXtnPart)._2 | |
114 | 124 | if ((xtnAmt == xtnAmt)) | |
115 | 125 | then { | |
116 | 126 | let wavesToPuzzleViaForbesResult = invoke(pzForbes, "swap", [puzzleIdStr, 1], [AttachedPayment(unit, pzForbesPart)]) | |
117 | 127 | if ((wavesToPuzzleViaForbesResult == wavesToPuzzleViaForbesResult)) | |
118 | 128 | then { | |
119 | 129 | let wavesToPuzzleViaBasicResult = invoke(pzBasicPuzzle, "swap", [puzzleIdStr, 1], [AttachedPayment(unit, pzBasicPuzzlePart)]) | |
120 | 130 | if ((wavesToPuzzleViaBasicResult == wavesToPuzzleViaBasicResult)) | |
121 | 131 | then { | |
122 | 132 | let wavesToPuzzleViaWxResult = invoke(wxSwop, "swap", [1, puzzleIdStr, toString(this)], [AttachedPayment(unit, wxPuzzleWavesPart)]) | |
123 | 133 | if ((wavesToPuzzleViaWxResult == wavesToPuzzleViaWxResult)) | |
124 | 134 | then { | |
125 | 135 | let xtnToPuzzleViaSwopResult = asAnyList(invoke(swopPuzzleXtn, "exchange", [1], [AttachedPayment(xtnId, xtnAmt)])) | |
126 | 136 | if ((xtnToPuzzleViaSwopResult == xtnToPuzzleViaSwopResult)) | |
127 | 137 | then [ScriptTransfer(i.caller, assetBalance(this, puzzleId), puzzleId)] | |
128 | 138 | else throw("Strict value is not equal to itself.") | |
129 | 139 | } | |
130 | 140 | else throw("Strict value is not equal to itself.") | |
131 | 141 | } | |
132 | 142 | else throw("Strict value is not equal to itself.") | |
133 | 143 | } | |
134 | 144 | else throw("Strict value is not equal to itself.") | |
135 | 145 | } | |
136 | 146 | else throw("Strict value is not equal to itself.") | |
137 | 147 | } | |
138 | 148 | ||
139 | 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(swopPuzzleXtn, "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 | + | } | |
167 | + | ||
168 | + |
github/deemru/w8io/3ef1775 29.07 ms ◑