tx · 5q8G5pqry6J5JjEumWsuxFPsrVbrBXExvjdv7TiEBVSf

3N9XFD2Yw3uN27NjudPVjNEGtvS6JJTxK6Z:  -0.00500000 Waves

2023.04.09 18:06 [2527189] smart account 3N9XFD2Yw3uN27NjudPVjNEGtvS6JJTxK6Z > SELF 0.00000000 Waves

{ "type": 13, "id": "5q8G5pqry6J5JjEumWsuxFPsrVbrBXExvjdv7TiEBVSf", "fee": 500000, "feeAssetId": null, "timestamp": 1681052828324, "version": 2, "chainId": 84, "sender": "3N9XFD2Yw3uN27NjudPVjNEGtvS6JJTxK6Z", "senderPublicKey": "49QuuedtSwEkoupQ2jEdBY8g6ePKegTkLaL8WDteNCHg", "proofs": [ "5RBe5V9R1VzPK8VPVqDFVJNb2hEYwRWLpf7maNnWhMTCUEH9BNve2mcYowMUR9uUFtT8jJwqfySGkKAF45LTpWYQ" ], "script": "base64:BgIYCAISABIAEgASABIDCgEIEgASABIDCgEIGwAFV1JDSWQCLDU0dnV4WnBDcjJGYmJ3aDFUdTR5Nm5LVERMWlZwZGdNZGNWM2tzODFHWjdLAAtXUkNEZWNpbWFscwAGAAxXUkNUaHJlc2hvbGQJAGgCAKCNBgDAhD0AD1dSQ1RocmVzaG9sZExvZwkAaAIABQCAwtcvARN0b3RhbFNoYXJlQnlVc2VyS0VZAQVvd25lcgkAuQkCCQDMCAICBnNoYXJlcwkAzAgCBQVvd25lcgUDbmlsAgFfARR0b3RhbFNoYXJlQnlVc2VyUkVBRAEFb3duZXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBE3RvdGFsU2hhcmVCeVVzZXJLRVkBBQVvd25lcgAAABJ0b3RhbElzc3VlZFdSQ19LRVkCEHRvdGFsX2lzc3VlZF9XUkMBE3RvdGFsSXNzdWVkV1JDX1JFQUQACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEnRvdGFsSXNzdWVkV1JDX0tFWQAAAA50b3RhbFNoYXJlc0tFWQIMdG90YWxfc2hhcmVzAQ90b3RhbFNoYXJlc1JFQUQACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDnRvdGFsU2hhcmVzS0VZAAAAGXRvdGFsTm9TaGFyZUNvbGxhdGVyYWxLRVkCGHRvdGFsX25vc2hhcmVfY29sbGF0ZXJhbAEadG90YWxOb1NoYXJlQ29sbGF0ZXJhbFJFQUQACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFGXRvdGFsTm9TaGFyZUNvbGxhdGVyYWxLRVkAAAANSU5JVElBTF9QUklDRQkAaAIAAgDAhD0AG3dhdmVzUmVmZXJlbmNlUHJpY2VfV1JDX0tFWQIVd2F2ZXNfcmVmZXJlbmNlX3ByaWNlARx3YXZlc1JlZmVyZW5jZVByaWNlX1dSQ19SRUFEAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRt3YXZlc1JlZmVyZW5jZVByaWNlX1dSQ19LRVkFDUlOSVRJQUxfUFJJQ0UBE3VzZXJTaGFyZUZyYWN0aW9uXzQBBW93bmVyBAt0b3RhbFNoYXJlcwkBD3RvdGFsU2hhcmVzUkVBRAADCQBmAgULdG90YWxTaGFyZXMAAAQOdG90YWxVc2VyU2hhcmUJARR0b3RhbFNoYXJlQnlVc2VyUkVBRAEFBW93bmVyCQBrAwCQTgUOdG90YWxVc2VyU2hhcmUFC3RvdGFsU2hhcmVzAAAACnBhcmFtQV9LRVkCAUEBC3BhcmFtQV9SRUFEAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAgFBAGQBD2NvbXB1dGVMb2dUTURJUgIKaXNzdWVkX3dyYwFBCQBlAgUPV1JDVGhyZXNob2xkTG9nCQBoAgkAbQYFCmlzc3VlZF93cmMFC1dSQ0RlY2ltYWxzAAoAAAAGBQZIQUxGVVAFAUEBDVRNRElSbXVsdGlwbHkDBmFtb3VudAppc3N1ZWRfd3JjAUEDAwkAAAIFBmFtb3VudAAABgkAAAIFCmlzc3VlZF93cmMAAAAACQBrAwUGYW1vdW50CQBsBgAKAAAJAQ9jb21wdXRlTG9nVE1ESVICBQppc3N1ZWRfd3JjBQFBAAgACAUGSEFMRlVQAIDC1y8BD2NvbXB1dGVUTURJX1dSQwIKaXNzdWVkX3dyYwFBAwkAZgIFCmlzc3VlZF93cmMFDFdSQ1RocmVzaG9sZAkBDVRNRElSbXVsdGlwbHkDBQppc3N1ZWRfd3JjBQppc3N1ZWRfd3JjBQFBBQxXUkNUaHJlc2hvbGQBC2dldFRNRElfV1JDAAkBD2NvbXB1dGVUTURJX1dSQwIJARN0b3RhbElzc3VlZFdSQ19SRUFEAAkBC3BhcmFtQV9SRUFEAAEUZ2V0TWF4QmFzZVRNRFVfV0FWRVMACQENVE1ESVJtdWx0aXBseQMJAGgCCQEadG90YWxOb1NoYXJlQ29sbGF0ZXJhbFJFQUQAAAoJARN0b3RhbElzc3VlZFdSQ19SRUFEAAkBC3BhcmFtQV9SRUFEAAENZ2V0VE1EVV9XQVZFUwAEGHRvdGFsX25vc2hhcmVfY29sbGF0ZXJhbAkBGnRvdGFsTm9TaGFyZUNvbGxhdGVyYWxSRUFEAAMJAGYCBRh0b3RhbF9ub3NoYXJlX2NvbGxhdGVyYWwAAAQZbWF4X2Jhc2VfdW5sb2NrYWJsZV93YXZlcwkBFGdldE1heEJhc2VUTURVX1dBVkVTAAMJAGYCBRh0b3RhbF9ub3NoYXJlX2NvbGxhdGVyYWwFGW1heF9iYXNlX3VubG9ja2FibGVfd2F2ZXMFGW1heF9iYXNlX3VubG9ja2FibGVfd2F2ZXMFGHRvdGFsX25vc2hhcmVfY29sbGF0ZXJhbAAAARFnZXRVc2VyVE1ESV9XQVZFUwEFb3duZXIJAGsDCQELZ2V0VE1ESV9XUkMACQBoAgCQTgkBE3VzZXJTaGFyZUZyYWN0aW9uXzQBBQVvd25lcgkBHHdhdmVzUmVmZXJlbmNlUHJpY2VfV1JDX1JFQUQAARFnZXRVc2VyVE1EVV9XQVZFUwEFb3duZXIJAGsDCQENZ2V0VE1EVV9XQVZFUwAJARN1c2VyU2hhcmVGcmFjdGlvbl80AQUFb3duZXIAkE4BD2dldFVzZXJUTURVX1dSQwEFb3duZXIJAGsDCQERZ2V0VXNlclRNRFVfV0FWRVMBBQVvd25lcgkBHHdhdmVzUmVmZXJlbmNlUHJpY2VfV1JDX1JFQUQAAIDC1y8IAWkBDWRlcG9zaXRfc2hhcmUABANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAhxBdHRhY2hlZCBwYXltZW50IGlzIHJlcXVpcmVkAwkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAkAAgECFk9ubHkgV0FWRVMgaXMgYWxsb3dlZC4EB2FjY291bnQJAKUIAQgFAWkGY2FsbGVyBBB0b3RhbFNoYXJlQnlVc2VyCQEUdG90YWxTaGFyZUJ5VXNlclJFQUQBBQdhY2NvdW50BAt0b3RhbFNoYXJlcwkBD3RvdGFsU2hhcmVzUkVBRAAJAMwIAgkBDEludGVnZXJFbnRyeQIJARN0b3RhbFNoYXJlQnlVc2VyS0VZAQUHYWNjb3VudAkAZAIFEHRvdGFsU2hhcmVCeVVzZXIIBQNwbXQGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ50b3RhbFNoYXJlc0tFWQkAZAIFC3RvdGFsU2hhcmVzCAUDcG10BmFtb3VudAUDbmlsAWkBBWlzc3VlAAQDcG10AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQACAQIcQXR0YWNoZWQgcGF5bWVudCBpcyByZXF1aXJlZAMJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQJAAIBAhZPbmx5IFdBVkVTIGlzIGFsbG93ZWQuBAdhY2NvdW50CQClCAEIBQFpBmNhbGxlcgQJbWF4X3dhdmVzCQERZ2V0VXNlclRNRElfV0FWRVMBBQdhY2NvdW50AwkAZgIIBQNwbXQGYW1vdW50BQltYXhfd2F2ZXMJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICE1VzZXIgbG9jayBsaW1pdCBpcyAJAKQDAQUJbWF4X3dhdmVzAg0gV0FWRVMuIFNlbnQgCQCkAwEIBQNwbXQGYW1vdW50AgcgV0FWRVMuBBB3cmNfaXNzdWVfYW1vdW50CQBrAwgFA3BtdAZhbW91bnQJARx3YXZlc1JlZmVyZW5jZVByaWNlX1dSQ19SRUFEAACAwtcvBBl0b3RhbF9ub19zaGFyZV9jb2xsYXRlcmFsCQEadG90YWxOb1NoYXJlQ29sbGF0ZXJhbFJFQUQABAx0b3RhbF9pc3N1ZWQJARN0b3RhbElzc3VlZFdSQ19SRUFEAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUZdG90YWxOb1NoYXJlQ29sbGF0ZXJhbEtFWQkAZAIFGXRvdGFsX25vX3NoYXJlX2NvbGxhdGVyYWwIBQNwbXQGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ0b3RhbElzc3VlZFdSQ19LRVkJAGQCBQx0b3RhbF9pc3N1ZWQFEHdyY19pc3N1ZV9hbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWNjb3VudAUQd3JjX2lzc3VlX2Ftb3VudAkA2QQBBQVXUkNJZAUDbmlsAWkBBGJ1cm4ABANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAhxBdHRhY2hlZCBwYXltZW50IGlzIHJlcXVpcmVkAwkBAiE9AggFA3BtdAdhc3NldElkCQDZBAEFBVdSQ0lkCQACAQIUT25seSBXUkMgaXMgYWxsb3dlZC4EB2FjY291bnQJAKUIAQgFAWkGY2FsbGVyBBBtYXhfYnVybmFibGVfd3JjCQEPZ2V0VXNlclRNRFVfV1JDAQUHYWNjb3VudAMJAGYCCAUDcG10BmFtb3VudAUQbWF4X2J1cm5hYmxlX3dyYwkAAgEJAKwCAgkArAICAhFVc2VyIGJ1cm4gbGltaXQ6IAkApAMBBRBtYXhfYnVybmFibGVfd3JjAgQgV1JDBAx1bmxvY2tfd2F2ZXMJAGsDCAUDcG10BmFtb3VudACAwtcvCQEcd2F2ZXNSZWZlcmVuY2VQcmljZV9XUkNfUkVBRAAJAAIBCQCkAwEFDHVubG9ja193YXZlcwFpAQ10ZXN0X2dldF90bWRpAAkAAgEJAKwCAgIIUmVzdWx0OiAJAKQDAQkBC2dldFRNRElfV1JDAAFpARJ0ZXN0X2dldF91c2VyX3RtZGkBB2FjY291bnQJAAIBCQCsAgICCFJlc3VsdDogCQCkAwEJARFnZXRVc2VyVE1ESV9XQVZFUwEFB2FjY291bnQBaQESdGVzdF9nZXRfYmFzZV90bWR1AAkAAgEJAKwCAgIIUmVzdWx0OiAJAKQDAQkBFGdldE1heEJhc2VUTURVX1dBVkVTAAFpAQ10ZXN0X2dldF90bWR1AAkAAgEJAKwCAgIIUmVzdWx0OiAJAKQDAQkBDWdldFRNRFVfV0FWRVMAAWkBEnRlc3RfZ2V0X3VzZXJfdG1kdQEHYWNjb3VudAkAAgEJAKwCAgIIUmVzdWx0OiAJAKQDAQkBD2dldFVzZXJUTURVX1dSQwEFB2FjY291bnQA3Rt27Q==", "height": 2527189, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EVNABj6mAxswSboffjipqZarn62UVLQmrK5LN8S63pR8 Next: none Diff:
OldNewDifferences
8787 }
8888
8989
90-func getUserTMDI_WAVES (owner) = fraction(getTMDI_WRC(), (1000 * userShareFraction_4(owner)), wavesReferencePrice_WRC_READ())
90+func getUserTMDI_WAVES (owner) = fraction(getTMDI_WRC(), (10000 * userShareFraction_4(owner)), wavesReferencePrice_WRC_READ())
9191
9292
9393 func getUserTMDU_WAVES (owner) = fraction(getTMDU_WAVES(), userShareFraction_4(owner), 10000)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let WRCId = "54vuxZpCr2Fbbwh1Tu4y6nKTDLZVpdgMdcV3ks81GZ7K"
55
66 let WRCDecimals = 6
77
88 let WRCThreshold = (100000 * 1000000)
99
1010 let WRCThresholdLog = (5 * 100000000)
1111
1212 func totalShareByUserKEY (owner) = makeString(["shares", owner], "_")
1313
1414
1515 func totalShareByUserREAD (owner) = valueOrElse(getInteger(this, totalShareByUserKEY(owner)), 0)
1616
1717
1818 let totalIssuedWRC_KEY = "total_issued_WRC"
1919
2020 func totalIssuedWRC_READ () = valueOrElse(getInteger(this, totalIssuedWRC_KEY), 0)
2121
2222
2323 let totalSharesKEY = "total_shares"
2424
2525 func totalSharesREAD () = valueOrElse(getInteger(this, totalSharesKEY), 0)
2626
2727
2828 let totalNoShareCollateralKEY = "total_noshare_collateral"
2929
3030 func totalNoShareCollateralREAD () = valueOrElse(getInteger(this, totalNoShareCollateralKEY), 0)
3131
3232
3333 let INITIAL_PRICE = (2 * 1000000)
3434
3535 let wavesReferencePrice_WRC_KEY = "waves_reference_price"
3636
3737 func wavesReferencePrice_WRC_READ () = valueOrElse(getInteger(this, wavesReferencePrice_WRC_KEY), INITIAL_PRICE)
3838
3939
4040 func userShareFraction_4 (owner) = {
4141 let totalShares = totalSharesREAD()
4242 if ((totalShares > 0))
4343 then {
4444 let totalUserShare = totalShareByUserREAD(owner)
4545 fraction(10000, totalUserShare, totalShares)
4646 }
4747 else 0
4848 }
4949
5050
5151 let paramA_KEY = "A"
5252
5353 func paramA_READ () = valueOrElse(getInteger(this, "A"), 100)
5454
5555
5656 func computeLogTMDIR (issued_wrc,A) = (WRCThresholdLog - (log(issued_wrc, WRCDecimals, 10, 0, 6, HALFUP) * A))
5757
5858
5959 func TMDIRmultiply (amount,issued_wrc,A) = if (if ((amount == 0))
6060 then true
6161 else (issued_wrc == 0))
6262 then 0
6363 else fraction(amount, pow(10, 0, computeLogTMDIR(issued_wrc, A), 8, 8, HALFUP), 100000000)
6464
6565
6666 func computeTMDI_WRC (issued_wrc,A) = if ((issued_wrc > WRCThreshold))
6767 then TMDIRmultiply(issued_wrc, issued_wrc, A)
6868 else WRCThreshold
6969
7070
7171 func getTMDI_WRC () = computeTMDI_WRC(totalIssuedWRC_READ(), paramA_READ())
7272
7373
7474 func getMaxBaseTMDU_WAVES () = TMDIRmultiply((totalNoShareCollateralREAD() * 10), totalIssuedWRC_READ(), paramA_READ())
7575
7676
7777 func getTMDU_WAVES () = {
7878 let total_noshare_collateral = totalNoShareCollateralREAD()
7979 if ((total_noshare_collateral > 0))
8080 then {
8181 let max_base_unlockable_waves = getMaxBaseTMDU_WAVES()
8282 if ((total_noshare_collateral > max_base_unlockable_waves))
8383 then max_base_unlockable_waves
8484 else total_noshare_collateral
8585 }
8686 else 0
8787 }
8888
8989
90-func getUserTMDI_WAVES (owner) = fraction(getTMDI_WRC(), (1000 * userShareFraction_4(owner)), wavesReferencePrice_WRC_READ())
90+func getUserTMDI_WAVES (owner) = fraction(getTMDI_WRC(), (10000 * userShareFraction_4(owner)), wavesReferencePrice_WRC_READ())
9191
9292
9393 func getUserTMDU_WAVES (owner) = fraction(getTMDU_WAVES(), userShareFraction_4(owner), 10000)
9494
9595
9696 func getUserTMDU_WRC (owner) = fraction(getUserTMDU_WAVES(owner), wavesReferencePrice_WRC_READ(), 100000000)
9797
9898
9999 @Callable(i)
100100 func deposit_share () = {
101101 let pmt = if ((size(i.payments) == 1))
102102 then i.payments[0]
103103 else throw("Attached payment is required")
104104 if (isDefined(pmt.assetId))
105105 then throw("Only WAVES is allowed.")
106106 else {
107107 let account = toString(i.caller)
108108 let totalShareByUser = totalShareByUserREAD(account)
109109 let totalShares = totalSharesREAD()
110110 [IntegerEntry(totalShareByUserKEY(account), (totalShareByUser + pmt.amount)), IntegerEntry(totalSharesKEY, (totalShares + pmt.amount))]
111111 }
112112 }
113113
114114
115115
116116 @Callable(i)
117117 func issue () = {
118118 let pmt = if ((size(i.payments) == 1))
119119 then i.payments[0]
120120 else throw("Attached payment is required")
121121 if (isDefined(pmt.assetId))
122122 then throw("Only WAVES is allowed.")
123123 else {
124124 let account = toString(i.caller)
125125 let max_waves = getUserTMDI_WAVES(account)
126126 if ((pmt.amount > max_waves))
127127 then throw((((("User lock limit is " + toString(max_waves)) + " WAVES. Sent ") + toString(pmt.amount)) + " WAVES."))
128128 else {
129129 let wrc_issue_amount = fraction(pmt.amount, wavesReferencePrice_WRC_READ(), 100000000)
130130 let total_no_share_collateral = totalNoShareCollateralREAD()
131131 let total_issued = totalIssuedWRC_READ()
132132 [IntegerEntry(totalNoShareCollateralKEY, (total_no_share_collateral + pmt.amount)), IntegerEntry(totalIssuedWRC_KEY, (total_issued + wrc_issue_amount)), ScriptTransfer(addressFromStringValue(account), wrc_issue_amount, fromBase58String(WRCId))]
133133 }
134134 }
135135 }
136136
137137
138138
139139 @Callable(i)
140140 func burn () = {
141141 let pmt = if ((size(i.payments) == 1))
142142 then i.payments[0]
143143 else throw("Attached payment is required")
144144 if ((pmt.assetId != fromBase58String(WRCId)))
145145 then throw("Only WRC is allowed.")
146146 else {
147147 let account = toString(i.caller)
148148 let max_burnable_wrc = getUserTMDU_WRC(account)
149149 if ((pmt.amount > max_burnable_wrc))
150150 then throw((("User burn limit: " + toString(max_burnable_wrc)) + " WRC"))
151151 else {
152152 let unlock_waves = fraction(pmt.amount, 100000000, wavesReferencePrice_WRC_READ())
153153 throw(toString(unlock_waves))
154154 }
155155 }
156156 }
157157
158158
159159
160160 @Callable(i)
161161 func test_get_tmdi () = throw(("Result: " + toString(getTMDI_WRC())))
162162
163163
164164
165165 @Callable(i)
166166 func test_get_user_tmdi (account) = throw(("Result: " + toString(getUserTMDI_WAVES(account))))
167167
168168
169169
170170 @Callable(i)
171171 func test_get_base_tmdu () = throw(("Result: " + toString(getMaxBaseTMDU_WAVES())))
172172
173173
174174
175175 @Callable(i)
176176 func test_get_tmdu () = throw(("Result: " + toString(getTMDU_WAVES())))
177177
178178
179179
180180 @Callable(i)
181181 func test_get_user_tmdu (account) = throw(("Result: " + toString(getUserTMDU_WRC(account))))
182182
183183

github/deemru/w8io/169f3d6 
51.09 ms