tx · 21TXC11JPmHHyifrwUtZ3iX6h8DzovddZZt8QyGgqdfr

3NAToHPcRGMR4M2pUpy6gPcpiMX5via7vf9:  -0.04000000 Waves

2021.08.25 14:10 [1673772] smart account 3NAToHPcRGMR4M2pUpy6gPcpiMX5via7vf9 > SELF 0.00000000 Waves

{ "type": 13, "id": "21TXC11JPmHHyifrwUtZ3iX6h8DzovddZZt8QyGgqdfr", "fee": 4000000, "feeAssetId": null, "timestamp": 1629889812633, "version": 2, "chainId": 84, "sender": "3NAToHPcRGMR4M2pUpy6gPcpiMX5via7vf9", "senderPublicKey": "5fe3Hm6UB8fRqvLYhGeeNdy7rEgwpxWjdEFPgnNwSRCz", "proofs": [ "2ZaDjDLYwHDcjkdoMJMxAMS5vTff8CjzCPbJns6kQo8cX6bjsrSqf4jWDC6iTs5E6SUCtcdY4XYS3GdCSfXHCxHo" ], "script": "base64:AAIFAAAAAAAAABAIAhIECgIIBBIGCgQICAgIAAAAJgAAAAAKYmFzZUZhY3RvcgAAAAAAAAAD6AAAAAAJYmFzZUluZGV4AAAjhvJvwQAAAAAAAA1ibG9ja3NQZXJZZWFyAAAAAAAACAUgAAAAAAZjb25maWcJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAANY29uZmlnQWRkcmVzcwIAAAAAAAAAAAVhZG1pbgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAZjb25maWcCAAAABWFkbWluAgAAAAAAAAAAC3dhdmV0cm9sbGVyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABmNvbmZpZwIAAAALd2F2ZXRyb2xsZXICAAAAAAAAAAAKYXNzZXRJZFN1YgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMCAAAAB2Fzc2V0SWQCAAAAKk5vIGFzc2V0SWQgY291bGQgYmUgZm91bmQgaW4gZGF0YSBzdG9yYWdlIQAAAAANYXNzZXREZWNpbWFscwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABmNvbmZpZwkAASwAAAACBQAAAAphc3NldElkU3ViAgAAAAlfRGVjaW1hbHMJAAEsAAAAAgkAASwAAAACAgAAAAdObyBrZXkgCQABLAAAAAIFAAAACmFzc2V0SWRTdWICAAAACV9EZWNpbWFscwIAAAAKIHdhcyBmb3VuZAAAAAAKbXVsdGlwbGllcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABmNvbmZpZwkAASwAAAACBQAAAAphc3NldElkU3ViAgAAAAtfTXVsdGlwbGllcgkAASwAAAACCQABLAAAAAICAAAAB05vIGtleSAJAAEsAAAAAgUAAAAKYXNzZXRJZFN1YgIAAAALX011bHRpcGxpZXICAAAACiB3YXMgZm91bmQAAAAABGtpbmsJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAZjb25maWcJAAEsAAAAAgUAAAAKYXNzZXRJZFN1YgIAAAAFX0tpbmsJAAEsAAAAAgkAASwAAAACAgAAAAdObyBrZXkgCQABLAAAAAIFAAAACmFzc2V0SWRTdWICAAAABV9LaW5rAgAAAAogd2FzIGZvdW5kAAAAAA5qdW1wTXVsdGlwbGllcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABmNvbmZpZwkAASwAAAACBQAAAAphc3NldElkU3ViAgAAAA9fSnVtcE11bHRpcGxpZXIJAAEsAAAAAgkAASwAAAACAgAAAAdObyBrZXkgCQABLAAAAAIFAAAACmFzc2V0SWRTdWICAAAAD19KdW1wTXVsdGlwbGllcgIAAAAKIHdhcyBmb3VuZAAAAAAIYmFzZVJhdGUJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAZjb25maWcJAAEsAAAAAgUAAAAKYXNzZXRJZFN1YgIAAAAJX0Jhc2VSYXRlCQABLAAAAAIJAAEsAAAAAgIAAAAHTm8ga2V5IAkAASwAAAACBQAAAAphc3NldElkU3ViAgAAAAlfQmFzZVJhdGUCAAAACiB3YXMgZm91bmQAAAAADXJlc2VydmVGYWN0b3IJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAZjb25maWcJAAEsAAAAAgUAAAAKYXNzZXRJZFN1YgIAAAAOX1Jlc2VydmVGYWN0b3IJAAEsAAAAAgkAASwAAAACAgAAAAdObyBrZXkgCQABLAAAAAIFAAAACmFzc2V0SWRTdWICAAAADl9SZXNlcnZlRmFjdG9yAgAAAAogd2FzIGZvdW5kAAAAAAt0b3RhbEJvcnJvdwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzAgAAAAt0b3RhbEJvcnJvdwAAAAAAAAAAAAAAAAALdG90YWxTdXBwbHkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAALdG90YWxTdXBwbHkAAAAAAAAAAAAAAAAADHRvdGFsUmVzZXJ2ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzAgAAAAx0b3RhbFJlc2VydmUAAAAAAAAAAAAAAAAADGRUb2tlblN1cHBseQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAADGRUb2tlblN1cHBseQIAAAAdTm8ga2V5IGRUb2tlblN1cHBseSB3YXMgZm91bmQAAAAADmRUb2tlbkRlY2ltYWxzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAAOZFRva2VuRGVjaW1hbHMCAAAAH05vIGtleSBkVG9rZW5EZWNpbWFscyB3YXMgZm91bmQAAAAACGRUb2tlbklkCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAAIZFRva2VuSWQCAAAAGU5vIGtleSBkVG9rZW5JZCB3YXMgZm91bmQAAAAADHN0b3JlZEhlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzAgAAAAxzdG9yZWRIZWlnaHQFAAAABmhlaWdodAAAAAALc3RvcmVkSW5kZXgJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAALc3RvcmVkSW5kZXgAACOG8m/BAAABAAAADmlzQWRtaW5BZGRyZXNzAAAAAQAAAAdhZGRyZXNzAwkAAAAAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAVhZG1pbgUAAAAHYWRkcmVzcwYHAQAAAA1pc1dhdmV0cm9sbGVyAAAAAQAAAAdhZGRyZXNzAwkAAAAAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAt3YXZldHJvbGxlcgUAAAAHYWRkcmVzcwYHAQAAAAt3cml0ZVN0cmluZwAAAAIAAAADa2V5AAAAC3N0cmluZ1ZhbHVlCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkFAAAAC3N0cmluZ1ZhbHVlAQAAAAx3cml0ZUludGVnZXIAAAACAAAAA2tleQAAAAxpbnRlZ2VyVmFsdWUJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAANrZXkFAAAADGludGVnZXJWYWx1ZQEAAAAQdXNlclRva2VuQmFsYW5jZQAAAAEAAAALdXNlckFkZHJlc3MJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAAt1c2VyQWRkcmVzcwIAAAANX3Rva2VuQmFsYW5jZQAAAAAAAAAAAAAAAAALdXRpbGl6YXRpb24JAABrAAAAAwUAAAALdG90YWxCb3Jyb3cFAAAACmJhc2VGYWN0b3IFAAAAC3RvdGFsU3VwcGx5AAAAAANhcHIEAAAACG1pblZhbHVlCQAETAAAAAIFAAAAC3V0aWxpemF0aW9uCQAETAAAAAIFAAAABGtpbmsFAAAAA25pbAQAAAAMbWluVmFsdWVJdGVtCQABlwAAAAEFAAAACG1pblZhbHVlBAAAAAhtYXhWYWx1ZQkABEwAAAACAAAAAAAAAAAACQAETAAAAAIJAABlAAAAAgUAAAALdXRpbGl6YXRpb24FAAAABGtpbmsFAAAAA25pbAQAAAAMbWF4VmFsdWVJdGVtCQABlgAAAAEFAAAACG1heFZhbHVlCQAAZAAAAAIJAABkAAAAAgkAAGsAAAADBQAAAAptdWx0aXBsaWVyBQAAAAxtaW5WYWx1ZUl0ZW0FAAAACmJhc2VGYWN0b3IJAABrAAAAAwUAAAAOanVtcE11bHRpcGxpZXIFAAAADG1heFZhbHVlSXRlbQUAAAAKYmFzZUZhY3RvcgUAAAAIYmFzZVJhdGUAAAAAA2FweQkAAGsAAAADCQAAawAAAAMFAAAAA2FwcgUAAAALdXRpbGl6YXRpb24FAAAACmJhc2VGYWN0b3IJAABlAAAAAgUAAAAKYmFzZUZhY3RvcgUAAAANcmVzZXJ2ZUZhY3RvcgUAAAAKYmFzZUZhY3RvcgAAAAASYm9ycm93UmF0ZVBlckJsb2NrCQAAawAAAAMFAAAAA2FwcgUAAAAJYmFzZUluZGV4CQAAaAAAAAIFAAAADWJsb2Nrc1BlclllYXIFAAAACmJhc2VGYWN0b3IAAAAAC2RlbHRhQmxvY2tzCQAAZQAAAAIFAAAABmhlaWdodAUAAAAMc3RvcmVkSGVpZ2h0AAAAAAxjdXJyZW50SW5kZXgJAQAAAAhmcmFjdGlvbgAAAAQFAAAAC3N0b3JlZEluZGV4CQAAZAAAAAIFAAAACWJhc2VJbmRleAkAAGgAAAACBQAAABJib3Jyb3dSYXRlUGVyQmxvY2sFAAAAC2RlbHRhQmxvY2tzBQAAAAliYXNlSW5kZXgFAAAAB0NFSUxJTkcAAAAAEmN1cnJlbnRUb3RhbEJvcnJvdwkAAGsAAAADBQAAAAt0b3RhbEJvcnJvdwUAAAAMY3VycmVudEluZGV4BQAAAAtzdG9yZWRJbmRleAAAAAARY29sbGVjdGVkSW50ZXJlc3QJAABrAAAAAwUAAAALdG90YWxCb3Jyb3cJAABoAAAAAgUAAAASYm9ycm93UmF0ZVBlckJsb2NrBQAAAAtkZWx0YUJsb2NrcwUAAAAJYmFzZUluZGV4AAAAAA1jdXJyZW50U3VwcGx5CQAAZAAAAAIFAAAAC3RvdGFsU3VwcGx5CQAAawAAAAMJAABlAAAAAgUAAAAKYmFzZUZhY3RvcgUAAAANcmVzZXJ2ZUZhY3RvcgUAAAARY29sbGVjdGVkSW50ZXJlc3QFAAAACmJhc2VGYWN0b3IAAAAADmN1cnJlbnRSZXNlcnZlCQAAZAAAAAIFAAAADHRvdGFsUmVzZXJ2ZQkAAGsAAAADBQAAAA1yZXNlcnZlRmFjdG9yBQAAABFjb2xsZWN0ZWRJbnRlcmVzdAUAAAAKYmFzZUZhY3RvcgAAAAASZFRva2VuRXhjaGFuZ2VSYXRlAwkAAGYAAAACBQAAAAxkVG9rZW5TdXBwbHkAAAAAAAAAAAAEAAAACGV4cG9uZW50CQAAZAAAAAIJAABlAAAAAgAAAAAAAAAACgAAAAAAAAAACAUAAAANYXNzZXREZWNpbWFscwQAAAAQZXhwb25lbnREZWNQb2ludAMJAABmAAAAAgAAAAAAAAAACgUAAAAIZXhwb25lbnQAAAAAAAAAAAEAAAAAAAAAAAIEAAAACG1hbnRpc3NhCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAIFAAAA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", "height": 1673772, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3WJ5JkVyfuQPq5z8GmM5puvB2VFYWywKtsAjJ1W9p1Ci Next: 3BngHjyvd6ZwTFuWkTggSTDNpYZdQzafVxpdNGNURvjV Diff:
OldNewDifferences
103103 then 1
104104 else 2
105105 let baseMantissa = pow(10, 2, rBaseExponent, baseExpoDecPoint, 18, CEILING)
106- fraction(2, 2, 1)
106+ fraction(2, baseMantissa, 1)
107107 }
108108
109109 func calcTokenAmout (assetAmount) = {
118118
119119 @Callable(i)
120120 func deposit (user,isCollateral) = {
121- let userTokenAmount = calcTokenAmout(i.payments[0].amount)
121+ let currentDTokenSupply = (dTokenSupply + 25000000000)
122122 let userBalance = (userTokenBalance(user) + 25000000000)
123-[Reissue(fromBase58String(dTokenId), userTokenAmount, true), writeInteger("dTokenSupply", 25000000000), writeInteger((user + "_tokenBalance"), userBalance), BooleanEntry((user + "_useAsCollateral"), isCollateral), writeInteger("totalBorrow", currentTotalBorrow), writeInteger("totalSupply", (currentSupply + i.payments[0].amount)), writeInteger("totalReserve", currentReserve), writeInteger("storedIndex", currentIndex), writeInteger("storedHeight", height), ScriptTransfer(i.caller, userTokenAmount, fromBase58String(dTokenId))]
123+[Reissue(fromBase58String(dTokenId), 25000000000, true), writeInteger("dTokenSupply", currentDTokenSupply), writeInteger((user + "_tokenBalance"), userBalance), BooleanEntry((user + "_useAsCollateral"), isCollateral), writeInteger("totalBorrow", currentTotalBorrow), writeInteger("totalSupply", (currentSupply + i.payments[0].amount)), writeInteger("totalReserve", currentReserve), writeInteger("storedIndex", currentIndex), writeInteger("storedHeight", height), ScriptTransfer(i.caller, 25000000000, fromBase58String(dTokenId))]
124124 }
125125
126126
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let baseFactor = 1000
55
66 let baseIndex = 10000000000000000
77
88 let blocksPerYear = 525600
99
1010 let config = valueOrElse(getString(this, "configAddress"), "")
1111
1212 let admin = valueOrElse(getString(addressFromStringValue(config), "admin"), "")
1313
1414 let wavetroller = valueOrElse(getString(addressFromStringValue(config), "wavetroller"), "")
1515
1616 let assetIdSub = valueOrErrorMessage(getString(this, "assetId"), "No assetId could be found in data storage!")
1717
1818 let assetDecimals = valueOrErrorMessage(getInteger(addressFromStringValue(config), (assetIdSub + "_Decimals")), (("No key " + (assetIdSub + "_Decimals")) + " was found"))
1919
2020 let multiplier = valueOrErrorMessage(getInteger(addressFromStringValue(config), (assetIdSub + "_Multiplier")), (("No key " + (assetIdSub + "_Multiplier")) + " was found"))
2121
2222 let kink = valueOrErrorMessage(getInteger(addressFromStringValue(config), (assetIdSub + "_Kink")), (("No key " + (assetIdSub + "_Kink")) + " was found"))
2323
2424 let jumpMultiplier = valueOrErrorMessage(getInteger(addressFromStringValue(config), (assetIdSub + "_JumpMultiplier")), (("No key " + (assetIdSub + "_JumpMultiplier")) + " was found"))
2525
2626 let baseRate = valueOrErrorMessage(getInteger(addressFromStringValue(config), (assetIdSub + "_BaseRate")), (("No key " + (assetIdSub + "_BaseRate")) + " was found"))
2727
2828 let reserveFactor = valueOrErrorMessage(getInteger(addressFromStringValue(config), (assetIdSub + "_ReserveFactor")), (("No key " + (assetIdSub + "_ReserveFactor")) + " was found"))
2929
3030 let totalBorrow = valueOrElse(getInteger(this, "totalBorrow"), 0)
3131
3232 let totalSupply = valueOrElse(getInteger(this, "totalSupply"), 0)
3333
3434 let totalReserve = valueOrElse(getInteger(this, "totalReserve"), 0)
3535
3636 let dTokenSupply = valueOrErrorMessage(getInteger(this, "dTokenSupply"), "No key dTokenSupply was found")
3737
3838 let dTokenDecimals = valueOrErrorMessage(getInteger(this, "dTokenDecimals"), "No key dTokenDecimals was found")
3939
4040 let dTokenId = valueOrErrorMessage(getString(this, "dTokenId"), "No key dTokenId was found")
4141
4242 let storedHeight = valueOrElse(getInteger(this, "storedHeight"), height)
4343
4444 let storedIndex = valueOrElse(getInteger(this, "storedIndex"), 10000000000000000)
4545
4646 func isAdminAddress (address) = if ((addressFromStringValue(admin) == address))
4747 then true
4848 else false
4949
5050
5151 func isWavetroller (address) = if ((addressFromStringValue(wavetroller) == address))
5252 then true
5353 else false
5454
5555
5656 func writeString (key,stringValue) = StringEntry(key, stringValue)
5757
5858
5959 func writeInteger (key,integerValue) = IntegerEntry(key, integerValue)
6060
6161
6262 func userTokenBalance (userAddress) = valueOrElse(getInteger(this, (userAddress + "_tokenBalance")), 0)
6363
6464
6565 let utilization = fraction(totalBorrow, baseFactor, totalSupply)
6666
6767 let apr = {
6868 let minValue = [utilization, kink]
6969 let minValueItem = min(minValue)
7070 let maxValue = [0, (utilization - kink)]
7171 let maxValueItem = max(maxValue)
7272 ((fraction(multiplier, minValueItem, baseFactor) + fraction(jumpMultiplier, maxValueItem, baseFactor)) + baseRate)
7373 }
7474
7575 let apy = fraction(fraction(apr, utilization, baseFactor), (baseFactor - reserveFactor), baseFactor)
7676
7777 let borrowRatePerBlock = fraction(apr, baseIndex, (blocksPerYear * baseFactor))
7878
7979 let deltaBlocks = (height - storedHeight)
8080
8181 let currentIndex = fraction(storedIndex, (baseIndex + (borrowRatePerBlock * deltaBlocks)), baseIndex, CEILING)
8282
8383 let currentTotalBorrow = fraction(totalBorrow, currentIndex, storedIndex)
8484
8585 let collectedInterest = fraction(totalBorrow, (borrowRatePerBlock * deltaBlocks), baseIndex)
8686
8787 let currentSupply = (totalSupply + fraction((baseFactor - reserveFactor), collectedInterest, baseFactor))
8888
8989 let currentReserve = (totalReserve + fraction(reserveFactor, collectedInterest, baseFactor))
9090
9191 let dTokenExchangeRate = if ((dTokenSupply > 0))
9292 then {
9393 let exponent = ((10 - 8) + assetDecimals)
9494 let exponentDecPoint = if ((10 > exponent))
9595 then 1
9696 else 2
9797 let mantissa = pow(10, 2, exponent, 2, 18, CEILING)
9898 fraction(currentSupply, mantissa, dTokenSupply)
9999 }
100100 else {
101101 let rBaseExponent = (assetDecimals + 6)
102102 let baseExpoDecPoint = if ((10 > rBaseExponent))
103103 then 1
104104 else 2
105105 let baseMantissa = pow(10, 2, rBaseExponent, baseExpoDecPoint, 18, CEILING)
106- fraction(2, 2, 1)
106+ fraction(2, baseMantissa, 1)
107107 }
108108
109109 func calcTokenAmout (assetAmount) = {
110110 let exponent = ((10 - 8) + assetDecimals)
111111 let exponentPoint = if ((10 > exponent))
112112 then 1
113113 else 2
114114 let mantissa = pow(10, 2, exponent, exponentPoint, 18, CEILING)
115115 fraction(assetAmount, 2, dTokenExchangeRate)
116116 }
117117
118118
119119 @Callable(i)
120120 func deposit (user,isCollateral) = {
121- let userTokenAmount = calcTokenAmout(i.payments[0].amount)
121+ let currentDTokenSupply = (dTokenSupply + 25000000000)
122122 let userBalance = (userTokenBalance(user) + 25000000000)
123-[Reissue(fromBase58String(dTokenId), userTokenAmount, true), writeInteger("dTokenSupply", 25000000000), writeInteger((user + "_tokenBalance"), userBalance), BooleanEntry((user + "_useAsCollateral"), isCollateral), writeInteger("totalBorrow", currentTotalBorrow), writeInteger("totalSupply", (currentSupply + i.payments[0].amount)), writeInteger("totalReserve", currentReserve), writeInteger("storedIndex", currentIndex), writeInteger("storedHeight", height), ScriptTransfer(i.caller, userTokenAmount, fromBase58String(dTokenId))]
123+[Reissue(fromBase58String(dTokenId), 25000000000, true), writeInteger("dTokenSupply", currentDTokenSupply), writeInteger((user + "_tokenBalance"), userBalance), BooleanEntry((user + "_useAsCollateral"), isCollateral), writeInteger("totalBorrow", currentTotalBorrow), writeInteger("totalSupply", (currentSupply + i.payments[0].amount)), writeInteger("totalReserve", currentReserve), writeInteger("storedIndex", currentIndex), writeInteger("storedHeight", height), ScriptTransfer(i.caller, 25000000000, fromBase58String(dTokenId))]
124124 }
125125
126126
127127
128128 @Callable(i)
129129 func setup (aId,configAdd,tokenName,tokenDescription) = if (if (!(isDefined(getString(this, "config"))))
130130 then !(isDefined(getString(this, "admin")))
131131 else false)
132132 then {
133133 let asset = Issue(tokenName, tokenDescription, 0, 8, true)
134134 let tokenId = calculateAssetId(asset)
135135 [writeString("assetId", aId), writeString("configAddress", configAdd), IntegerEntry("totalBorrow", 0), IntegerEntry("totalSupply", 0), IntegerEntry("totalReserve", 0), IntegerEntry("storedIndex", baseIndex), IntegerEntry("storedHeight", height), writeString("dTokenName", tokenName), writeString("dTokenId", toBase58String(tokenId)), IntegerEntry("dTokenDecimals", 8), IntegerEntry("dTokenSupply", 0)]
136136 }
137137 else throw("Pool already setup!")
138138
139139
140140 @Verifier(tx)
141141 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
142142

github/deemru/w8io/169f3d6 
29.68 ms