tx · C9iAKsjde94Ysusy4eZF1jgMYrrM5TSNszsFEofe8qvZ

3N9XFD2Yw3uN27NjudPVjNEGtvS6JJTxK6Z:  -0.00400000 Waves

2023.04.08 19:01 [2525794] smart account 3N9XFD2Yw3uN27NjudPVjNEGtvS6JJTxK6Z > SELF 0.00000000 Waves

{ "type": 13, "id": "C9iAKsjde94Ysusy4eZF1jgMYrrM5TSNszsFEofe8qvZ", "fee": 400000, "feeAssetId": null, "timestamp": 1680969678580, "version": 2, "chainId": 84, "sender": "3N9XFD2Yw3uN27NjudPVjNEGtvS6JJTxK6Z", "senderPublicKey": "49QuuedtSwEkoupQ2jEdBY8g6ePKegTkLaL8WDteNCHg", "proofs": [ "39cLpejFY4GTCcd3X6U1z6cpDwQxE13UvAwzFXHergAW3AdibUeimUqnFfsN4pRrzHKvADMneAgAN4Z6Ab3x6Evx" ], "script": "base64:BgIYCAISABIAEgASABIDCgEIEgASABIDCgEIGwAFV1JDSWQCLDU0dnV4WnBDcjJGYmJ3aDFUdTR5Nm5LVERMWlZwZGdNZGNWM2tzODFHWjdLAAtXUkNEZWNpbWFscwAGAAxXUkNUaHJlc2hvbGQJAGgCAKCNBgDAhD0AD1dSQ1RocmVzaG9sZExvZwkAaAIABQCAwtcvARN0b3RhbFNoYXJlQnlVc2VyS0VZAQVvd25lcgkAuQkCCQDMCAICBnNoYXJlcwkAzAgCBQVvd25lcgUDbmlsAgFfARR0b3RhbFNoYXJlQnlVc2VyUkVBRAEFb3duZXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBE3RvdGFsU2hhcmVCeVVzZXJLRVkBBQVvd25lcgAAABJ0b3RhbElzc3VlZFdSQ19LRVkCEHRvdGFsX2lzc3VlZF9XUkMBE3RvdGFsSXNzdWVkV1JDX1JFQUQACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEnRvdGFsSXNzdWVkV1JDX0tFWQAAAA50b3RhbFNoYXJlc0tFWQIMdG90YWxfc2hhcmVzAQ90b3RhbFNoYXJlc1JFQUQACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDnRvdGFsU2hhcmVzS0VZAAAAGXRvdGFsTm9TaGFyZUNvbGxhdGVyYWxLRVkCGHRvdGFsX25vc2hhcmVfY29sbGF0ZXJhbAEadG90YWxOb1NoYXJlQ29sbGF0ZXJhbFJFQUQACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFGXRvdGFsTm9TaGFyZUNvbGxhdGVyYWxLRVkAAAANSU5JVElBTF9QUklDRQkAaAIAAgDAhD0AG3dhdmVzUmVmZXJlbmNlUHJpY2VfV1JDX0tFWQIVd2F2ZXNfcmVmZXJlbmNlX3ByaWNlARx3YXZlc1JlZmVyZW5jZVByaWNlX1dSQ19SRUFEAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRt3YXZlc1JlZmVyZW5jZVByaWNlX1dSQ19LRVkFDUlOSVRJQUxfUFJJQ0UBE3VzZXJTaGFyZUZyYWN0aW9uXzQBBW93bmVyBAt0b3RhbFNoYXJlcwkBD3RvdGFsU2hhcmVzUkVBRAADCQBmAgULdG90YWxTaGFyZXMAAAQOdG90YWxVc2VyU2hhcmUJARR0b3RhbFNoYXJlQnlVc2VyUkVBRAEFBW93bmVyCQBrAwCQTgUOdG90YWxVc2VyU2hhcmUFC3RvdGFsU2hhcmVzAAAACnBhcmFtQV9LRVkCAUEBC3BhcmFtQV9SRUFEAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzAgFBAGQBD2NvbXB1dGVMb2dUTURJUgIKaXNzdWVkX3dyYwFBCQBlAgUPV1JDVGhyZXNob2xkTG9nCQBoAgkAbQYFCmlzc3VlZF93cmMFC1dSQ0RlY2ltYWxzAAoAAAAGBQZIQUxGVVAFAUEBDVRNRElSbXVsdGlwbHkDBmFtb3VudAppc3N1ZWRfd3JjAUEJAGsDBQZhbW91bnQJAGwGAAoAAAkBD2NvbXB1dGVMb2dUTURJUgIFCmlzc3VlZF93cmMFAUEACAAIBQZIQUxGVVAAgMLXLwEPY29tcHV0ZVRNRElfV1JDAgppc3N1ZWRfd3JjAUEDCQBmAgUKaXNzdWVkX3dyYwUMV1JDVGhyZXNob2xkCQENVE1ESVJtdWx0aXBseQMFCmlzc3VlZF93cmMFCmlzc3VlZF93cmMFAUEFDFdSQ1RocmVzaG9sZAELZ2V0VE1ESV9XUkMACQEPY29tcHV0ZVRNRElfV1JDAgkBE3RvdGFsSXNzdWVkV1JDX1JFQUQACQELcGFyYW1BX1JFQUQAARRnZXRNYXhCYXNlVE1EVV9XQVZFUwAJAQ1UTURJUm11bHRpcGx5AwkAaAIJARp0b3RhbE5vU2hhcmVDb2xsYXRlcmFsUkVBRAAACgkBE3RvdGFsSXNzdWVkV1JDX1JFQUQACQELcGFyYW1BX1JFQUQAAQ1nZXRUTURVX1dBVkVTAAQYdG90YWxfbm9zaGFyZV9jb2xsYXRlcmFsCQEadG90YWxOb1NoYXJlQ29sbGF0ZXJhbFJFQUQAAwkAZgIFGHRvdGFsX25vc2hhcmVfY29sbGF0ZXJhbAAABBltYXhfYmFzZV91bmxvY2thYmxlX3dhdmVzCQEUZ2V0TWF4QmFzZVRNRFVfV0FWRVMAAwkAZgIFGHRvdGFsX25vc2hhcmVfY29sbGF0ZXJhbAUZbWF4X2Jhc2VfdW5sb2NrYWJsZV93YXZlcwUZbWF4X2Jhc2VfdW5sb2NrYWJsZV93YXZlcwUYdG90YWxfbm9zaGFyZV9jb2xsYXRlcmFsAAABEWdldFVzZXJUTURJX1dBVkVTAQVvd25lcgkAawMJAQtnZXRUTURJX1dSQwAJAGgCAOgHCQETdXNlclNoYXJlRnJhY3Rpb25fNAEFBW93bmVyCQEcd2F2ZXNSZWZlcmVuY2VQcmljZV9XUkNfUkVBRAABEWdldFVzZXJUTURVX1dBVkVTAQVvd25lcgkAawMJAQ1nZXRUTURVX1dBVkVTAAkBE3VzZXJTaGFyZUZyYWN0aW9uXzQBBQVvd25lcgCQTgEPZ2V0VXNlclRNRFVfV1JDAQVvd25lcgkAawMJARFnZXRVc2VyVE1EVV9XQVZFUwEFBW93bmVyCQEcd2F2ZXNSZWZlcmVuY2VQcmljZV9XUkNfUkVBRAAAgMLXLwgBaQENZGVwb3NpdF9zaGFyZQAEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgECHEF0dGFjaGVkIHBheW1lbnQgaXMgcmVxdWlyZWQDCQEJaXNEZWZpbmVkAQgFA3BtdAdhc3NldElkCQACAQIWT25seSBXQVZFUyBpcyBhbGxvd2VkLgQHYWNjb3VudAkApQgBCAUBaQZjYWxsZXIEEHRvdGFsU2hhcmVCeVVzZXIJARR0b3RhbFNoYXJlQnlVc2VyUkVBRAEFB2FjY291bnQEC3RvdGFsU2hhcmVzCQEPdG90YWxTaGFyZXNSRUFEAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE3RvdGFsU2hhcmVCeVVzZXJLRVkBBQdhY2NvdW50CQBkAgUQdG90YWxTaGFyZUJ5VXNlcggFA3BtdAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFDnRvdGFsU2hhcmVzS0VZCQBkAgULdG90YWxTaGFyZXMIBQNwbXQGYW1vdW50BQNuaWwBaQEFaXNzdWUABANwbXQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAAIBAhxBdHRhY2hlZCBwYXltZW50IGlzIHJlcXVpcmVkAwkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAkAAgECFk9ubHkgV0FWRVMgaXMgYWxsb3dlZC4EB2FjY291bnQJAKUIAQgFAWkGY2FsbGVyBAltYXhfd2F2ZXMJARFnZXRVc2VyVE1ESV9XQVZFUwEFB2FjY291bnQDCQBmAggFA3BtdAZhbW91bnQFCW1heF93YXZlcwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgITVXNlciBsb2NrIGxpbWl0IGlzIAkApAMBBQltYXhfd2F2ZXMCDSBXQVZFUy4gU2VudCAJAKQDAQgFA3BtdAZhbW91bnQCByBXQVZFUy4EEHdyY19pc3N1ZV9hbW91bnQJAGsDCAUDcG10BmFtb3VudAkBHHdhdmVzUmVmZXJlbmNlUHJpY2VfV1JDX1JFQUQAAIDC1y8EGXRvdGFsX25vX3NoYXJlX2NvbGxhdGVyYWwJARp0b3RhbE5vU2hhcmVDb2xsYXRlcmFsUkVBRAAEDHRvdGFsX2lzc3VlZAkBE3RvdGFsSXNzdWVkV1JDX1JFQUQACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRl0b3RhbE5vU2hhcmVDb2xsYXRlcmFsS0VZCQBkAgUZdG90YWxfbm9fc2hhcmVfY29sbGF0ZXJhbAgFA3BtdAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEnRvdGFsSXNzdWVkV1JDX0tFWQkAZAIFDHRvdGFsX2lzc3VlZAUQd3JjX2lzc3VlX2Ftb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhY2NvdW50BRB3cmNfaXNzdWVfYW1vdW50CQDZBAEFBVdSQ0lkBQNuaWwBaQEEYnVybgAEA3BtdAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEJAJEDAggFAWkIcGF5bWVudHMAAAkAAgECHEF0dGFjaGVkIHBheW1lbnQgaXMgcmVxdWlyZWQDCQECIT0CCAUDcG10B2Fzc2V0SWQJANkEAQUFV1JDSWQJAAIBAhRPbmx5IFdSQyBpcyBhbGxvd2VkLgQHYWNjb3VudAkApQgBCAUBaQZjYWxsZXIEEG1heF9idXJuYWJsZV93cmMJAQ9nZXRVc2VyVE1EVV9XUkMBBQdhY2NvdW50AwkAZgIIBQNwbXQGYW1vdW50BRBtYXhfYnVybmFibGVfd3JjCQACAQkArAICCQCsAgICEVVzZXIgYnVybiBsaW1pdDogCQCkAwEFEG1heF9idXJuYWJsZV93cmMCBCBXUkMEDHVubG9ja193YXZlcwkAawMIBQNwbXQGYW1vdW50AIDC1y8JARx3YXZlc1JlZmVyZW5jZVByaWNlX1dSQ19SRUFEAAkAAgEJAKQDAQUMdW5sb2NrX3dhdmVzAWkBDXRlc3RfZ2V0X3RtZGkACQACAQkArAICAghSZXN1bHQ6IAkApAMBCQELZ2V0VE1ESV9XUkMAAWkBEnRlc3RfZ2V0X3VzZXJfdG1kaQEHYWNjb3VudAkAAgEJAKwCAgIIUmVzdWx0OiAJAKQDAQkBEWdldFVzZXJUTURJX1dBVkVTAQUHYWNjb3VudAFpARJ0ZXN0X2dldF9iYXNlX3RtZHUACQACAQkArAICAghSZXN1bHQ6IAkApAMBCQEUZ2V0TWF4QmFzZVRNRFVfV0FWRVMAAWkBDXRlc3RfZ2V0X3RtZHUACQACAQkArAICAghSZXN1bHQ6IAkApAMBCQENZ2V0VE1EVV9XQVZFUwABaQESdGVzdF9nZXRfdXNlcl90bWR1AQdhY2NvdW50CQACAQkArAICAghSZXN1bHQ6IAkApAMBCQEPZ2V0VXNlclRNRFVfV1JDAQUHYWNjb3VudAAjG+qk", "height": 2525794, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 846gzbT8G28437LLwHE5HNCbxBo1tMPtuAMXi4Sjixwv Next: EVNABj6mAxswSboffjipqZarn62UVLQmrK5LN8S63pR8 Diff:
OldNewDifferences
55
66 let WRCDecimals = 6
77
8-let WRCThreshold = (100000 * 100000000)
8+let WRCThreshold = (100000 * 1000000)
99
1010 let WRCThresholdLog = (5 * 100000000)
1111
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let WRCId = "54vuxZpCr2Fbbwh1Tu4y6nKTDLZVpdgMdcV3ks81GZ7K"
55
66 let WRCDecimals = 6
77
8-let WRCThreshold = (100000 * 100000000)
8+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) = fraction(amount, pow(10, 0, computeLogTMDIR(issued_wrc, A), 8, 8, HALFUP), 100000000)
6060
6161
6262 func computeTMDI_WRC (issued_wrc,A) = if ((issued_wrc > WRCThreshold))
6363 then TMDIRmultiply(issued_wrc, issued_wrc, A)
6464 else WRCThreshold
6565
6666
6767 func getTMDI_WRC () = computeTMDI_WRC(totalIssuedWRC_READ(), paramA_READ())
6868
6969
7070 func getMaxBaseTMDU_WAVES () = TMDIRmultiply((totalNoShareCollateralREAD() * 10), totalIssuedWRC_READ(), paramA_READ())
7171
7272
7373 func getTMDU_WAVES () = {
7474 let total_noshare_collateral = totalNoShareCollateralREAD()
7575 if ((total_noshare_collateral > 0))
7676 then {
7777 let max_base_unlockable_waves = getMaxBaseTMDU_WAVES()
7878 if ((total_noshare_collateral > max_base_unlockable_waves))
7979 then max_base_unlockable_waves
8080 else total_noshare_collateral
8181 }
8282 else 0
8383 }
8484
8585
8686 func getUserTMDI_WAVES (owner) = fraction(getTMDI_WRC(), (1000 * userShareFraction_4(owner)), wavesReferencePrice_WRC_READ())
8787
8888
8989 func getUserTMDU_WAVES (owner) = fraction(getTMDU_WAVES(), userShareFraction_4(owner), 10000)
9090
9191
9292 func getUserTMDU_WRC (owner) = fraction(getUserTMDU_WAVES(owner), wavesReferencePrice_WRC_READ(), 100000000)
9393
9494
9595 @Callable(i)
9696 func deposit_share () = {
9797 let pmt = if ((size(i.payments) == 1))
9898 then i.payments[0]
9999 else throw("Attached payment is required")
100100 if (isDefined(pmt.assetId))
101101 then throw("Only WAVES is allowed.")
102102 else {
103103 let account = toString(i.caller)
104104 let totalShareByUser = totalShareByUserREAD(account)
105105 let totalShares = totalSharesREAD()
106106 [IntegerEntry(totalShareByUserKEY(account), (totalShareByUser + pmt.amount)), IntegerEntry(totalSharesKEY, (totalShares + pmt.amount))]
107107 }
108108 }
109109
110110
111111
112112 @Callable(i)
113113 func issue () = {
114114 let pmt = if ((size(i.payments) == 1))
115115 then i.payments[0]
116116 else throw("Attached payment is required")
117117 if (isDefined(pmt.assetId))
118118 then throw("Only WAVES is allowed.")
119119 else {
120120 let account = toString(i.caller)
121121 let max_waves = getUserTMDI_WAVES(account)
122122 if ((pmt.amount > max_waves))
123123 then throw((((("User lock limit is " + toString(max_waves)) + " WAVES. Sent ") + toString(pmt.amount)) + " WAVES."))
124124 else {
125125 let wrc_issue_amount = fraction(pmt.amount, wavesReferencePrice_WRC_READ(), 100000000)
126126 let total_no_share_collateral = totalNoShareCollateralREAD()
127127 let total_issued = totalIssuedWRC_READ()
128128 [IntegerEntry(totalNoShareCollateralKEY, (total_no_share_collateral + pmt.amount)), IntegerEntry(totalIssuedWRC_KEY, (total_issued + wrc_issue_amount)), ScriptTransfer(addressFromStringValue(account), wrc_issue_amount, fromBase58String(WRCId))]
129129 }
130130 }
131131 }
132132
133133
134134
135135 @Callable(i)
136136 func burn () = {
137137 let pmt = if ((size(i.payments) == 1))
138138 then i.payments[0]
139139 else throw("Attached payment is required")
140140 if ((pmt.assetId != fromBase58String(WRCId)))
141141 then throw("Only WRC is allowed.")
142142 else {
143143 let account = toString(i.caller)
144144 let max_burnable_wrc = getUserTMDU_WRC(account)
145145 if ((pmt.amount > max_burnable_wrc))
146146 then throw((("User burn limit: " + toString(max_burnable_wrc)) + " WRC"))
147147 else {
148148 let unlock_waves = fraction(pmt.amount, 100000000, wavesReferencePrice_WRC_READ())
149149 throw(toString(unlock_waves))
150150 }
151151 }
152152 }
153153
154154
155155
156156 @Callable(i)
157157 func test_get_tmdi () = throw(("Result: " + toString(getTMDI_WRC())))
158158
159159
160160
161161 @Callable(i)
162162 func test_get_user_tmdi (account) = throw(("Result: " + toString(getUserTMDI_WAVES(account))))
163163
164164
165165
166166 @Callable(i)
167167 func test_get_base_tmdu () = throw(("Result: " + toString(getMaxBaseTMDU_WAVES())))
168168
169169
170170
171171 @Callable(i)
172172 func test_get_tmdu () = throw(("Result: " + toString(getTMDU_WAVES())))
173173
174174
175175
176176 @Callable(i)
177177 func test_get_user_tmdu (account) = throw(("Result: " + toString(getUserTMDU_WRC(account))))
178178
179179

github/deemru/w8io/169f3d6 
33.67 ms