tx · 4NfodfaEU2vC6S5JfQDX8YW8zEWZdk1x5xeu6zrhmF1G

3PLoX5yufZz9jRahL1CVVRAXq8VpUmXBKLK:  -0.00400000 Waves

2023.07.12 23:16 [3728783] smart account 3PLoX5yufZz9jRahL1CVVRAXq8VpUmXBKLK > SELF 0.00000000 Waves

{ "type": 13, "id": "4NfodfaEU2vC6S5JfQDX8YW8zEWZdk1x5xeu6zrhmF1G", "fee": 400000, "feeAssetId": null, "timestamp": 1689193025261, "version": 1, "sender": "3PLoX5yufZz9jRahL1CVVRAXq8VpUmXBKLK", "senderPublicKey": "BWWhbKtEdrxx3J5qEs2cTkcHEGNpNqQjMzGigaM99SMu", "proofs": [ "54fYCLcAmrP6c5csGfijL3ETHsGa9iLeu5fRHRpdXFQNtRHjhaynbSqgt5eNABnEneaEkEVzXFhmF6Pty7ywCDbJ" ], "script": "base64:BgIPCAISAwoBCBIECgIIARIACAAIT25lV2F2ZXMAgMLXLwAKbGVhc2VJZEtleQIHbGVhc2VJZAANc3Rha2VXYXZlc0tleQILc3Rha2VfV0FWRVMADGFkZHJlc3Nlc0tleQIJYWRkcmVzc2VzAAh3YXZlc0tleQIFV0FWRVMACHNwbGl0S2V5AgFfAAxjb25maWd1cmF0b3IJAQdBZGRyZXNzAQEaAVdAGjmX0A7iCW1nlAljsT8Vluif3UstvuQABG5vZGUJAQdBZGRyZXNzAQEaAVfL1CR9DMpUVBBNkVS4LS6643QX2Rgh08MDAWkBBXNldHVwAQlhZGRyZXNzZXMDCQECIT0CCAUBaQZjYWxsZXIFDGNvbmZpZ3VyYXRvcgkAAgECC05vIHRvdWNoaW5nAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQISTm90IGVtcHR5IHBheW1lbnRzBARsaXN0CQC8CQIFCWFkZHJlc3NlcwUIc3BsaXRLZXkECGxpc3RTaXplCQCQAwEFBGxpc3QKAQRmb2xkAgVhY2N1bQRuZXh0AwkAZgIIBQVhY2N1bQJfMQUIbGlzdFNpemUFBWFjY3VtCQCUCgIJAGQCCAUFYWNjdW0CXzEAAQkAzQgCCAUFYWNjdW0CXzIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBG5leHQECHZhbGlkYXRlCgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRmb2xkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAMJAAACBQh2YWxpZGF0ZQUIdmFsaWRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgUMYWRkcmVzc2VzS2V5BQlhZGRyZXNzZXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZib3Jyb3cCCGFzc2V0U3RyBmFtb3VudAMDCQEBIQEJAQhjb250YWlucwIJARFAZXh0ck5hdGl2ZSgxMDU4KQEFDGFkZHJlc3Nlc0tleQkApQgBCAUBaQZjYWxsZXIJAQIhPQIIBQFpBmNhbGxlcgUMY29uZmlndXJhdG9yBwkAAgECC05vIHRvdWNoaW5nAwkAAAIFCGFzc2V0U3RyBQh3YXZlc0tleQQLbGVhc2VBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNc3Rha2VXYXZlc0tleQAABA1iYWxhbmNlQW1vdW50CQBlAggJAO8HAQUEdGhpcwdyZWd1bGFyBQhPbmVXYXZlcwQQYm9ycm93YWJsZUFzc2V0cwMDCQAAAgUGYW1vdW50AAAGCQBnAgUGYW1vdW50BQ1iYWxhbmNlQW1vdW50CQCUCgIAAAUNYmFsYW5jZUFtb3VudAkAlAoCCQBlAgUNYmFsYW5jZUFtb3VudAUGYW1vdW50BQZhbW91bnQEDGxlYXNlQWN0aW9ucwMJAGYCCAUQYm9ycm93YWJsZUFzc2V0cwJfMQAABAVsZWFzZQkAxAgCBQRub2RlCAUQYm9ycm93YWJsZUFzc2V0cwJfMQkAzAgCBQVsZWFzZQkAzAgCCQELQmluYXJ5RW50cnkCBQpsZWFzZUlkS2V5CQC5CAEFBWxlYXNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1zdGFrZVdhdmVzS2V5CAUQYm9ycm93YWJsZUFzc2V0cwJfMQUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFCmxlYXNlSWRLZXkJAMwIAgkBDEludGVnZXJFbnRyeQIFDXN0YWtlV2F2ZXNLZXkAAAUDbmlsBAdsZWFzZUlkCQELdmFsdWVPckVsc2UCCQChCAEFCmxlYXNlSWRLZXkBAAQVY2FuY2VsQW5kTGVhc2VBY3Rpb25zAwkAAAIFB2xlYXNlSWQBAAUMbGVhc2VBY3Rpb25zCQDMCAIJAQtMZWFzZUNhbmNlbAEFB2xlYXNlSWQFDGxlYXNlQWN0aW9ucwQNcmVzdWx0QWN0aW9ucwkAzQgCBRVjYW5jZWxBbmRMZWFzZUFjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcggFEGJvcnJvd2FibGVBc3NldHMCXzIFBHVuaXQJAJQKAgUNcmVzdWx0QWN0aW9ucwgFEGJvcnJvd2FibGVBc3NldHMCXzIEB2Fzc2V0SWQJANkEAQUIYXNzZXRTdHIEDWJhbGFuY2VBbW91bnQJAPAHAgUEdGhpcwkBBXZhbHVlAQUHYXNzZXRJZAQQYm9ycm93YWJsZUFzc2V0cwMDCQAAAgUGYW1vdW50AAAGCQBnAgUGYW1vdW50BQ1iYWxhbmNlQW1vdW50BQ1iYWxhbmNlQW1vdW50BQZhbW91bnQJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFEGJvcnJvd2FibGVBc3NldHMFB2Fzc2V0SWQFA25pbAUQYm9ycm93YWJsZUFzc2V0cwFpAQVyZXBheQAEB3BheW1lbnQJAJEDAggFAWkIcGF5bWVudHMAAAMJAAACCAUHcGF5bWVudAdhc3NldElkBQR1bml0BA1iYWxhbmNlQW1vdW50CQBlAggJAO8HAQUEdGhpcwdyZWd1bGFyBQhPbmVXYXZlcwQFbGVhc2UJAMQIAgUEbm9kZQUNYmFsYW5jZUFtb3VudAQMbGVhc2VBY3Rpb25zCQDMCAIFBWxlYXNlCQDMCAIJAQtCaW5hcnlFbnRyeQIFCmxlYXNlSWRLZXkJALkIAQUFbGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIFDXN0YWtlV2F2ZXNLZXkFDWJhbGFuY2VBbW91bnQFA25pbAQHbGVhc2VJZAkBC3ZhbHVlT3JFbHNlAgkAoQgBBQpsZWFzZUlkS2V5AQADCQAAAgUHbGVhc2VJZAEABQxsZWFzZUFjdGlvbnMJAMwIAgkBC0xlYXNlQ2FuY2VsAQUHbGVhc2VJZAUMbGVhc2VBY3Rpb25zBQNuaWwAcTzDiw==", "chainId": 87, "height": 3728783, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7JkRh4BxyUtKDaNMntX52dqiLngGev9stbkgRZ4NciKx Next: 58g63L39JBpZVJXoaSY8fKGksPRBs67k8vKUX8EMTU9c Diff:
OldNewDifferences
5151
5252
5353 @Callable(i)
54-func borrow (assetStr,amount) = if (!(contains(getStringValue(addressesKey), toString(i.caller))))
54+func borrow (assetStr,amount) = if (if (!(contains(getStringValue(addressesKey), toString(i.caller))))
55+ then (i.caller != configurator)
56+ else false)
5557 then throw("No touching")
5658 else if ((assetStr == wavesKey))
5759 then {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let OneWaves = 100000000
55
66 let leaseIdKey = "leaseId"
77
88 let stakeWavesKey = "stake_WAVES"
99
1010 let addressesKey = "addresses"
1111
1212 let wavesKey = "WAVES"
1313
1414 let splitKey = "_"
1515
1616 let configurator = Address(base58'3P7mqPfcMt4GeBE1U8gF9jgpCT9T85fSK4f')
1717
1818 let node = Address(base58'3PLWe37Ja5HJbsVZUqRCSKH5H5uB7N6MA2v')
1919
2020 @Callable(i)
2121 func setup (addresses) = if ((i.caller != configurator))
2222 then throw("No touching")
2323 else if ((size(i.payments) != 0))
2424 then throw("Not empty payments")
2525 else {
2626 let list = split_4C(addresses, splitKey)
2727 let listSize = size(list)
2828 func fold (accum,next) = if ((accum._1 > listSize))
2929 then accum
3030 else $Tuple2((accum._1 + 1), (accum._2 :+ addressFromStringValue(next)))
3131
3232 let validate = {
3333 let $l = list
3434 let $s = size($l)
3535 let $acc0 = $Tuple2(0, nil)
3636 func $f0_1 ($a,$i) = if (($i >= $s))
3737 then $a
3838 else fold($a, $l[$i])
3939
4040 func $f0_2 ($a,$i) = if (($i >= $s))
4141 then $a
4242 else throw("List size exceeds 100")
4343
4444 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
4545 }
4646 if ((validate == validate))
4747 then [StringEntry(addressesKey, addresses)]
4848 else throw("Strict value is not equal to itself.")
4949 }
5050
5151
5252
5353 @Callable(i)
54-func borrow (assetStr,amount) = if (!(contains(getStringValue(addressesKey), toString(i.caller))))
54+func borrow (assetStr,amount) = if (if (!(contains(getStringValue(addressesKey), toString(i.caller))))
55+ then (i.caller != configurator)
56+ else false)
5557 then throw("No touching")
5658 else if ((assetStr == wavesKey))
5759 then {
5860 let leaseAmount = valueOrElse(getInteger(stakeWavesKey), 0)
5961 let balanceAmount = (wavesBalance(this).regular - OneWaves)
6062 let borrowableAssets = if (if ((amount == 0))
6163 then true
6264 else (amount >= balanceAmount))
6365 then $Tuple2(0, balanceAmount)
6466 else $Tuple2((balanceAmount - amount), amount)
6567 let leaseActions = if ((borrowableAssets._1 > 0))
6668 then {
6769 let lease = Lease(node, borrowableAssets._1)
6870 [lease, BinaryEntry(leaseIdKey, calculateLeaseId(lease)), IntegerEntry(stakeWavesKey, borrowableAssets._1)]
6971 }
7072 else [DeleteEntry(leaseIdKey), IntegerEntry(stakeWavesKey, 0)]
7173 let leaseId = valueOrElse(getBinary(leaseIdKey), base58'')
7274 let cancelAndLeaseActions = if ((leaseId == base58''))
7375 then leaseActions
7476 else LeaseCancel(leaseId) :: leaseActions
7577 let resultActions = (cancelAndLeaseActions :+ ScriptTransfer(i.caller, borrowableAssets._2, unit))
7678 $Tuple2(resultActions, borrowableAssets._2)
7779 }
7880 else {
7981 let assetId = fromBase58String(assetStr)
8082 let balanceAmount = assetBalance(this, value(assetId))
8183 let borrowableAssets = if (if ((amount == 0))
8284 then true
8385 else (amount >= balanceAmount))
8486 then balanceAmount
8587 else amount
8688 $Tuple2([ScriptTransfer(i.caller, borrowableAssets, assetId)], borrowableAssets)
8789 }
8890
8991
9092
9193 @Callable(i)
9294 func repay () = {
9395 let payment = i.payments[0]
9496 if ((payment.assetId == unit))
9597 then {
9698 let balanceAmount = (wavesBalance(this).regular - OneWaves)
9799 let lease = Lease(node, balanceAmount)
98100 let leaseActions = [lease, BinaryEntry(leaseIdKey, calculateLeaseId(lease)), IntegerEntry(stakeWavesKey, balanceAmount)]
99101 let leaseId = valueOrElse(getBinary(leaseIdKey), base58'')
100102 if ((leaseId == base58''))
101103 then leaseActions
102104 else LeaseCancel(leaseId) :: leaseActions
103105 }
104106 else nil
105107 }
106108
107109

github/deemru/w8io/3ef1775 
52.09 ms