tx · 6JgPejDBLt29a9m1EqTxTqQ1uXwFvRaGBp48z49u293G
3Mze7XxHJtXw48uyWhjTJgMLcEzNBmi9tS9: -0.01400000 Waves
2019.08.01 13:36 [611611] smart account 3Mze7XxHJtXw48uyWhjTJgMLcEzNBmi9tS9 > SELF 0.00000000 Waves
{
"type": 13,
"id": "6JgPejDBLt29a9m1EqTxTqQ1uXwFvRaGBp48z49u293G",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1564655812837,
"version": 1,
"sender": "3Mze7XxHJtXw48uyWhjTJgMLcEzNBmi9tS9",
"senderPublicKey": "BZri78A6CXpGPmAHZNwqQXoNfWamwRZiuaBas3VdDKZp",
"proofs": [
"4WL2QKf9MsmX3uQgY1CENdEdQfx3mp44jGF7cgBR1fZ7bm2fxoM4SjXwCJyCaCsfZPH7KQgF9djrLQRq21faeKsF"
],
"script": "base64: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",
"chainId": 84,
"height": 611611,
"spentComplexity": 0
}
View: original | compacted
Prev: 47tKTeY7HZEtJ98hBVs7fsFn1JKL8MzmttU7v8x7EEXx
Next: 41jzKtaeB98UByEumcM5ZSaebJFahg2ozNQWqGbmANSz
Diff:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 3 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
| 4 | + | let NONE = "none" |
---|
| 5 | + | |
---|
| 6 | + | func getKeyItem (supplier,title) = ("item" + toBase58String(sha256(toBytes((supplier + title))))) |
---|
| 7 | + | |
---|
| 8 | + | |
---|
| 9 | + | func getStrByKey (key) = { |
---|
| 10 | + | let str = match getString(this, key) { |
---|
| 11 | + | case a: String => |
---|
| 12 | + | a |
---|
| 13 | + | case _ => |
---|
| 14 | + | NONE |
---|
| 15 | + | } |
---|
| 16 | + | str |
---|
| 17 | + | } |
---|
| 18 | + | |
---|
| 19 | + | |
---|
| 20 | + | func getKeyItemSupplier (item) = (item + "_owner") |
---|
| 21 | + | |
---|
| 22 | + | |
---|
| 23 | + | func getKeyItemPrice (item) = (item + "_price") |
---|
| 24 | + | |
---|
| 25 | + | |
---|
| 26 | + | func getKeyItemData (item) = (item + "_data") |
---|
| 27 | + | |
---|
| 28 | + | |
---|
| 29 | + | func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item)) |
---|
4 | 30 | | |
---|
5 | 31 | | |
---|
6 | 32 | | @Callable(i) |
---|
|
25 | 51 | | } |
---|
26 | 52 | | |
---|
27 | 53 | | |
---|
| 54 | + | |
---|
| 55 | + | @Callable(i) |
---|
| 56 | + | func addItem (title,price,data) = { |
---|
| 57 | + | let supplierAddress = toBase58String(i.caller.bytes) |
---|
| 58 | + | let item = getKeyItem(supplierAddress, title) |
---|
| 59 | + | if ((0 >= price)) |
---|
| 60 | + | then throw("Price must be positive.") |
---|
| 61 | + | else if ((getValueItemSupplier(item) != NONE)) |
---|
| 62 | + | then throw("An item like this already exists.") |
---|
| 63 | + | else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)]) |
---|
| 64 | + | } |
---|
| 65 | + | |
---|
| 66 | + | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 3 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
| 4 | + | let NONE = "none" |
---|
| 5 | + | |
---|
| 6 | + | func getKeyItem (supplier,title) = ("item" + toBase58String(sha256(toBytes((supplier + title))))) |
---|
| 7 | + | |
---|
| 8 | + | |
---|
| 9 | + | func getStrByKey (key) = { |
---|
| 10 | + | let str = match getString(this, key) { |
---|
| 11 | + | case a: String => |
---|
| 12 | + | a |
---|
| 13 | + | case _ => |
---|
| 14 | + | NONE |
---|
| 15 | + | } |
---|
| 16 | + | str |
---|
| 17 | + | } |
---|
| 18 | + | |
---|
| 19 | + | |
---|
| 20 | + | func getKeyItemSupplier (item) = (item + "_owner") |
---|
| 21 | + | |
---|
| 22 | + | |
---|
| 23 | + | func getKeyItemPrice (item) = (item + "_price") |
---|
| 24 | + | |
---|
| 25 | + | |
---|
| 26 | + | func getKeyItemData (item) = (item + "_data") |
---|
| 27 | + | |
---|
| 28 | + | |
---|
| 29 | + | func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item)) |
---|
4 | 30 | | |
---|
5 | 31 | | |
---|
6 | 32 | | @Callable(i) |
---|
7 | 33 | | func purchase (Productname) = { |
---|
8 | 34 | | let pmt = extract(i.payment) |
---|
9 | 35 | | if (isDefined(pmt.assetId)) |
---|
10 | 36 | | then throw("Can use only WAVES at the moment.") |
---|
11 | 37 | | else { |
---|
12 | 38 | | let customerAddress = toBase16String(i.caller.bytes) |
---|
13 | 39 | | let price = match getInteger(this, Productname) { |
---|
14 | 40 | | case a: Int => |
---|
15 | 41 | | a |
---|
16 | 42 | | case _ => |
---|
17 | 43 | | 0 |
---|
18 | 44 | | } |
---|
19 | 45 | | if ((price > pmt.amount)) |
---|
20 | 46 | | then throw(((("Amount cannot be less than item price. You specified amount: " + toString(pmt.amount)) + "but price is ") + toString(price))) |
---|
21 | 47 | | else if ((pmt.amount > price)) |
---|
22 | 48 | | then throw(((("Amount cannot be greater than item price. You specified amount: " + toString(pmt.amount)) + "but price is ") + toString(price))) |
---|
23 | 49 | | else WriteSet([DataEntry(((("status:" + Productname) + "_") + customerAddress), "confirmed"), DataEntry(((("price:" + Productname) + "_") + customerAddress), price)]) |
---|
24 | 50 | | } |
---|
25 | 51 | | } |
---|
26 | 52 | | |
---|
27 | 53 | | |
---|
| 54 | + | |
---|
| 55 | + | @Callable(i) |
---|
| 56 | + | func addItem (title,price,data) = { |
---|
| 57 | + | let supplierAddress = toBase58String(i.caller.bytes) |
---|
| 58 | + | let item = getKeyItem(supplierAddress, title) |
---|
| 59 | + | if ((0 >= price)) |
---|
| 60 | + | then throw("Price must be positive.") |
---|
| 61 | + | else if ((getValueItemSupplier(item) != NONE)) |
---|
| 62 | + | then throw("An item like this already exists.") |
---|
| 63 | + | else WriteSet([DataEntry(getKeyItemSupplier(item), supplierAddress), DataEntry(getKeyItemPrice(item), price), DataEntry(getKeyItemData(item), data)]) |
---|
| 64 | + | } |
---|
| 65 | + | |
---|
| 66 | + | |
---|