tx · GwPpaB56o31qAtvauwC18Y5TdWZ4zNtfXS4w8YpFZrQY 3MxW2aG6PcdZeNjj1DuzGSbmWoy2BDvmtSD: -0.05000000 Waves 2024.10.28 10:26 [3346421] smart account 3MxW2aG6PcdZeNjj1DuzGSbmWoy2BDvmtSD > SELF 0.00000000 Waves
{ "type": 13, "id": "GwPpaB56o31qAtvauwC18Y5TdWZ4zNtfXS4w8YpFZrQY", "fee": 5000000, "feeAssetId": null, "timestamp": 1730100376584, "version": 2, "chainId": 84, "sender": "3MxW2aG6PcdZeNjj1DuzGSbmWoy2BDvmtSD", "senderPublicKey": "HtED8Ks6yPKYzEnXYAoLvskVyZuFW3YcZH8JF5NWbMvb", "proofs": [ "4pGiGo5He7G56DWt3Zc8iP9csgqUaBTxb6yQmZPzPzfy31irxk3aqi7TJqVWeRwqCYAasQkp2pbEqfX5tsEgp57t" ], "script": "base64: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", "height": 3346421, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5qQ85zpAxSyB9afHreKfKtpygPHHzkuYvHCzDnQjMMA4 Next: 12vSW3GQ95NrhnTVMPNneumJVD8ko3qnoDzfKf2AjyQT Diff:
Old | New | Differences | |
---|---|---|---|
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"))] | |
41 | + | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_status"), "waiting"), StringEntry(taskId, chatId), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "waiting")), StringEntry((chatId + "_initiator"), publicKey)] | |
42 | 42 | } | |
43 | 43 | else throw("Strict value is not equal to itself.") | |
44 | 44 | } | |
64 | 64 | throw("No initiator found!") | |
65 | 65 | } | |
66 | 66 | let timestamp = toString(lastBlock.timestamp) | |
67 | - | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_status"), "done"), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "done")) | |
67 | + | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_status"), "done"), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "done"))] | |
68 | 68 | } | |
69 | 69 | ||
70 | 70 |
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 | 11 | func getAnswerForChat (chatId,cid) = { | |
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 | 19 | let minFee = match getInteger(BAI_CONTRACT, "price_fullchatgpt") { | |
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 | 32 | let result = invoke(BAI_CONTRACT, "registerTaskCallback", [cid, "fullchatgpt", "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"))] | |
41 | + | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_status"), "waiting"), StringEntry(taskId, chatId), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "waiting")), StringEntry((chatId + "_initiator"), publicKey)] | |
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 | - | [StringEntry((chatId + "_latest"), cid), StringEntry((chatId + "_status"), "done"), StringEntry(((publicKey + "_") + chatId), ((((cid + "_") + timestamp) + "_") + "done")) | |
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 |
github/deemru/w8io/fabc49c 17.68 ms ◑