tx · xSi3mU2d2nvUZRGBjSs9kDdgYHq4LA6UBKjFVPSrRcH

3PAv42skNMWedMSNx75fMDuMcFzggaELYqK:  -0.01100000 Waves

2023.04.07 16:29 [3589821] smart account 3PAv42skNMWedMSNx75fMDuMcFzggaELYqK > SELF 0.00000000 Waves

{ "type": 13, "id": "xSi3mU2d2nvUZRGBjSs9kDdgYHq4LA6UBKjFVPSrRcH", "fee": 1100000, "feeAssetId": null, "timestamp": 1680874211019, "version": 2, "chainId": 87, "sender": "3PAv42skNMWedMSNx75fMDuMcFzggaELYqK", "senderPublicKey": "2S8hdm8hsS8LEgawkBAPztpWr6tkd4qFjb3TPzqmm7D1", "proofs": [ "5GkYS4HeYgvAKpQ5HndW76rJnFbSLR3Z1sJosoHKTDZpWtQF7Yyazgi2wYwUdFJptZzR4HXfrJkbxqT4QBzxcLBP" ], "script": "base64:AAIFAAAAAAAAAA4IAhIAEgASABIAEgASAAAAABIAAAAAC2RleENvbnRyYWN0AQAAABoBV8pr/J/Xy7o1PTtmmh6OsIpSpzSimkOUggAAAAAQbmV1dHJpbm9Db250cmFjdAEAAAAaAVdwBGKmR5vprVZolMvvhYwwgiAomggUlrIAAAAAFm5ldXRyaW5vU3Rha2luZ0FkZHJlc3MBAAAAGgFXa2g44QPUmoyfEhvGLLwjBzkLze0S1wpfAAAAAAp4dG5Bc3NldElkAQAAACC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QAAAAALc3VyZkFzc2V0SWQBAAAAIJLR9EriEQEr9H7q3iGOPcX7yfJ9zoey7VIZ8DpOJFj1AAAAAAl3eEFzc2V0SWQBAAAAIJMBHKupx24lV85mnnG2vapr+DzoWAsq7tmgTrs83BSxAAAAABRjYXNlWHRuU3dhcFN0YXRlSWRsZQAAAAAAAAAAAAAAAAAcY2FzZVh0blN3YXBTdGF0ZVh0blRvUmV3YXJkcwAAAAAAAAAAAQAAAAAkY2FzZVh0blN3YXBTdGF0ZUV4Y2hhbmdlUmV3YXJkc09uRGV4AAAAAAAAAAACAAAAABN4dG5Td2FwU3RhdGVFbnVtS2V5AgAAABB4dG5Td2FwU3RhdGVFbnVtAAAAABF4dG5Td2FwQmxvY2tJZEtleQIAAAAOeHRuU3dhcEJsb2NrSWQAAAAAF3h0blN3YXBUcmFuc2FjdGlvbklkS2V5AgAAABR4dG5Td2FwVHJhbnNhY3Rpb25JZAAAAAAUeHRuU3dhcFByaWNlSW5kZXhLZXkCAAAAEXh0blN3YXBQcmljZUluZGV4AAAAABp4dG5Td2FwWHRuU3dhcHBlZEFtb3VudEtleQIAAAAXeHRuU3dhcFh0blN3YXBwZWRBbW91bnQAAAAAHHh0blN3YXBXYXZlc0JhbGFuY2VBdFN3YXBLZXkCAAAAGXh0blN3YXBXYXZlc0JhbGFuY2VBdFN3YXAAAAAAGXh0blN3YXBXeEJhbGFuY2VBdFN3YXBLZXkCAAAAFnh0blN3YXBXeEJhbGFuY2VBdFN3YXAAAAAAHnh0blN3YXBYdG5CYWxhbmNlQXRFeGNoYW5nZUtleQIAAAAbeHRuU3dhcFh0bkJhbGFuY2VBdEV4Y2hhbmdl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dG5Td2FwQmxvY2tJZEtleQUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAF3h0blN3YXBUcmFuc2FjdGlvbklkS2V5CQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFHh0blN3YXBQcmljZUluZGV4S2V5BQAAAApwcmljZUluZGV4CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABp4dG5Td2FwWHRuU3dhcHBlZEFtb3VudEtleQUAAAANbWF4U3dhcEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAceHRuU3dhcFdhdmVzQmFsYW5jZUF0U3dhcEtleQgFAAAAE2N1cnJlbnRXYXZlc0JhbGFuY2UAAAAJYXZhaWxhYmxlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABl4dG5Td2FwV3hCYWxhbmNlQXRTd2FwS2V5BQAAABBjdXJyZW50V1hCYWxhbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABN4dG5Td2FwU3RhdGVFbnVtS2V5BQAAABxjYXNlWHRuU3dhcFN0YXRlWHRuVG9SZXdhcmRzBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAK0luY29ycmVjdCBkYXRhIGZyb20gbmV1dHJpbm8gc21hcnQgY29udHJhY3QJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAJ3h0blN3YXBQYXJ0MmV4Y2hhbmdlWHRuU3dhcFJld2FyZHNPbkRleAAAAAADCQEAAAACIT0AAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1NSkAAAABBQAAABN4dG5Td2FwU3RhdGVFbnVtS2V5BQAAABxjYXNlWHRuU3dhcFN0YXRlWHRuVG9SZXdhcmRzCQAAAgAAAAECAAAAIVdyb25nIHN0YXRlLCBtdXN0IGJlIFh0blRvUmV3YXJkcwMJAABnAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAAReHRuU3dhcEJsb2NrSWRLZXkFAAAABmhlaWdodAkAAAIAAAABAgAAABVNdXN0IHdhaXQgZm9yIDEgYmxvY2sEAAAAEHN3YXBUcmFuc2F0aW9uSWQJAQAAABFAZXh0ck5hdGl2ZSgxMDU4KQAAAAEFAAAAF3h0blN3YXBUcmFuc2FjdGlvbklkS2V5BAAAAA5zd2FwUHJpY2VJbmRleAkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAAUeHRuU3dhcFByaWNlSW5kZXhLZXkEAAAADHdpdGhkcmF3X3JlcwkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAAEG5ldXRyaW5vQ29udHJhY3QCAAAACHdpdGhkcmF3CQAETAAAAAIJAAQlAAAAAQUAAAAEdGhpcwkABEwAAAACBQAAAA5zd2FwUHJpY2VJbmRleAkABEwAAAACBQAAABBzd2FwVHJhbnNhdGlvbklkBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAMd2l0aGRyYXdfcmVzBQAAAAx3aXRoZHJhd19yZXMEAAAAEndhdmVzQmFsYW5jZUF0U3dhcAkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAAceHRuU3dhcFdhdmVzQmFsYW5jZUF0U3dhcEtleQQAAAAPd3hCYWxhbmNlQXRTd2FwCQEAAAARQGV4dHJOYXRpdmUoMTA1NSkAAAABBQAAABl4dG5Td2FwV3hCYWxhbmNlQXRTd2FwS2V5BAAAABNjdXJyZW50V2F2ZXNCYWxhbmNlCQAD7wAAAAEFAAAABHRoaXMEAAAAEGN1cnJlbnRXWEJhbGFuY2UJAAPwAAAAAgUAAAAEdGhpcwUAAAAJd3hBc3NldElkBAAAAAx3YXZlc1Jld2FyZHMJAABlAAAAAggFAAAAE2N1cnJlbnRXYXZlc0JhbGFuY2UAAAAJYXZhaWxhYmxlBQAAABJ3YXZlc0JhbGFuY2VBdFN3YXAEAAAACXd4UmV3YXJkcwkAAGUAAAACBQAAABBjdXJyZW50V1hCYWxhbmNlBQAAAA93eEJhbGFuY2VBdFN3YXADCQAAZgAAAAIFAAAADHdhdmVzUmV3YXJkcwAAAAAAAAAAAAQAAAAJd2F2ZXNTd2FwCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAALZGV4Q29udHJhY3QCAAAAFGV4Y2hhbmdlVGhlblRyYW5zZmVyCQAETAAAAAIJAAJYAAAAAQUAAAAKeHRuQXNzZXRJZAkABEwAAAACCQAEJQAAAAEFAAAABHRoaXMJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAR1bml0AwkAAGYAAAACBQAAAAx3YXZlc1Jld2FyZHMAAAAAAAAAAAAFAAAADHdhdmVzUmV3YXJkcwAAAAAAAAAAAAUAAAADbmlsAwkAAAAAAAACBQAAAAl3YXZlc1N3YXAFAAAACXdhdmVzU3dhcAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQAAAAGd3hTd2FwCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAALZGV4Q29udHJhY3QCAAAAFGV4Y2hhbmdlVGhlblRyYW5zZmVyCQAETAAAAAIJAAJYAAAAAQUAAAAKeHRuQXNzZXRJZAkABEwAAAACCQAEJQAAAAEFAAAABHRoaXMJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAl3eEFzc2V0SWQFAAAACXd4UmV3YXJkcwUAAAADbmlsAwkAAAAAAAACBQAAAAZ3eFN3YXAFAAAABnd4U3dhcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAeeHRuU3dhcFh0bkJhbGFuY2VBdEV4Y2hhbmdlS2V5CQAD8AAAAAIFAAAABHRoaXMFAAAACnh0bkFzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGXh0blN3YXBFeGNoYW5nZUJsb2NrSWRLZXkFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATeHRuU3dhcFN0YXRlRW51bUtleQUAAAAkY2FzZVh0blN3YXBTdGF0ZUV4Y2hhbmdlUmV3YXJkc09uRGV4BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA90ZXN0RGV4RXhjaGFuZ2UAAAAABAAAAAZ3eFN3YXAJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABBQAAAAtkZXhDb250cmFjdAIAAAAUZXhjaGFuZ2VUaGVuVHJhbnNmZXIJAARMAAAAAgIAAAAsREcyeEZrUGREd0tVb0JrekdBaFF0THBTR3pmWExpQ1lQRXplS0gyQWQyNHAJAARMAAAAAgkABCUAAAABBQAAAAR0aGlzCQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAJd3hBc3NldElkAAAAAAA7msoABQAAAANuaWwDCQAAAAAAAAIFAAAABnd4U3dhcAUAAAAGd3hTd2FwBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAGHh0blN3YXBQYXJ0M0ZpbmFsaXplU3dhcAAAAAADCQEAAAACIT0AAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1NSkAAAABBQAAABN4dG5Td2FwU3RhdGVFbnVtS2V5BQAAACRjYXNlWHRuU3dhcFN0YXRlRXhjaGFuZ2VSZXdhcmRzT25EZXgJAAACAAAAAQIAAAAlV3Jvbmcgc3RhdGUsIG11c3QgYmUgRXhjaGFuZ2UgcmV3YXJkcwMJAABnAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAAZeHRuU3dhcEV4Y2hhbmdlQmxvY2tJZEtleQUAAAAGaGVpZ2h0CQAAAgAAAAECAAAAFU11c3Qgd2FpdCBmb3IgMSBibG9jawQAAAAXeHRuQW1vdW50QmVmb3JlRXhjaGFuZ2UJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAEFAAAAHnh0blN3YXBYdG5CYWxhbmNlQXRFeGNoYW5nZUtleQQAAAAKeHRuU3dhcHBlZAkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAAaeHRuU3dhcFh0blN3YXBwZWRBbW91bnRLZXkEAAAAEGN1cnJlbnRYdG5BbW91bnQJAAPwAAAAAgUAAAAEdGhpcwUAAAAKeHRuQXNzZXRJZAQAAAAGcmV3YXJkCQAAZQAAAAIFAAAAEGN1cnJlbnRYdG5BbW91bnQJAABkAAAAAgUAAAAXeHRuQW1vdW50QmVmb3JlRXhjaGFuZ2UFAAAACnh0blN3YXBwZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAHkNVUlJFTlRfU1dBUF9YVE5fUkVXQVJEX0FNT1VOVAUAAAAGcmV3YXJkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABN4dG5Td2FwU3RhdGVFbnVtS2V5BQAAABRjYXNlWHRuU3dhcFN0YXRlSWRsZQUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXlCeQ2K", "height": 3589821, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6qpBqzPYvuKdgeGxnAkWchH6mB2T7zpsYVUrvHFLctqa Next: 3i54McQNUGxwBBJrBb38dvMEmQng8JgfRU2xSxvVe6kR Diff:
OldNewDifferences
128128
129129 @Callable(i)
130130 func testDexExchange () = {
131- let wxSwap = invoke(Address(dexContract), "exchangeThenTransfer", [toBase58String(xtnAssetId), toString(this), 0], [AttachedPayment(wxAssetId, 1000000000)])
131+ let wxSwap = invoke(Address(dexContract), "exchangeThenTransfer", ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", toString(this), 0], [AttachedPayment(wxAssetId, 1000000000)])
132132 if ((wxSwap == wxSwap))
133133 then nil
134134 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let dexContract = base58'3PLPCb3wF2H2gtzohoAjeWcGaMKEiJvtE5X'
55
66 let neutrinoContract = base58'3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo'
77
88 let neutrinoStakingAddress = base58'3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C'
99
1010 let xtnAssetId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1111
1212 let surfAssetId = base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL'
1313
1414 let wxAssetId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on'
1515
1616 let caseXtnSwapStateIdle = 0
1717
1818 let caseXtnSwapStateXtnToRewards = 1
1919
2020 let caseXtnSwapStateExchangeRewardsOnDex = 2
2121
2222 let xtnSwapStateEnumKey = "xtnSwapStateEnum"
2323
2424 let xtnSwapBlockIdKey = "xtnSwapBlockId"
2525
2626 let xtnSwapTransactionIdKey = "xtnSwapTransactionId"
2727
2828 let xtnSwapPriceIndexKey = "xtnSwapPriceIndex"
2929
3030 let xtnSwapXtnSwappedAmountKey = "xtnSwapXtnSwappedAmount"
3131
3232 let xtnSwapWavesBalanceAtSwapKey = "xtnSwapWavesBalanceAtSwap"
3333
3434 let xtnSwapWxBalanceAtSwapKey = "xtnSwapWxBalanceAtSwap"
3535
3636 let xtnSwapXtnBalanceAtExchangeKey = "xtnSwapXtnBalanceAtExchange"
3737
3838 let xtnSwapExchangeBlockIdKey = "xtnSwapExchangeBlockId"
3939
4040 @Callable(i)
4141 func stakeToNeutrino () = {
4242 let result = invoke(Address(neutrinoStakingAddress), "stake", nil, [AttachedPayment(surfAssetId, 4000000000)])
4343 if ((result == result))
4444 then nil
4545 else throw("Strict value is not equal to itself.")
4646 }
4747
4848
4949
5050 @Callable(i)
5151 func constructor () = [IntegerEntry(xtnSwapStateEnumKey, caseXtnSwapStateIdle)]
5252
5353
5454
5555 @Callable(i)
5656 func xtnSwapPart1swapXTNFromNeutrino () = if ((getIntegerValue(xtnSwapStateEnumKey) != caseXtnSwapStateIdle))
5757 then throw("Wrong state, must be Idle")
5858 else {
5959 let result = invoke(Address(neutrinoContract), "swapParamsByUserSYSREADONLY", [toString(this), 0], nil)
6060 if ((result == result))
6161 then match result {
6262 case tuple: (Int, Int, Int, Int, Int, Int, Int) =>
6363 if ((tuple._3 > 0))
6464 then throw((("Time is not come yet, you need to wait " + toString(tuple._3)) + " blocks"))
6565 else {
6666 let maxSwapAmount = tuple._7
6767 if ((1000000 > maxSwapAmount))
6868 then throw("Min XTN amount to swap is 1, stake more SURF")
6969 else if ((maxSwapAmount > assetBalance(this, xtnAssetId)))
7070 then throw("XTN Balance on contract is smaller than max swap amount, increase your balance")
7171 else {
7272 let currentWavesBalance = wavesBalance(this)
7373 let currentWXBalance = assetBalance(this, wxAssetId)
7474 let swapNeutrinoToAssets = invoke(Address(neutrinoContract), "swapNeutrinoToBasket", nil, [AttachedPayment(xtnAssetId, maxSwapAmount)])
7575 if ((swapNeutrinoToAssets == swapNeutrinoToAssets))
7676 then {
7777 let priceIndex = (getIntegerValue(Address(base58'3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP'), "price_index") + 1)
7878 [IntegerEntry(xtnSwapBlockIdKey, height), StringEntry(xtnSwapTransactionIdKey, toBase58String(i.transactionId)), IntegerEntry(xtnSwapPriceIndexKey, priceIndex), IntegerEntry(xtnSwapXtnSwappedAmountKey, maxSwapAmount), IntegerEntry(xtnSwapWavesBalanceAtSwapKey, currentWavesBalance.available), IntegerEntry(xtnSwapWxBalanceAtSwapKey, currentWXBalance), IntegerEntry(xtnSwapStateEnumKey, caseXtnSwapStateXtnToRewards)]
7979 }
8080 else throw("Strict value is not equal to itself.")
8181 }
8282 }
8383 case _ =>
8484 throw("Incorrect data from neutrino smart contract")
8585 }
8686 else throw("Strict value is not equal to itself.")
8787 }
8888
8989
9090
9191 @Callable(i)
9292 func xtnSwapPart2exchangeXtnSwapRewardsOnDex () = if ((getIntegerValue(xtnSwapStateEnumKey) != caseXtnSwapStateXtnToRewards))
9393 then throw("Wrong state, must be XtnToRewards")
9494 else if ((getIntegerValue(xtnSwapBlockIdKey) >= height))
9595 then throw("Must wait for 1 block")
9696 else {
9797 let swapTransationId = getStringValue(xtnSwapTransactionIdKey)
9898 let swapPriceIndex = getIntegerValue(xtnSwapPriceIndexKey)
9999 let withdraw_res = invoke(Address(neutrinoContract), "withdraw", [toString(this), swapPriceIndex, swapTransationId], nil)
100100 if ((withdraw_res == withdraw_res))
101101 then {
102102 let wavesBalanceAtSwap = getIntegerValue(xtnSwapWavesBalanceAtSwapKey)
103103 let wxBalanceAtSwap = getIntegerValue(xtnSwapWxBalanceAtSwapKey)
104104 let currentWavesBalance = wavesBalance(this)
105105 let currentWXBalance = assetBalance(this, wxAssetId)
106106 let wavesRewards = (currentWavesBalance.available - wavesBalanceAtSwap)
107107 let wxRewards = (currentWXBalance - wxBalanceAtSwap)
108108 if ((wavesRewards > 0))
109109 then {
110110 let wavesSwap = invoke(Address(dexContract), "exchangeThenTransfer", [toBase58String(xtnAssetId), toString(this), 0], [AttachedPayment(unit, if ((wavesRewards > 0))
111111 then wavesRewards
112112 else 0)])
113113 if ((wavesSwap == wavesSwap))
114114 then nil
115115 else throw("Strict value is not equal to itself.")
116116 }
117117 else {
118118 let wxSwap = invoke(Address(dexContract), "exchangeThenTransfer", [toBase58String(xtnAssetId), toString(this), 0], [AttachedPayment(wxAssetId, wxRewards)])
119119 if ((wxSwap == wxSwap))
120120 then [IntegerEntry(xtnSwapXtnBalanceAtExchangeKey, assetBalance(this, xtnAssetId)), IntegerEntry(xtnSwapExchangeBlockIdKey, height), IntegerEntry(xtnSwapStateEnumKey, caseXtnSwapStateExchangeRewardsOnDex)]
121121 else throw("Strict value is not equal to itself.")
122122 }
123123 }
124124 else throw("Strict value is not equal to itself.")
125125 }
126126
127127
128128
129129 @Callable(i)
130130 func testDexExchange () = {
131- let wxSwap = invoke(Address(dexContract), "exchangeThenTransfer", [toBase58String(xtnAssetId), toString(this), 0], [AttachedPayment(wxAssetId, 1000000000)])
131+ let wxSwap = invoke(Address(dexContract), "exchangeThenTransfer", ["DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", toString(this), 0], [AttachedPayment(wxAssetId, 1000000000)])
132132 if ((wxSwap == wxSwap))
133133 then nil
134134 else throw("Strict value is not equal to itself.")
135135 }
136136
137137
138138
139139 @Callable(i)
140140 func xtnSwapPart3FinalizeSwap () = if ((getIntegerValue(xtnSwapStateEnumKey) != caseXtnSwapStateExchangeRewardsOnDex))
141141 then throw("Wrong state, must be Exchange rewards")
142142 else if ((getIntegerValue(xtnSwapExchangeBlockIdKey) >= height))
143143 then throw("Must wait for 1 block")
144144 else {
145145 let xtnAmountBeforeExchange = getIntegerValue(xtnSwapXtnBalanceAtExchangeKey)
146146 let xtnSwapped = getIntegerValue(xtnSwapXtnSwappedAmountKey)
147147 let currentXtnAmount = assetBalance(this, xtnAssetId)
148148 let reward = (currentXtnAmount - (xtnAmountBeforeExchange + xtnSwapped))
149149 [IntegerEntry("CURRENT_SWAP_XTN_REWARD_AMOUNT", reward), IntegerEntry(xtnSwapStateEnumKey, caseXtnSwapStateIdle)]
150150 }
151151
152152
153153 @Verifier(tx)
154154 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
155155

github/deemru/w8io/6500d08 
49.72 ms