tx · CbWX4d3kkdCHKxrVVe774o6msSRvpV5k6eEoH9xfFB92 3P5SX2VmcwF1QeEJPfjNC7YQPwFYh1GLES3: -0.01000000 Waves 2022.11.07 12:22 [3371883] smart account 3P5SX2VmcwF1QeEJPfjNC7YQPwFYh1GLES3 > SELF 0.00000000 Waves
{ "type": 13, "id": "CbWX4d3kkdCHKxrVVe774o6msSRvpV5k6eEoH9xfFB92", "fee": 1000000, "feeAssetId": null, "timestamp": 1667813057149, "version": 2, "chainId": 87, "sender": "3P5SX2VmcwF1QeEJPfjNC7YQPwFYh1GLES3", "senderPublicKey": "32jPXwTr1LWfghxGmvNJYcx5X9jHP89cJR34h3tYQmFn", "proofs": [ "5vGmPSNEQTMK6r6tuGy54J73CZ8pT9fLCBL6aimjYLpZ8SsggE256Xf2XSwzRth34yAD7kJeWap5XXNDXtCeLFtU" ], "script": "base64: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", "height": 3371883, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4onAqGpE3SdvS9RtUQHbzLUSuwE2529hxkXk5VZKSie4 Next: 8HZcso6MoVF6dsrZgnW7PEfH2RjPE6WPNWYSHJPzKWz9 Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let AINTID = fromBase58String("66DUhUoJaoZcstkKpcoN3FUcqjB6v8VJd5ZQd6RsPxhv") | |
5 | + | ||
4 | 6 | let WAVESIDSTR = "WAVES" | |
5 | 7 | ||
6 | 8 | let WAVESID = fromBase58String(WAVESIDSTR) | |
25 | 27 | let beneficiaryAddress = addressFromStringValue(beneficiaryAddressStr58) | |
26 | 28 | let price = valueOrElse(getInteger(keyPrice()), MULT8) | |
27 | 29 | let tier = valueOrElse(getInteger(keyTier()), (MULT8 * 10)) | |
28 | - | [StringEntry(keyBeneficiaryAddress(), toString(beneficiaryAddress)), IntegerEntry(keyPrice(), price)] | |
30 | + | [StringEntry(keyBeneficiaryAddress(), toString(beneficiaryAddress)), IntegerEntry(keyTier(), tier), IntegerEntry(keyPrice(), price)] | |
29 | 31 | } | |
30 | 32 | ||
31 | 33 | ||
63 | 65 | } | |
64 | 66 | ||
65 | 67 | ||
68 | + | ||
69 | + | @Callable(i) | |
70 | + | func mint () = { | |
71 | + | let pmt = i.payments[0] | |
72 | + | let pmtAssetId = valueOrElse(pmt.assetId, WAVESID) | |
73 | + | let amount = pmt.amount | |
74 | + | if ((size(i.payments) != 1)) | |
75 | + | then throw("exact 1 payment must be attached") | |
76 | + | else if ((pmtAssetId != WAVESID)) | |
77 | + | then throw("only WAVES can be used in payment") | |
78 | + | else { | |
79 | + | let price = getIntegerValue(keyPrice()) | |
80 | + | let tier = getIntegerValue(keyTier()) | |
81 | + | let addressBeneficiary = addressFromStringValue(getStringValue(keyBeneficiaryAddress())) | |
82 | + | let amountAint = ((amount / price) * MULT8) | |
83 | + | [ScriptTransfer(i.caller, amountAint, AINTID), ScriptTransfer(addressBeneficiary, amount, WAVESID)] | |
84 | + | } | |
85 | + | } | |
86 | + | ||
87 | + |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let AINTID = fromBase58String("66DUhUoJaoZcstkKpcoN3FUcqjB6v8VJd5ZQd6RsPxhv") | |
5 | + | ||
4 | 6 | let WAVESIDSTR = "WAVES" | |
5 | 7 | ||
6 | 8 | let WAVESID = fromBase58String(WAVESIDSTR) | |
7 | 9 | ||
8 | 10 | let MULT8 = 100000000 | |
9 | 11 | ||
10 | 12 | let SEP = "__" | |
11 | 13 | ||
12 | 14 | func keyBeneficiaryAddress () = "%s__beneficiaryAddress" | |
13 | 15 | ||
14 | 16 | ||
15 | 17 | func keyPrice () = "%s__price" | |
16 | 18 | ||
17 | 19 | ||
18 | 20 | func keyTier () = "%s__tier" | |
19 | 21 | ||
20 | 22 | ||
21 | 23 | @Callable(i) | |
22 | 24 | func constructor (beneficiaryAddressStr58) = if ((this != i.caller)) | |
23 | 25 | then throw("permissions denied") | |
24 | 26 | else { | |
25 | 27 | let beneficiaryAddress = addressFromStringValue(beneficiaryAddressStr58) | |
26 | 28 | let price = valueOrElse(getInteger(keyPrice()), MULT8) | |
27 | 29 | let tier = valueOrElse(getInteger(keyTier()), (MULT8 * 10)) | |
28 | - | [StringEntry(keyBeneficiaryAddress(), toString(beneficiaryAddress)), IntegerEntry(keyPrice(), price)] | |
30 | + | [StringEntry(keyBeneficiaryAddress(), toString(beneficiaryAddress)), IntegerEntry(keyTier(), tier), IntegerEntry(keyPrice(), price)] | |
29 | 31 | } | |
30 | 32 | ||
31 | 33 | ||
32 | 34 | ||
33 | 35 | @Callable(i) | |
34 | 36 | func deposit (hash) = { | |
35 | 37 | let pmt = i.payments[0] | |
36 | 38 | let pmtAssetId = valueOrElse(pmt.assetId, WAVESID) | |
37 | 39 | let amount = pmt.amount | |
38 | 40 | if ((size(i.payments) != 1)) | |
39 | 41 | then throw("exact 1 payment must be attached") | |
40 | 42 | else if ((pmtAssetId != WAVESID)) | |
41 | 43 | then throw("only WAVES can be used in payment") | |
42 | 44 | else { | |
43 | 45 | let key = ("%s__" + toString(i.caller)) | |
44 | 46 | let val = ((((("%s%s__" + hash) + SEP) + toString(height)) + SEP) + toString(amount)) | |
45 | 47 | [StringEntry(key, val)] | |
46 | 48 | } | |
47 | 49 | } | |
48 | 50 | ||
49 | 51 | ||
50 | 52 | ||
51 | 53 | @Callable(i) | |
52 | 54 | func refund (secret) = { | |
53 | 55 | let key = ("%s__" + toString(i.caller)) | |
54 | 56 | let val = getStringValue(key) | |
55 | 57 | let hash = split(val, SEP)[1] | |
56 | 58 | let h = toInt(parseBigIntValue(split(val, SEP)[2])) | |
57 | 59 | let amount = parseIntValue(split(val, SEP)[3]) | |
58 | 60 | if ((toBase58String(keccak256(blake2b256(toBytes(secret)))) != hash)) | |
59 | 61 | then throw("secret is wrong") | |
60 | 62 | else if ((60 > (height - h))) | |
61 | 63 | then throw("too early to refund") | |
62 | 64 | else [DeleteEntry(key), ScriptTransfer(i.caller, amount, WAVESID)] | |
63 | 65 | } | |
64 | 66 | ||
65 | 67 | ||
68 | + | ||
69 | + | @Callable(i) | |
70 | + | func mint () = { | |
71 | + | let pmt = i.payments[0] | |
72 | + | let pmtAssetId = valueOrElse(pmt.assetId, WAVESID) | |
73 | + | let amount = pmt.amount | |
74 | + | if ((size(i.payments) != 1)) | |
75 | + | then throw("exact 1 payment must be attached") | |
76 | + | else if ((pmtAssetId != WAVESID)) | |
77 | + | then throw("only WAVES can be used in payment") | |
78 | + | else { | |
79 | + | let price = getIntegerValue(keyPrice()) | |
80 | + | let tier = getIntegerValue(keyTier()) | |
81 | + | let addressBeneficiary = addressFromStringValue(getStringValue(keyBeneficiaryAddress())) | |
82 | + | let amountAint = ((amount / price) * MULT8) | |
83 | + | [ScriptTransfer(i.caller, amountAint, AINTID), ScriptTransfer(addressBeneficiary, amount, WAVESID)] | |
84 | + | } | |
85 | + | } | |
86 | + | ||
87 | + |
github/deemru/w8io/3ef1775 28.93 ms ◑![]()