tx · 694TW1NM2jaP8bZyiDyPmYTWfRk6UsAiPwBmoUDTmog9

3MtoBpCc3s2T4CxasJ5MXrZZsU339D28mvD:  -0.01400000 Waves

2021.05.25 17:20 [1541296] smart account 3MtoBpCc3s2T4CxasJ5MXrZZsU339D28mvD > SELF 0.00000000 Waves

{ "type": 13, "id": "694TW1NM2jaP8bZyiDyPmYTWfRk6UsAiPwBmoUDTmog9", "fee": 1400000, "feeAssetId": null, "timestamp": 1621952454457, "version": 2, "chainId": 84, "sender": "3MtoBpCc3s2T4CxasJ5MXrZZsU339D28mvD", "senderPublicKey": "8SRjg8K8B7rhV2pih6qRgku886VQE4phwNCDjWZu1fUe", "proofs": [ "2ZLhMwLp9zSgGSt6rdtSHh8P66fFY8fRRxJ6iQ7xV2cvRDGEHBfZSsMj1dzYbaZK2goJZtmcqmYLMCfaZMtVgQTm" ], "script": "base64:AAIEAAAAAAAAACAIAhIDCgEIEgMKAQESAwoBARIECgIIARIHCgUICAEBCAAAABEBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAABm51bWJlcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAAGbnVtYmVyAAAAAAROT05FAgAAAARub25lAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5BAAAAAZzdHJpbmcEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAABnN0cmluZwEAAAAPZ2V0S2V5VXNlckVtYWlsAAAAAQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgIAAAAFdXNlcl8FAAAABHVzZXICAAAABl9lbWFpbAEAAAARZ2V0VmFsdWVVc2VyRW1haWwAAAABAAAABHVzZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9nZXRLZXlVc2VyRW1haWwAAAABBQAAAAR1c2VyAQAAABFnZXRLZXlVc2VyQmFsYW5jZQAAAAEAAAAEdXNlcgkAASwAAAACCQABLAAAAAICAAAABXVzZXJfBQAAAAR1c2VyAgAAAAhfYmFsYW5jZQEAAAATZ2V0VmFsdWVVc2VyQmFsYW5jZQAAAAEAAAAEdXNlcgkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEWdldEtleVVzZXJCYWxhbmNlAAAAAQUAAAAEdXNlcgEAAAARZ2V0S2V5REFwcEFzc2V0SWQAAAAAAgAAAAxkQXBwX2Fzc2V0SWQBAAAAE2dldFZhbHVlREFwcEFzc2V0SWQAAAAACQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAARZ2V0S2V5REFwcEFzc2V0SWQAAAAAAQAAABFnZXRLZXlEQXBwQmFsYW5jZQAAAAACAAAADGRBcHBfYmFsYW5jZQEAAAATZ2V0VmFsdWVEQXBwQmFsYW5jZQAAAAAJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABFnZXRLZXlEQXBwQmFsYW5jZQAAAAABAAAAEGdldEtleUFzc2V0VGl0bGUAAAABAAAABWFzc2V0CQABLAAAAAIJAAEsAAAAAgIAAAAGYXNzZXRfBQAAAAVhc3NldAIAAAAGX3RpdGxlAQAAABJnZXRWYWx1ZUFzc2V0VGl0bGUAAAABAAAABWFzc2V0CQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQZ2V0S2V5QXNzZXRUaXRsZQAAAAEFAAAABWFzc2V0AQAAABBnZXRLZXlBc3NldFByaWNlAAAAAQAAAAVhc3NldAkAASwAAAACCQABLAAAAAICAAAABmFzc2V0XwUAAAAFYXNzZXQCAAAABl9wcmljZQEAAAASZ2V0VmFsdWVBc3NldFByaWNlAAAAAQAAAAVhc3NldAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldEtleUFzc2V0UHJpY2UAAAABBQAAAAVhc3NldAEAAAAPZ2V0S2V5QXNzZXREYXRhAAAAAQAAAAVhc3NldAkAASwAAAACCQABLAAAAAICAAAABmFzc2V0XwUAAAAFYXNzZXQCAAAABV9kYXRhAQAAABFnZXRWYWx1ZUFzc2V0RGF0YQAAAAEAAAAFYXNzZXQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBnZXRLZXlBc3NldFByaWNlAAAAAQUAAAAFYXNzZXQAAAAFAAAAAWkBAAAABnNpZ25VcAAAAAEAAAAFZW1haWwEAAAAEmN1cnJlbnRVc2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABBjdXJyZW50VXNlckVtYWlsCQEAAAARZ2V0VmFsdWVVc2VyRW1haWwAAAABBQAAABJjdXJyZW50VXNlckFkZHJlc3MDCQEAAAACIT0AAAACBQAAABBjdXJyZW50VXNlckVtYWlsBQAAAAROT05FCQAAAgAAAAECAAAAGnVzZXIgaXMgYWxyZWFkeSByZWdpc3RlcmVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXRLZXlVc2VyRW1haWwAAAABBQAAABJjdXJyZW50VXNlckFkZHJlc3MFAAAABWVtYWlsCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARZ2V0S2V5VXNlckJhbGFuY2UAAAABBQAAABJjdXJyZW50VXNlckFkZHJlc3MAAAAAAAAAAAAFAAAAA25pbAAAAAFpAQAAAAppc3N1ZVRva2VuAAAAAQAAAAhxdWFudGl0eQQAAAALZEFwcEFzc2V0SWQJAQAAABNnZXRWYWx1ZURBcHBBc3NldElkAAAAAAMJAQAAAAIhPQAAAAIFAAAAC2RBcHBBc3NldElkBQAAAAROT05FCQAAAgAAAAECAAAAHXRva2VuIGhhcyBhbHJlYWR5IGJlZW4gaXNzdWVkBAAAAAVhc3NldAkABEIAAAAFAgAAAAdOWUFOLTI1AgAAAA1OWUFOLTI1IHRva2VuBQAAAAhxdWFudGl0eQAAAAAAAAAAAAYEAAAAB2Fzc2V0SWQJAAQ4AAAAAQUAAAAFYXNzZXQJAARMAAAAAgUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldEtleURBcHBBc3NldElkAAAAAAkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARZ2V0S2V5REFwcEJhbGFuY2UAAAAABQAAAAhxdWFudGl0eQUAAAADbmlsAAAAAWkBAAAADHJlaXNzdWVUb2tlbgAAAAEAAAAIcXVhbnRpdHkEAAAAC2RBcHBBc3NldElkCQEAAAATZ2V0VmFsdWVEQXBwQXNzZXRJZAAAAAADCQAAAAAAAAIFAAAAC2RBcHBBc3NldElkBQAAAAROT05FCQAAAgAAAAECAAAAGXRva2VuIGhhcyBub3QgYmVlbiBpc3N1ZWQEAAAAEmN1cnJlbnREQXBwQmFsYW5jZQkBAAAAE2dldFZhbHVlREFwcEJhbGFuY2UAAAAABAAAAApuZXdCYWxhbmNlCQAAZAAAAAIFAAAAEmN1cnJlbnREQXBwQmFsYW5jZQUAAAAIcXVhbnRpdHkJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADCQACWQAAAAEFAAAAC2RBcHBBc3NldElkBQAAAAhxdWFudGl0eQYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABFnZXRLZXlEQXBwQmFsYW5jZQAAAAAFAAAACm5ld0JhbGFuY2UFAAAAA25pbAAAAAFpAQAAAA10cmFuc2ZlclRva2VuAAAAAgAAAAlyZWNpcGllbnQAAAAGYW1vdW50BAAAABJjdXJyZW50REFwcEJhbGFuY2UJAQAAABNnZXRWYWx1ZURBcHBCYWxhbmNlAAAAAAQAAAAObmV3REFwcEJhbGFuY2UJAABlAAAAAgUAAAASY3VycmVudERBcHBCYWxhbmNlBQAAAAZhbW91bnQDCQAAZgAAAAIAAAAAAAAAAAAFAAAADm5ld0RBcHBCYWxhbmNlCQAAAgAAAAECAAAAEm5vdCBlbm91bmcgYmFsYW5jZQQAAAASY3VycmVudFVzZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAEmN1cnJlbnRVc2VyQmFsYW5jZQkBAAAAE2dldFZhbHVlVXNlckJhbGFuY2UAAAABBQAAABJjdXJyZW50VXNlckFkZHJlc3MEAAAADm5ld1VzZXJCYWxhbmNlCQAAZAAAAAIFAAAAEmN1cnJlbnRVc2VyQmFsYW5jZQUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARZ2V0S2V5REFwcEJhbGFuY2UAAAAABQAAAA5uZXdEQXBwQmFsYW5jZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldEtleVVzZXJCYWxhbmNlAAAAAQUAAAAJcmVjaXBpZW50BQAAAA5uZXdVc2VyQmFsYW5jZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAAJcmVjaXBpZW50BQAAAAZhbW91bnQJAAJZAAAAAQkBAAAAE2dldFZhbHVlREFwcEFzc2V0SWQAAAAABQAAAANuaWwAAAABaQEAAAAPaXNzdWVBc3NldFRva2VuAAAABQAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAACHF1YW50aXR5AAAABXByaWNlAAAABGRhdGEEAAAABWFzc2V0CQAEQgAAAAUFAAAABG5hbWUFAAAAC2Rlc2NyaXB0aW9uBQAAAAhxdWFudGl0eQAAAAAAAAAAAAYEAAAAB2Fzc2V0SWQJAAQ4AAAAAQUAAAAFYXNzZXQJAARMAAAAAgUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGdldEtleUFzc2V0VGl0bGUAAAABCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAABG5hbWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABBnZXRLZXlBc3NldFByaWNlAAAAAQkAAlgAAAABBQAAAAdhc3NldElkBQAAAAVwcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0S2V5QXNzZXREYXRhAAAAAQkAAlgAAAABBQAAAAdhc3NldElkBQAAAARkYXRhBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAACQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleZCWTZk=", "height": 1541296, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B5c544PjbspR9bwo7H1vhwSNVF1aCZAu465UUZthV4XU Next: EfuQpcbfFVtHihDajF44cspjSSdrpkjw5S6RcmgFkPMX Diff:
OldNewDifferences
4747
4848
4949 func getValueDAppBalance () = getNumberByKey(getKeyDAppBalance())
50+
51+
52+func getKeyAssetTitle (asset) = (("asset_" + asset) + "_title")
53+
54+
55+func getValueAssetTitle (asset) = getStringByKey(getKeyAssetTitle(asset))
56+
57+
58+func getKeyAssetPrice (asset) = (("asset_" + asset) + "_price")
59+
60+
61+func getValueAssetPrice (asset) = getNumberByKey(getKeyAssetPrice(asset))
62+
63+
64+func getKeyAssetData (asset) = (("asset_" + asset) + "_data")
65+
66+
67+func getValueAssetData (asset) = getStringByKey(getKeyAssetPrice(asset))
5068
5169
5270 @Callable(i)
103121 }
104122
105123
124+
125+@Callable(i)
126+func issueAssetToken (name,description,quantity,price,data) = {
127+ let asset = Issue(name, description, quantity, 0, true)
128+ let assetId = calculateAssetId(asset)
129+[asset, StringEntry(getKeyAssetTitle(toBase58String(assetId)), name), IntegerEntry(getKeyAssetPrice(toBase58String(assetId)), price), StringEntry(getKeyAssetData(toBase58String(assetId)), data)]
130+ }
131+
132+
106133 @Verifier(tx)
107134 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
108135
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getNumberByKey (key) = {
55 let number = match getInteger(this, key) {
66 case a: Int =>
77 a
88 case _ =>
99 0
1010 }
1111 number
1212 }
1313
1414
1515 let NONE = "none"
1616
1717 func getStringByKey (key) = {
1818 let string = match getString(this, key) {
1919 case a: String =>
2020 a
2121 case _ =>
2222 NONE
2323 }
2424 string
2525 }
2626
2727
2828 func getKeyUserEmail (user) = (("user_" + user) + "_email")
2929
3030
3131 func getValueUserEmail (user) = getStringByKey(getKeyUserEmail(user))
3232
3333
3434 func getKeyUserBalance (user) = (("user_" + user) + "_balance")
3535
3636
3737 func getValueUserBalance (user) = getNumberByKey(getKeyUserBalance(user))
3838
3939
4040 func getKeyDAppAssetId () = "dApp_assetId"
4141
4242
4343 func getValueDAppAssetId () = getStringByKey(getKeyDAppAssetId())
4444
4545
4646 func getKeyDAppBalance () = "dApp_balance"
4747
4848
4949 func getValueDAppBalance () = getNumberByKey(getKeyDAppBalance())
50+
51+
52+func getKeyAssetTitle (asset) = (("asset_" + asset) + "_title")
53+
54+
55+func getValueAssetTitle (asset) = getStringByKey(getKeyAssetTitle(asset))
56+
57+
58+func getKeyAssetPrice (asset) = (("asset_" + asset) + "_price")
59+
60+
61+func getValueAssetPrice (asset) = getNumberByKey(getKeyAssetPrice(asset))
62+
63+
64+func getKeyAssetData (asset) = (("asset_" + asset) + "_data")
65+
66+
67+func getValueAssetData (asset) = getStringByKey(getKeyAssetPrice(asset))
5068
5169
5270 @Callable(i)
5371 func signUp (email) = {
5472 let currentUserAddress = toBase58String(i.caller.bytes)
5573 let currentUserEmail = getValueUserEmail(currentUserAddress)
5674 if ((currentUserEmail != NONE))
5775 then throw("user is already registered")
5876 else [StringEntry(getKeyUserEmail(currentUserAddress), email), IntegerEntry(getKeyUserBalance(currentUserAddress), 0)]
5977 }
6078
6179
6280
6381 @Callable(i)
6482 func issueToken (quantity) = {
6583 let dAppAssetId = getValueDAppAssetId()
6684 if ((dAppAssetId != NONE))
6785 then throw("token has already been issued")
6886 else {
6987 let asset = Issue("NYAN-25", "NYAN-25 token", quantity, 0, true)
7088 let assetId = calculateAssetId(asset)
7189 [asset, StringEntry(getKeyDAppAssetId(), toBase58String(assetId)), IntegerEntry(getKeyDAppBalance(), quantity)]
7290 }
7391 }
7492
7593
7694
7795 @Callable(i)
7896 func reissueToken (quantity) = {
7997 let dAppAssetId = getValueDAppAssetId()
8098 if ((dAppAssetId == NONE))
8199 then throw("token has not been issued")
82100 else {
83101 let currentDAppBalance = getValueDAppBalance()
84102 let newBalance = (currentDAppBalance + quantity)
85103 [Reissue(fromBase58String(dAppAssetId), quantity, true), IntegerEntry(getKeyDAppBalance(), newBalance)]
86104 }
87105 }
88106
89107
90108
91109 @Callable(i)
92110 func transferToken (recipient,amount) = {
93111 let currentDAppBalance = getValueDAppBalance()
94112 let newDAppBalance = (currentDAppBalance - amount)
95113 if ((0 > newDAppBalance))
96114 then throw("not enoung balance")
97115 else {
98116 let currentUserAddress = toBase58String(i.caller.bytes)
99117 let currentUserBalance = getValueUserBalance(currentUserAddress)
100118 let newUserBalance = (currentUserBalance + amount)
101119 [IntegerEntry(getKeyDAppBalance(), newDAppBalance), IntegerEntry(getKeyUserBalance(recipient), newUserBalance), ScriptTransfer(Address(fromBase58String(recipient)), amount, fromBase58String(getValueDAppAssetId()))]
102120 }
103121 }
104122
105123
124+
125+@Callable(i)
126+func issueAssetToken (name,description,quantity,price,data) = {
127+ let asset = Issue(name, description, quantity, 0, true)
128+ let assetId = calculateAssetId(asset)
129+[asset, StringEntry(getKeyAssetTitle(toBase58String(assetId)), name), IntegerEntry(getKeyAssetPrice(toBase58String(assetId)), price), StringEntry(getKeyAssetData(toBase58String(assetId)), data)]
130+ }
131+
132+
106133 @Verifier(tx)
107134 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
108135

github/deemru/w8io/873ac7e 
26.86 ms