tx · GFk4RqGZAG7ewvXSKYwJSSMyXWzYviDACPBUu9eZG3e

3PEaajAdZgWe9GzPKxUEtPrJbx8PMvzXeD8:  -0.01000000 Waves

2022.06.02 23:21 [3144700] smart account 3PEaajAdZgWe9GzPKxUEtPrJbx8PMvzXeD8 > SELF 0.00000000 Waves

{ "type": 13, "id": "GFk4RqGZAG7ewvXSKYwJSSMyXWzYviDACPBUu9eZG3e", "fee": 1000000, "feeAssetId": null, "timestamp": 1654201299025, "version": 2, "chainId": 87, "sender": "3PEaajAdZgWe9GzPKxUEtPrJbx8PMvzXeD8", "senderPublicKey": "By6rgESEhXR1GdtDUQ6fhRQZ4GJVwAzJn89sWhBrTWzq", "proofs": [ "k7cNuh22kVTLeLZn5Qpzz3MtD5kByCypYYdkFwbq8YmnFpMnJcPdvV2DumvzgvqxyWrHpfZpeCbnrpiXfXse2Hc" ], "script": "base64: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ABFQYXltZW50MkZyZWVsYW5jZQUAAAAJQXNzZXRVc2VkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAACWRBcHBGcmVlcwUAAAAHRmVlUGFpZAUAAAAJQXNzZXRVc2VkBQAAAANuaWwFAAAACUFzc2V0VXNlZAAAAAFpAQAAAA1BZG1pblRyYW5zZmVyAAAABQAAAARVc2VyAAAACkZyZWVsYW5jZXIAAAAMVG9GcmVlbGFuY2VyAAAABlRvVXNlcgAAAAhBZG1pbkZlZQMJAQAAAAIhPQAAAAIICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMFAAAACUFkbWluZEFwcAkAAAIAAAABAgAAABZPbmx5IEFkbWluIGNhbiBkbyB0aGlzAwkBAAAAAiE9AAAAAgkAAGQAAAACCQAAZAAAAAIFAAAABlRvVXNlcgUAAAAMVG9GcmVlbGFuY2VyBQAAAAhBZG1pbkZlZQAAAAAAAAAAZAkAAAIAAAABAgAAADJUb3RhbCBvZiBQZXJjZW50YWdlcyBjYW5ub3QgYmUgZGlmZmVyZW50IGZyb20gMTAwJQQAAAARRnJlZUxhbmNlclBheW1lbnQJAAEsAAAAAgUAAAAEVXNlcgIAAAAIX1BheW1lbnQEAAAAEUZyZWVsYW5jZXJBZGRyZXNzCQABLAAAAAIFAAAABFVzZXICAAAAC19GcmVlbGFuY2VyBAAAAAxQYXltZW50QXNzZXQJAAEsAAAAAgUAAAAEVXNlcgIAAAAGX0Fzc2V0BAAAAAZhbW91bnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAARRnJlZUxhbmNlclBheW1lbnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAURnJlZWxhbmNlckFkZHJlc3NTdHIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAEUZyZWVsYW5jZXJBZGRyZXNzBAAAABFBZGRyZXNzRnJlZUxhbmNlcgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAURnJlZWxhbmNlckFkZHJlc3NTdHIEAAAADlBheW1lbnRBc3NldElkCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAxQYXltZW50QXNzZXQEAAAACWRBcHBGcmVlcwkBAAAAB0FkZHJlc3MAAAABBQAAAAhkQXBwRmVlcwQAAAALQWRkcmVzc1VzZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABFVzZXIEAAAACUFzc2V0VXNlZAMJAAAAAAAAAgUAAAAOUGF5bWVudEFzc2V0SWQCAAAABVdhdmVzBQAAAAR1bml0CQACWQAAAAEFAAAADlBheW1lbnRBc3NldElkAwkAAAAAAAACBQAAAAZhbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAA0VXNlcidzIGJhbGFuY2UgaXMgMCBCVXNkYyBjYW5ub3QgcmVhbGl6ZSBhbnkgcGF5bWVudAkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABFVzZXICAAAACF9QYXltZW50AAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAEUFkZHJlc3NGcmVlTGFuY2VyCQAAaQAAAAIJAABoAAAAAgUAAAAMVG9GcmVlbGFuY2VyBQAAAAZhbW91bnQAAAAAAAAAAGQFAAAACUFzc2V0VXNlZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAtBZGRyZXNzVXNlcgkAAGkAAAACCQAAaAAAAAIFAAAABlRvVXNlcgUAAAAGYW1vdW50AAAAAAAAAABkBQAAAAlBc3NldFVzZWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAJZEFwcEZyZWVzCQAAaQAAAAIJAABoAAAAAgUAAAAIQWRtaW5GZWUFAAAABmFtb3VudAAAAAAAAAAAZAUAAAAJQXNzZXRVc2VkBQAAAANuaWwFAAAACUFzc2V0VXNlZAAAAABvf0B7", "height": 3144700, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HGvrEimAbwMGtABK7HHbq8Q4THUhtFi2Dmb89dti2P8K Next: FzpZeG7Hzk1wrUyTonCH6e8Jm2ZzYkJ8UURTkQjeNFsu Diff:
OldNewDifferences
1919
2020 let KUSD = base58'FXvNWA5Gfy8yLPHGScm6Gmn4DSZX9brFZ9qmEkPxAhGk'
2121
22-let dAppFees = base58'3P74buHt98BnojFcaREJZtb98KDyUmZGemJ'
22+let dAppFees = base58'3PG1NyiC2rdgX46jb8c5zPGuEAzWXhr4L2W'
2323
24-let AdmindApp = base58'3P74buHt98BnojFcaREJZtb98KDyUmZGemJ'
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-
24+let AdmindApp = base58'3PG1NyiC2rdgX46jb8c5zPGuEAzWXhr4L2W'
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))
203142 case _ =>
204143 0
205144 }
145+ let FreelancerAddressStr = getStringValue(this, FreelancerAddress)
146+ let AddressFreeLancer = addressFromStringValue(FreelancerAddressStr)
206147 let PaymentAssetId = getStringValue(this, PaymentAsset)
207- throw(("Check: " + PaymentAssetId))
148+ let dAppFrees = Address(dAppFees)
149+ let AddressUser = addressFromStringValue(User)
150+ let AssetUsed = if ((PaymentAssetId == "Waves"))
151+ then unit
152+ else fromBase58String(PaymentAssetId)
153+ if ((amount == 0))
154+ then throw("User's balance is 0 BUsdc cannot realize any payment")
155+ 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)
208156 }
209157
210158
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
22-let dAppFees = base58'3P74buHt98BnojFcaREJZtb98KDyUmZGemJ'
22+let dAppFees = base58'3PG1NyiC2rdgX46jb8c5zPGuEAzWXhr4L2W'
2323
24-let AdmindApp = base58'3P74buHt98BnojFcaREJZtb98KDyUmZGemJ'
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-
24+let AdmindApp = base58'3PG1NyiC2rdgX46jb8c5zPGuEAzWXhr4L2W'
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 = (User + "_Asset")
200139 let amount = match getInteger(this, FreeLancerPayment) {
201140 case a: Int =>
202141 a
203142 case _ =>
204143 0
205144 }
145+ let FreelancerAddressStr = getStringValue(this, FreelancerAddress)
146+ let AddressFreeLancer = addressFromStringValue(FreelancerAddressStr)
206147 let PaymentAssetId = getStringValue(this, PaymentAsset)
207- throw(("Check: " + PaymentAssetId))
148+ let dAppFrees = Address(dAppFees)
149+ let AddressUser = addressFromStringValue(User)
150+ let AssetUsed = if ((PaymentAssetId == "Waves"))
151+ then unit
152+ else fromBase58String(PaymentAssetId)
153+ if ((amount == 0))
154+ then throw("User's balance is 0 BUsdc cannot realize any payment")
155+ 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)
208156 }
209157
210158

github/deemru/w8io/3ef1775 
42.63 ms