tx · 88e1FpicY1ovEaZ72UL8zXSdeTFu4BXtCZcd2gjra5sT

3N9tKixzqTYWnEXQxrDQ5pBTGvQd6sFsvmV:  -0.05000000 Waves

2023.06.08 12:07 [2613491] smart account 3N9tKixzqTYWnEXQxrDQ5pBTGvQd6sFsvmV > SELF 0.00000000 Waves

{ "type": 13, "id": "88e1FpicY1ovEaZ72UL8zXSdeTFu4BXtCZcd2gjra5sT", "fee": 5000000, "feeAssetId": null, "timestamp": 1686215296670, "version": 2, "chainId": 84, "sender": "3N9tKixzqTYWnEXQxrDQ5pBTGvQd6sFsvmV", "senderPublicKey": "DS6HkopS9zypvxX6VhkdNvv6v4wcPZuChRvTwKJeacxE", "proofs": [ "3vL1vsFffFT4cZrcE3awKP3rMgj89sFQKZA2hmzKjS71wK4jimyEmS7tJsHLBsYtkxeDWp8wko5N9YptC3jac9Eo" ], "script": "base64:BgISCAISAwoBCBIDCgEIEgQKAggIDAARQUlfVE9LRU5fQVNTRVRfSUQBIJPhcjhxBJtq6JpjHwQkt2RTlyw+vGYLg3SvaLskjeJCAAtTVEFUVVNfT1BFTgIEb3BlbgASU1RBVFVTX0NIRUNLRURfT1VUAgtjaGVja2VkX291dAALU1RBVFVTX0RPTkUCBGRvbmUADkNIRUNLRURfT1VUX0JZAg9fY2hlY2tlZF9vdXRfYnkAE1NJTVBMRV9DSEFUR1BUX1RBU0sCFHNpbWlwbGVfQ2hhdEdQVF90YXNrABBDSEVDS19PVVRfSEVJR0hUAhFfY2hlY2tfb3V0X2hlaWdodAAPUkVHSVNURVJfSEVJR0hUAhBfcmVnaXN0ZXJfaGVpZ2h0AA1DT01NSVRfSEVJR0hUAg5fY29tbWl0X2hlaWdodAEPY2FuQmVDaGVja2VkT3V0AQZ0YXNrSWQEBnN0YXR1cwkAnQgCBQR0aGlzCQCsAgIFBnRhc2tJZAIHX3N0YXR1cwkAAAIFBnN0YXR1cwULU1RBVFVTX09QRU4BDmlzQ29ycmVjdEFnZW50AgZ0YXNrSWQHYWdlbnRJZAQPY2hlY2tvdXRBZ2VudElkCQCdCAIFBHRoaXMJAKwCAgUGdGFza0lkBQ5DSEVDS0VEX09VVF9CWQkAAAIFD2NoZWNrb3V0QWdlbnRJZAUHYWdlbnRJZAEJZ2V0VGFza0lkAQR0eElkBA9jYWxsZXJQdWJsaWNLZXkEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICBQR0eElkAgxfaW5pdGlhbGl6ZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANzdHIFByRtYXRjaDAFA3N0cgIABAckbWF0Y2gwCQCdCAIFBHRoaXMJAKwCAgkArAICBQR0eElkAgFfBQ9jYWxsZXJQdWJsaWNLZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANzdHIFByRtYXRjaDAFA3N0cgIAAwFpARNyZWdpc3RlckNoYXRHUFRUYXNrAQtkZXNjcmlwdGlvbgQPY2FsbGVyUHVibGljS2V5CQCwCQEIBQFpD2NhbGxlclB1YmxpY0tleQQEdHhJZAkAsAkBCAUBaQ10cmFuc2FjdGlvbklkBAdwYXltZW50CQCRAwIIBQFpCHBheW1lbnRzAAAEA2ZlZQgFB3BheW1lbnQGYW1vdW50BApmZWVBc3NldElkCAUHcGF5bWVudAdhc3NldElkBAZ0YXNrSWQJAKwCAgkArAICBQR0eElkAgFfBQ9jYWxsZXJQdWJsaWNLZXkECXRpbWVzdGFtcAgFCWxhc3RCbG9jawl0aW1lc3RhbXADCQECIT0CBQpmZWVBc3NldElkBRFBSV9UT0tFTl9BU1NFVF9JRAkAAgECJlBheW1lbnQgb25seSBwb3NzaWJsZSBpbiB0aGUgQUkgVG9rZW4hAwkAZgIAgK3iBAUDZmVlCQACAQIqUGF5bWVudCBuZWVkcyB0byBiZSBhdCBsZWFzdCAwLjEgQUkgVG9rZW4hCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUGdGFza0lkAgxfZGVzY3JpcHRpb24FC2Rlc2NyaXB0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIMX2luaXRpYWxpemVyBQ9jYWxsZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQZ0YXNrSWQCB19zdGF0dXMFC1NUQVRVU19PUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUGdGFza0lkAgVfdHlwZQUTU0lNUExFX0NIQVRHUFRfVEFTSwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQZ0YXNrSWQFD1JFR0lTVEVSX0hFSUdIVAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBnRhc2tJZAIScmVnaXN0ZXJfdGltZXN0YW1wBQl0aW1lc3RhbXAFA25pbAFpARNjaGVja291dENoYXRHUFRUYXNrAQR0eElkBAZ0YXNrSWQJAQlnZXRUYXNrSWQBBQR0eElkBA9jYWxsZXJQdWJsaWNLZXkJALAJAQgFAWkPY2FsbGVyUHVibGljS2V5BA10YXNrU3RpbGxPcGVuCQEPY2FuQmVDaGVja2VkT3V0AQUGdGFza0lkBAl0aW1lc3RhbXAIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkBASEBBQ10YXNrU3RpbGxPcGVuCQACAQIbVGFzayBub3Qgb3BlbiBmb3IgY2hlY2tvdXQhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUGdGFza0lkBQ5DSEVDS0VEX09VVF9CWQUPY2FsbGVyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUGdGFza0lkAgdfc3RhdHVzBRJTVEFUVVNfQ0hFQ0tFRF9PVVQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUGdGFza0lkBRBDSEVDS19PVVRfSEVJR0hUBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUGdGFza0lkAhRfY2hlY2tfb3V0X3RpbWVzdGFtcAUJdGltZXN0YW1wBQNuaWwBaQERY29tbWl0Q2hhdEdQVFRhc2sCBHR4SWQIcmVzcG9uc2UEBnRhc2tJZAkBCWdldFRhc2tJZAEFBHR4SWQED2NhbGxlclB1YmxpY0tleQkAsAkBCAUBaQ9jYWxsZXJQdWJsaWNLZXkEDGNvcnJlY3RBZ2VudAkBDmlzQ29ycmVjdEFnZW50AgUGdGFza0lkBQ9jYWxsZXJQdWJsaWNLZXkECXRpbWVzdGFtcAgFCWxhc3RCbG9jawl0aW1lc3RhbXADCQEBIQEFDGNvcnJlY3RBZ2VudAkAAgECQVRhc2sgbWF5IG9ubHkgYmUgc3VibWl0dGVkIGJ5IHRoZSBhZ2VudCB3aG8gY2hlY2tlZCB0aGUgdGFzayBvdXQhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUGdGFza0lkAgdfc3RhdHVzBQtTVEFUVVNfRE9ORQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBnRhc2tJZAIHX3Jlc3VsdAUIcmVzcG9uc2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUGdGFza0lkBQ1DT01NSVRfSEVJR0hUBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUGdGFza0lkAhFfY29tbWl0X3RpbWVzdGFtcAUJdGltZXN0YW1wBQNuaWwBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5adciOg==", "height": 2613491, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 49FFoEg2Skhtwq43ZkHFswZg2y34DTuqMUn5vaUsrGyB Next: 5QieAPFibJjRStRtjoFYnsznM3J9AMo288W2GjskhD3q Diff:
OldNewDifferences
1111
1212 let CHECKED_OUT_BY = "_checked_out_by"
1313
14+let SIMPLE_CHATGPT_TASK = "simiple_ChatGPT_task"
15+
16+let CHECK_OUT_HEIGHT = "_check_out_height"
17+
18+let REGISTER_HEIGHT = "_register_height"
19+
20+let COMMIT_HEIGHT = "_commit_height"
21+
1422 func canBeCheckedOut (taskId) = {
1523 let status = getString(this, (taskId + "_status"))
1624 (status == STATUS_OPEN)
2331 }
2432
2533
34+func getTaskId (txId) = {
35+ let callerPublicKey = match getString(this, (txId + "_initializer")) {
36+ case str: String =>
37+ str
38+ case _ =>
39+ ""
40+ }
41+ match getString(this, ((txId + "_") + callerPublicKey)) {
42+ case str: String =>
43+ str
44+ case _ =>
45+ ""
46+ }
47+ }
48+
49+
2650 @Callable(i)
2751 func registerChatGPTTask (description) = {
2852 let callerPublicKey = toUtf8String(i.callerPublicKey)
3054 let payment = i.payments[0]
3155 let fee = payment.amount
3256 let feeAssetId = payment.assetId
57+ let taskId = ((txId + "_") + callerPublicKey)
58+ let timestamp = lastBlock.timestamp
3359 if ((feeAssetId != AI_TOKEN_ASSET_ID))
3460 then throw("Payment only possible in the AI Token!")
35- else if ((100000000 > fee))
36- then throw("Payment needs to be at least on AI Token!")
37- else [StringEntry((txId + "_description"), description), StringEntry((txId + "_initializer"), callerPublicKey), StringEntry((txId + "_status"), STATUS_OPEN)]
61+ else if ((10000000 > fee))
62+ then throw("Payment needs to be at least 0.1 AI Token!")
63+ else [StringEntry((taskId + "_description"), description), StringEntry((txId + "_initializer"), callerPublicKey), StringEntry((taskId + "_status"), STATUS_OPEN), StringEntry((taskId + "_type"), SIMPLE_CHATGPT_TASK), IntegerEntry((taskId + REGISTER_HEIGHT), height), IntegerEntry((taskId + "register_timestamp"), timestamp)]
3864 }
3965
4066
4167
4268 @Callable(i)
43-func checkoutChatGPTTask (taskId) = {
69+func checkoutChatGPTTask (txId) = {
70+ let taskId = getTaskId(txId)
4471 let callerPublicKey = toUtf8String(i.callerPublicKey)
4572 let taskStillOpen = canBeCheckedOut(taskId)
73+ let timestamp = lastBlock.timestamp
4674 if (!(taskStillOpen))
4775 then throw("Task not open for checkout!")
48- else [StringEntry((taskId + CHECKED_OUT_BY), callerPublicKey), StringEntry((taskId + "_status"), STATUS_CHECKED_OUT)]
76+ else [StringEntry((taskId + CHECKED_OUT_BY), callerPublicKey), StringEntry((taskId + "_status"), STATUS_CHECKED_OUT), IntegerEntry((taskId + CHECK_OUT_HEIGHT), height), IntegerEntry((taskId + "_check_out_timestamp"), timestamp)]
4977 }
5078
5179
5280
5381 @Callable(i)
54-func finishChatGPTTask (taskId,response) = {
82+func commitChatGPTTask (txId,response) = {
83+ let taskId = getTaskId(txId)
5584 let callerPublicKey = toUtf8String(i.callerPublicKey)
5685 let correctAgent = isCorrectAgent(taskId, callerPublicKey)
86+ let timestamp = lastBlock.timestamp
5787 if (!(correctAgent))
5888 then throw("Task may only be submitted by the agent who checked the task out!")
59- else [StringEntry((taskId + "_status"), STATUS_DONE), StringEntry((taskId + "_result"), response)]
89+ else [StringEntry((taskId + "_status"), STATUS_DONE), StringEntry((taskId + "_result"), response), IntegerEntry((taskId + COMMIT_HEIGHT), height), IntegerEntry((taskId + "_commit_timestamp"), timestamp)]
6090 }
6191
6292
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let AI_TOKEN_ASSET_ID = base58'AxGKQRxKo4F2EbhrRq6N2tdLsxtMnpzQsS4QemV6V1W1'
55
66 let STATUS_OPEN = "open"
77
88 let STATUS_CHECKED_OUT = "checked_out"
99
1010 let STATUS_DONE = "done"
1111
1212 let CHECKED_OUT_BY = "_checked_out_by"
1313
14+let SIMPLE_CHATGPT_TASK = "simiple_ChatGPT_task"
15+
16+let CHECK_OUT_HEIGHT = "_check_out_height"
17+
18+let REGISTER_HEIGHT = "_register_height"
19+
20+let COMMIT_HEIGHT = "_commit_height"
21+
1422 func canBeCheckedOut (taskId) = {
1523 let status = getString(this, (taskId + "_status"))
1624 (status == STATUS_OPEN)
1725 }
1826
1927
2028 func isCorrectAgent (taskId,agentId) = {
2129 let checkoutAgentId = getString(this, (taskId + CHECKED_OUT_BY))
2230 (checkoutAgentId == agentId)
2331 }
2432
2533
34+func getTaskId (txId) = {
35+ let callerPublicKey = match getString(this, (txId + "_initializer")) {
36+ case str: String =>
37+ str
38+ case _ =>
39+ ""
40+ }
41+ match getString(this, ((txId + "_") + callerPublicKey)) {
42+ case str: String =>
43+ str
44+ case _ =>
45+ ""
46+ }
47+ }
48+
49+
2650 @Callable(i)
2751 func registerChatGPTTask (description) = {
2852 let callerPublicKey = toUtf8String(i.callerPublicKey)
2953 let txId = toUtf8String(i.transactionId)
3054 let payment = i.payments[0]
3155 let fee = payment.amount
3256 let feeAssetId = payment.assetId
57+ let taskId = ((txId + "_") + callerPublicKey)
58+ let timestamp = lastBlock.timestamp
3359 if ((feeAssetId != AI_TOKEN_ASSET_ID))
3460 then throw("Payment only possible in the AI Token!")
35- else if ((100000000 > fee))
36- then throw("Payment needs to be at least on AI Token!")
37- else [StringEntry((txId + "_description"), description), StringEntry((txId + "_initializer"), callerPublicKey), StringEntry((txId + "_status"), STATUS_OPEN)]
61+ else if ((10000000 > fee))
62+ then throw("Payment needs to be at least 0.1 AI Token!")
63+ else [StringEntry((taskId + "_description"), description), StringEntry((txId + "_initializer"), callerPublicKey), StringEntry((taskId + "_status"), STATUS_OPEN), StringEntry((taskId + "_type"), SIMPLE_CHATGPT_TASK), IntegerEntry((taskId + REGISTER_HEIGHT), height), IntegerEntry((taskId + "register_timestamp"), timestamp)]
3864 }
3965
4066
4167
4268 @Callable(i)
43-func checkoutChatGPTTask (taskId) = {
69+func checkoutChatGPTTask (txId) = {
70+ let taskId = getTaskId(txId)
4471 let callerPublicKey = toUtf8String(i.callerPublicKey)
4572 let taskStillOpen = canBeCheckedOut(taskId)
73+ let timestamp = lastBlock.timestamp
4674 if (!(taskStillOpen))
4775 then throw("Task not open for checkout!")
48- else [StringEntry((taskId + CHECKED_OUT_BY), callerPublicKey), StringEntry((taskId + "_status"), STATUS_CHECKED_OUT)]
76+ else [StringEntry((taskId + CHECKED_OUT_BY), callerPublicKey), StringEntry((taskId + "_status"), STATUS_CHECKED_OUT), IntegerEntry((taskId + CHECK_OUT_HEIGHT), height), IntegerEntry((taskId + "_check_out_timestamp"), timestamp)]
4977 }
5078
5179
5280
5381 @Callable(i)
54-func finishChatGPTTask (taskId,response) = {
82+func commitChatGPTTask (txId,response) = {
83+ let taskId = getTaskId(txId)
5584 let callerPublicKey = toUtf8String(i.callerPublicKey)
5685 let correctAgent = isCorrectAgent(taskId, callerPublicKey)
86+ let timestamp = lastBlock.timestamp
5787 if (!(correctAgent))
5888 then throw("Task may only be submitted by the agent who checked the task out!")
59- else [StringEntry((taskId + "_status"), STATUS_DONE), StringEntry((taskId + "_result"), response)]
89+ else [StringEntry((taskId + "_status"), STATUS_DONE), StringEntry((taskId + "_result"), response), IntegerEntry((taskId + COMMIT_HEIGHT), height), IntegerEntry((taskId + "_commit_timestamp"), timestamp)]
6090 }
6191
6292
6393 @Verifier(tx)
6494 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
6595

github/deemru/w8io/3ef1775 
54.25 ms