tx · GnAQ2wAHZuyCQxmSUhTgJjy8WQ8ifg5o4KiWX9bdCLcE

3MutTVXh7Z2m9Cfzx982D4nm7h9Yzr3Ra9a:  -0.01400000 Waves

2021.04.29 23:12 [1504208] smart account 3MutTVXh7Z2m9Cfzx982D4nm7h9Yzr3Ra9a > SELF 0.00000000 Waves

{ "type": 13, "id": "GnAQ2wAHZuyCQxmSUhTgJjy8WQ8ifg5o4KiWX9bdCLcE", "fee": 1400000, "feeAssetId": null, "timestamp": 1619727173711, "version": 2, "chainId": 84, "sender": "3MutTVXh7Z2m9Cfzx982D4nm7h9Yzr3Ra9a", "senderPublicKey": "98wdUyX2hd6XAj7ggvLJURbxcMbJum5CnatqPwMxv9Pw", "proofs": [ "2Y5noCPp7HpJDWb6ZXaHJcWfKWi2RiL1mM5jRCnUXroyY3fdbQYKuyFX52y3rG1ffnYqB6boPt33MdtLjDsX8EED" ], "script": "base64:AAIEAAAAAAAAABUIAhIAEgASAwoBCBIDCgEIEgMKAQgAAAAkAAAAAAphcHBWZXJzaW9uAAAAAAAAAAADAAAAAAdhcHBOYW1lAgAAAA5OaWJlbE5ldCBWYXVsdAAAAAAQYXBwR2VuZXNpc0hlaWdodAAAAAAAABY4ZgAAAAAJc2VwYXJhdG9yAgAAAAFfAAAAAAV3YXZlcwIAAAAFV0FWRVMAAAAABm1heEludAB//////////wAAAAANaW5zdXJhbmNlTmFtZQIAAAAJSW5zdXJhbmNlAAAAAAtyZWNlaXB0TmFtZQIAAAAHUmVjZWlwdAAAAAAOaUR1cGxpY2F0ZU5hbWUCAAAAC0R1SW5zdXJhbmNlAAAAAA5yRHVwbGljYXRlTmFtZQIAAAAJRHVSZWNlaXB0AAAAAA1pbnN1cmFuY2VUeXBlAgAAAAFpAAAAAAtyZWNlaXB0VHlwZQIAAAABcgAAAAANZHVwbGljYXRlVHlwZQIAAAABZAAAAAAOY29uY2x1c2lvblR5cGUCAAAAAWMAAAAACGtleU5vbmNlAgAAAAVub25jZQAAAAAMa2V5QXBwSXNGcmVlAgAAAAthcHBfaXNfZnJlZQAAAAAQa2V5QXBwUHJpdmF0ZUtleQIAAAAPYXBwX3ByaXZhdGVfa2V5AAAAAA1rZXlBcHBWZXJzaW9uAgAAAAthcHBfdmVyc2lvbgAAAAAVa2V5QXBwRnJlZVNpbmNlSGVpZ2h0AgAAABVhcHBfZnJlZV9zaW5jZV9oZWlnaHQAAAAACmtleUFwcE5hbWUCAAAACGFwcF9uYW1lAAAAAAdrZXlUeXBlAgAAAAR0eXBlAAAAAAlrZXlIZWlnaHQCAAAABmhlaWdodAAAAAAJa2V5U2lnbmVyAgAAAAZzaWduZXIAAAAACGtleUFzc2V0AgAAAAVhc3NldAAAAAAJa2V5QW1vdW50AgAAAAZhbW91bnQAAAAAEmtleUluc3VyYW5jZUhlaWdodAIAAAAQaW5zdXJhbmNlX2hlaWdodAAAAAASa2V5SW5zdXJhbmNlU2lnbmVyAgAAABBpbnN1cmFuY2Vfc2lnbmVyAAAAAA5rZXlJbnN1cmFuY2VJZAIAAAASaW5zdXJhbmNlX2Fzc2V0X2lkAAAAAAxrZXlSZWNlaXB0SWQCAAAAEHJlY2VpcHRfYXNzZXRf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", "height": 1504208, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8nKLKSkTgWC3DpFu4carWYj7H8nbwg5kVwSHATW3wMk3 Next: 7PF38XBNjytqqoyrZRPzUBVRGhJ8xpyKjmUErPH1VZvn Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let appVersion = 3
5+
6+let appName = "NibelNet Vault"
7+
8+let appGenesisHeight = 1456230
9+
10+let separator = "_"
11+
12+let waves = "WAVES"
13+
14+let maxInt = 9223372036854775807
15+
16+let insuranceName = "Insurance"
17+
18+let receiptName = "Receipt"
19+
20+let iDuplicateName = "DuInsurance"
21+
22+let rDuplicateName = "DuReceipt"
23+
24+let insuranceType = "i"
25+
26+let receiptType = "r"
27+
28+let duplicateType = "d"
29+
30+let conclusionType = "c"
31+
32+let keyNonce = "nonce"
33+
34+let keyAppIsFree = "app_is_free"
35+
36+let keyAppPrivateKey = "app_private_key"
37+
38+let keyAppVersion = "app_version"
39+
40+let keyAppFreeSinceHeight = "app_free_since_height"
41+
42+let keyAppName = "app_name"
43+
44+let keyType = "type"
45+
46+let keyHeight = "height"
47+
48+let keySigner = "signer"
49+
50+let keyAsset = "asset"
51+
52+let keyAmount = "amount"
53+
54+let keyInsuranceHeight = "insurance_height"
55+
56+let keyInsuranceSigner = "insurance_signer"
57+
58+let keyInsuranceId = "insurance_asset_id"
59+
60+let keyReceiptId = "receipt_asset_id"
61+
62+let keyDuplicateOf = "duplicate_of_asset_id"
63+
64+let keyDuplicateType = "duplicate_type"
65+
66+func hasAccess (caller) = if (if ((caller == this))
67+ then true
68+ else (appGenesisHeight > height))
69+ then throw("Access denied")
70+ else unit
71+
72+
73+func getNonce () = {
74+ let nonce = valueOrElse(getInteger(this, keyNonce), 0)
75+ if ((nonce >= maxInt))
76+ then 1
77+ else (nonce + 1)
78+ }
79+
80+
81+func inRange (integer,mini,maxi) = if ((integer >= mini))
82+ then (maxi >= integer)
83+ else false
84+
85+
86+func with (str1,str2) = ((str1 + separator) + str2)
87+
88+
89+func assetTypeValidation (info,enforceType) = if ((info.issuer != this))
90+ then throw("Unknown issuer")
91+ else {
92+ let type = getStringValue(this, with(keyType, toBase58String(info.id)))
93+ let isInsurance = if ((info.name == insuranceName))
94+ then (type == insuranceType)
95+ else false
96+ let isReceipt = if ((info.name == receiptType))
97+ then (type == receiptType)
98+ else false
99+ match enforceType {
100+ case isType: String =>
101+ if (if (if (isInsurance)
102+ then (isType == insuranceType)
103+ else false)
104+ then true
105+ else if (isReceipt)
106+ then (isType == receiptType)
107+ else false)
108+ then info
109+ else throw("Unknown type")
110+ case _ =>
111+ if (if (!(isInsurance))
112+ then !(isReceipt)
113+ else false)
114+ then throw("Unknown type")
115+ else info
116+ }
117+ }
4118
5119
6120 @Callable(i)
7-func call () = {
8- let asset = Issue("Asset", "", 1, 0, true, unit, 0)
9- let assetId = calculateAssetId(asset)
10-[BinaryEntry("bin", base58''), BooleanEntry("bool", true), IntegerEntry("int", 1), StringEntry("str", ""), DeleteEntry("str"), asset, Reissue(assetId, 1, false), Burn(assetId, 1), ScriptTransfer(i.caller, 1, assetId)]
11- }
121+func deposit () = valueOrElse(hasAccess(i.caller), if (if ((size(i.payments) != 1))
122+ then true
123+ else !(inRange(i.payments[0].amount, 1, maxInt)))
124+ then throw("Require one valid payment")
125+ else {
126+ let assetId = match i.payments[0].assetId {
127+ case isAsset: ByteVector =>
128+ toBase58String(valueOrErrorMessage(assetInfo(isAsset), "Unknown asset").id)
129+ case isWaves: Unit =>
130+ waves
131+ case _ =>
132+ throw("Unknown asset type")
133+ }
134+ let nonce = getNonce()
135+ let insuranceSigner = toString(i.caller)
136+ let insuranceDesc = makeString([appName, insuranceName, "| Height:", toString(height), "| Signer:", insuranceSigner, "| Asset ID:", assetId, "| Amount:", toString(i.payments[0].amount), "(includes decimals)"], " ")
137+ let insuranceIssue = Issue(insuranceName, insuranceDesc, 1, 0, false, unit, nonce)
138+ let insuranceId = calculateAssetId(insuranceIssue)
139+ let id = toBase58String(insuranceId)
140+[IntegerEntry(keyNonce, nonce), insuranceIssue, ScriptTransfer(i.caller, 1, insuranceId), StringEntry(with(keyType, id), insuranceType), IntegerEntry(with(keyHeight, id), height), StringEntry(with(keySigner, id), insuranceSigner), StringEntry(with(keyAsset, id), assetId), IntegerEntry(with(keyAmount, id), i.payments[0].amount)]
141+ })
142+
143+
144+
145+@Callable(i)
146+func withdraw () = valueOrElse(hasAccess(i.caller), if (if ((size(i.payments) != 1))
147+ then true
148+ else (i.payments[0].amount != 1))
149+ then throw("Require one NFT payment")
150+ else {
151+ let insuranceInfo = assetTypeValidation(valueOrErrorMessage(assetInfo(valueOrErrorMessage(i.payments[0].assetId, "No Waves payment")), "Unknown asset"), insuranceType)
152+ let insuranceId = toBase58String(insuranceInfo.id)
153+ let insuranceHeight = getIntegerValue(this, with(keyHeight, insuranceId))
154+ let insuranceSigner = getStringValue(this, with(keySigner, insuranceId))
155+ let insuranceAsset = getStringValue(this, with(keyAsset, insuranceId))
156+ let insuranceAssetAmount = getIntegerValue(this, with(keyAmount, insuranceId))
157+ let nonce = getNonce()
158+ let receiptSigner = toString(i.caller)
159+ let receiptDesc = makeString([appName, receiptName, "| Insurance Height:", toString(insuranceHeight), "| Insurance Signer:", insuranceSigner, "| Insurance ID:", insuranceId, "| Asset ID:", insuranceAsset, "| Amount:", toString(insuranceAssetAmount), "(includes decimals)", "| Height:", toString(height), "| Signer:", receiptSigner], " ")
160+ let receiptIssue = Issue(receiptName, receiptDesc, 1, 0, false, unit, nonce)
161+ let receiptId = calculateAssetId(receiptIssue)
162+ let id = toBase58String(receiptId)
163+ let receiptAssetTranfer = match assetInfo(fromBase58String(insuranceAsset)) {
164+ case isAsset: Asset =>
165+ ScriptTransfer(i.caller, insuranceAssetAmount, isAsset.id)
166+ case maybeWaves =>
167+ if ((insuranceAsset == waves))
168+ then ScriptTransfer(i.caller, insuranceAssetAmount, unit)
169+ else throw("Unknown asset")
170+ }
171+[IntegerEntry(keyNonce, nonce), Burn(insuranceInfo.id, 1), receiptIssue, ScriptTransfer(i.caller, 1, receiptId), receiptAssetTranfer, StringEntry(with(keyType, insuranceId), conclusionType), StringEntry(with(keyReceiptId, insuranceId), id), StringEntry(with(keyType, id), receiptType), IntegerEntry(with(keyInsuranceHeight, id), insuranceHeight), StringEntry(with(keyInsuranceSigner, id), insuranceSigner), StringEntry(with(keyInsuranceId, id), insuranceId), StringEntry(with(keyAsset, id), insuranceAsset), IntegerEntry(with(keyAmount, id), insuranceAssetAmount), IntegerEntry(with(keyHeight, id), height), StringEntry(with(keySigner, id), receiptSigner)]
172+ })
173+
174+
175+
176+@Callable(i)
177+func claim (claimAssetId) = valueOrElse(hasAccess(i.caller), if ((size(i.payments) != 0))
178+ then throw("No need payment")
179+ else {
180+ let claimAssetInfo = assetTypeValidation(valueOrErrorMessage(assetInfo(fromBase58String(claimAssetId)), "Unknown asset"), unit)
181+ if ((assetBalance(this, claimAssetInfo.id) != 1))
182+ then throw("Insuffisant balance")
183+ else if ((toString(i.caller) != getStringValue(this, with(keySigner, claimAssetId))))
184+ then throw("Caller isn't last signer")
185+ else [ScriptTransfer(i.caller, 1, claimAssetInfo.id)]
186+ })
187+
188+
189+
190+@Callable(i)
191+func duplicate (toDuplicateId) = valueOrElse(hasAccess(i.caller), if ((size(i.payments) != 0))
192+ then throw("No need payment")
193+ else {
194+ let toDuplicateInfo = assetTypeValidation(valueOrErrorMessage(assetInfo(fromBase58String(toDuplicateId)), "Unknown asset"), unit)
195+ let toDuplicateType = getStringValue(this, with(keyType, toDuplicateId))
196+ if ((assetBalance(i.caller, toDuplicateInfo.id) != 1))
197+ then throw("Caller isn't owner")
198+ else {
199+ let nonce = getNonce()
200+ let duplicateSigner = toString(i.caller)
201+ let $t079328406 = if ((toDuplicateType == insuranceType))
202+ then $Tuple2(iDuplicateName, makeString([appName, iDuplicateName, "| Insurance ID:", toDuplicateId, "| Height:", toString(height), "| Duplicate Signer:", duplicateSigner], " "))
203+ else $Tuple2(rDuplicateName, makeString([appName, rDuplicateName, "| Receipt ID:", toDuplicateId, "| Height:", toString(height), "| Duplicate Signer:", duplicateSigner], " "))
204+ let duplicateName = $t079328406._1
205+ let duplicateDesc = $t079328406._2
206+ let duplicateIssue = Issue(duplicateName, duplicateDesc, 1, 0, false, unit, nonce)
207+ let duplicateId = calculateAssetId(duplicateIssue)
208+ let id = toBase58String(duplicateId)
209+[IntegerEntry(keyNonce, nonce), duplicateIssue, ScriptTransfer(i.caller, 1, duplicateId), StringEntry(with(keyType, id), duplicateType), IntegerEntry(with(keyHeight, id), height), StringEntry(with(keyDuplicateType, id), toDuplicateType), StringEntry(with(keyDuplicateOf, id), toDuplicateId), StringEntry(with(keySigner, id), duplicateSigner)]
210+ }
211+ })
212+
213+
214+
215+@Callable(i)
216+func freedom (privKey) = if (if ((this != i.caller))
217+ then true
218+ else valueOrElse(getBoolean(this, keyAppIsFree), false))
219+ then throw("Access denied")
220+ else [BooleanEntry(keyAppIsFree, true), StringEntry(keyAppPrivateKey, privKey), IntegerEntry(keyAppVersion, appVersion), StringEntry(keyAppName, appName), IntegerEntry(keyAppFreeSinceHeight, height)]
12221
13222
14223 @Verifier(tx)
15-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
224+func verify () = if (valueOrElse(getBoolean(this, keyAppIsFree), false))
225+ then false
226+ else match tx {
227+ case isUpdate: SetScriptTransaction =>
228+ sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
229+ case _ =>
230+ false
231+ }
16232

github/deemru/w8io/169f3d6 
50.41 ms