tx · 7VmH8ekuvHm2p1gnqSzC5RfnmH1pR28xrMJomRvg3j56

3MyFTU8KpXrgry7Cqpz6PZ7CxoHHuoCafbY:  -0.01000000 Waves

2019.08.09 17:10 [623549] smart account 3MyFTU8KpXrgry7Cqpz6PZ7CxoHHuoCafbY > SELF 0.00000000 Waves

{ "type": 13, "id": "7VmH8ekuvHm2p1gnqSzC5RfnmH1pR28xrMJomRvg3j56", "fee": 1000000, "feeAssetId": null, "timestamp": 1565359358402, "version": 1, "sender": "3MyFTU8KpXrgry7Cqpz6PZ7CxoHHuoCafbY", "senderPublicKey": "Cdo9iM4Qi46T7NxTzKqUXjgo5ETLMZXBB5BkvthHRSuC", "proofs": [ "yo6b1SJMc6iZWBw9A2e5js9pJm5vA4NH2FgXwV3BMsCi9jD14ZSw4SA9naa7LLEhfe6wJ3nr34vdWMBX2AXgXuo" ], "script": "base64:AAIDAAAAAAAAAAAAAAAeAAAAAAROT05FAgAAAARub25lAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAAAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FAAAAABFBY2NvdW50QmFsYW5jZUtleQIAAAAIYmFsYW5jZV8AAAAAEE5ldXRyaW5vUHJpY2VLZXkCAAAACm51c2RfcHJpY2UAAAAADEJvbmRDb3VudEtleQIAAAAKYm9uZF9jb3VudAAAAAAMQm9uZFByaWNlS2V5AgAAAApib25kX3ByaWNlAAAAAAxCb25kQmxvY2tLZXkCAAAACmJvbmRfYmxvY2sAAAAADEJvbmRPd25lcktleQIAAAAKYm9uZF9vd25lcgAAAAAKQm9uZFN0YXR1cwIAAAALYm9uZF9zdGF0dXMBAAAAFGdldEFjY291bnRCYWxhbmNlS2V5AAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAEUFjY291bnRCYWxhbmNlS2V5BQAAAAdhY2NvdW50AQAAABFnZXRBY2NvdW50QmFsYW5jZQAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFGdldEFjY291bnRCYWxhbmNlS2V5AAAAAQUAAAAHYWNjb3VudAEAAAAQZ2V0TmV1dHJpbm9QcmljZQAAAAAJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAAEE5ldXRyaW5vUHJpY2VLZXkBAAAADGdldEJvbmRDb3VudAAAAAAJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAADEJvbmRDb3VudEtleQEAAAAMZ2V0Qm9uZFByaWNlAAAAAAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAMQm9uZFByaWNlS2V5AQAAAA1nZXRCb25kU3RhdHVzAAAAAAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQUAAAAMQm9uZFByaWNlS2V5AQAAABFnZXRCb25kT3JkZXJCbG9jawAAAAAJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEFAAAADEJvbmRCbG9ja0tleQEAAAAMZ2V0Qm9uZE93bmVyAAAAAAkBAAAAC2dldFN0ckJ5S2V5AAAAAQUAAAAMQm9uZE93bmVyS2V5AAAAAAdXYXZlbGV0AAAAAAAF9eEAAAAAAA9FeHBpcmVCb25kT3JkZXIAAAAAAAAAAAoAAAAAD0V4Y2VjdXRlZFN0YXR1cwIAAAAJZXhjZWN1dGVkAAAAABVOZXV0cmlub0Fzc2V0SWRTdHJpbmcCAAAAAAAAAAAPTmV1dHJpbm9Bc3NldElkCQABmwAAAAEFAAAAFU5ldXRyaW5vQXNzZXRJZFN0cmluZwAAAAARQm9uZEFzc2V0SWRTdHJpbmcCAAAAAAAAAAALQm9uZEFzc2V0SWQJAAGbAAAAAQUAAAAVTmV1dHJpbm9Bc3NldElkU3RyaW5nAAAAAAxOZXV0cmlub05hbWUCAAAADE5ldXRyaW5vLVVTRAAAAAAOTmV1dHJpbm9TeW1ib2wCAAAABU4tVVNEAAAAABBNaW5pbWFsQm9uZE9yZGVyCQAAaAAAAAIAAAAAAAAAAAoFAAAAB1dhdmVsZXQBAAAACWdldFN1cHBseQAAAAAJAAPrAAAAAgUAAAAEdGhpcwUAAAAPTmV1dHJpbm9Bc3NldElkAQAAAApnZXRSZXNlcnZlAAAAAAkBAAAADHdhdmVzQmFsYW5jZQAAAAEFAAAABHRoaXMAAAADAAAAAWkBAAAAE3N3YXBXYXZlc1RvTmV1dHJpbm8AAAAABAAAAAVwcmljZQkBAAAAEGdldE5ldXRyaW5vUHJpY2UAAAAABAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAgY2FuIHVzZSB3YXZlcyBvbmx5IGF0IHRoZSBtb21lbnQEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRl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", "chainId": 84, "height": 623549, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let NONE = "none"
5+
6+func getNumberByKey (key) = match getInteger(this, key) {
7+ case a: Int =>
8+ a
9+ case _ =>
10+ 0
11+}
12+
13+
14+func getStrByKey (key) = match getString(this, key) {
15+ case a: String =>
16+ a
17+ case _ =>
18+ NONE
19+}
20+
21+
22+let AccountBalanceKey = "balance_"
23+
24+let NeutrinoPriceKey = "nusd_price"
25+
26+let BondCountKey = "bond_count"
27+
28+let BondPriceKey = "bond_price"
29+
30+let BondBlockKey = "bond_block"
31+
32+let BondOwnerKey = "bond_owner"
33+
34+let BondStatus = "bond_status"
35+
36+func getAccountBalanceKey (account) = (AccountBalanceKey + account)
37+
38+
39+func getAccountBalance (account) = getNumberByKey(getAccountBalanceKey(account))
40+
41+
42+func getNeutrinoPrice () = getNumberByKey(NeutrinoPriceKey)
43+
44+
45+func getBondCount () = getNumberByKey(BondCountKey)
46+
47+
48+func getBondPrice () = getNumberByKey(BondPriceKey)
49+
50+
51+func getBondStatus () = getNumberByKey(BondPriceKey)
52+
53+
54+func getBondOrderBlock () = getNumberByKey(BondBlockKey)
55+
56+
57+func getBondOwner () = getStrByKey(BondOwnerKey)
58+
59+
60+let Wavelet = 100000000
61+
62+let ExpireBondOrder = 10
63+
64+let ExcecutedStatus = "excecuted"
65+
66+let NeutrinoAssetIdString = ""
67+
68+let NeutrinoAssetId = toBytes(NeutrinoAssetIdString)
69+
70+let BondAssetIdString = ""
71+
72+let BondAssetId = toBytes(NeutrinoAssetIdString)
73+
74+let NeutrinoName = "Neutrino-USD"
75+
76+let NeutrinoSymbol = "N-USD"
77+
78+let MinimalBondOrder = (10 * Wavelet)
79+
80+func getSupply () = assetBalance(this, NeutrinoAssetId)
81+
82+
83+func getReserve () = wavesBalance(this)
84+
85+
86+@Callable(i)
87+func swapWavesToNeutrino () = {
88+ let price = getNeutrinoPrice()
89+ let pmt = extract(i.payment)
90+ if (isDefined(pmt.assetId))
91+ then throw("can use waves only at the moment")
92+ else {
93+ let account = toBase58String(i.caller.bytes)
94+ let amount = (pmt.amount * price)
95+ TransferSet([ScriptTransfer(addressFromStringValue(account), amount, NeutrinoAssetId)])
96+ }
97+ }
98+
99+
100+
101+@Callable(i)
102+func swapNeutrinoToWaves () = {
103+ let price = getNeutrinoPrice()
104+ let pmt = extract(i.payment)
105+ if ((pmt.assetId == NeutrinoAssetId))
106+ then throw("can use neutrino only at the moment")
107+ else {
108+ let account = toBase58String(i.caller.bytes)
109+ let amount = (pmt.amount / price)
110+ TransferSet([ScriptTransfer(addressFromStringValue(account), amount, NeutrinoAssetId)])
111+ }
112+ }
113+
114+
115+
116+@Callable(i)
117+func setBondOrder (price) = {
118+ let priceNeutrino = getNeutrinoPrice()
119+ let reserve = getReserve()
120+ let supply = getSupply()
121+ let deficit = ((supply / priceNeutrino) - reserve)
122+ let pmt = extract(i.payment)
123+ let boudBlock = getBondOrderBlock()
124+ if (isDefined(pmt.assetId))
125+ then throw("can use waves only at the moment")
126+ else if ((deficit == pmt.amount))
127+ then throw("amount does not cover deficit")
128+ else if ((boudBlock == 0))
129+ then if ((MinimalBondOrder > deficit))
130+ then throw("bond not generated")
131+ else {
132+ let amount = (pmt.amount / price)
133+ ScriptResult(WriteSet([DataEntry(BondBlockKey, height), DataEntry(BondPriceKey, price), DataEntry(BondOwnerKey, toString(i.caller)), DataEntry(BondCountKey, (pmt.amount / price))]), TransferSet([ScriptTransfer(i.caller, amount, NeutrinoAssetId)]))
134+ }
135+ else if (((boudBlock + ExpireBondOrder) > height))
136+ then throw("TODO")
137+ else {
138+ let lastPrice = getBondPrice()
139+ let lastCount = getBondCount()
140+ if ((lastPrice >= price))
141+ then throw("bond not generated")
142+ else ScriptResult(WriteSet([DataEntry(BondPriceKey, price), DataEntry(BondOwnerKey, toString(i.caller)), DataEntry(BondCountKey, (pmt.amount / price))]), TransferSet([ScriptTransfer(addressFromStringValue(getBondOwner()), (lastCount * lastPrice), NeutrinoAssetId)]))
143+ }
144+ }
145+
146+

github/deemru/w8io/169f3d6 
19.22 ms