tx · 8DQzUaumGPsVCQucVjYFUvjRy36H1mAd4SUthDCfvKRe

3MwoWxBwFKxjUKK53Rxbnwrs8m2MsVMPPa7:  -0.01000000 Waves

2023.11.28 14:24 [2863185] smart account 3MwoWxBwFKxjUKK53Rxbnwrs8m2MsVMPPa7 > SELF 0.00000000 Waves

{ "type": 13, "id": "8DQzUaumGPsVCQucVjYFUvjRy36H1mAd4SUthDCfvKRe", "fee": 1000000, "feeAssetId": null, "timestamp": 1701170698284, "version": 2, "chainId": 84, "sender": "3MwoWxBwFKxjUKK53Rxbnwrs8m2MsVMPPa7", "senderPublicKey": "6oay51Q6zPcFP9bSwUC4Potx2KGyD4AUjpL5uLR4QeRN", "proofs": [ "xVnTroipSjsuUMiWmBQWZNuPDRr7mFJp9hZ16zmb2GswcEnF7xSdCFz1QFWZoJoir6ra66tvCKERQ4pUjKa8miX" ], "script": "base64:AAIFAAAAAAAAABkIAhIFCgMBCAgSDgoMCAEBAQgIAQEBCAEBAAAABAAAAAARdXNlcl9iYWxhbmNlX2RhcHAJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAECAAAAIzNOMXMydzROSGdiclh4TlpYSDlSdGFWVDlwdEhSSmNnU3AyAAAAABREYXBwX0FkZHJlc3NfcHViX2tleQEAAAAgyO2Y2obuVTVYYMc8lugqW2L1IjDFH+TsgVEJaOfOGnMAAAAAEXdoaXRlbGlzdF9hZGRyZXNzCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABBQAAABREYXBwX0FkZHJlc3NfcHViX2tleQAAAAAUbWF4aW11bV92b3VjaGVyX3NpemUAAAAAAAX14QAAAAACAAAAAWkBAAAADklzc3VlX1ZvdWNoZXJzAAAAAwAAAA5Wb3VjaGVyX0Ftb3VudAAAAAdVc2VyX0lEAAAADFVzZXJfQWRkcmVzcwQAAAAZcmVhZF9Ub3RhbFZvdWNoZXJzQmFsYW5jZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAAGkF2YWlsYWJsZV9Wb3VjaGVyc19CYWxhbmNlAgAAAF9BdmFpbGFibGVfVm91Y2hlcnNfQmFsYW5jZSBFbnRyeSBpcyBub3QgRm91bmQuIEluaXRpYXRlIEZpbGxfVm91Y2hlcnNfTGlxdWlkaXR5IEZ1bmN0aW9uIGZpcnN0LgQAAAAbdXBkYXRlX1RvdGFsVm91Y2hlcnNCYWxhbmNlCQAAZQAAAAIFAAAAGXJlYWRfVG90YWxWb3VjaGVyc0JhbGFuY2UFAAAADlZvdWNoZXJfQW1vdW50BAAAABRWb3VjaGVyc0lzc3VlZFRvVXNlcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAGVRvdGFsX1ZvdWNoZXJzX0lzc3VlZF9Ub18FAAAADFVzZXJfQWRkcmVzcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABlUb3RhbFZvdWNoZXJzSXNzdWVkVG9Vc2VyCQAAZAAAAAIFAAAAFFZvdWNoZXJzSXNzdWVkVG9Vc2VyAAAAAAAAAAABBAAAABpWb3VjaGVyc0Ftb3VudElzc3VlZFRvVXNlcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAIFRvdGFsX1ZvdWNoZXJzX0Ftb3VudF9Jc3N1ZWRfVG9fBQAAAAxVc2VyX0FkZHJlc3MDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAfVG90YWxWb3VjaGVyc0Ftb3VudElzc3VlZFRvVXNlcgkAAGQAAAACBQAAABpWb3VjaGVyc0Ftb3VudElzc3VlZFRvVXNlcgUAAAAOVm91Y2hlcl9BbW91bnQEAAAAHVByZXZpb3VzVm91Y2hlcnNCYWxhbmNlb2ZVc2VyBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAMVXNlcl9BZGRyZXNzAgAAABBfVm91Y2hlcl9CYWxhbmNlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAGlRvdGFsVm91Y2hlcnNCYWxhbmNlb2ZVc2VyCQAAZAAAAAIFAAAAHVByZXZpb3VzVm91Y2hlcnNCYWxhbmNlb2ZVc2VyBQAAAA5Wb3VjaGVyX0Ftb3VudAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAARd2hpdGVsaXN0X2FkZHJlc3MJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAJVRoaXMgQWRkcmVzcyBpcyBub3QgQXV0aG9yaXplZC4gT25seSAJAAQlAAAAAQUAAAARd2hpdGVsaXN0X2FkZHJlc3MCAAAAIiBpcyBBdXRob3JpemVkIEFkZHJlc3MgdG8gU2lnbiBpdC4DCQAAZwAAAAIAAAAAAAAAAAAFAAAADlZvdWNoZXJfQW1vdW50CQAAAgAAAAECAAAAUVZvdWNoZXIgQmFsYW5jZSBjYW4ndCBiZSAwIG9yIGdvIGluIG5lZ2F0aXZlIFN0YXRlLiAgSW5jcmVhc2UgdGhlIFZvdWNoZXIgQW1vdW50LgMJAABnAAAAAgAAAAAAAAAAAAUAAAAbdXBkYXRlX1RvdGFsVm91Y2hlcnNCYWxhbmNlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAADZVcGRhdGVkIFZvdWNoZXIgQmFsYW5jZSBjYW4ndCBnbyBpbiBuZWdhdGl2ZSBTdGF0ZSBvZiAJAAGkAAAAAQUAAAAbdXBkYXRlX1RvdGFsVm91Y2hlcnNCYWxhbmNlAgAAACggLzEwXjggV0FWRVMuIFJlZHVjZSB0aGUgVm91Y2hlciBBbW91bnQuAwkAAGYAAAACBQAAAA5Wb3VjaGVyX0Ftb3VudAUAAAAUbWF4aW11bV92b3VjaGVyX3NpemUJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAPElucHV0IFZvdWNoZXIgQmFsYW5jZSBjYW4ndCBleGNlZWQgdGhlIHNldCBtYXhpbXVtIGxpbWl0IG9mIAkAAaQAAAABBQAAABRtYXhpbXVtX3ZvdWNoZXJfc2l6ZQIAAAAMLzEwXjggV2F2ZXMuCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAGVRvdGFsX1ZvdWNoZXJzX0lzc3VlZF9Ub18FAAAADFVzZXJfQWRkcmVzcwUAAAAZVG90YWxWb3VjaGVyc0lzc3VlZFRvVXNlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAACBUb3RhbF9Wb3VjaGVyc19BbW91bnRfSXNzdWVkX1RvXwUAAAAMVXNlcl9BZGRyZXNzBQAAAB9Ub3RhbFZvdWNoZXJzQW1vdW50SXNzdWVkVG9Vc2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAADFVzZXJfQWRkcmVzcwIAAAAQX1ZvdWNoZXJfQmFsYW5jZQUAAAAaVG90YWxWb3VjaGVyc0JhbGFuY2VvZlVzZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAGkF2YWlsYWJsZV9Wb3VjaGVyc19CYWxhbmNlBQAAABt1cGRhdGVfVG90YWxWb3VjaGVyc0JhbGFuY2UFAAAAA25pbAAAAAFpAQAAABpwbGFjZW9wdGlvbkNhbGxXaXRoVm91Y2hlcgAAAAwAAAAMRnVuY3Rpb25OYW1lAAAADlZvdWNoZXJfQW1vdW50AAAABkFtb3VudAAAAA9PcHRpb25Db3VudGVySUQAAAAHVXNlcl9JRAAAAAxVc2VyX0FkZHJlc3MAAAAFUHJpY2UAAAALQ2FsbF9MaW1pdHMAAAAKUHV0X0xpbWl0cwAAAA1PcmFjbGVfU3RhdHVzAAAAFVN0YXJ0X09yZGVyX1RpbWVzdGFtcAAAABNFbmRfT3JkZXJfVGltZXN0YW1wBAAAAAF4CQAD/AAAAAQFAAAABHRoaXMCAAAADklzc3VlX1ZvdWNoZXJzCQAETAAAAAIFAAAADlZvdWNoZXJfQW1vdW50CQAETAAAAAIFAAAAB1VzZXJfSUQJAARMAAAAAgUAAAAMVXNlcl9BZGRyZXNzBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAABeAUAAAABeAQAAAABeQkAA/wAAAAEBQAAABF1c2VyX2JhbGFuY2VfZGFwcAUAAAAMRnVuY3Rpb25OYW1lCQAETAAAAAIFAAAABkFtb3VudAkABEwAAAACBQAAAA9PcHRpb25Db3VudGVySUQJAARMAAAAAgUAAAAHVXNlcl9JRAkABEwAAAACBQAAAAxVc2VyX0FkZHJlc3MJAARMAAAAAgUAAAAFUHJpY2UJAARMAAAAAgUAAAALQ2FsbF9MaW1pdHMJAARMAAAAAgUAAAAKUHV0X0xpbWl0cwkABEwAAAACBQAAAA1PcmFjbGVfU3RhdHVzCQAETAAAAAIFAAAAFVN0YXJ0X09yZGVyX1RpbWVzdGFtcAkABEwAAAACBQAAABNFbmRfT3JkZXJfVGltZXN0YW1wBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAABeQUAAAABeQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAARd2hpdGVsaXN0X2FkZHJlc3MJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAJVRoaXMgQWRkcmVzcyBpcyBub3QgQXV0aG9yaXplZC4gT25seSAJAAQlAAAAAQUAAAARd2hpdGVsaXN0X2FkZHJlc3MCAAAAIiBpcyBBdXRob3JpemVkIEFkZHJlc3MgdG8gU2lnbiBpdC4JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAKRDJEX1N0YXR1cwIAAAAGUGFzc2VkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAACwGNvS", "height": 2863185, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CuCnjNQ5ZDqV6Tbow1sWCfQpPgwyZS4B8TaVVYQSTeCf Next: 9VmKkK1rJsjizvHBQC9vnbuNnScAThqsexvSWSS4c1nT Diff:
OldNewDifferences
77
88 let whitelist_address = addressFromPublicKey(Dapp_Address_pub_key)
99
10+let maximum_voucher_size = 100000000
11+
1012 @Callable(i)
11-func placeoptionCallWithVoucher (Amount,OptionCounterID,User_ID,User_Address,Price,Call_Limits,Put_Limits,Oracle_Status,Start_Order_Timestamp,End_Order_Timestamp) = {
12- let y = invoke(user_balance_dapp, "placeoptionCall", [Amount, OptionCounterID, User_ID, User_Address, Price, Call_Limits, Put_Limits, Oracle_Status, Start_Order_Timestamp, End_Order_Timestamp], nil)
13- if ((y == y))
14- then if ((i.caller != whitelist_address))
15- then throw((("This Address is not Authorized. Only " + toString(whitelist_address)) + " is Authorized Address to Sign it."))
16- else [StringEntry("D2D_Status", "Passed")]
13+func Issue_Vouchers (Voucher_Amount,User_ID,User_Address) = {
14+ let read_TotalVouchersBalance = valueOrErrorMessage(getInteger(this, "Available_Vouchers_Balance"), "Available_Vouchers_Balance Entry is not Found. Initiate Fill_Vouchers_Liquidity Function first.")
15+ let update_TotalVouchersBalance = (read_TotalVouchersBalance - Voucher_Amount)
16+ let VouchersIssuedToUser = match getInteger(this, ("Total_Vouchers_Issued_To_" + User_Address)) {
17+ case a: Int =>
18+ a
19+ case _ =>
20+ 0
21+ }
22+ let TotalVouchersIssuedToUser = (VouchersIssuedToUser + 1)
23+ let VouchersAmountIssuedToUser = match getInteger(this, ("Total_Vouchers_Amount_Issued_To_" + User_Address)) {
24+ case a: Int =>
25+ a
26+ case _ =>
27+ 0
28+ }
29+ let TotalVouchersAmountIssuedToUser = (VouchersAmountIssuedToUser + Voucher_Amount)
30+ let PreviousVouchersBalanceofUser = match getInteger(this, (User_Address + "_Voucher_Balance")) {
31+ case a: Int =>
32+ a
33+ case _ =>
34+ 0
35+ }
36+ let TotalVouchersBalanceofUser = (PreviousVouchersBalanceofUser + Voucher_Amount)
37+ if ((i.caller != whitelist_address))
38+ then throw((("This Address is not Authorized. Only " + toString(whitelist_address)) + " is Authorized Address to Sign it."))
39+ else if ((0 >= Voucher_Amount))
40+ then throw("Voucher Balance can't be 0 or go in negative State. Increase the Voucher Amount.")
41+ else if ((0 >= update_TotalVouchersBalance))
42+ then throw((("Updated Voucher Balance can't go in negative State of " + toString(update_TotalVouchersBalance)) + " /10^8 WAVES. Reduce the Voucher Amount."))
43+ else if ((Voucher_Amount > maximum_voucher_size))
44+ then throw((("Input Voucher Balance can't exceed the set maximum limit of " + toString(maximum_voucher_size)) + "/10^8 Waves."))
45+ else [IntegerEntry(("Total_Vouchers_Issued_To_" + User_Address), TotalVouchersIssuedToUser), IntegerEntry(("Total_Vouchers_Amount_Issued_To_" + User_Address), TotalVouchersAmountIssuedToUser), IntegerEntry((User_Address + "_Voucher_Balance"), TotalVouchersBalanceofUser), IntegerEntry("Available_Vouchers_Balance", update_TotalVouchersBalance)]
46+ }
47+
48+
49+
50+@Callable(i)
51+func placeoptionCallWithVoucher (FunctionName,Voucher_Amount,Amount,OptionCounterID,User_ID,User_Address,Price,Call_Limits,Put_Limits,Oracle_Status,Start_Order_Timestamp,End_Order_Timestamp) = {
52+ let x = invoke(this, "Issue_Vouchers", [Voucher_Amount, User_ID, User_Address], nil)
53+ if ((x == x))
54+ then {
55+ let y = invoke(user_balance_dapp, FunctionName, [Amount, OptionCounterID, User_ID, User_Address, Price, Call_Limits, Put_Limits, Oracle_Status, Start_Order_Timestamp, End_Order_Timestamp], nil)
56+ if ((y == y))
57+ then if ((i.caller != whitelist_address))
58+ then throw((("This Address is not Authorized. Only " + toString(whitelist_address)) + " is Authorized Address to Sign it."))
59+ else [StringEntry("D2D_Status", "Passed")]
60+ else throw("Strict value is not equal to itself.")
61+ }
1762 else throw("Strict value is not equal to itself.")
1863 }
1964
20-
21-@Verifier(tx)
22-func verify () = match tx {
23- case t: Order|ExchangeTransaction|MassTransferTransaction|TransferTransaction =>
24- false
25- case _ =>
26- sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
27-}
2865
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let user_balance_dapp = addressFromStringValue("3N1s2w4NHgbrXxNZXH9RtaVT9ptHRJcgSp2")
55
66 let Dapp_Address_pub_key = base58'EXLfxKmqhQPiProBaoPatTentUSZX5Dd8A8bYDcmfNwt'
77
88 let whitelist_address = addressFromPublicKey(Dapp_Address_pub_key)
99
10+let maximum_voucher_size = 100000000
11+
1012 @Callable(i)
11-func placeoptionCallWithVoucher (Amount,OptionCounterID,User_ID,User_Address,Price,Call_Limits,Put_Limits,Oracle_Status,Start_Order_Timestamp,End_Order_Timestamp) = {
12- let y = invoke(user_balance_dapp, "placeoptionCall", [Amount, OptionCounterID, User_ID, User_Address, Price, Call_Limits, Put_Limits, Oracle_Status, Start_Order_Timestamp, End_Order_Timestamp], nil)
13- if ((y == y))
14- then if ((i.caller != whitelist_address))
15- then throw((("This Address is not Authorized. Only " + toString(whitelist_address)) + " is Authorized Address to Sign it."))
16- else [StringEntry("D2D_Status", "Passed")]
13+func Issue_Vouchers (Voucher_Amount,User_ID,User_Address) = {
14+ let read_TotalVouchersBalance = valueOrErrorMessage(getInteger(this, "Available_Vouchers_Balance"), "Available_Vouchers_Balance Entry is not Found. Initiate Fill_Vouchers_Liquidity Function first.")
15+ let update_TotalVouchersBalance = (read_TotalVouchersBalance - Voucher_Amount)
16+ let VouchersIssuedToUser = match getInteger(this, ("Total_Vouchers_Issued_To_" + User_Address)) {
17+ case a: Int =>
18+ a
19+ case _ =>
20+ 0
21+ }
22+ let TotalVouchersIssuedToUser = (VouchersIssuedToUser + 1)
23+ let VouchersAmountIssuedToUser = match getInteger(this, ("Total_Vouchers_Amount_Issued_To_" + User_Address)) {
24+ case a: Int =>
25+ a
26+ case _ =>
27+ 0
28+ }
29+ let TotalVouchersAmountIssuedToUser = (VouchersAmountIssuedToUser + Voucher_Amount)
30+ let PreviousVouchersBalanceofUser = match getInteger(this, (User_Address + "_Voucher_Balance")) {
31+ case a: Int =>
32+ a
33+ case _ =>
34+ 0
35+ }
36+ let TotalVouchersBalanceofUser = (PreviousVouchersBalanceofUser + Voucher_Amount)
37+ if ((i.caller != whitelist_address))
38+ then throw((("This Address is not Authorized. Only " + toString(whitelist_address)) + " is Authorized Address to Sign it."))
39+ else if ((0 >= Voucher_Amount))
40+ then throw("Voucher Balance can't be 0 or go in negative State. Increase the Voucher Amount.")
41+ else if ((0 >= update_TotalVouchersBalance))
42+ then throw((("Updated Voucher Balance can't go in negative State of " + toString(update_TotalVouchersBalance)) + " /10^8 WAVES. Reduce the Voucher Amount."))
43+ else if ((Voucher_Amount > maximum_voucher_size))
44+ then throw((("Input Voucher Balance can't exceed the set maximum limit of " + toString(maximum_voucher_size)) + "/10^8 Waves."))
45+ else [IntegerEntry(("Total_Vouchers_Issued_To_" + User_Address), TotalVouchersIssuedToUser), IntegerEntry(("Total_Vouchers_Amount_Issued_To_" + User_Address), TotalVouchersAmountIssuedToUser), IntegerEntry((User_Address + "_Voucher_Balance"), TotalVouchersBalanceofUser), IntegerEntry("Available_Vouchers_Balance", update_TotalVouchersBalance)]
46+ }
47+
48+
49+
50+@Callable(i)
51+func placeoptionCallWithVoucher (FunctionName,Voucher_Amount,Amount,OptionCounterID,User_ID,User_Address,Price,Call_Limits,Put_Limits,Oracle_Status,Start_Order_Timestamp,End_Order_Timestamp) = {
52+ let x = invoke(this, "Issue_Vouchers", [Voucher_Amount, User_ID, User_Address], nil)
53+ if ((x == x))
54+ then {
55+ let y = invoke(user_balance_dapp, FunctionName, [Amount, OptionCounterID, User_ID, User_Address, Price, Call_Limits, Put_Limits, Oracle_Status, Start_Order_Timestamp, End_Order_Timestamp], nil)
56+ if ((y == y))
57+ then if ((i.caller != whitelist_address))
58+ then throw((("This Address is not Authorized. Only " + toString(whitelist_address)) + " is Authorized Address to Sign it."))
59+ else [StringEntry("D2D_Status", "Passed")]
60+ else throw("Strict value is not equal to itself.")
61+ }
1762 else throw("Strict value is not equal to itself.")
1863 }
1964
20-
21-@Verifier(tx)
22-func verify () = match tx {
23- case t: Order|ExchangeTransaction|MassTransferTransaction|TransferTransaction =>
24- false
25- case _ =>
26- sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
27-}
2865

github/deemru/w8io/c3f4982 
24.10 ms