tx · HvzFbL3qgyRNRLXsscckdpndbpkwgVX9j33dvmKokGH7

3MqSVVMsPLhbavWyUu81TPFCXs5a5c1vuHz:  -0.01400000 Waves

2019.07.07 20:43 [575499] smart account 3MqSVVMsPLhbavWyUu81TPFCXs5a5c1vuHz > SELF 0.00000000 Waves

{ "type": 13, "id": "HvzFbL3qgyRNRLXsscckdpndbpkwgVX9j33dvmKokGH7", "fee": 1400000, "feeAssetId": null, "timestamp": 1562521434077, "version": 1, "sender": "3MqSVVMsPLhbavWyUu81TPFCXs5a5c1vuHz", "senderPublicKey": "F4oaEUZCJFZeYV17bYU99QsvVc5F9UzZG56oXzHwM2CC", "proofs": [ "3x88C8YchZxR5bQcnXHAsKKXSXZg1bfC3S6VdnqmKZvLrv6sryH6VkCWBwT8Nekpi22u5icNrx2fN7vZoPDmSrLh" ], "script": "base64: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DWNoYW5nZUFkZHJlc3MFAAAABW93bmVyCQAAZQAAAAIJAABlAAAAAgkAAGUAAAACBQAAAAZhbW91bnQFAAAACWluY0xldmVsMQUAAAAJaW5jTGV2ZWwyBQAAAAlpbmNMZXZlbDMCAAAABmNoYW5nZQUAAAAEdHhpZAUAAAAJdGltZXN0YW1wBQAAAANuaWwJAARMAAAAAgkBAAAAEGJhbGFuY2VJbmNyZW1lbnQAAAACBQAAAA1jaGFuZ2VBZGRyZXNzCQAAZQAAAAIJAABlAAAAAgUAAAAGYW1vdW50BQAAAAlpbmNMZXZlbDEFAAAACWluY0xldmVsMgkABEwAAAACCQEAAAAWcmVjb3JkQmFsYW5jZUluY3JlbWVudAAAAAYFAAAADWNoYW5nZUFkZHJlc3MFAAAABW93bmVyCQAAZQAAAAIJAABlAAAAAgUAAAAGYW1vdW50BQAAAAlpbmNMZXZlbDEFAAAACWluY0xldmVsMgIAAAAGY2hhbmdlBQAAAAR0eGlkBQAAAAl0aW1lc3RhbXAFAAAAA25pbAkABEwAAAACCQEAAAAQYmFsYW5jZUluY3JlbWVudAAAAAIFAAAADWNoYW5nZUFkZHJlc3MJAABlAAAAAgUAAAAGYW1vdW50BQAAAAlpbmNMZXZlbDEJAARMAAAAAgkBAAAAFnJlY29yZEJhbGFuY2VJbmNyZW1lbnQAAAAGBQAAAA1jaGFuZ2VBZGRyZXNzBQAAAAVvd25lcgkAAGUAAAACBQAAAAZhbW91bnQFAAAACWluY0xldmVsMQIAAAAGY2hhbmdlBQAAAAR0eGlkBQAAAAl0aW1lc3RhbXAFAAAAA25pbAkABEwAAAACCQEAAAAQYmFsYW5jZUluY3JlbWVudAAAAAIFAAAADWNoYW5nZUFkZHJlc3MFAAAABmFtb3VudAkABEwAAAACCQEAAAAWcmVjb3JkQmFsYW5jZUluY3JlbWVudAAAAAYFAAAADWNoYW5nZUFkZHJlc3MFAAAABW93bmVyBQAAAAZhbW91bnQCAAAABmNoYW5nZQUAAAAEdHhpZAUAAAAJdGltZXN0YW1wBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCAUA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", "chainId": 84, "height": 575499, "spentComplexity": 0 } View: original | compacted Prev: AWGFPNavYsp3eiDcodN5c3cJoSGAquiBswHEBhKAdqcZ Next: 41VmHCqArHeBY1GmEzPGq9zjzruHqHEc99Pm4XRmhp9L Diff:
OldNewDifferences
1313
1414 let minWithdraw = 1000000
1515
16-let changeOwnerKey = "AD2vbzpR3ZMXiY1ZhBdq4iH1wz5w6tUCHPz1vvNfyCqE"
16+let changeAddress = "3Mpy9nDufCJFGvv342pf1umBmE6eNxwkJJ1"
1717
1818 func balanceIncrement (address,inc) = {
1919 let balanceKey = (address + "_balance")
3434
3535 func checkFee (i) = if ((i.fee > maxFee))
3636 then throw("unreasonable large fee")
37- else true
37+ else if ((i.feeAssetId != unit))
38+ then throw("fee must be in WAVES")
39+ else true
3840
3941
4042 func getTimestamp () = {
6062 [balanceIncrement(ref2, incLevel2), recordBalanceIncrement(ref2, owner, incLevel2, "l2", txid, timestamp), match getReferer(ref2) {
6163 case ref3: String =>
6264 let incLevel3 = ((amount * level3) / 1000)
63-[balanceIncrement(ref3, incLevel3), recordBalanceIncrement(ref3, owner, incLevel3, "l3", txid, timestamp), balanceIncrement(changeOwnerKey, (((amount - incLevel1) - incLevel2) - incLevel3)), recordBalanceIncrement(changeOwnerKey, owner, (((amount - incLevel1) - incLevel2) - incLevel3), "change", txid, timestamp)]
65+[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)]
6466 case _ =>
65-[balanceIncrement(changeOwnerKey, ((amount - incLevel1) - incLevel2)), recordBalanceIncrement(changeOwnerKey, owner, ((amount - incLevel1) - incLevel2), "change", txid, timestamp)]
67+[balanceIncrement(changeAddress, ((amount - incLevel1) - incLevel2)), recordBalanceIncrement(changeAddress, owner, ((amount - incLevel1) - incLevel2), "change", txid, timestamp)]
6668 }]
6769 case _ =>
68-[balanceIncrement(changeOwnerKey, (amount - incLevel1)), recordBalanceIncrement(changeOwnerKey, owner, (amount - incLevel1), "change", txid, timestamp)]
70+[balanceIncrement(changeAddress, (amount - incLevel1)), recordBalanceIncrement(changeAddress, owner, (amount - incLevel1), "change", txid, timestamp)]
6971 }]
7072 case _ =>
71-[balanceIncrement(changeOwnerKey, amount), recordBalanceIncrement(changeOwnerKey, owner, amount, "change", txid, timestamp)]
73+[balanceIncrement(changeAddress, amount), recordBalanceIncrement(changeAddress, owner, amount, "change", txid, timestamp)]
7274 }), TransferSet([ScriptTransfer(i.caller, i.fee, unit)]))
7375 }
7476
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
16-let changeOwnerKey = "AD2vbzpR3ZMXiY1ZhBdq4iH1wz5w6tUCHPz1vvNfyCqE"
16+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")
37- else true
37+ else if ((i.feeAssetId != unit))
38+ then throw("fee must be in WAVES")
39+ else true
3840
3941
4042 func getTimestamp () = {
4143 let block = extract(blockInfoByHeight(height))
4244 toString(block.timestamp)
4345 }
4446
4547
4648 @Callable(i)
4749 func fund () = {
4850 let owner = toBase58String(i.caller.bytes)
4951 let txid = toBase58String(i.transactionId)
5052 let timestamp = getTimestamp()
5153 let amount = extract(i.payment).amount
5254 let cf = checkFee(i)
5355 ScriptResult(WriteSet( match getReferer(owner) {
5456 case ref1: String =>
5557 let incLevel1 = ((amount * level1) / 1000)
5658 let incCashBack = ((amount * cashBack) / 1000)
5759 [balanceIncrement(owner, incCashBack), recordBalanceIncrement(owner, owner, incCashBack, "cashback", txid, timestamp), balanceIncrement(ref1, incLevel1), recordBalanceIncrement(ref1, owner, incLevel1, "l1", txid, timestamp), match getReferer(ref1) {
5860 case ref2: String =>
5961 let incLevel2 = ((amount * level2) / 1000)
6062 [balanceIncrement(ref2, incLevel2), recordBalanceIncrement(ref2, owner, incLevel2, "l2", txid, timestamp), match getReferer(ref2) {
6163 case ref3: String =>
6264 let incLevel3 = ((amount * level3) / 1000)
63-[balanceIncrement(ref3, incLevel3), recordBalanceIncrement(ref3, owner, incLevel3, "l3", txid, timestamp), balanceIncrement(changeOwnerKey, (((amount - incLevel1) - incLevel2) - incLevel3)), recordBalanceIncrement(changeOwnerKey, owner, (((amount - incLevel1) - incLevel2) - incLevel3), "change", txid, timestamp)]
65+[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)]
6466 case _ =>
65-[balanceIncrement(changeOwnerKey, ((amount - incLevel1) - incLevel2)), recordBalanceIncrement(changeOwnerKey, owner, ((amount - incLevel1) - incLevel2), "change", txid, timestamp)]
67+[balanceIncrement(changeAddress, ((amount - incLevel1) - incLevel2)), recordBalanceIncrement(changeAddress, owner, ((amount - incLevel1) - incLevel2), "change", txid, timestamp)]
6668 }]
6769 case _ =>
68-[balanceIncrement(changeOwnerKey, (amount - incLevel1)), recordBalanceIncrement(changeOwnerKey, owner, (amount - incLevel1), "change", txid, timestamp)]
70+[balanceIncrement(changeAddress, (amount - incLevel1)), recordBalanceIncrement(changeAddress, owner, (amount - incLevel1), "change", txid, timestamp)]
6971 }]
7072 case _ =>
71-[balanceIncrement(changeOwnerKey, amount), recordBalanceIncrement(changeOwnerKey, owner, amount, "change", txid, timestamp)]
73+[balanceIncrement(changeAddress, amount), recordBalanceIncrement(changeAddress, owner, amount, "change", txid, timestamp)]
7274 }), TransferSet([ScriptTransfer(i.caller, i.fee, unit)]))
7375 }
7476
7577
7678
7779 @Callable(i)
7880 func withdraw () = {
7981 let cf = checkFee(i)
8082 let owner = toBase58String(i.caller.bytes)
8183 let txid = toBase58String(i.transactionId)
8284 let balanceKey = (owner + "_balance")
8385 let amount = match getInteger(this, balanceKey) {
8486 case b: Int =>
8587 b
8688 case _ =>
8789 0
8890 }
8991 if ((minWithdraw > amount))
9092 then throw(("Min withdraw amount is" + toString(minWithdraw)))
9193 else ScriptResult(WriteSet([DataEntry(balanceKey, 0), DataEntry(((("withdraw_" + owner) + "_") + txid), ((toString(amount) + ":") + getTimestamp()))]), TransferSet([ScriptTransfer(i.caller, (amount + i.fee), unit)]))
9294 }
9395
9496
9597
9698 @Callable(i)
9799 func register (referer,salt) = {
98100 let cf = checkFee(i)
99101 if ((take(toBase58String(i.transactionId), 3) != "123"))
100102 then throw("proof of work failed")
101103 else {
102104 let owner = toBase58String(i.caller.bytes)
103105 if (isDefined(getReferer(owner)))
104106 then throw("Already registered")
105107 else {
106108 let referalsKey = (referer + "_referral")
107109 let referals = match getString(this, referalsKey) {
108110 case oldRefs: String =>
109111 ((oldRefs + ",") + owner)
110112 case _ =>
111113 owner
112114 }
113115 ScriptResult(WriteSet([DataEntry((owner + "_referer"), referer), DataEntry(referalsKey, referals)]), TransferSet([ScriptTransfer(i.caller, i.fee, unit)]))
114116 }
115117 }
116118 }
117119
118120

github/deemru/w8io/873ac7e 
27.11 ms