tx · BvVyzHw7eVDw3zbJ99HQvFS8DwX5DBVFpW84ECYtP4Xe

3N9Tq8RmGw456c1eYphzoMyvtwJGrY98jfr:  -0.01400000 Waves

2022.04.07 14:45 [1998096] smart account 3N9Tq8RmGw456c1eYphzoMyvtwJGrY98jfr > SELF 0.00000000 Waves

{ "type": 13, "id": "BvVyzHw7eVDw3zbJ99HQvFS8DwX5DBVFpW84ECYtP4Xe", "fee": 1400000, "feeAssetId": null, "timestamp": 1649331946458, "version": 2, "chainId": 84, "sender": "3N9Tq8RmGw456c1eYphzoMyvtwJGrY98jfr", "senderPublicKey": "He9ZSnjQZGhUkdUsMVVz4t6eAU1c2owedXGCfY1WZvnU", "proofs": [ "4foN6LzzCsLQLGfdYHdvQuuwEbTeMoowBqFw9AMuWpJ1eoNU7t2tbPinHDwZiMYiRzaxxE3HBeyq2xsmZSWDMFnV" ], "script": "base64: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", "height": 1998096, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2BsPQLQqAwEqaZ4wnDVh4SKgEGXGiiv5Zsb5xSHq8z7S Next: mXUacmQ3Fgh34SaZy7GCHkgvRPy6VysbnSm5VUnRpsc Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let kProposedAssetId = "_proposed_asset1_id"
5+
6+let kProposedAssetAmount = "_proposed_asset1_amount"
7+
8+let kDesiredAssetId = "_desired_asset1_id"
9+
10+let kDesiredAmount = "_desired_asset1_amount"
11+
12+let kStatus = "_status"
13+
14+let kOwner = "_owner"
15+
16+let kCloseTxId = "_close_tx_id"
17+
18+let statusActive = "Active"
19+
20+let statusCanceled = "Canceled"
21+
22+let statusDone = "Done"
23+
24+@Callable(i)
25+func placeProposal (desireToGetAssetId,desireToGetAmount) = if ((size(i.payments) != 1))
26+ then throw("One attached assets expected")
27+ else {
28+ let $t0603702 = $Tuple2(i.payments[0].amount, toBase58String(value(i.payments[0].assetId)))
29+ let pmtAmount = $t0603702._1
30+ let pmtAssetId = $t0603702._2
31+ let id = toBase58String(i.transactionId)
32+[StringEntry((id + kOwner), toString(i.caller)), StringEntry((id + kProposedAssetId), pmtAssetId), IntegerEntry((id + kProposedAssetAmount), pmtAmount), StringEntry((id + kDesiredAssetId), desireToGetAssetId), IntegerEntry((id + kDesiredAmount), desireToGetAmount), StringEntry((id + kStatus), statusActive)]
33+ }
34+
435
536
637 @Callable(i)
7-func call () = [IntegerEntry("t", 4)]
38+func cancelProposal (id) = {
39+ let status = valueOrErrorMessage(getString(this, (id + kStatus)), (("Proposal with id '" + id) + "' not found"))
40+ if ((status != statusActive))
41+ then throw(((("Proposal with id '" + id) + "' is not active. Status: ") + status))
42+ else {
43+ let ownerAddr = addressFromStringValue(valueOrErrorMessage(getString(this, (id + kOwner)), "owner not set"))
44+ let proposedAssetId = valueOrErrorMessage(getString(this, (id + kProposedAssetId)), "Proposed asset not found")
45+ let proposedAssetAmount = valueOrErrorMessage(getInteger(this, (id + kProposedAssetAmount)), "Proposed amount not found")
46+ if ((i.caller != ownerAddr))
47+ then throw("Only owner can cancel")
48+ else [ScriptTransfer(ownerAddr, proposedAssetAmount, fromBase58String(proposedAssetId)), StringEntry((id + kStatus), statusCanceled), StringEntry((id + kCloseTxId), toBase58String(i.transactionId))]
49+ }
50+ }
51+
52+
53+
54+@Callable(i)
55+func acceptProposal (id) = {
56+ let $t020212104 = $Tuple2(i.payments[0].amount, value(i.payments[0].assetId))
57+ let pmtAmount = $t020212104._1
58+ let pmtAssetId = $t020212104._2
59+ let status = valueOrErrorMessage(getString(this, (id + kStatus)), (("Proposal with id '" + id) + "' not found"))
60+ if ((status != statusActive))
61+ then throw(((("Proposal with id '" + id) + "' is not active. Status: ") + status))
62+ else {
63+ let desiredAssetId = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(getString(this, (id + kDesiredAssetId)), "Desired asset not found")), "Incorrect desired asset id")
64+ let desiredAssetAmount = valueOrErrorMessage(getInteger(this, (id + kDesiredAmount)), "Desired amount not found")
65+ if ((desiredAssetId != pmtAssetId))
66+ then throw("Atatched asset doesn't match desired")
67+ else if ((desiredAssetAmount != pmtAmount))
68+ then throw("Attached asset amount doesn't match")
69+ else {
70+ let ownerAddr = addressFromStringValue(valueOrErrorMessage(getString(this, (id + kOwner)), "owner not set"))
71+ let proposedAssetId = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(getString(this, (id + kProposedAssetId)), "Proposed asset not found")), "Incorrect proposed asset id")
72+ let proposedAssetAmount = valueOrErrorMessage(getInteger(this, (id + kProposedAssetAmount)), "Proposed amount not found")
73+[ScriptTransfer(ownerAddr, desiredAssetAmount, desiredAssetId), ScriptTransfer(i.caller, proposedAssetAmount, proposedAssetId), StringEntry((id + kStatus), statusDone), StringEntry((id + kCloseTxId), toBase58String(i.transactionId))]
74+ }
75+ }
76+ }
877
978
1079 @Verifier(tx)
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let kProposedAssetId = "_proposed_asset1_id"
5+
6+let kProposedAssetAmount = "_proposed_asset1_amount"
7+
8+let kDesiredAssetId = "_desired_asset1_id"
9+
10+let kDesiredAmount = "_desired_asset1_amount"
11+
12+let kStatus = "_status"
13+
14+let kOwner = "_owner"
15+
16+let kCloseTxId = "_close_tx_id"
17+
18+let statusActive = "Active"
19+
20+let statusCanceled = "Canceled"
21+
22+let statusDone = "Done"
23+
24+@Callable(i)
25+func placeProposal (desireToGetAssetId,desireToGetAmount) = if ((size(i.payments) != 1))
26+ then throw("One attached assets expected")
27+ else {
28+ let $t0603702 = $Tuple2(i.payments[0].amount, toBase58String(value(i.payments[0].assetId)))
29+ let pmtAmount = $t0603702._1
30+ let pmtAssetId = $t0603702._2
31+ let id = toBase58String(i.transactionId)
32+[StringEntry((id + kOwner), toString(i.caller)), StringEntry((id + kProposedAssetId), pmtAssetId), IntegerEntry((id + kProposedAssetAmount), pmtAmount), StringEntry((id + kDesiredAssetId), desireToGetAssetId), IntegerEntry((id + kDesiredAmount), desireToGetAmount), StringEntry((id + kStatus), statusActive)]
33+ }
34+
435
536
637 @Callable(i)
7-func call () = [IntegerEntry("t", 4)]
38+func cancelProposal (id) = {
39+ let status = valueOrErrorMessage(getString(this, (id + kStatus)), (("Proposal with id '" + id) + "' not found"))
40+ if ((status != statusActive))
41+ then throw(((("Proposal with id '" + id) + "' is not active. Status: ") + status))
42+ else {
43+ let ownerAddr = addressFromStringValue(valueOrErrorMessage(getString(this, (id + kOwner)), "owner not set"))
44+ let proposedAssetId = valueOrErrorMessage(getString(this, (id + kProposedAssetId)), "Proposed asset not found")
45+ let proposedAssetAmount = valueOrErrorMessage(getInteger(this, (id + kProposedAssetAmount)), "Proposed amount not found")
46+ if ((i.caller != ownerAddr))
47+ then throw("Only owner can cancel")
48+ else [ScriptTransfer(ownerAddr, proposedAssetAmount, fromBase58String(proposedAssetId)), StringEntry((id + kStatus), statusCanceled), StringEntry((id + kCloseTxId), toBase58String(i.transactionId))]
49+ }
50+ }
51+
52+
53+
54+@Callable(i)
55+func acceptProposal (id) = {
56+ let $t020212104 = $Tuple2(i.payments[0].amount, value(i.payments[0].assetId))
57+ let pmtAmount = $t020212104._1
58+ let pmtAssetId = $t020212104._2
59+ let status = valueOrErrorMessage(getString(this, (id + kStatus)), (("Proposal with id '" + id) + "' not found"))
60+ if ((status != statusActive))
61+ then throw(((("Proposal with id '" + id) + "' is not active. Status: ") + status))
62+ else {
63+ let desiredAssetId = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(getString(this, (id + kDesiredAssetId)), "Desired asset not found")), "Incorrect desired asset id")
64+ let desiredAssetAmount = valueOrErrorMessage(getInteger(this, (id + kDesiredAmount)), "Desired amount not found")
65+ if ((desiredAssetId != pmtAssetId))
66+ then throw("Atatched asset doesn't match desired")
67+ else if ((desiredAssetAmount != pmtAmount))
68+ then throw("Attached asset amount doesn't match")
69+ else {
70+ let ownerAddr = addressFromStringValue(valueOrErrorMessage(getString(this, (id + kOwner)), "owner not set"))
71+ let proposedAssetId = valueOrErrorMessage(fromBase58String(valueOrErrorMessage(getString(this, (id + kProposedAssetId)), "Proposed asset not found")), "Incorrect proposed asset id")
72+ let proposedAssetAmount = valueOrErrorMessage(getInteger(this, (id + kProposedAssetAmount)), "Proposed amount not found")
73+[ScriptTransfer(ownerAddr, desiredAssetAmount, desiredAssetId), ScriptTransfer(i.caller, proposedAssetAmount, proposedAssetId), StringEntry((id + kStatus), statusDone), StringEntry((id + kCloseTxId), toBase58String(i.transactionId))]
74+ }
75+ }
76+ }
877
978
1079 @Verifier(tx)
1180 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
1281

github/deemru/w8io/6500d08 
33.75 ms