tx · 41VmHCqArHeBY1GmEzPGq9zjzruHqHEc99Pm4XRmhp9L

3MqSVVMsPLhbavWyUu81TPFCXs5a5c1vuHz:  -0.01400000 Waves

2019.07.08 13:48 [576538] smart account 3MqSVVMsPLhbavWyUu81TPFCXs5a5c1vuHz > SELF 0.00000000 Waves

{ "type": 13, "id": "41VmHCqArHeBY1GmEzPGq9zjzruHqHEc99Pm4XRmhp9L", "fee": 1400000, "feeAssetId": null, "timestamp": 1562582969434, "version": 1, "sender": "3MqSVVMsPLhbavWyUu81TPFCXs5a5c1vuHz", "senderPublicKey": "F4oaEUZCJFZeYV17bYU99QsvVc5F9UzZG56oXzHwM2CC", "proofs": [ "2Gv1hdjM9m4RSyFvz8P7uhRydJuE5DvxDwHgg7AXkshnqtUVRjnHz6yB1VEXEDSb4hM4ZsXq4JCct2d5LnHv3g6J" ], "script": "base64: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DWNoYW5nZUFkZHJlc3MFAAAABW93bmVyCQAAZQAAAAIJAABlAAAAAgkAAGUAAAACBQAAAAZhbW91bnQFAAAACWluY0xldmVsMQUAAAAJaW5jTGV2ZWwyBQAAAAlpbmNMZXZlbDMCAAAABmNoYW5nZQUAAAAEdHhpZAUAAAAJdGltZXN0YW1wBQAAAANuaWwJAARMAAAAAgkBAAAAEGJhbGFuY2VJbmNyZW1lbnQAAAACBQAAAA1jaGFuZ2VBZGRyZXNzCQAAZQAAAAIJAABlAAAAAgUAAAAGYW1vdW50BQAAAAlpbmNMZXZlbDEFAAAACWluY0xldmVsMgkABEwAAAACCQEAAAAWcmVjb3JkQmFsYW5jZUluY3JlbWVudAAAAAYFAAAADWNoYW5nZUFkZHJlc3MFAAAABW93bmVyCQAAZQAAAAIJAABlAAAAAgUAAAAGYW1vdW50BQAAAAlpbmNMZXZlbDEFAAAACWluY0xldmVsMgIAAAAGY2hhbmdlBQAAAAR0eGlkBQAAAAl0aW1lc3RhbXAFAAAAA25pbAkABEwAAAACCQEAAAAQYmFsYW5jZUluY3JlbWVudAAAAAIFAAAADWNoYW5nZUFkZHJlc3MJAABlAAAAAgUAAAAGYW1vdW50BQAAAAlpbmNMZXZlbDEJAARMAAAAAgkBAAAAFnJlY29yZEJhbGFuY2VJbmNyZW1lbnQAAAAGBQAAAA1jaGFuZ2VBZGRyZXNzBQAAAAVvd25lcgkAAGUAAAACBQAAAAZhbW91bnQFAAAACWluY0xldmVsMQIAAAAGY2hhbmdlBQAAAAR0eGlkBQAAAAl0aW1lc3RhbXAFAAAAA25pbAkABEwAAAACCQEAAAAQYmFsYW5jZUluY3JlbWVudAAAAAIFAAAADWNoYW5nZUFkZHJlc3MFAAAABmFtb3VudAkABEwAAAACCQEAAAAWcmVjb3JkQmFsYW5jZUluY3JlbWVudAAAAAYFAAAADWNoYW5nZUFkZHJlc3MFAAAABW93bmVyBQAAAAZhbW91bnQCAAAABmNoYW5nZQUAAAAEdHhpZAUAAAAJdGltZXN0YW1wBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCAUAAAABaQAAAANmZWUFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAAEAAAAAmNmCQEAAAAIY2hlY2tGZWUAAAABBQAAAAFpBAAAAAVvd25lcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAR0eGlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAACmJhbGFuY2VLZXkJAAEsAAAAAgUAAAAFb3duZXICAAAACF9iYWxhbmNlBAAAAAZhbW91bnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAAKYmFsYW5jZUtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAwkAAGYAAAACBQAAAAttaW5XaXRoZHJhdwUAAAAGYW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAWTWluIHdpdGhkcmF3IGFtb3VudCBpcwkAAaQAAAABBQAAAAttaW5XaXRoZHJhdwkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACmJhbGFuY2VLZXkAAAAAAAAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACXdpdGhkcmF3XwUAAAAFb3duZXICAAAAAV8FAAAABHR4aWQJAAEsAAAAAgkAASwAAAACCQABpAAAAAEFAAAABmFtb3VudAIAAAABOgkBAAAADGdldFRpbWVzdGFtcAAAAAAFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAABkAAAAAgUAAAAGYW1vdW50CAUAAAABaQAAAANmZWUFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAhyZWdpc3RlcgAAAAIAAAAHcmVmZXJlcgAAAARzYWx0BAAAAAJjZgkBAAAACGNoZWNrRmVlAAAAAQUAAAABaQMJAQAAAAIhPQAAAAIJAAEvAAAAAgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAAAAAAAAAAADAgAAAAMxMjMJAAACAAAAAQIAAAAUcHJvb2Ygb2Ygd29yayBmYWlsZWQEAAAABW93bmVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAAJaXNEZWZpbmVkAAAAAQkBAAAACmdldFJlZmVyZXIAAAABBQAAAAVvd25lcgkAAAIAAAABAgAAABJBbHJlYWR5IHJlZ2lzdGVyZWQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIFAAAABW93bmVyAgAAAAhfcmVmZXJlcgUAAAAHcmVmZXJlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACBQAAAAdyZWZlcmVyAgAAAAlfcmVmZXJyYWwFAAAABW93bmVyBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCAUAAAABaQAAAANmZWUFAAAABHVuaXQFAAAAA25pbAAAAABPKGel", "chainId": 84, "height": 576538, "spentComplexity": 0 } View: original | compacted Prev: HvzFbL3qgyRNRLXsscckdpndbpkwgVX9j33dvmKokGH7 Next: 8LhKgzuPj8zZQwTFgD8F8qC5fGn72Ezbp7QeDYbc5kXx Diff:
OldNewDifferences
104104 let owner = toBase58String(i.caller.bytes)
105105 if (isDefined(getReferer(owner)))
106106 then throw("Already registered")
107- else {
108- let referalsKey = (referer + "_referral")
109- let referals = match getString(this, referalsKey) {
110- case oldRefs: String =>
111- ((oldRefs + ",") + owner)
112- case _ =>
113- owner
114- }
115- ScriptResult(WriteSet([DataEntry((owner + "_referer"), referer), DataEntry(referalsKey, referals)]), TransferSet([ScriptTransfer(i.caller, i.fee, unit)]))
116- }
107+ else ScriptResult(WriteSet([DataEntry((owner + "_referer"), referer), DataEntry((referer + "_referral"), owner)]), TransferSet([ScriptTransfer(i.caller, i.fee, unit)]))
117108 }
118109 }
119110
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let level1 = 250
55
66 let level2 = 250
77
88 let level3 = 250
99
1010 let cashBack = 250
1111
1212 let maxFee = 5000000
1313
1414 let minWithdraw = 1000000
1515
1616 let changeAddress = "3Mpy9nDufCJFGvv342pf1umBmE6eNxwkJJ1"
1717
1818 func balanceIncrement (address,inc) = {
1919 let balanceKey = (address + "_balance")
2020 DataEntry(balanceKey, (inc + match getInteger(this, balanceKey) {
2121 case b: Int =>
2222 b
2323 case _ =>
2424 0
2525 }))
2626 }
2727
2828
2929 func recordBalanceIncrement (address,owner,inc,level,txId,timestamp) = DataEntry(((("fund_" + address) + "_") + txId), ((((((owner + ":") + toString(inc)) + ":") + level) + ":") + timestamp))
3030
3131
3232 func getReferer (user) = getString(this, (user + "_referer"))
3333
3434
3535 func checkFee (i) = if ((i.fee > maxFee))
3636 then throw("unreasonable large fee")
3737 else if ((i.feeAssetId != unit))
3838 then throw("fee must be in WAVES")
3939 else true
4040
4141
4242 func getTimestamp () = {
4343 let block = extract(blockInfoByHeight(height))
4444 toString(block.timestamp)
4545 }
4646
4747
4848 @Callable(i)
4949 func fund () = {
5050 let owner = toBase58String(i.caller.bytes)
5151 let txid = toBase58String(i.transactionId)
5252 let timestamp = getTimestamp()
5353 let amount = extract(i.payment).amount
5454 let cf = checkFee(i)
5555 ScriptResult(WriteSet( match getReferer(owner) {
5656 case ref1: String =>
5757 let incLevel1 = ((amount * level1) / 1000)
5858 let incCashBack = ((amount * cashBack) / 1000)
5959 [balanceIncrement(owner, incCashBack), recordBalanceIncrement(owner, owner, incCashBack, "cashback", txid, timestamp), balanceIncrement(ref1, incLevel1), recordBalanceIncrement(ref1, owner, incLevel1, "l1", txid, timestamp), match getReferer(ref1) {
6060 case ref2: String =>
6161 let incLevel2 = ((amount * level2) / 1000)
6262 [balanceIncrement(ref2, incLevel2), recordBalanceIncrement(ref2, owner, incLevel2, "l2", txid, timestamp), match getReferer(ref2) {
6363 case ref3: String =>
6464 let incLevel3 = ((amount * level3) / 1000)
6565 [balanceIncrement(ref3, incLevel3), recordBalanceIncrement(ref3, owner, incLevel3, "l3", txid, timestamp), balanceIncrement(changeAddress, (((amount - incLevel1) - incLevel2) - incLevel3)), recordBalanceIncrement(changeAddress, owner, (((amount - incLevel1) - incLevel2) - incLevel3), "change", txid, timestamp)]
6666 case _ =>
6767 [balanceIncrement(changeAddress, ((amount - incLevel1) - incLevel2)), recordBalanceIncrement(changeAddress, owner, ((amount - incLevel1) - incLevel2), "change", txid, timestamp)]
6868 }]
6969 case _ =>
7070 [balanceIncrement(changeAddress, (amount - incLevel1)), recordBalanceIncrement(changeAddress, owner, (amount - incLevel1), "change", txid, timestamp)]
7171 }]
7272 case _ =>
7373 [balanceIncrement(changeAddress, amount), recordBalanceIncrement(changeAddress, owner, amount, "change", txid, timestamp)]
7474 }), TransferSet([ScriptTransfer(i.caller, i.fee, unit)]))
7575 }
7676
7777
7878
7979 @Callable(i)
8080 func withdraw () = {
8181 let cf = checkFee(i)
8282 let owner = toBase58String(i.caller.bytes)
8383 let txid = toBase58String(i.transactionId)
8484 let balanceKey = (owner + "_balance")
8585 let amount = match getInteger(this, balanceKey) {
8686 case b: Int =>
8787 b
8888 case _ =>
8989 0
9090 }
9191 if ((minWithdraw > amount))
9292 then throw(("Min withdraw amount is" + toString(minWithdraw)))
9393 else ScriptResult(WriteSet([DataEntry(balanceKey, 0), DataEntry(((("withdraw_" + owner) + "_") + txid), ((toString(amount) + ":") + getTimestamp()))]), TransferSet([ScriptTransfer(i.caller, (amount + i.fee), unit)]))
9494 }
9595
9696
9797
9898 @Callable(i)
9999 func register (referer,salt) = {
100100 let cf = checkFee(i)
101101 if ((take(toBase58String(i.transactionId), 3) != "123"))
102102 then throw("proof of work failed")
103103 else {
104104 let owner = toBase58String(i.caller.bytes)
105105 if (isDefined(getReferer(owner)))
106106 then throw("Already registered")
107- else {
108- let referalsKey = (referer + "_referral")
109- let referals = match getString(this, referalsKey) {
110- case oldRefs: String =>
111- ((oldRefs + ",") + owner)
112- case _ =>
113- owner
114- }
115- ScriptResult(WriteSet([DataEntry((owner + "_referer"), referer), DataEntry(referalsKey, referals)]), TransferSet([ScriptTransfer(i.caller, i.fee, unit)]))
116- }
107+ else ScriptResult(WriteSet([DataEntry((owner + "_referer"), referer), DataEntry((referer + "_referral"), owner)]), TransferSet([ScriptTransfer(i.caller, i.fee, unit)]))
117108 }
118109 }
119110
120111

github/deemru/w8io/c3f4982 
30.24 ms