tx · Fo4v8L2EFybJBcdJxykFUA7JujeTyFWMEtnhx3aXFKN3

3MriZGLhQEu1jMDKDAbnsbh6TZuZueBAHSY:  -0.05000000 Waves

2021.03.17 17:34 [1441859] smart account 3MriZGLhQEu1jMDKDAbnsbh6TZuZueBAHSY > SELF 0.00000000 Waves

{ "type": 13, "id": "Fo4v8L2EFybJBcdJxykFUA7JujeTyFWMEtnhx3aXFKN3", "fee": 5000000, "feeAssetId": null, "timestamp": 1615991756811, "version": 2, "chainId": 84, "sender": "3MriZGLhQEu1jMDKDAbnsbh6TZuZueBAHSY", "senderPublicKey": "3idTJAmqkivFDf1EUKZ85Tt43Rp22pZb3RDiVXTWrgBq", "proofs": [ "33diabPXDZPELwCxbCSVPdXH2FXEDgPmiEiWymR6A8SbHA3t3SKu1SDbgoRLrhsQU5aLXME5Rb5oFZApoq1sfbas" ], "script": "base64:AAIEAAAAAAAAAAsIAhIDCgEIEgASAAAAAAkAAAAAEXRhc2tTdGF0dXNEZWZhdWx0AgAAAAppbmNvbXBsZXRlAAAAABJ0YXNrU3RhdHVzQ29tcGxldGUCAAAACGNvbXBsZXRlAAAAAAd3YXZlc0lkBQAAAAR1bml0AAAAABJhc3NldE5mdEluaXRBbW91bnQAAAAAAAAAAAEAAAAAEGFzc2V0TmZ0RGVjaW1hbHMAAAAAAAAAAAAAAAAAEmFzc2V0TmZ0UmVpc3N1YWJsZQcAAAAAF2Fzc2V0QW1vdW50TWluVGhyZXNob2xkAAAAAAAAAAPoAAAAABJkZWNpbWFsc0Fzc2V0V2F2ZXMAAAAAAAAAAAgAAAAAD2xhYmVsVGFza0lkTGFzdAIAAAAKdGFza0lkTGFzdAAAAAMAAAABaQEAAAAHc2V0VGFzawAAAAEAAAAIdGFza05hbWUEAAAACnRhc2tMYXN0SWQDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAR0aGlzBQAAAA9sYWJlbFRhc2tJZExhc3QJAABkAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPbGFiZWxUYXNrSWRMYXN0AAAAAAAAAAABAAAAAAAAAAABBAAAAAlhc3NldE5hbWUJAAEsAAAAAgIAAAAGdGFzayAjCQABpAAAAAEFAAAACnRhc2tMYXN0SWQEAAAAEGFzc2V0RGVzY3JpcHRpb24JAAEsAAAAAgIAAAAeTkZULXRva2VuIG9mIHRhc2sgbWFuYWdlciBmcm9tCQAEJQAAAAEFAAAABHRoaXMEAAAACmxvY2tBbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAQAAAAIbmZ0SXNzdWUJAARCAAAABQUAAAAJYXNzZXROYW1lBQAAABBhc3NldERlc2NyaXB0aW9uBQAAABJhc3NldE5mdEluaXRBbW91bnQFAAAAEGFzc2V0TmZ0RGVjaW1hbHMFAAAAEmFzc2V0TmZ0UmVpc3N1YWJsZQQAAAAKbmZ0SXNzdWVJZAkAAlgAAAABCQAEOAAAAAEFAAAACG5mdElzc3VlBAAAAA1sYWJlbFRhc2tOYW1lCQABLAAAAAICAAAACXRh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", "height": 1441859, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HbEhwsUffK8u5rpiqUdyj23U3kGXSTNmqRLHL3Y89GGb Next: FXnNxieuFemMQfuYW2JFe6qW1fhrKtFDxt5Rk5JLsihS Diff:
OldNewDifferences
55
66 let taskStatusComplete = "complete"
77
8-let addrContract = Address(base58'3MriZGLhQEu1jMDKDAbnsbh6TZuZueBAHSY')
9-
10-let assetWavesId = unit
8+let wavesId = unit
119
1210 let assetNftInitAmount = 1
1311
2826 else 1
2927 let assetName = ("task #" + toString(taskLastId))
3028 let assetDescription = ("NFT-token of task manager from" + toString(this))
31- let intAssetinputIdAmount = i.payments[0].amount
29+ let lockAmount = i.payments[0].amount
3230 let nftIssue = Issue(assetName, assetDescription, assetNftInitAmount, assetNftDecimals, assetNftReissuable)
3331 let nftIssueId = toBase58String(calculateAssetId(nftIssue))
3432 let labelTaskName = ("taskName_" + nftIssueId)
3533 let labelTaskStatus = ("taskStatus_" + nftIssueId)
3634 let labelTaskAmount = ("taskAmount_" + nftIssueId)
37- if ((size(i.payments) > 1))
35+ if ((size(i.payments) != 1))
3836 then throw("One attached assets expected")
39- else if ((i.payments[0].assetId != assetWavesId))
37+ else if ((i.payments[0].assetId != wavesId))
4038 then throw("must be attached asset: WAVES")
41- else if (isDefined(getString(this, labelTaskName)))
42- then throw("Task with a specified name is already exists")
43- else if ((assetAmountMinThreshold > i.payments[0].amount))
44- then throw((("amount must be greater than the minimum threshold: " + toString(assetAmountMinThreshold)) + " WAVES"))
45- else if ((i.caller == addrContract))
46- then throw("method may not be called from the contract")
47- else [StringEntry(labelTaskName, taskName), StringEntry(labelTaskStatus, taskStatusDefault), nftIssue, ScriptTransfer(i.caller, assetNftInitAmount, fromBase58String(nftIssueId)), StringEntry(labelTaskStatus, taskStatusDefault), IntegerEntry(labelTaskAmount, intAssetinputIdAmount), IntegerEntry(labelTaskIdLast, taskLastId)]
39+ else if ((assetAmountMinThreshold > i.payments[0].amount))
40+ then throw((("amount must be greater than the minimum threshold: " + toString(assetAmountMinThreshold)) + " WAVES"))
41+ else if ((i.caller == this))
42+ then throw("method may not be called from the contract")
43+ else [StringEntry(labelTaskName, taskName), StringEntry(labelTaskStatus, taskStatusDefault), nftIssue, ScriptTransfer(i.caller, assetNftInitAmount, fromBase58String(nftIssueId)), IntegerEntry(labelTaskAmount, lockAmount), IntegerEntry(labelTaskIdLast, taskLastId)]
4844 }
4945
5046
5147
5248 @Callable(i)
5349 func completeTask () = {
54- let $t024322524 = $Tuple2(i.payments[0].amount, value(i.payments[0].assetId))
55- let assetInputAmount = $t024322524._1
56- let assetInputId = $t024322524._2
57- let labelTaskStatus = ("taskStatus_" + toBase58String(assetInputId))
58- let labelTaskAmount = ("taskAmount_" + toBase58String(assetInputId))
59- let stringAssetInputId = toBase58String(value(i.payments[0].assetId))
60- let infoAssetInput = valueOrErrorMessage(assetInfo(value(i.payments[0].assetId)), (("Asset " + stringAssetInputId) + " doesn't exist"))
50+ let $t019422068 = $Tuple2(i.payments[0].amount, valueOrErrorMessage(i.payments[0].assetId, "Attached asset is not expected"))
51+ let lockAmount = $t019422068._1
52+ let lockId = $t019422068._2
53+ let labelTaskStatus = ("taskStatus_" + toBase58String(lockId))
54+ let labelTaskAmount = ("taskAmount_" + toBase58String(lockId))
55+ let stringLockId = toBase58String(value(i.payments[0].assetId))
56+ let infoLock = valueOrErrorMessage(assetInfo(value(i.payments[0].assetId)), (("Asset " + stringLockId) + " doesn't exist"))
6157 let intAssetOutputIdAmount = getIntegerValue(this, labelTaskAmount)
62- if ((size(i.payments) > 1))
58+ if ((size(i.payments) != 1))
6359 then throw("One attached assets expected")
64- else if ((i.caller == addrContract))
60+ else if ((i.caller == this))
6561 then throw("method may not be called from the contract")
66- else if (if (if (if ((value(i.payments[0].amount) == assetNftInitAmount))
67- then (value(infoAssetInput.decimals) == assetNftDecimals)
68- else false)
69- then (value(infoAssetInput.reissuable) == assetNftReissuable)
70- else false)
71- then isDefined(getString(this, labelTaskStatus))
72- else false)
73- then [StringEntry(labelTaskStatus, taskStatusComplete), Burn(assetInputId, assetInputAmount), ScriptTransfer(i.caller, intAssetOutputIdAmount, assetWavesId)]
74- else throw("Attached asset is not expected")
62+ else if (!(isDefined(getString(this, labelTaskStatus))))
63+ then throw("Attached asset is not expected")
64+ else [StringEntry(labelTaskStatus, taskStatusComplete), Burn(lockId, lockAmount), ScriptTransfer(i.caller, intAssetOutputIdAmount, wavesId)]
7565 }
7666
7767
7868
7969 @Callable(i)
8070 func removeTask () = {
81- let $t037313823 = $Tuple2(i.payments[0].amount, value(i.payments[0].assetId))
82- let assetInputAmount = $t037313823._1
83- let assetInputId = $t037313823._2
84- let labelTaskAmount = ("taskAmount_" + toBase58String(assetInputId))
85- let labelTaskStatus = ("taskStatus_" + toBase58String(assetInputId))
86- let labelTaskName = ("taskName_" + toBase58String(assetInputId))
87- let stringAssetInputId = toBase58String(value(i.payments[0].assetId))
88- let infoAssetInput = valueOrErrorMessage(assetInfo(value(i.payments[0].assetId)), (("Asset " + stringAssetInputId) + " doesn't exist"))
89- if ((size(i.payments) > 1))
71+ let $t030373148 = $Tuple2(i.payments[0].amount, value(i.payments[0].assetId))
72+ let lockAmount = $t030373148._1
73+ let lockId = $t030373148._2
74+ let labelTaskAmount = ("taskAmount_" + toBase58String(lockId))
75+ let labelTaskStatus = ("taskStatus_" + toBase58String(lockId))
76+ let labelTaskName = ("taskName_" + toBase58String(lockId))
77+ let stringLockId = toBase58String(value(i.payments[0].assetId))
78+ let infoLock = valueOrErrorMessage(assetInfo(value(i.payments[0].assetId)), (("Asset " + stringLockId) + " doesn't exist"))
79+ if ((size(i.payments) != 1))
9080 then throw("One attached assets expected")
91- else if ((i.caller == addrContract))
81+ else if ((i.caller == this))
9282 then throw("method may not be called from the contract")
93- else if (if (if ((value(infoAssetInput.decimals) == assetNftDecimals))
94- then (value(infoAssetInput.reissuable) == assetNftReissuable)
95- else false)
96- then isDefined(getString(this, labelTaskStatus))
97- else false)
83+ else if (isDefined(getString(this, labelTaskStatus)))
9884 then {
9985 let taskStatus = getString(this, labelTaskStatus)
10086 if (if ((taskStatus == taskStatusDefault))
10187 then (value(i.payments[0].amount) == assetNftInitAmount)
10288 else false)
10389 then {
104- let intAssetOutputIdAmount = pow(getIntegerValue(this, labelTaskAmount), 0, 1, 0, decimalsAssetWaves, DOWN)
105-[Burn(assetInputId, assetInputAmount), ScriptTransfer(i.caller, intAssetOutputIdAmount, assetWavesId), DeleteEntry(labelTaskAmount), DeleteEntry(labelTaskStatus), DeleteEntry(labelTaskName)]
90+ let intAssetOutputIdAmount = (getIntegerValue(this, labelTaskAmount) / 2)
91+[Burn(lockId, lockAmount), ScriptTransfer(i.caller, intAssetOutputIdAmount, wavesId), DeleteEntry(labelTaskAmount), DeleteEntry(labelTaskStatus), DeleteEntry(labelTaskName)]
10692 }
107- else if ((taskStatusComplete == taskStatus))
93+ else if ((taskStatus == taskStatusComplete))
10894 then [DeleteEntry(labelTaskAmount), DeleteEntry(labelTaskStatus), DeleteEntry(labelTaskName)]
10995 else throw("Task have a broken status")
11096 }
11298 }
11399
114100
101+@Verifier(tx)
102+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
103+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let taskStatusDefault = "incomplete"
55
66 let taskStatusComplete = "complete"
77
8-let addrContract = Address(base58'3MriZGLhQEu1jMDKDAbnsbh6TZuZueBAHSY')
9-
10-let assetWavesId = unit
8+let wavesId = unit
119
1210 let assetNftInitAmount = 1
1311
1412 let assetNftDecimals = 0
1513
1614 let assetNftReissuable = false
1715
1816 let assetAmountMinThreshold = 1000
1917
2018 let decimalsAssetWaves = 8
2119
2220 let labelTaskIdLast = "taskIdLast"
2321
2422 @Callable(i)
2523 func setTask (taskName) = {
2624 let taskLastId = if (isDefined(getInteger(this, labelTaskIdLast)))
2725 then (getIntegerValue(this, labelTaskIdLast) + 1)
2826 else 1
2927 let assetName = ("task #" + toString(taskLastId))
3028 let assetDescription = ("NFT-token of task manager from" + toString(this))
31- let intAssetinputIdAmount = i.payments[0].amount
29+ let lockAmount = i.payments[0].amount
3230 let nftIssue = Issue(assetName, assetDescription, assetNftInitAmount, assetNftDecimals, assetNftReissuable)
3331 let nftIssueId = toBase58String(calculateAssetId(nftIssue))
3432 let labelTaskName = ("taskName_" + nftIssueId)
3533 let labelTaskStatus = ("taskStatus_" + nftIssueId)
3634 let labelTaskAmount = ("taskAmount_" + nftIssueId)
37- if ((size(i.payments) > 1))
35+ if ((size(i.payments) != 1))
3836 then throw("One attached assets expected")
39- else if ((i.payments[0].assetId != assetWavesId))
37+ else if ((i.payments[0].assetId != wavesId))
4038 then throw("must be attached asset: WAVES")
41- else if (isDefined(getString(this, labelTaskName)))
42- then throw("Task with a specified name is already exists")
43- else if ((assetAmountMinThreshold > i.payments[0].amount))
44- then throw((("amount must be greater than the minimum threshold: " + toString(assetAmountMinThreshold)) + " WAVES"))
45- else if ((i.caller == addrContract))
46- then throw("method may not be called from the contract")
47- else [StringEntry(labelTaskName, taskName), StringEntry(labelTaskStatus, taskStatusDefault), nftIssue, ScriptTransfer(i.caller, assetNftInitAmount, fromBase58String(nftIssueId)), StringEntry(labelTaskStatus, taskStatusDefault), IntegerEntry(labelTaskAmount, intAssetinputIdAmount), IntegerEntry(labelTaskIdLast, taskLastId)]
39+ else if ((assetAmountMinThreshold > i.payments[0].amount))
40+ then throw((("amount must be greater than the minimum threshold: " + toString(assetAmountMinThreshold)) + " WAVES"))
41+ else if ((i.caller == this))
42+ then throw("method may not be called from the contract")
43+ else [StringEntry(labelTaskName, taskName), StringEntry(labelTaskStatus, taskStatusDefault), nftIssue, ScriptTransfer(i.caller, assetNftInitAmount, fromBase58String(nftIssueId)), IntegerEntry(labelTaskAmount, lockAmount), IntegerEntry(labelTaskIdLast, taskLastId)]
4844 }
4945
5046
5147
5248 @Callable(i)
5349 func completeTask () = {
54- let $t024322524 = $Tuple2(i.payments[0].amount, value(i.payments[0].assetId))
55- let assetInputAmount = $t024322524._1
56- let assetInputId = $t024322524._2
57- let labelTaskStatus = ("taskStatus_" + toBase58String(assetInputId))
58- let labelTaskAmount = ("taskAmount_" + toBase58String(assetInputId))
59- let stringAssetInputId = toBase58String(value(i.payments[0].assetId))
60- let infoAssetInput = valueOrErrorMessage(assetInfo(value(i.payments[0].assetId)), (("Asset " + stringAssetInputId) + " doesn't exist"))
50+ let $t019422068 = $Tuple2(i.payments[0].amount, valueOrErrorMessage(i.payments[0].assetId, "Attached asset is not expected"))
51+ let lockAmount = $t019422068._1
52+ let lockId = $t019422068._2
53+ let labelTaskStatus = ("taskStatus_" + toBase58String(lockId))
54+ let labelTaskAmount = ("taskAmount_" + toBase58String(lockId))
55+ let stringLockId = toBase58String(value(i.payments[0].assetId))
56+ let infoLock = valueOrErrorMessage(assetInfo(value(i.payments[0].assetId)), (("Asset " + stringLockId) + " doesn't exist"))
6157 let intAssetOutputIdAmount = getIntegerValue(this, labelTaskAmount)
62- if ((size(i.payments) > 1))
58+ if ((size(i.payments) != 1))
6359 then throw("One attached assets expected")
64- else if ((i.caller == addrContract))
60+ else if ((i.caller == this))
6561 then throw("method may not be called from the contract")
66- else if (if (if (if ((value(i.payments[0].amount) == assetNftInitAmount))
67- then (value(infoAssetInput.decimals) == assetNftDecimals)
68- else false)
69- then (value(infoAssetInput.reissuable) == assetNftReissuable)
70- else false)
71- then isDefined(getString(this, labelTaskStatus))
72- else false)
73- then [StringEntry(labelTaskStatus, taskStatusComplete), Burn(assetInputId, assetInputAmount), ScriptTransfer(i.caller, intAssetOutputIdAmount, assetWavesId)]
74- else throw("Attached asset is not expected")
62+ else if (!(isDefined(getString(this, labelTaskStatus))))
63+ then throw("Attached asset is not expected")
64+ else [StringEntry(labelTaskStatus, taskStatusComplete), Burn(lockId, lockAmount), ScriptTransfer(i.caller, intAssetOutputIdAmount, wavesId)]
7565 }
7666
7767
7868
7969 @Callable(i)
8070 func removeTask () = {
81- let $t037313823 = $Tuple2(i.payments[0].amount, value(i.payments[0].assetId))
82- let assetInputAmount = $t037313823._1
83- let assetInputId = $t037313823._2
84- let labelTaskAmount = ("taskAmount_" + toBase58String(assetInputId))
85- let labelTaskStatus = ("taskStatus_" + toBase58String(assetInputId))
86- let labelTaskName = ("taskName_" + toBase58String(assetInputId))
87- let stringAssetInputId = toBase58String(value(i.payments[0].assetId))
88- let infoAssetInput = valueOrErrorMessage(assetInfo(value(i.payments[0].assetId)), (("Asset " + stringAssetInputId) + " doesn't exist"))
89- if ((size(i.payments) > 1))
71+ let $t030373148 = $Tuple2(i.payments[0].amount, value(i.payments[0].assetId))
72+ let lockAmount = $t030373148._1
73+ let lockId = $t030373148._2
74+ let labelTaskAmount = ("taskAmount_" + toBase58String(lockId))
75+ let labelTaskStatus = ("taskStatus_" + toBase58String(lockId))
76+ let labelTaskName = ("taskName_" + toBase58String(lockId))
77+ let stringLockId = toBase58String(value(i.payments[0].assetId))
78+ let infoLock = valueOrErrorMessage(assetInfo(value(i.payments[0].assetId)), (("Asset " + stringLockId) + " doesn't exist"))
79+ if ((size(i.payments) != 1))
9080 then throw("One attached assets expected")
91- else if ((i.caller == addrContract))
81+ else if ((i.caller == this))
9282 then throw("method may not be called from the contract")
93- else if (if (if ((value(infoAssetInput.decimals) == assetNftDecimals))
94- then (value(infoAssetInput.reissuable) == assetNftReissuable)
95- else false)
96- then isDefined(getString(this, labelTaskStatus))
97- else false)
83+ else if (isDefined(getString(this, labelTaskStatus)))
9884 then {
9985 let taskStatus = getString(this, labelTaskStatus)
10086 if (if ((taskStatus == taskStatusDefault))
10187 then (value(i.payments[0].amount) == assetNftInitAmount)
10288 else false)
10389 then {
104- let intAssetOutputIdAmount = pow(getIntegerValue(this, labelTaskAmount), 0, 1, 0, decimalsAssetWaves, DOWN)
105-[Burn(assetInputId, assetInputAmount), ScriptTransfer(i.caller, intAssetOutputIdAmount, assetWavesId), DeleteEntry(labelTaskAmount), DeleteEntry(labelTaskStatus), DeleteEntry(labelTaskName)]
90+ let intAssetOutputIdAmount = (getIntegerValue(this, labelTaskAmount) / 2)
91+[Burn(lockId, lockAmount), ScriptTransfer(i.caller, intAssetOutputIdAmount, wavesId), DeleteEntry(labelTaskAmount), DeleteEntry(labelTaskStatus), DeleteEntry(labelTaskName)]
10692 }
107- else if ((taskStatusComplete == taskStatus))
93+ else if ((taskStatus == taskStatusComplete))
10894 then [DeleteEntry(labelTaskAmount), DeleteEntry(labelTaskStatus), DeleteEntry(labelTaskName)]
10995 else throw("Task have a broken status")
11096 }
11197 else throw("Attached asset is not expected")
11298 }
11399
114100
101+@Verifier(tx)
102+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
103+

github/deemru/w8io/169f3d6 
34.04 ms