tx · DVkHXqwBgKbr7oJrb5v3oZFHBxPqWgdPd34aYM78UTUD

3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua:  -0.01400000 Waves

2021.03.28 07:32 [1457133] smart account 3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua > SELF 0.00000000 Waves

{ "type": 13, "id": "DVkHXqwBgKbr7oJrb5v3oZFHBxPqWgdPd34aYM78UTUD", "fee": 1400000, "feeAssetId": null, "timestamp": 1616905961677, "version": 2, "chainId": 84, "sender": "3Mz29fiz3zgY9JDbiHKANvHsFgQutdfu4Ua", "senderPublicKey": "CTyHhnVTxf16Z4CmGGneAK8WB5g2QyT4MB8kUn8vPPcu", "proofs": [ "mnBMyFU6jEeoTxjXaffJ4i5rQpecG7pdwAbr3UE1uFzvLYZ92UF4gV3gphvHYF5w47VbRocfM9ALyJAsChrsrv7" ], "script": "base64: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dHJhY3RJbmZvAAAAC2Rlc2NyaXB0aW9uBQAAABFjb250cmFjdFNlcGFyYXRvcgQAAAAOY29udHJhY3RIZWlnaHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABNjb250cmFjdERlc2NyaXB0aW9uAAAAAAAAAAABBAAAABVjb250cmFjdENhbGxlckFkZHJlc3MJAAGRAAAAAgUAAAATY29udHJhY3REZXNjcmlwdGlvbgAAAAAAAAAAAgQAAAAPY29udHJhY3RBc3NldElkCQABkQAAAAIFAAAAE2NvbnRyYWN0RGVzY3JpcHRpb24AAAAAAAAAAAMEAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAE2NvbnRyYWN0RGVzY3JpcHRpb24AAAAAAAAAAAQEAAAAEWNvbnRyYWN0QXNzZXRJbmZvBAAAAAckbWF0Y2gwCQAD7AAAAAEJAAJZAAAAAQUAAAAPY29udHJhY3RBc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAAHaXNBc3NldAUAAAAHJG1hdGNoMAUAAAAHaXNBc3NldAkAAAIAAAABAgAAABRFUlJPUjogVW5rbm93biBBc3NldAMJAQAAAAIhPQAAAAIJAAGQAAAAAQUAAAATY29udHJhY3REZXNjcmlwdGlvbgAAAAAAAAAABQkAAAIAAAABAgAAABtFUlJPUjogQ29udHJhY3QgZGVzY3JpcHRpb24DAwkAAGcAAAACBQAAAA1nZW5lc2lzSGVpZ2h0BQAAAA5jb250cmFjdEhlaWdodAYJAABnAAAAAgUAAAAOY29udHJhY3RIZWlnaHQFAAAABmhlaWdodAkAAAIAAAABAgAAAA1FUlJPUjogSGVpZ2h0AwMJAABmAAAAAgAAAAAAAAAAAQUAAAAVY29udHJhY3RBc3NldFF1YW50aXR5BgkAAGYAAAACBQAAABVjb250cmFjdEFzc2V0UXVhbnRpdHkIBQAAABFjb250cmFjdEFzc2V0SW5mbwAAAAhxdWFudGl0eQkAAAIAAAABAgAAABVFUlJPUjogQXNzZXQgcXVhbnRpdHkDCQAAZgAAAAIFAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQkAA/AAAAACBQAAAAR0aGlzCAUAAAARY29udHJhY3RBc3NldEluZm8AAAACaWQJAAACAAAAAQIAAAAURVJST1I6IFZhdWx0IGJhbGFuY2UEAAAABW5vbmNlCQEAAAANZ2VuZXJhdGVOb25jZQAAAAAEAAAAEnJlY2VpcHREZXNjcmlwdGlvbgkABLkAAAACCQAETAAAAAIFAAAAC3JlY2VpcHRUZXh0CQAETAAAAAIJAAGkAAAAAQUAAAAOY29udHJhY3RIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAZoZWlnaHQJAARMAAAAAgkAAlgAAAABBQAAABRjb250cmFjdElkQnl0ZVZlY3RvcgkABEwAAAACBQAAABVjb250cmFjdENhbGxlckFkZHJlc3MJAARMAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAARMAAAAAgUAAAAPY29udHJhY3RBc3NldElkCQAETAAAAAIJAAGkAAAAAQUAAAAVY29udHJhY3RBc3NldFF1YW50aXR5BQAAAANuaWwFAAAAEWNvbnRyYWN0U2VwYXJhdG9yBAAAAAxyZWNlaXB0SXNzdWUJAARDAAAABwUAAAALcmVjZWlwdE5hbWUFAAAAEnJlY2VpcHREZXNjcmlwdGlvbgAAAAAAAAAAAQAAAAAAAAAAAAcFAAAABHVuaXQFAAAABW5vbmNlBAAAAAlyZWNlaXB0SWQJAAQ4AAAAAQUAAAAMcmVjZWlwdElzc3VlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1rZXlOb25jZUNvdW50BQAAAAVub25jZQkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAAFGNvbnRyYWN0SWRCeXRlVmVjdG9yAAAAAAAAAAABCQAETAAAAAIFAAAADHJlY2VpcHRJc3N1ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIIBQAAAAxyZWNlaXB0SXNzdWUAAAAIcXVhbnRpdHkFAAAACXJlY2VpcHRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFWNvbnRyYWN0QXNzZXRRdWFudGl0eQgFAAAAEWNvbnRyYWN0QXNzZXRJbmZvAAAAAmlkBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleY8AiHc=", "height": 1457133, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GRnG6WqytpSUvUNekCmK8BuoYYr1k4L4BZBHJYTXNQHG Next: GTHP2gLbfHCRVCEVNgyacKVa7VhMmE3uy39XgN4vTuJB Diff:
OldNewDifferences
6060 case _ =>
6161 throw("ERROR: Unknown Asset type")
6262 }
63- let testAddr = Address(fromBase58String(rulerAddress))
63+ let testA = match rulerAddress {
64+ case a: String =>
65+ "str"
66+ case b: Int =>
67+ "int"
68+ case _ =>
69+ "what"
70+ }
6471 let nonce = generateNonce()
6572 let contractDescription = makeString([contractText, toString(height), toString(i.caller), contractAssetId, toString(i.payments[0].amount)], contractSeparator)
6673 if ((size(toBytes(contractDescription)) > maxDescriptionBytes))
6875 else {
6976 let contractIssue = Issue(contractName, contractDescription, 1, 0, false, unit, nonce)
7077 let contractId = calculateAssetId(contractIssue)
71-[StringEntry("test", toString(testAddr)), IntegerEntry(keyNonceCount, nonce), contractIssue, ScriptTransfer(i.caller, contractIssue.quantity, contractId)]
78+[StringEntry("test", testA), IntegerEntry(keyNonceCount, nonce), contractIssue, ScriptTransfer(i.caller, contractIssue.quantity, contractId)]
7279 }
7380 }
7481
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let self = toString(this)
55
66 let genesisHeight = 1456230
77
88 let wavesId = "WAVES"
99
1010 let maxInt = 9223372036854775805
1111
1212 let maxDescriptionBytes = 1000
1313
1414 let contractName = "VaultContract"
1515
1616 let contractText = (("Don't trust, verify ! The NFT Issuer and dApp are the same address <" + self) + ">.")
1717
1818 let contractSeparator = "___"
1919
2020 let receiptName = "VaultReceipt"
2121
2222 let receiptText = "fuck off"
2323
2424 let rulerAddressEmpty = "null"
2525
2626 let keyNonceCount = "NONCE_COUNT"
2727
2828 func generateNonce () = match getInteger(this, keyNonceCount) {
2929 case isInt: Int =>
3030 if ((isInt >= maxInt))
3131 then 1
3232 else (isInt + 1)
3333 case _ =>
3434 1
3535 }
3636
3737
3838 @Callable(i)
3939 func deposit (rulerAddress) = if ((genesisHeight > height))
4040 then throw(("ERROR: Deposits are denied until block " + toString(genesisHeight)))
4141 else if ((this == i.caller))
4242 then throw("ERROR: Self-invoke is forbidden")
4343 else if ((size(i.payments) != 1))
4444 then throw("ERROR: Attached Payment != 1")
4545 else if (if ((1 > i.payments[0].amount))
4646 then true
4747 else (i.payments[0].amount > maxInt))
4848 then throw("ERROR: Payment amount")
4949 else {
5050 let contractAssetId = match i.payments[0].assetId {
5151 case isByteVector: ByteVector =>
5252 match assetInfo(isByteVector) {
5353 case isAsset: Asset =>
5454 toBase58String(isAsset.id)
5555 case _ =>
5656 throw("ERROR: Asset not found")
5757 }
5858 case isWaves: Unit =>
5959 wavesId
6060 case _ =>
6161 throw("ERROR: Unknown Asset type")
6262 }
63- let testAddr = Address(fromBase58String(rulerAddress))
63+ let testA = match rulerAddress {
64+ case a: String =>
65+ "str"
66+ case b: Int =>
67+ "int"
68+ case _ =>
69+ "what"
70+ }
6471 let nonce = generateNonce()
6572 let contractDescription = makeString([contractText, toString(height), toString(i.caller), contractAssetId, toString(i.payments[0].amount)], contractSeparator)
6673 if ((size(toBytes(contractDescription)) > maxDescriptionBytes))
6774 then throw("ERROR: Too long contract")
6875 else {
6976 let contractIssue = Issue(contractName, contractDescription, 1, 0, false, unit, nonce)
7077 let contractId = calculateAssetId(contractIssue)
71-[StringEntry("test", toString(testAddr)), IntegerEntry(keyNonceCount, nonce), contractIssue, ScriptTransfer(i.caller, contractIssue.quantity, contractId)]
78+[StringEntry("test", testA), IntegerEntry(keyNonceCount, nonce), contractIssue, ScriptTransfer(i.caller, contractIssue.quantity, contractId)]
7279 }
7380 }
7481
7582
7683
7784 @Callable(i)
7885 func withdraw () = if ((this == i.caller))
7986 then throw("ERROR: Self-invoke is forbidden")
8087 else if ((size(i.payments) != 1))
8188 then throw("ERROR: Attached Payment != 1")
8289 else if ((i.payments[0].amount != 1))
8390 then throw("ERROR: Payment amount != 1")
8491 else {
8592 let contractIdByteVector = match i.payments[0].assetId {
8693 case isByteVector: ByteVector =>
8794 isByteVector
8895 case _ =>
8996 throw("ERROR: Contract type")
9097 }
9198 let contractInfo = match assetInfo(contractIdByteVector) {
9299 case isAsset: Asset =>
93100 isAsset
94101 case _ =>
95102 throw("ERROR: Unknown Contract")
96103 }
97104 if ((contractInfo.issuer != this))
98105 then throw("ERROR: Contract Issuer")
99106 else if ((contractInfo.name != contractName))
100107 then throw("ERROR: Contract name")
101108 else if (if (if (if ((contractInfo.decimals != 0))
102109 then true
103110 else (contractInfo.quantity != 1))
104111 then true
105112 else (contractInfo.reissuable != false))
106113 then true
107114 else (contractInfo.scripted != false))
108115 then throw("ERROR: Contract not NFT")
109116 else {
110117 let contractDescription = split(contractInfo.description, contractSeparator)
111118 let contractHeight = parseIntValue(contractDescription[1])
112119 let contractCallerAddress = contractDescription[2]
113120 let contractAssetId = contractDescription[3]
114121 let contractAssetQuantity = parseIntValue(contractDescription[4])
115122 let contractAssetInfo = match assetInfo(fromBase58String(contractAssetId)) {
116123 case isAsset: Asset =>
117124 isAsset
118125 case _ =>
119126 throw("ERROR: Unknown Asset")
120127 }
121128 if ((size(contractDescription) != 5))
122129 then throw("ERROR: Contract description")
123130 else if (if ((genesisHeight >= contractHeight))
124131 then true
125132 else (contractHeight >= height))
126133 then throw("ERROR: Height")
127134 else if (if ((1 > contractAssetQuantity))
128135 then true
129136 else (contractAssetQuantity > contractAssetInfo.quantity))
130137 then throw("ERROR: Asset quantity")
131138 else if ((contractAssetQuantity > assetBalance(this, contractAssetInfo.id)))
132139 then throw("ERROR: Vault balance")
133140 else {
134141 let nonce = generateNonce()
135142 let receiptDescription = makeString([receiptText, toString(contractHeight), toString(height), toBase58String(contractIdByteVector), contractCallerAddress, toString(i.caller), contractAssetId, toString(contractAssetQuantity)], contractSeparator)
136143 let receiptIssue = Issue(receiptName, receiptDescription, 1, 0, false, unit, nonce)
137144 let receiptId = calculateAssetId(receiptIssue)
138145 [IntegerEntry(keyNonceCount, nonce), Burn(contractIdByteVector, 1), receiptIssue, ScriptTransfer(i.caller, receiptIssue.quantity, receiptId), ScriptTransfer(i.caller, contractAssetQuantity, contractAssetInfo.id)]
139146 }
140147 }
141148 }
142149
143150
144151 @Verifier(tx)
145152 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
146153

github/deemru/w8io/169f3d6 
30.32 ms