tx · 6F43jfoZt4viWuf31bqGURWgFPbgEh27cE1pMMW3sxJD

3PHSC1X1nwLs9JmqMGHkUh1LcpdAopBzbM8:  -0.01000000 Waves

2022.06.02 20:29 [3144538] smart account 3PHSC1X1nwLs9JmqMGHkUh1LcpdAopBzbM8 > SELF 0.00000000 Waves

{ "type": 13, "id": "6F43jfoZt4viWuf31bqGURWgFPbgEh27cE1pMMW3sxJD", "fee": 1000000, "feeAssetId": null, "timestamp": 1654191001731, "version": 2, "chainId": 87, "sender": "3PHSC1X1nwLs9JmqMGHkUh1LcpdAopBzbM8", "senderPublicKey": "EED2BmVD8x3hLUpgpBRJCmXPPYXSP5eLquCiTbUUApJM", "proofs": [ "34MnuaF56JYVfPF12vRoBYWzF879gbrPdxEMdwJKZs4DrgV4HJ58gBQKCGucKpUxAatDfnh4CjGpPA4sQxLgaLKM" ], "script": "base64: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", "height": 3144538, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DFs4ZfcrJXGiNHDH63ZgPcPypx9NRi78VSfm4f6THan9 Next: AxfuFCxaQPDs6oCVExHX5593WpT7suhGpVuDnqrCqcXR Diff:
OldNewDifferences
2222 let dAppFees = base58'3PG1NyiC2rdgX46jb8c5zPGuEAzWXhr4L2W'
2323
2424 let AdmindApp = base58'3PG1NyiC2rdgX46jb8c5zPGuEAzWXhr4L2W'
25-
26-@Callable(i)
27-func Reset () = [IntegerEntry((toBase58String(i.caller.bytes) + "_Payment"), 0), IntegerEntry((toBase58String(i.caller.bytes) + "_Paidtrx"), 0), IntegerEntry((toBase58String(i.caller.bytes) + "_LastPaid"), height)]
28-
29-
3025
3126 @Callable(i)
3227 func DepositFunds (ScopeDesc,Deliverables,FreelancerAddress) = {
133128
134129
135130 @Callable(i)
136-func PayFreelancerOnDemand () = {
137- let PayFreelancer = 4
138- let Fee = 1
139- let WaitTime = 10
140- let FreeLancerPayment = (toBase58String(i.caller.bytes) + "_Payment")
141- let FreelancerAddress = (toBase58String(i.caller.bytes) + "_Freelancer")
142- let LastPaymentBlock = (toBase58String(i.caller.bytes) + "_LastPaid")
143- let PaymentAsset = (toBase58String(i.caller.bytes) + "_Asset")
144- let Paidtrx = (toBase58String(i.caller.bytes) + "_Paidtrx")
145- let amount = match getInteger(this, FreeLancerPayment) {
146- case a: Int =>
147- a
148- case _ =>
149- 0
150- }
151- let PaidtrxLast = match getInteger(this, Paidtrx) {
152- case a: Int =>
153- a
154- case _ =>
155- 0
156- }
157- let LastPaymentBlockValue = match getInteger(this, LastPaymentBlock) {
158- case a: Int =>
159- a
160- case _ =>
161- height
162- }
163- let FreelancerAddressStr = getStringValue(this, FreelancerAddress)
164- let PaymentAssetId = getStringValue(this, PaymentAsset)
165- let AddressFreeLancer = addressFromStringValue(FreelancerAddressStr)
166- let dAppFrees = Address(dAppFees)
167- let AssetUsed = if ((PaymentAssetId == "Waves"))
168- then unit
169- else fromBase58String(PaymentAssetId)
170- if ((0 >= (amount - (Fee * 100000000))))
171- then throw(("You do not have enough funds to make payment, your available funds are: " + toString((amount / 100000000))))
172- else if (if (((LastPaymentBlockValue + WaitTime) > height))
173- then (PaidtrxLast > 1)
174- else false)
175- then throw(((("Cannot make Payment before " + toString(LastPaymentBlockValue)) + " min") + toString(WaitTime)))
176- else {
177- let FeePaid = (Fee * 100000000)
178- let PaidtrxValue = if ((PaidtrxLast == 3))
179- then 0
180- else (PaidtrxLast + 1)
181- let UserAccount = if ((PaidtrxLast == 3))
182- then 0
183- else ((amount - (Fee * 100000000)) - (((PaidtrxValue * 25) * (amount - (Fee * 100000000))) / 100))
184- let Payment2Freelance = ((25 * amount) / 100)
185- $Tuple2([IntegerEntry((toBase58String(i.caller.bytes) + "_Payment"), UserAccount), IntegerEntry((toBase58String(i.caller.bytes) + "_Paidtrx"), PaidtrxValue), IntegerEntry((toBase58String(i.caller.bytes) + "_LastPaid"), height), IntegerEntry("WaitTime", WaitTime), IntegerEntry("LastPaymentBlockValue", LastPaymentBlockValue), IntegerEntry("Check", (LastPaymentBlockValue + WaitTime)), ScriptTransfer(AddressFreeLancer, Payment2Freelance, AssetUsed), ScriptTransfer(dAppFrees, FeePaid, AssetUsed)], AssetUsed)
186- }
187- }
188-
189-
190-
191-@Callable(i)
192131 func AdminTransfer (User,Freelancer,ToFreelancer,ToUser,AdminFee) = if ((i.caller.bytes != AdmindApp))
193132 then throw("Only Admin can do this")
194133 else if ((((ToUser + ToFreelancer) + AdminFee) != 100))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let BUsd = base58'8DLiYZjo3UUaRBTHU7Ayoqg4ihwb6YH1AfXrrhdjQ7K1'
55
66 let USDT = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
77
88 let USDC = base58'6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ'
99
1010 let BTC = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
1111
1212 let ETH = base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu'
1313
1414 let BNB = base58'5UYBPpq4WoU5n4MwpFkgJnW3Fq4B1u3ukpK33ik4QerR'
1515
1616 let USDN = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
1717
1818 let HASH = base58'7RgM3A5AVCUZFbL3EwBicv1eHFCVsaY8z71yda77zrAv'
1919
2020 let KUSD = base58'FXvNWA5Gfy8yLPHGScm6Gmn4DSZX9brFZ9qmEkPxAhGk'
2121
2222 let dAppFees = base58'3PG1NyiC2rdgX46jb8c5zPGuEAzWXhr4L2W'
2323
2424 let AdmindApp = base58'3PG1NyiC2rdgX46jb8c5zPGuEAzWXhr4L2W'
25-
26-@Callable(i)
27-func Reset () = [IntegerEntry((toBase58String(i.caller.bytes) + "_Payment"), 0), IntegerEntry((toBase58String(i.caller.bytes) + "_Paidtrx"), 0), IntegerEntry((toBase58String(i.caller.bytes) + "_LastPaid"), height)]
28-
29-
3025
3126 @Callable(i)
3227 func DepositFunds (ScopeDesc,Deliverables,FreelancerAddress) = {
3328 let FreeLancerPayment = (toBase58String(i.caller.bytes) + "_Payment")
3429 let amount = match getInteger(this, FreeLancerPayment) {
3530 case a: Int =>
3631 a
3732 case _ =>
3833 0
3934 }
4035 if ((amount != 0))
4136 then throw("You have already deposited funds, deposits can only be done once")
4237 else {
4338 let pmt = if ((size(i.payments) == 1))
4439 then i.payments[0]
4540 else throw("Attached payment is required")
4641 if (if (if (if (if (if (if (if (if (if (if ((0 >= pmt.amount))
4742 then (pmt.assetId != BUsd)
4843 else false)
4944 then (pmt.assetId != USDT)
5045 else false)
5146 then (pmt.assetId != USDC)
5247 else false)
5348 then (pmt.assetId != BTC)
5449 else false)
5550 then (pmt.assetId != ETH)
5651 else false)
5752 then (pmt.assetId != BNB)
5853 else false)
5954 then (pmt.assetId != USDN)
6055 else false)
6156 then (pmt.assetId != HASH)
6257 else false)
6358 then (pmt.assetId != KUSD)
6459 else false)
6560 then isDefined(pmt.assetId)
6661 else false)
6762 then throw("Can only deposit accepted tokens, and amount should be positive")
6863 else if (if (if ((ScopeDesc == ""))
6964 then true
7065 else (Deliverables == ""))
7166 then true
7267 else (FreelancerAddress == ""))
7368 then throw("Job Scope, Deliverables desc and Freelancer Wallet Address cannot be empty")
7469 else {
7570 let AssetUsed = if (isDefined(pmt.assetId))
7671 then toBase58String(value(pmt.assetId))
7772 else "Waves"
7873 [StringEntry((toBase58String(i.caller.bytes) + "_Scope"), ScopeDesc), StringEntry((toBase58String(i.caller.bytes) + "_Deliv"), Deliverables), StringEntry((toBase58String(i.caller.bytes) + "_Asset"), AssetUsed), StringEntry((toBase58String(i.caller.bytes) + "_Freelancer"), FreelancerAddress), IntegerEntry((toBase58String(i.caller.bytes) + "_Payment"), pmt.amount)]
7974 }
8075 }
8176 }
8277
8378
8479
8580 @Callable(i)
8681 func PayFreelancer (PayFreelancer) = {
8782 let FreeLancerPayment = (toBase58String(i.caller.bytes) + "_Payment")
8883 let FreelancerAddress = (toBase58String(i.caller.bytes) + "_Freelancer")
8984 let PaymentAsset = (toBase58String(i.caller.bytes) + "_Asset")
9085 let Paidtrx = (toBase58String(i.caller.bytes) + "_Paidtrx")
9186 let amount = match getInteger(this, FreeLancerPayment) {
9287 case a: Int =>
9388 a
9489 case _ =>
9590 0
9691 }
9792 let PaidtrxLast = match getInteger(this, Paidtrx) {
9893 case a: Int =>
9994 a
10095 case _ =>
10196 0
10297 }
10398 let FreelancerAddressStr = getStringValue(this, FreelancerAddress)
10499 let PaymentAssetId = getStringValue(this, PaymentAsset)
105100 let AddressFreeLancer = addressFromStringValue(FreelancerAddressStr)
106101 let dAppFrees = Address(dAppFees)
107102 let AssetUsed = if ((PaymentAssetId == "Waves"))
108103 then unit
109104 else fromBase58String(PaymentAssetId)
110105 if ((0 >= (((95 * amount) / 100) - (PayFreelancer * 100000000))))
111106 then throw(("You do not have enough funds to make payment, your available funds are: " + toString((amount / 100000000))))
112107 else if (if ((PaidtrxLast >= 12))
113108 then (amount > 0)
114109 else false)
115110 then throw("You have already done 12 payments, you cannot make more payments")
116111 else {
117112 let UserAccount = if ((PaidtrxLast == 11))
118113 then 0
119114 else (amount - (PayFreelancer * 100000000))
120115 let Payment2Freelance = if ((PaidtrxLast == 11))
121116 then ((95 * amount) / 100)
122117 else ((95 * PayFreelancer) * 1000000)
123118 let FeePaid = if ((PaidtrxLast == 11))
124119 then ((5 * amount) / 100)
125120 else ((5 * PayFreelancer) * 1000000)
126121 let PaidtrxValue = if ((PaidtrxLast == 11))
127122 then 0
128123 else (PaidtrxLast + 1)
129124 $Tuple2([IntegerEntry((toBase58String(i.caller.bytes) + "_Payment"), UserAccount), IntegerEntry((toBase58String(i.caller.bytes) + "_Paidtrx"), PaidtrxValue), ScriptTransfer(AddressFreeLancer, Payment2Freelance, AssetUsed), ScriptTransfer(dAppFrees, FeePaid, AssetUsed)], AssetUsed)
130125 }
131126 }
132127
133128
134129
135130 @Callable(i)
136-func PayFreelancerOnDemand () = {
137- let PayFreelancer = 4
138- let Fee = 1
139- let WaitTime = 10
140- let FreeLancerPayment = (toBase58String(i.caller.bytes) + "_Payment")
141- let FreelancerAddress = (toBase58String(i.caller.bytes) + "_Freelancer")
142- let LastPaymentBlock = (toBase58String(i.caller.bytes) + "_LastPaid")
143- let PaymentAsset = (toBase58String(i.caller.bytes) + "_Asset")
144- let Paidtrx = (toBase58String(i.caller.bytes) + "_Paidtrx")
145- let amount = match getInteger(this, FreeLancerPayment) {
146- case a: Int =>
147- a
148- case _ =>
149- 0
150- }
151- let PaidtrxLast = match getInteger(this, Paidtrx) {
152- case a: Int =>
153- a
154- case _ =>
155- 0
156- }
157- let LastPaymentBlockValue = match getInteger(this, LastPaymentBlock) {
158- case a: Int =>
159- a
160- case _ =>
161- height
162- }
163- let FreelancerAddressStr = getStringValue(this, FreelancerAddress)
164- let PaymentAssetId = getStringValue(this, PaymentAsset)
165- let AddressFreeLancer = addressFromStringValue(FreelancerAddressStr)
166- let dAppFrees = Address(dAppFees)
167- let AssetUsed = if ((PaymentAssetId == "Waves"))
168- then unit
169- else fromBase58String(PaymentAssetId)
170- if ((0 >= (amount - (Fee * 100000000))))
171- then throw(("You do not have enough funds to make payment, your available funds are: " + toString((amount / 100000000))))
172- else if (if (((LastPaymentBlockValue + WaitTime) > height))
173- then (PaidtrxLast > 1)
174- else false)
175- then throw(((("Cannot make Payment before " + toString(LastPaymentBlockValue)) + " min") + toString(WaitTime)))
176- else {
177- let FeePaid = (Fee * 100000000)
178- let PaidtrxValue = if ((PaidtrxLast == 3))
179- then 0
180- else (PaidtrxLast + 1)
181- let UserAccount = if ((PaidtrxLast == 3))
182- then 0
183- else ((amount - (Fee * 100000000)) - (((PaidtrxValue * 25) * (amount - (Fee * 100000000))) / 100))
184- let Payment2Freelance = ((25 * amount) / 100)
185- $Tuple2([IntegerEntry((toBase58String(i.caller.bytes) + "_Payment"), UserAccount), IntegerEntry((toBase58String(i.caller.bytes) + "_Paidtrx"), PaidtrxValue), IntegerEntry((toBase58String(i.caller.bytes) + "_LastPaid"), height), IntegerEntry("WaitTime", WaitTime), IntegerEntry("LastPaymentBlockValue", LastPaymentBlockValue), IntegerEntry("Check", (LastPaymentBlockValue + WaitTime)), ScriptTransfer(AddressFreeLancer, Payment2Freelance, AssetUsed), ScriptTransfer(dAppFrees, FeePaid, AssetUsed)], AssetUsed)
186- }
187- }
188-
189-
190-
191-@Callable(i)
192131 func AdminTransfer (User,Freelancer,ToFreelancer,ToUser,AdminFee) = if ((i.caller.bytes != AdmindApp))
193132 then throw("Only Admin can do this")
194133 else if ((((ToUser + ToFreelancer) + AdminFee) != 100))
195134 then throw("Total of Percentages cannot be different from 100%")
196135 else {
197136 let FreeLancerPayment = (User + "_Payment")
198137 let FreelancerAddress = (User + "_Freelancer")
199138 let PaymentAsset = (toBase58String(i.caller.bytes) + "_Asset")
200139 let amount = match getInteger(this, FreeLancerPayment) {
201140 case a: Int =>
202141 a
203142 case _ =>
204143 0
205144 }
206145 let FreelancerAddressStr = getStringValue(this, FreelancerAddress)
207146 let AddressFreeLancer = addressFromStringValue(FreelancerAddressStr)
208147 let PaymentAssetId = getStringValue(this, PaymentAsset)
209148 let dAppFrees = Address(dAppFees)
210149 let AddressUser = addressFromStringValue(User)
211150 let AssetUsed = if ((PaymentAssetId == "Waves"))
212151 then unit
213152 else fromBase58String(PaymentAssetId)
214153 if ((amount == 0))
215154 then throw("User's balance is 0 BUsdc cannot realize any payment")
216155 else $Tuple2([IntegerEntry((User + "_Payment"), 0), ScriptTransfer(AddressFreeLancer, ((ToFreelancer * amount) / 100), AssetUsed), ScriptTransfer(AddressUser, ((ToUser * amount) / 100), AssetUsed), ScriptTransfer(dAppFrees, ((AdminFee * amount) / 100), AssetUsed)], AssetUsed)
217156 }
218157
219158

github/deemru/w8io/6500d08 
42.85 ms