tx · 12vSW3GQ95NrhnTVMPNneumJVD8ko3qnoDzfKf2AjyQT
3MxW2aG6PcdZeNjj1DuzGSbmWoy2BDvmtSD: -0.01000000 Waves
2024.10.28 11:10 [3346465] smart account 3MxW2aG6PcdZeNjj1DuzGSbmWoy2BDvmtSD > SELF 0.00000000 Waves
{
"type": 13,
"id": "12vSW3GQ95NrhnTVMPNneumJVD8ko3qnoDzfKf2AjyQT",
"fee": 1000000,
"feeAssetId": null,
"timestamp": 1730103073446,
"version": 2,
"chainId": 84,
"sender": "3MxW2aG6PcdZeNjj1DuzGSbmWoy2BDvmtSD",
"senderPublicKey": "HtED8Ks6yPKYzEnXYAoLvskVyZuFW3YcZH8JF5NWbMvb",
"proofs": [
"5PsACz7VhuZD3qQ68uzxYi8FaadxDkhGid46eAU91xbUD8AQZ2L8jGAyCTspSDrQxevcHrAQGRRrrxistLXF1FF4"
],
"script": "base64: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",
"height": 3346465,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: GwPpaB56o31qAtvauwC18Y5TdWZ4zNtfXS4w8YpFZrQY
Next: none
Diff:
Old | New | | Differences |
---|
8 | 8 | | let BAI_ASSET_ID = base58'AxGKQRxKo4F2EbhrRq6N2tdLsxtMnpzQsS4QemV6V1W1' |
---|
9 | 9 | | |
---|
10 | 10 | | @Callable(i) |
---|
11 | | - | func getAnswerForChat (chatId,cid) = { |
---|
| 11 | + | func getAnswerForChat (chatId,cid,taskType) = { |
---|
12 | 12 | | let numberOfPayments = size(i.payments) |
---|
13 | 13 | | if ((numberOfPayments != 1)) |
---|
14 | 14 | | then throw("Payment necessary!") |
---|
|
16 | 16 | | let payment = i.payments[0] |
---|
17 | 17 | | let fee = payment.amount |
---|
18 | 18 | | let feeAssetId = payment.assetId |
---|
19 | | - | let minFee = match getInteger(BAI_CONTRACT, "price_fullchatgpt") { |
---|
| 19 | + | let minFee = match getInteger(BAI_CONTRACT, ("price_" + taskType)) { |
---|
20 | 20 | | case n: Int => |
---|
21 | 21 | | n |
---|
22 | 22 | | case _ => |
---|
|
29 | 29 | | else { |
---|
30 | 30 | | let publicKey = toBase58String(i.callerPublicKey) |
---|
31 | 31 | | let timestamp = toString(lastBlock.timestamp) |
---|
32 | | - | let result = invoke(BAI_CONTRACT, "registerTaskCallback", [cid, "fullchatgpt", "callback"], [AttachedPayment(BAI_ASSET_ID, 10000000)]) |
---|
| 32 | + | let result = invoke(BAI_CONTRACT, "registerTaskCallback", [cid, taskType, "callback"], [AttachedPayment(BAI_ASSET_ID, 10000000)]) |
---|
33 | 33 | | if ((result == result)) |
---|
34 | 34 | | then { |
---|
35 | 35 | | let taskId = match result { |
---|
|
38 | 38 | | case _ => |
---|
39 | 39 | | throw("Unknown task id!") |
---|
40 | 40 | | } |
---|
41 | | - | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_status"), "waiting"), StringEntry(taskId, chatId), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "waiting")), StringEntry((chatId + "_initiator"), publicKey)] |
---|
| 41 | + | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_tasktype"), taskType), StringEntry((chatId + "_status"), "waiting"), StringEntry((chatId + "_initiator"), publicKey), StringEntry(taskId, chatId), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "waiting"))] |
---|
42 | 42 | | } |
---|
43 | 43 | | else throw("Strict value is not equal to itself.") |
---|
44 | 44 | | } |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 5 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let BAI_CONTRACT_PUBLIC_KEY = base58'DS6HkopS9zypvxX6VhkdNvv6v4wcPZuChRvTwKJeacxE' |
---|
5 | 5 | | |
---|
6 | 6 | | let BAI_CONTRACT = addressFromPublicKey(BAI_CONTRACT_PUBLIC_KEY) |
---|
7 | 7 | | |
---|
8 | 8 | | let BAI_ASSET_ID = base58'AxGKQRxKo4F2EbhrRq6N2tdLsxtMnpzQsS4QemV6V1W1' |
---|
9 | 9 | | |
---|
10 | 10 | | @Callable(i) |
---|
11 | | - | func getAnswerForChat (chatId,cid) = { |
---|
| 11 | + | func getAnswerForChat (chatId,cid,taskType) = { |
---|
12 | 12 | | let numberOfPayments = size(i.payments) |
---|
13 | 13 | | if ((numberOfPayments != 1)) |
---|
14 | 14 | | then throw("Payment necessary!") |
---|
15 | 15 | | else { |
---|
16 | 16 | | let payment = i.payments[0] |
---|
17 | 17 | | let fee = payment.amount |
---|
18 | 18 | | let feeAssetId = payment.assetId |
---|
19 | | - | let minFee = match getInteger(BAI_CONTRACT, "price_fullchatgpt") { |
---|
| 19 | + | let minFee = match getInteger(BAI_CONTRACT, ("price_" + taskType)) { |
---|
20 | 20 | | case n: Int => |
---|
21 | 21 | | n |
---|
22 | 22 | | case _ => |
---|
23 | 23 | | 0 |
---|
24 | 24 | | } |
---|
25 | 25 | | if (if ((feeAssetId != BAI_ASSET_ID)) |
---|
26 | 26 | | then true |
---|
27 | 27 | | else (minFee > fee)) |
---|
28 | 28 | | then throw("Payment of the minimal BAI amount necessary!") |
---|
29 | 29 | | else { |
---|
30 | 30 | | let publicKey = toBase58String(i.callerPublicKey) |
---|
31 | 31 | | let timestamp = toString(lastBlock.timestamp) |
---|
32 | | - | let result = invoke(BAI_CONTRACT, "registerTaskCallback", [cid, "fullchatgpt", "callback"], [AttachedPayment(BAI_ASSET_ID, 10000000)]) |
---|
| 32 | + | let result = invoke(BAI_CONTRACT, "registerTaskCallback", [cid, taskType, "callback"], [AttachedPayment(BAI_ASSET_ID, 10000000)]) |
---|
33 | 33 | | if ((result == result)) |
---|
34 | 34 | | then { |
---|
35 | 35 | | let taskId = match result { |
---|
36 | 36 | | case s: String => |
---|
37 | 37 | | s |
---|
38 | 38 | | case _ => |
---|
39 | 39 | | throw("Unknown task id!") |
---|
40 | 40 | | } |
---|
41 | | - | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_status"), "waiting"), StringEntry(taskId, chatId), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "waiting")), StringEntry((chatId + "_initiator"), publicKey)] |
---|
| 41 | + | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_tasktype"), taskType), StringEntry((chatId + "_status"), "waiting"), StringEntry((chatId + "_initiator"), publicKey), StringEntry(taskId, chatId), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "waiting"))] |
---|
42 | 42 | | } |
---|
43 | 43 | | else throw("Strict value is not equal to itself.") |
---|
44 | 44 | | } |
---|
45 | 45 | | } |
---|
46 | 46 | | } |
---|
47 | 47 | | |
---|
48 | 48 | | |
---|
49 | 49 | | |
---|
50 | 50 | | @Callable(i) |
---|
51 | 51 | | func callback (taskId,cid) = if ((i.callerPublicKey != BAI_CONTRACT_PUBLIC_KEY)) |
---|
52 | 52 | | then throw("Only BAI Contract is allowed to call the callback!") |
---|
53 | 53 | | else { |
---|
54 | 54 | | let chatId = match getString(taskId) { |
---|
55 | 55 | | case s: String => |
---|
56 | 56 | | s |
---|
57 | 57 | | case _ => |
---|
58 | 58 | | throw("Chat ID for task id not found!") |
---|
59 | 59 | | } |
---|
60 | 60 | | let publicKey = match getString((chatId + "_initiator")) { |
---|
61 | 61 | | case s: String => |
---|
62 | 62 | | s |
---|
63 | 63 | | case _ => |
---|
64 | 64 | | throw("No initiator found!") |
---|
65 | 65 | | } |
---|
66 | 66 | | let timestamp = toString(lastBlock.timestamp) |
---|
67 | 67 | | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_status"), "done"), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "done"))] |
---|
68 | 68 | | } |
---|
69 | 69 | | |
---|
70 | 70 | | |
---|
71 | 71 | | @Verifier(tx) |
---|
72 | 72 | | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
73 | 73 | | |
---|