tx · FLDc6EbdKGduG7v2bTmVdveZjUKiYfy66MxYziepuMuA

3Mze7XxHJtXw48uyWhjTJgMLcEzNBmi9tS9:  -0.01400000 Waves

2019.08.01 16:35 [611793] smart account 3Mze7XxHJtXw48uyWhjTJgMLcEzNBmi9tS9 > SELF 0.00000000 Waves

{ "type": 13, "id": "FLDc6EbdKGduG7v2bTmVdveZjUKiYfy66MxYziepuMuA", "fee": 1400000, "feeAssetId": null, "timestamp": 1564666586000, "version": 1, "sender": "3Mze7XxHJtXw48uyWhjTJgMLcEzNBmi9tS9", "senderPublicKey": "BZri78A6CXpGPmAHZNwqQXoNfWamwRZiuaBas3VdDKZp", "proofs": [ "3FJYvf9kMWBp7s6s5BAyFVGbdxtLdFw9JLDnNELcfCJJAfLRTeUKfjk5ZtENmgz8564GRW9CeZ5TpdcXtiAYJbB7" ], "script": "base64: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", "chainId": 84, "height": 611793, "spentComplexity": 0 } View: original | compacted Prev: 41jzKtaeB98UByEumcM5ZSaebJFahg2ozNQWqGbmANSz Next: 3rCFsQzMyG9iM4rpaZ6P9rR8aKGZxdGxAuVhi1yZNusA Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = "none"
55
66 func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
77
88
99 func getKeyItem (supplier,title) = ("item" + toBase58String(sha256(toBytes((supplier + title)))))
1010
1111
1212 func getNumByKey (key) = {
1313 let num = match getInteger(this, key) {
1414 case a: Int =>
1515 a
1616 case _ =>
1717 0
1818 }
1919 num
2020 }
2121
2222
2323 func getStrByKey (key) = {
2424 let str = match getString(this, key) {
2525 case a: String =>
2626 a
2727 case _ =>
2828 NONE
2929 }
3030 str
3131 }
3232
3333
3434 func getKeyItemSupplier (item) = (item + "_owner")
3535
3636
3737 func getKeyItemPrice (item) = (item + "_price")
3838
3939
4040 func getKeyItemData (item) = (item + "_data")
4141
4242
4343 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
4444
4545
4646 func getValueItemPrice (item) = getNumByKey(getKeyItemPrice(item))
4747
4848
4949 func getValueUserItemCounter (user,item) = getNumByKey(getKeyItemPrice(item))
5050
5151
5252 func getKeyBalanceSupplier (account) = (account + "_balance")
5353
5454
5555 func getValueBalanceSupplier (account) = getNumByKey(getKeyBalanceSupplier(account))
5656
5757
5858 @Callable(i)
5959 func purchase (item) = {
6060 let pmt = extract(i.payment)
6161 if (isDefined(pmt.assetId))
6262 then throw("Can use only WAVES at the moment.")
6363 else {
6464 let customerAddress = toBase16String(i.caller.bytes)
6565 let price = getValueItemPrice(item)
6666 let supplierAddress = getValueItemSupplier(item)
6767 if ((price > pmt.amount))
6868 then throw(((("Amount cannot be less than item price. You specified amount: " + toString(pmt.amount)) + "but price is ") + toString(price)))
6969 else if ((pmt.amount > price))
7070 then throw(((((("Amount cannot be greater than item price. You specified amount: " + toString(pmt.amount)) + " but price of item: ") + item) + " is ") + toString(price)))
7171 else if ((supplierAddress == NONE))
7272 then throw("Supplier not found.")
7373 else WriteSet([DataEntry(getKeyUserItemCounter(customerAddress, item), (getValueUserItemCounter(customerAddress, item) + 1)), DataEntry(getKeyBalanceSupplier(supplierAddress), (getValueBalanceSupplier(supplierAddress) + pmt.amount))])
7474 }
7575 }
7676
7777
7878
7979 @Callable(i)
8080 func addItem (title,price,data) = {
8181 let supplierAddress = toBase58String(i.caller.bytes)
8282 let item = getKeyItem(supplierAddress, title)
8383 if ((0 >= price))
8484 then throw("Price must be positive.")
8585 else if ((getValueItemSupplier(item) != NONE))
8686 then throw("An item like this already exists.")
8787 else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)])
8888 }
8989
9090

github/deemru/w8io/873ac7e 
33.70 ms