2024.03.27 09:56 [4102048] smart account 3P9DaReo3xvAQ5wzEzkF3Qbxm4fmxkoB1ik > SELF 0.00000000 Waves

{ "type": 13, "id": "G1iiPuB9A1qrE8HYnobAwH1JvoTw9w3kW3Fbp88bZc6q", "fee": 500000, "feeAssetId": null, "timestamp": 1711522619760, "version": 2, "chainId": 87, "sender": "3P9DaReo3xvAQ5wzEzkF3Qbxm4fmxkoB1ik", "senderPublicKey": "5Zt1wYPgfh4zJWozYGoGxuudhP7Zh8H1HJTfVzqpJ8LF", "proofs": [ "2j763oSimTboueeMKN3eVW7sSujERqfpb8rDD8SKHZr9GzoqLGY67SAjST3THwqrH4soVHFdK5SckdXesQmM6AqU" ], "script": "base64:BgIECAISACIAA1NFUAICX18ADUNPTlRSQUNUX05BTUUCEnd4ZGFvX2Z1bmRpbmcucmlkZQAGU0NBTEU4AIDC1y8ABVdBVkVTAgVXQVZFUwEHd3JhcEVycgEBcwkArAICCQCsAgIFDUNPTlRSQUNUX05BTUUCAjogBQFzAQh0aHJvd0VycgEBcwkAAgEJAQd3cmFwRXJyAQUBcwEPYXNzZXRJZFRvU3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJANgEAQUBYgMJAAECBQckbWF0Y2gwAgRVbml0BQVXQVZFUwkAAgECC01hdGNoIGVycm9yAQ9zdHJpbmdUb0Fzc2V0SWQBDWFzc2V0SWRTdHJpbmcDCQAAAgUNYXNzZXRJZFN0cmluZwUFV0FWRVMFBHVuaXQJANkEAQUNYXNzZXRJZFN0cmluZwEWa2V5TWFpblRyZWFzdXJ5QWRkcmVzcwAJALkJAgkAzAgCAgIlcwkAzAgCAhNtYWluVHJlYXN1cnlBZGRyZXNzBQNuaWwFA1NFUAEXa2V5V2F2ZXNVU0RUUG9vbEFkZHJlc3MACQC5CQIJAMwIAgICJXMJAMwIAgIUV2F2ZXNVU0RUUG9vbEFkZHJlc3MFA25pbAUDU0VQAQ9rZXlXWERBT0FkZHJlc3MACQC5CQIJAMwIAgICJXMJAMwIAgIUV1hEQU9jb250cmFjdEFkZHJlc3MFA25pbAUDU0VQAQ9rZXlXWERBT2Fzc2V0SWQACQC5CQIJAMwIAgICJXMJAMwIAgIMV1hEQU9hc3NldElkBQNuaWwFA1NFUAEOa2V5VVNEVGFzc2V0SWQACQC5CQIJAMwIAgICJXMJAMwIAgILVVNEVGFzc2V0SWQFA25pbAUDU0VQARNrZXlQcm9jZXNzRmVlQW1vdW50AAkAuQkCCQDMCAICAiVzCQDMCAICEHByb2Nlc3NGZWVBbW91bnQFA25pbAUDU0VQAQprZXlIaXN0b3J5AgZhY3Rpb24EdHhJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgUGYWN0aW9uCQDMCAIFBHR4SWQFA25pbAUDU0VQARRmb3JtYXRQcm9jZXNzSGlzdG9yeQMSY2xhaW1lZFdhdmVzQW1vdW50D3NlbmRXWERBT2Ftb3VudBBwcm9jZXNzRmVlQW1vdW50CQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQUSY2xhaW1lZFdhdmVzQW1vdW50CQDMCAIJAKQDAQUPc2VuZFdYREFPYW1vdW50CQDMCAIJAKQDAQUQcHJvY2Vzc0ZlZUFtb3VudAUDbmlsBQNTRVAAGW1haW5UcmVhc3VyeUFkZHJlc3NTdHJpbmcJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJARZrZXlNYWluVHJlYXN1cnlBZGRyZXNzAAAZbWFpblRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBEUBleHRyTmF0aXZlKDEwNjIpAQUZbWFpblRyZWFzdXJ5QWRkcmVzc1N0cmluZwAad2F2ZXNVU0RUcG9vbEFkZHJlc3NTdHJpbmcJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJARdrZXlXYXZlc1VTRFRQb29sQWRkcmVzcwAAGndhdmVzVVNEVHBvb2xBZGRyZXNzT3JGYWlsCQERQGV4dHJOYXRpdmUoMTA2MikBBRp3YXZlc1VTRFRwb29sQWRkcmVzc1N0cmluZwASd3hkYW9BZGRyZXNzU3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQEPa2V5V1hEQU9BZGRyZXNzAAASd3hkYW9BZGRyZXNzT3JGYWlsCQERQGV4dHJOYXRpdmUoMTA2MikBBRJ3eGRhb0FkZHJlc3NTdHJpbmcBDXN0cmluZ1RvQXNzZXQBDWFzc2V0SWRTdHJpbmcDCQAAAgUNYXNzZXRJZFN0cmluZwUFV0FWRVMFBHVuaXQJANkEAQUNYXNzZXRJZFN0cmluZwENYXNzZXRUb1N0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWIFBVdBVkVTAQpnZXRCYWxhbmNlAgdhZGRyZXNzDWFzc2V0SWRTdHJpbmcEB2Fzc2V0SWQJAQ1zdHJpbmdUb0Fzc2V0AQUNYXNzZXRJZFN0cmluZwQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDwBwIFB2FkZHJlc3MFAWIICQDvBwEFB2FkZHJlc3MJYXZhaWxhYmxlABBwcm9jZXNzRmVlQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARNrZXlQcm9jZXNzRmVlQW1vdW50AACgwh4AEXVzZHRBc3NldElkU3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQEOa2V5VVNEVGFzc2V0SWQAABJ3eGRhb0Fzc2V0SWRTdHJpbmcJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAQ9rZXlXWERBT2Fzc2V0SWQAAAx3eGRhb0Fzc2V0SWQJAQ1zdHJpbmdUb0Fzc2V0AQUSd3hkYW9Bc3NldElkU3RyaW5nARZjbGFpbVdhdmVzRnJvbVRyZWFzdXJ5AAQPb2xkV2F2ZXNCYWxhbmNlCQEKZ2V0QmFsYW5jZQIFBHRoaXMFBVdBVkVTAwkAAAIFD29sZFdhdmVzQmFsYW5jZQUPb2xkV2F2ZXNCYWxhbmNlBA5nZXRXYXZlc0ludm9rZQkA/AcEBRltYWluVHJlYXN1cnlBZGRyZXNzT3JGYWlsAgVDbGFpbQUDbmlsBQNuaWwDCQAAAgUOZ2V0V2F2ZXNJbnZva2UFDmdldFdhdmVzSW52b2tlBA9uZXdXYXZlc0JhbGFuY2UJAQpnZXRCYWxhbmNlAgUEdGhpcwUFV0FWRVMDCQAAAgUPbmV3V2F2ZXNCYWxhbmNlBQ9uZXdXYXZlc0JhbGFuY2UJAGUCBQ9uZXdXYXZlc0JhbGFuY2UFD29sZFdhdmVzQmFsYW5jZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERZ2V0V2F2ZXNVU0RUUHJpY2UABBBwb29sV2F2ZXNCYWxhbmNlCQEKZ2V0QmFsYW5jZQIFGndhdmVzVVNEVHBvb2xBZGRyZXNzT3JGYWlsBQVXQVZFUwQPcG9vbFVzZHRCYWxhbmNlCQEKZ2V0QmFsYW5jZQIFGndhdmVzVVNEVHBvb2xBZGRyZXNzT3JGYWlsBRF1c2R0QXNzZXRJZFN0cmluZwQCY2gJAMwIAgMJAGYCBRBwb29sV2F2ZXNCYWxhbmNlAAAGCQEIdGhyb3dFcnIBAjZXQVZFUy9VU0RUIHBvb2wgV2F2ZXMgYmFsYW5jZSBzaG91bGQgYmUgZ3JlYXRlciB0aGF0IDAJAMwIAgMJAGYCBQ9wb29sVXNkdEJhbGFuY2UAAAYJAQh0aHJvd0VycgECNVdBVkVTL1VTRFQgcG9vbCBVU0RUIGJhbGFuY2Ugc2hvdWxkIGJlIGdyZWF0ZXIgdGhhdCAwBQNuaWwDCQAAAgUCY2gFAmNoCQBrAwUPcG9vbFVzZHRCYWxhbmNlBQZTQ0FMRTgFEHBvb2xXYXZlc0JhbGFuY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEWdldFdYREFPVXNkdFByaWNlAAQLcHJpY2VJbnZva2UJAPwHBAUSd3hkYW9BZGRyZXNzT3JGYWlsAgVwcmljZQUDbmlsBQNuaWwEDGludm9rZVJlc3VsdAQHJG1hdGNoMAULcHJpY2VJbnZva2UDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAFyBQckbWF0Y2gwBAckbWF0Y2gxCQCRAwIFAXIAAAMJAAECBQckbWF0Y2gxAgNJbnQEAWkFByRtYXRjaDEFAWkFBHVuaXQFBHVuaXQECnd4REFPcHJpY2UJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUMaW52b2tlUmVzdWx0CQEHd3JhcEVycgECJFVuZXhwZWN0ZWQgV1hEQU8gUHJpY2UgaW52b2tlIHJlc3VsdAQCY2gJAMwIAgMJAGYCBQp3eERBT3ByaWNlAAAGCQEIdGhyb3dFcnIBAiRXWERBTyBwcmljZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAFA25pbAMJAAACBQJjaAUCY2gFCnd4REFPcHJpY2UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDWdldFdYREFPUHJpY2UABQZTQ0FMRTgBD2NhbGNXWERBT2Ftb3VudAELd2F2ZXNBbW91bnQEBXByaWNlCQENZ2V0V1hEQU9QcmljZQAEC3d4REFPYW1vdW50AwkAZwIAAAUFcHJpY2UJAQh0aHJvd0VycgECHnByaWNlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAawMFC3dhdmVzQW1vdW50BQVwcmljZQUGU0NBTEU4BQt3eERBT2Ftb3VudAEBaQEHcHJvY2VzcwAEC3dhdmVzQW1vdW50CQEWY2xhaW1XYXZlc0Zyb21UcmVhc3VyeQADCQAAAgULd2F2ZXNBbW91bnQFC3dhdmVzQW1vdW50BA9zd2FwV2F2ZXNBbW91bnQJAGUCBQt3YXZlc0Ftb3VudAUQcHJvY2Vzc0ZlZUFtb3VudAMJAAACBQ9zd2FwV2F2ZXNBbW91bnQFD3N3YXBXYXZlc0Ftb3VudAQPd3hEQU9zZW5kQW1vdW50CQEPY2FsY1dYREFPYW1vdW50AQUPc3dhcFdhdmVzQW1vdW50AwkAAAIFD3d4REFPc2VuZEFtb3VudAUPd3hEQU9zZW5kQW1vdW50BAJjaAkAzAgCAwkAZgIFD3N3YXBXYXZlc0Ftb3VudAAABgkBCHRocm93RXJyAQI6Y2xhaW1lZCB3YXZlcyBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBwcm9jZXNzaW5nIGZlZQkAzAgCAwkAZgIFD3d4REFPc2VuZEFtb3VudAAABgkBCHRocm93RXJyAQIqV1hEQU8gc2VuZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwBQNuaWwDCQAAAgUCY2gFAmNoBBBwcm9jZXNzaW5nQ2FsbGVyCAUBaQxvcmlnaW5DYWxsZXIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUQcHJvY2Vzc2luZ0NhbGxlcgUQcHJvY2Vzc0ZlZUFtb3VudAkBDXN0cmluZ1RvQXNzZXQBBQVXQVZFUwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRltYWluVHJlYXN1cnlBZGRyZXNzT3JGYWlsBQ93eERBT3NlbmRBbW91bnQFDHd4ZGFvQXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5SGlzdG9yeQICB3Byb2Nlc3MJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkBFGZvcm1hdFByb2Nlc3NIaXN0b3J5AwULd2F2ZXNBbW91bnQFD3d4REFPc2VuZEFtb3VudAUQcHJvY2Vzc0ZlZUFtb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuADHfi5U=", "height": 4102048, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AgWioc1hgPeYvWuumpRDLuDL5HskcwCGXVQ76tvVJsJA Next: Hz9MYiqcFuztybEFVnU57Qofyye9bMhbdiuAerCkuSNA Diff:
OldNewDifferences
6868
6969 func stringToAsset (assetIdString) = if ((assetIdString == WAVES))
7070 then unit
71- else toBytes(assetIdString)
71+ else fromBase58String(assetIdString)
7272
7373
7474 func assetToString (assetId) = match assetId {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let CONTRACT_NAME = "wxdao_funding.ride"
77
88 let SCALE8 = 100000000
99
1010 let WAVES = "WAVES"
1111
1212 func wrapErr (s) = ((CONTRACT_NAME + ": ") + s)
1313
1414
1515 func throwErr (s) = throw(wrapErr(s))
1616
1717
1818 func assetIdToString (assetId) = match assetId {
1919 case b: ByteVector =>
2020 toBase58String(b)
2121 case _: Unit =>
2222 WAVES
2323 case _ =>
2424 throw("Match error")
2525 }
2626
2727
2828 func stringToAssetId (assetIdString) = if ((assetIdString == WAVES))
2929 then unit
3030 else fromBase58String(assetIdString)
3131
3232
3333 func keyMainTreasuryAddress () = makeString(["%s", "mainTreasuryAddress"], SEP)
3434
3535
3636 func keyWavesUSDTPoolAddress () = makeString(["%s", "WavesUSDTPoolAddress"], SEP)
3737
3838
3939 func keyWXDAOAddress () = makeString(["%s", "WXDAOcontractAddress"], SEP)
4040
4141
4242 func keyWXDAOassetId () = makeString(["%s", "WXDAOassetId"], SEP)
4343
4444
4545 func keyUSDTassetId () = makeString(["%s", "USDTassetId"], SEP)
4646
4747
4848 func keyProcessFeeAmount () = makeString(["%s", "processFeeAmount"], SEP)
4949
5050
5151 func keyHistory (action,txId) = makeString(["%s%s", action, txId], SEP)
5252
5353
5454 func formatProcessHistory (claimedWavesAmount,sendWXDAOamount,processFeeAmount) = makeString(["%d%d%d", toString(claimedWavesAmount), toString(sendWXDAOamount), toString(processFeeAmount)], SEP)
5555
5656
5757 let mainTreasuryAddressString = getStringValue(this, keyMainTreasuryAddress())
5858
5959 let mainTreasuryAddressOrFail = addressFromStringValue(mainTreasuryAddressString)
6060
6161 let wavesUSDTpoolAddressString = getStringValue(this, keyWavesUSDTPoolAddress())
6262
6363 let wavesUSDTpoolAddressOrFail = addressFromStringValue(wavesUSDTpoolAddressString)
6464
6565 let wxdaoAddressString = getStringValue(this, keyWXDAOAddress())
6666
6767 let wxdaoAddressOrFail = addressFromStringValue(wxdaoAddressString)
6868
6969 func stringToAsset (assetIdString) = if ((assetIdString == WAVES))
7070 then unit
71- else toBytes(assetIdString)
71+ else fromBase58String(assetIdString)
7272
7373
7474 func assetToString (assetId) = match assetId {
7575 case b: ByteVector =>
7676 toBase58String(b)
7777 case _ =>
7878 WAVES
7979 }
8080
8181
8282 func getBalance (address,assetIdString) = {
8383 let assetId = stringToAsset(assetIdString)
8484 match assetId {
8585 case b: ByteVector =>
8686 assetBalance(address, b)
8787 case _ =>
8888 wavesBalance(address).available
8989 }
9090 }
9191
9292
9393 let processFeeAmount = valueOrElse(getInteger(this, keyProcessFeeAmount()), 500000)
9494
9595 let usdtAssetIdString = getStringValue(this, keyUSDTassetId())
9696
9797 let wxdaoAssetIdString = getStringValue(this, keyWXDAOassetId())
9898
9999 let wxdaoAssetId = stringToAsset(wxdaoAssetIdString)
100100
101101 func claimWavesFromTreasury () = {
102102 let oldWavesBalance = getBalance(this, WAVES)
103103 if ((oldWavesBalance == oldWavesBalance))
104104 then {
105105 let getWavesInvoke = invoke(mainTreasuryAddressOrFail, "Claim", nil, nil)
106106 if ((getWavesInvoke == getWavesInvoke))
107107 then {
108108 let newWavesBalance = getBalance(this, WAVES)
109109 if ((newWavesBalance == newWavesBalance))
110110 then (newWavesBalance - oldWavesBalance)
111111 else throw("Strict value is not equal to itself.")
112112 }
113113 else throw("Strict value is not equal to itself.")
114114 }
115115 else throw("Strict value is not equal to itself.")
116116 }
117117
118118
119119 func getWavesUSDTPrice () = {
120120 let poolWavesBalance = getBalance(wavesUSDTpoolAddressOrFail, WAVES)
121121 let poolUsdtBalance = getBalance(wavesUSDTpoolAddressOrFail, usdtAssetIdString)
122122 let ch = [if ((poolWavesBalance > 0))
123123 then true
124124 else throwErr("WAVES/USDT pool Waves balance should be greater that 0"), if ((poolUsdtBalance > 0))
125125 then true
126126 else throwErr("WAVES/USDT pool USDT balance should be greater that 0")]
127127 if ((ch == ch))
128128 then fraction(poolUsdtBalance, SCALE8, poolWavesBalance)
129129 else throw("Strict value is not equal to itself.")
130130 }
131131
132132
133133 func getWXDAOUsdtPrice () = {
134134 let priceInvoke = invoke(wxdaoAddressOrFail, "price", nil, nil)
135135 let invokeResult = match priceInvoke {
136136 case r: List[Any] =>
137137 match r[0] {
138138 case i: Int =>
139139 i
140140 case _ =>
141141 unit
142142 }
143143 case _ =>
144144 unit
145145 }
146146 let wxDAOprice = valueOrErrorMessage(invokeResult, wrapErr("Unexpected WXDAO Price invoke result"))
147147 let ch = [if ((wxDAOprice > 0))
148148 then true
149149 else throwErr("WXDAO price should be greater than 0")]
150150 if ((ch == ch))
151151 then wxDAOprice
152152 else throw("Strict value is not equal to itself.")
153153 }
154154
155155
156156 func getWXDAOPrice () = SCALE8
157157
158158
159159 func calcWXDAOamount (wavesAmount) = {
160160 let price = getWXDAOPrice()
161161 let wxDAOamount = if ((0 >= price))
162162 then throwErr("price should be greater than 0")
163163 else fraction(wavesAmount, price, SCALE8)
164164 wxDAOamount
165165 }
166166
167167
168168 @Callable(i)
169169 func process () = {
170170 let wavesAmount = claimWavesFromTreasury()
171171 if ((wavesAmount == wavesAmount))
172172 then {
173173 let swapWavesAmount = (wavesAmount - processFeeAmount)
174174 if ((swapWavesAmount == swapWavesAmount))
175175 then {
176176 let wxDAOsendAmount = calcWXDAOamount(swapWavesAmount)
177177 if ((wxDAOsendAmount == wxDAOsendAmount))
178178 then {
179179 let ch = [if ((swapWavesAmount > 0))
180180 then true
181181 else throwErr("claimed waves amount should be greater than processing fee"), if ((wxDAOsendAmount > 0))
182182 then true
183183 else throwErr("WXDAO send amount should be greater than 0")]
184184 if ((ch == ch))
185185 then {
186186 let processingCaller = i.originCaller
187187 [ScriptTransfer(processingCaller, processFeeAmount, stringToAsset(WAVES)), ScriptTransfer(mainTreasuryAddressOrFail, wxDAOsendAmount, wxdaoAssetId), StringEntry(keyHistory("process", toBase58String(i.transactionId)), formatProcessHistory(wavesAmount, wxDAOsendAmount, processFeeAmount))]
188188 }
189189 else throw("Strict value is not equal to itself.")
190190 }
191191 else throw("Strict value is not equal to itself.")
192192 }
193193 else throw("Strict value is not equal to itself.")
194194 }
195195 else throw("Strict value is not equal to itself.")
196196 }
197197
198198

github/deemru/w8io/786bc32 
26.27 ms