tx · EgZwzervRPnptApDxHdxPVDtYEL29KDhzVzZAFXuxPdQ 3N4TEQzMSjr8dNSXeexyKmteC6coHneTydX: -0.05000000 Waves 2021.06.11 13:41 [1565583] smart account 3N4TEQzMSjr8dNSXeexyKmteC6coHneTydX > SELF 0.00000000 Waves
{ "type": 13, "id": "EgZwzervRPnptApDxHdxPVDtYEL29KDhzVzZAFXuxPdQ", "fee": 5000000, "feeAssetId": null, "timestamp": 1623408047280, "version": 2, "chainId": 84, "sender": "3N4TEQzMSjr8dNSXeexyKmteC6coHneTydX", "senderPublicKey": "BLYPM7pr6zCdxj9zzANneoGVcDEwBnQApCEnR3BkNm68", "proofs": [ "24wYE5BeCffeXTDeJ9PD7xbEj3EzbX8GSuqyXKN8kimYgmeTZyDWaMTH38nBecr5FQZmEQ6z6CVcViwkRueWgMKM" ], "script": "base64:AAIFAAAAAAAAAAkIAhIAEgMKAQEAAAAAAAAAAgAAAAFpAQAAAAdkZXBvc2l0AAAAAAQAAAADcG10AwkAAAAAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAHEF0dGFjaGVkIHBheW1lbnQgaXMgcmVxdWlyZWQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAAFXdvcmtzIHdpdGggd2F2ZXMgb25seQQAAAAKY3VycmVudEtleQkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAA1jdXJyZW50QW1vdW50BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAACmN1cnJlbnRLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAJbmV3QW1vdW50CQAAZAAAAAIFAAAADWN1cnJlbnRBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50CQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACmN1cnJlbnRLZXkFAAAACW5ld0Ftb3VudAUAAAADbmlsBQAAAAR1bml0AAAAAWkBAAAACHdpdGhkcmF3AAAAAQAAAAZhbW91bnQEAAAACmN1cnJlbnRLZXkJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAANY3VycmVudEFtb3VudAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAApjdXJyZW50S2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAACW5ld0Ftb3VudAkAAGUAAAACBQAAAA1jdXJyZW50QW1vdW50BQAAAAZhbW91bnQDCQAAZgAAAAIAAAAAAAAAAAAFAAAABmFtb3VudAkAAAIAAAABAgAAAB5DYW4ndCB3aXRoZHJhdyBuZWdhdGl2ZSBhbW91bnQDCQAAZgAAAAIAAAAAAAAAAAAFAAAACW5ld0Ftb3VudAkAAAIAAAABAgAAABJOb3QgZW5vdWdoIGJhbGFuY2UJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKY3VycmVudEtleQUAAAAJbmV3QW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGYW1vdW50BQAAAAR1bml0BQAAAANuaWwFAAAABHVuaXQAAAAAYiVoQg==", "height": 1565583, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 83PCAKtcuBfDmNfHBs4BPV8CgmGKVbELKkm9RyrFjkFv Next: EpWK9gSKBCjMfADnL4EAqYSFxevRw9RpghkHoa53Uw7p Full:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | func lazyIsGood () = { | |
5 | - | let c = { | |
6 | - | let d = 1 | |
7 | - | true | |
8 | - | } | |
9 | - | c | |
10 | - | } | |
11 | 4 | ||
12 | 5 | ||
13 | 6 | @Callable(i) | |
14 | - | func giveAway (age) = { | |
15 | - | let dapp2 = Address(base58'asdfasfasfd') | |
16 | - | let args = nil | |
17 | - | let balanceBefore = wavesBalance(this).regular | |
18 | - | if ((balanceBefore == balanceBefore)) | |
19 | - | then { | |
20 | - | let z = invoke(dapp2, "bar", args, [AttachedPayment(unit, 100000000)]) | |
21 | - | if ((z == z)) | |
22 | - | then { | |
23 | - | let balanceAfter = wavesBalance(this).regular | |
24 | - | if ((balanceAfter == balanceAfter)) | |
25 | - | then $Tuple2([ScriptTransfer(i.caller, age, unit), IntegerEntry(toBase58String(i.caller.bytes), age)], unit) | |
26 | - | else throw("Strict value is not equal to itself.") | |
27 | - | } | |
28 | - | else throw("Strict value is not equal to itself.") | |
7 | + | func deposit () = { | |
8 | + | let pmt = if ((size(i.payments) == 1)) | |
9 | + | then i.payments[0] | |
10 | + | else throw("Attached payment is required") | |
11 | + | if (isDefined(pmt.assetId)) | |
12 | + | then throw("works with waves only") | |
13 | + | else { | |
14 | + | let currentKey = toBase58String(i.caller.bytes) | |
15 | + | let currentAmount = match getInteger(this, currentKey) { | |
16 | + | case a: Int => | |
17 | + | a | |
18 | + | case _ => | |
19 | + | 0 | |
29 | 20 | } | |
30 | - | else throw("Strict value is not equal to itself.") | |
21 | + | let newAmount = (currentAmount + pmt.amount) | |
22 | + | $Tuple2([IntegerEntry(currentKey, newAmount)], unit) | |
23 | + | } | |
31 | 24 | } | |
32 | 25 | ||
33 | 26 | ||
34 | 27 | ||
35 | 28 | @Callable(i) | |
36 | - | func faucet () = { | |
37 | - | let isKnownCaller = match getBoolean(this, toBase58String(i.caller.bytes)) { | |
38 | - | case hist: Boolean => | |
39 | - | hist | |
29 | + | func withdraw (amount) = { | |
30 | + | let currentKey = toBase58String(i.caller.bytes) | |
31 | + | let currentAmount = match getInteger(this, currentKey) { | |
32 | + | case a: Int => | |
33 | + | a | |
40 | 34 | case _ => | |
41 | - | | |
35 | + | 0 | |
42 | 36 | } | |
43 | - | if (!(isKnownCaller)) | |
44 | - | then $Tuple2([BooleanEntry(toBase58String(i.caller.bytes), true), ScriptTransfer(i.caller, 100000000, unit)], unit) | |
45 | - | else throw("Can be used only once") | |
37 | + | let newAmount = (currentAmount - amount) | |
38 | + | if ((0 > amount)) | |
39 | + | then throw("Can't withdraw negative amount") | |
40 | + | else if ((0 > newAmount)) | |
41 | + | then throw("Not enough balance") | |
42 | + | else $Tuple2([IntegerEntry(currentKey, newAmount), ScriptTransfer(i.caller, amount, unit)], unit) | |
46 | 43 | } | |
47 | 44 | ||
48 | - | ||
49 | - | @Verifier(tx) | |
50 | - | func verifier () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
51 | 45 |
github/deemru/w8io/169f3d6 32.41 ms ◑