tx · z1ee8qEkJGEi92t1LHqzy2qSXDfhkTgS12HtkKZrcqC

3N9GKCsktAL7oPFmaKsgPBoDfu3ijk23Vmm:  -0.01400000 Waves

2020.03.20 22:50 [918102] smart account 3N9GKCsktAL7oPFmaKsgPBoDfu3ijk23Vmm > SELF 0.00000000 Waves

{ "type": 13, "id": "z1ee8qEkJGEi92t1LHqzy2qSXDfhkTgS12HtkKZrcqC", "fee": 1400000, "feeAssetId": null, "timestamp": 1584733809638, "version": 1, "sender": "3N9GKCsktAL7oPFmaKsgPBoDfu3ijk23Vmm", "senderPublicKey": "BjzUYgMDny7cYArZdjtnVo62UoVZKiCEeCoKYFnevrWU", "proofs": [ "Gybcuu7Cx7KWvBzdH54kHVqqCqaLCBYLXF6vjU1JUbyhupjudKcXABy7RVUjFBB2TVco7tkWQYFyHYJgbdMBnG2" ], "script": "base64:AAIDAAAAAAAAABYIARIDCgEBEgcKBQgICAEBEgQKAggBAAAAGAAAAAAHYUJpdENPMgEAAAAgx/h6AJ03UJ8qMmy7JIhz3VjOE4OL3ofCGi0oG2fBKJYAAAAACHN0YXJ0UXR5AAAAAAAAAknwAAAAAAhub21QcmljZQAAAAAABfXhAAAAAAAETk9ORQIAAAAEbm9uZQAAAAALT3duZXJQdWJLZXkBAAAAIJ+YQBeV0x/8GNlJbr9kR/uTmvTPi2KwfwbDWc0arYRJAAAAAAZpc3N1ZXIJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTUPeuO2Y1p2TpK+OH14WsDuVCV2jcMFFQBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAKZ2V0S2V5SXRlbQAAAAIAAAAIc3VwcGxpZXIAAAAFdGl0bGUJAAEsAAAAAgIAAAAPQml0LUNPMl90b2tlbjogCQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHN1cHBsaWVyBQAAAAV0aXRsZQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQAAAARpdGVtCQABLAAAAAIFAAAABGl0ZW0CAAAAGl90b19BbWF6b25pYW5fQ29uc2VydmF0aW9uAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAGGdldEtleUJhbGFuY2VRdHlTdXBwbGllcgAAAAEAAAAEaXRlbQIAAAAVT2ZmZXJlZF9RdHksIGJhbGFuY2U6AQAAABpnZXRWYWx1ZUJhbGFuY2VRdHlTdXBwbGllcgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGGdldEtleUJhbGFuY2VRdHlTdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEAAAAIc3VwcGxpZXICAAAAFlNlbGxlcl9CYWxhbmNlLF93YXZlczoBAAAAF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyAAAAAQAAAAhzdXBwbGllcgkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAACHN1cHBsaWVyAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQIAAAAKT3JkZXJf4oSWOgEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0BAAAADmdldEtleUl0ZW1Vc2VyAAAAAQAAAARpdGVtAgAAAAlVc2VyTmFtZToBAAAAEGdldFZhbHVlSXRlbVVzZXIAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAA5nZXRLZXlJdGVtVXNlcgAAAAEFAAAABGl0ZW0BAAAAEmdldEtleUl0ZW1Vc2VyRGF0YQAAAAEAAAAEaXRlbQIAAAAMVXNlckNvdW50cnk6AQAAABZnZXRLZXlJdGVtRGlzY291bnRVc2VyAAAAAQAAAARpdGVtAgAAABBVc2VyRGlzY291bnQsXyU6AQAAABhnZXRWYWx1ZUl0ZW1EaXNjb3VudFVzZXIAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABZnZXRLZXlJdGVtRGlzY291bnRVc2VyAAAAAQUAAAAEaXRlbQEAAAAWZ2V0S2V5SXRlbVVzZXJPcmRlclF0eQAAAAEAAAAEaXRlbQIAAAAST3JkZXJfcXR5LF90b2tl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AAALdXNlckFkZHJlc3MFAAAABGl0ZW0JAABkAAAAAgkBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABGl0ZW0AAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRLZXlCYWxhbmNlUXR5U3VwcGxpZXIAAAABBQAAAARpdGVtCQAAZQAAAAIFAAAACXByZUljb1F0eQUAAAAIb3JkZXJRdHkJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA5nZXRLZXlJdGVtVXNlcgAAAAEFAAAABGl0ZW0FAAAACHVzZXJOYW1lCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0S2V5SXRlbVVzZXJEYXRhAAAAAQUAAAAEaXRlbQUAAAAIdXNlckRhdGEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABZnZXRLZXlJdGVtRGlzY291bnRVc2VyAAAAAQUAAAAEaXRlbQUAAAAMdXNlckRpc2NvdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAWZ2V0S2V5SXRlbVVzZXJPcmRlclF0eQAAAAEFAAAABGl0ZW0FAAAACG9yZGVyUXR5CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAGlVzZXJQcmljZV8xX3Rva2VuLF93YXZlczpfBQAAAAt1c2VyQWRkcmVzcwUAAAAPYnV5ZXJUb2tlblByaWNlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAF1BheW1lbnRfYW1vdW50LF93YXZlczpfBQAAAAt1c2VyQWRkcmVzcwUAAAALdG90YWxBbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAOT3JkZXJfU3RhdHVzOl8FAAAAC3VzZXJBZGRyZXNzAgAAAAljb25maXJtZWQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABVnZXRLZXlCYWxhbmNlU3VwcGxpZXIAAAABBQAAAAhzdXBwbGllcgkAAGQAAAACBQAAAA9iYWxhbmNlU3VwcGxpZXIIBQAAAANwbXQAAAAGYW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAAIb3JkZXJRdHkFAAAAB2FCaXRDTzIFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAIAAAAEaXRlbQAAAAZhbW91bnQEAAAAC3VzZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAACHN1cHBsaWVyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUEAAAACXByZUljb1F0eQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQEAAAAYZ2V0S2V5QmFsYW5jZVF0eVN1cHBsaWVyAAAAAQUAAAAEaXRlbQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAhzdGFydFF0eQQAAAAJbmV3QW1vdW50CQAAZQAAAAIFAAAACXByZUljb1F0eQUAAAAGYW1vdW50AwkAAGYAAAACAAAAAAAAAAAABQAAAAZhbW91bnQJAAACAAAAAQIAAAAeQ2FuJ3Qgd2l0aGRyYXcgbmVnYXRpdmUgYW1vdW50AwkAAGYAAAACAAAAAAAAAAAABQAAAAluZXdBbW91bnQJAAACAAAAAQIAAAAfTm90IGVub3VnaHQgL3N1ZmljaWVudGUgYmFsYW5jZQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABGl0ZW0FAAAACW5ld0Ftb3VudAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAGYW1vdW50BQAAAAdhQml0Q08yBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAAXQFAAAAByRtYXRjaDAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAtPd25lclB1YktleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAPRGF0YVRyYW5zYWN0aW9uBAAAAAFkBQAAAAckbWF0Y2gwBgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAACdHgFAAAAByRtYXRjaDAEAAAACXJlY2lwaWVudAkAAlgAAAABCAkABCQAAAABCAUAAAACdHgAAAAJcmVjaXBpZW50AAAABWJ5dGVzAwkAAAAAAAACCAUAAAACdHgAAAAGc2VuZGVyBQAAAAZpc3N1ZXIGCQAAAgAAAAECAAAAIFlvdSBjYW4ndCB0cmFuc2ZlcnJlZCB0aGlzIHRva2VuB2pJkJY=", "chainId": 84, "height": 918102, "spentComplexity": 0 } View: original | compacted Prev: B7AEcg1RFioP3ZKTwYzs6ska3vb1tPfUm3XdDjPXLbGQ Next: GKUB4z2ctU5hWWnHDoAPSbjLmamAnMPHvLQfRoLb7kVG Diff:
OldNewDifferences
3535 }
3636
3737
38-func getKeyItem (supplier,title) = ("tokens_Bit-CO2:_" + toBase58String(sha256(toBytes((supplier + title)))))
38+func getKeyItem (supplier,title) = ("Bit-CO2_token: " + toBase58String(sha256(toBytes((supplier + title)))))
3939
4040
4141 func getKeyItemSupplier (item) = (item + "_to_Amazonian_Conservation")
4444 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
4545
4646
47-func getKeyBalanceQtySupplier (item) = "Tokens_ofertados,_Saldo"
47+func getKeyBalanceQtySupplier (item) = "Offered_Qty, balance:"
4848
4949
5050 func getValueBalanceQtySupplier (item) = getNumberByKey(getKeyBalanceQtySupplier(item))
5151
5252
53-func getKeyBalanceSupplier (supplier) = "Seller_Balance:_waves"
53+func getKeyBalanceSupplier (supplier) = "Seller_Balance,_waves:"
5454
5555
5656 func getValueBalanceSupplier (supplier) = getNumberByKey(getKeyBalanceSupplier(supplier))
5757
5858
59-func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
59+func getKeyUserItemCounter (user,item) = "Order_№:"
6060
6161
6262 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
6363
6464
65-func getKeyItemUser (item) = "Project_name:"
65+func getKeyItemUser (item) = "UserName:"
6666
6767
6868 func getValueItemUser (item) = getStrByKey(getKeyItemUser(item))
6969
7070
71-func getKeyItemUserData (item) = "_userdata"
71+func getKeyItemUserData (item) = "UserCountry:"
7272
7373
74-func getKeyItemUserOrderQty (item) = "_tokens"
74+func getKeyItemDiscountUser (item) = "UserDiscount,_%:"
75+
76+
77+func getValueItemDiscountUser (item) = getNumberByKey(getKeyItemDiscountUser(item))
78+
79+
80+func getKeyItemUserOrderQty (item) = "Order_qty,_tokens:"
7581
7682
7783 func getValueItemUserOrderQty (item) = getNumberByKey(getKeyItemUserOrderQty(item))
98104
99105
100106 @Callable(i)
101-func purchase (item,projectName,userData,userDiscount,orderQty,amount) = {
107+func purchase (item,userName,userData,userDiscount,orderQty) = {
102108 let pmt = extract(i.payment)
103109 if (isDefined(pmt.assetId))
104110 then throw("you can adquire cBitCO2 only by Waves tokens")
128134 then throw("Payment Amount cannot be less than item Purchase Order")
129135 else if ((pmt.amount > totalAmount))
130136 then throw("Payment Amount can't be higher than item Purchase Order")
131- else ScriptResult(WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyItemUser(item), projectName), DataEntry(getKeyBalanceQtySupplier(item), (preIcoQty - orderQty)), DataEntry(getKeyItemUserData(item), userData), DataEntry((("Descuento solicitado:_" + userAddress) + "_%"), userDiscount), DataEntry(("Cantidad_solicitada:" + getKeyItemUserOrderQty(item)), orderQty), DataEntry((("Monto pagado:_" + userAddress) + "_waves"), amount), DataEntry(("Request_Status:_" + userAddress), "confirmed"), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount))]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, aBitCO2)]))
137+ else ScriptResult(WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceQtySupplier(item), (preIcoQty - orderQty)), DataEntry(getKeyItemUser(item), userName), DataEntry(getKeyItemUserData(item), userData), DataEntry(getKeyItemDiscountUser(item), userDiscount), DataEntry(getKeyItemUserOrderQty(item), orderQty), DataEntry(("UserPrice_1_token,_waves:_" + userAddress), buyerTokenPrice), DataEntry(("Payment_amount,_waves:_" + userAddress), totalAmount), DataEntry(("Order_Status:_" + userAddress), "confirmed"), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount))]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, aBitCO2)]))
132138 }
133139 }
134140
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let aBitCO2 = base58'ETbtNp6MBuSM9EfjmLDwctrYEBBiq8CZ7ti7zbwTktry'
55
66 let startQty = 150000
77
88 let nomPrice = 100000000
99
1010 let NONE = "none"
1111
1212 let OwnerPubKey = base58'BjzUYgMDny7cYArZdjtnVo62UoVZKiCEeCoKYFnevrWU'
1313
1414 let issuer = Address(base58'3N9GKCsktAL7oPFmaKsgPBoDfu3ijk23Vmm')
1515
1616 func getNumberByKey (key) = {
1717 let num = match getInteger(this, key) {
1818 case a: Int =>
1919 a
2020 case _ =>
2121 0
2222 }
2323 num
2424 }
2525
2626
2727 func getStrByKey (key) = {
2828 let str = match getString(this, key) {
2929 case a: String =>
3030 a
3131 case _ =>
3232 NONE
3333 }
3434 str
3535 }
3636
3737
38-func getKeyItem (supplier,title) = ("tokens_Bit-CO2:_" + toBase58String(sha256(toBytes((supplier + title)))))
38+func getKeyItem (supplier,title) = ("Bit-CO2_token: " + toBase58String(sha256(toBytes((supplier + title)))))
3939
4040
4141 func getKeyItemSupplier (item) = (item + "_to_Amazonian_Conservation")
4242
4343
4444 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
4545
4646
47-func getKeyBalanceQtySupplier (item) = "Tokens_ofertados,_Saldo"
47+func getKeyBalanceQtySupplier (item) = "Offered_Qty, balance:"
4848
4949
5050 func getValueBalanceQtySupplier (item) = getNumberByKey(getKeyBalanceQtySupplier(item))
5151
5252
53-func getKeyBalanceSupplier (supplier) = "Seller_Balance:_waves"
53+func getKeyBalanceSupplier (supplier) = "Seller_Balance,_waves:"
5454
5555
5656 func getValueBalanceSupplier (supplier) = getNumberByKey(getKeyBalanceSupplier(supplier))
5757
5858
59-func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
59+func getKeyUserItemCounter (user,item) = "Order_№:"
6060
6161
6262 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
6363
6464
65-func getKeyItemUser (item) = "Project_name:"
65+func getKeyItemUser (item) = "UserName:"
6666
6767
6868 func getValueItemUser (item) = getStrByKey(getKeyItemUser(item))
6969
7070
71-func getKeyItemUserData (item) = "_userdata"
71+func getKeyItemUserData (item) = "UserCountry:"
7272
7373
74-func getKeyItemUserOrderQty (item) = "_tokens"
74+func getKeyItemDiscountUser (item) = "UserDiscount,_%:"
75+
76+
77+func getValueItemDiscountUser (item) = getNumberByKey(getKeyItemDiscountUser(item))
78+
79+
80+func getKeyItemUserOrderQty (item) = "Order_qty,_tokens:"
7581
7682
7783 func getValueItemUserOrderQty (item) = getNumberByKey(getKeyItemUserOrderQty(item))
7884
7985
8086 @Callable(i)
8187 func deposit (amount) = {
8288 let pmt = extract(i.payment)
8389 if ((pmt.assetId != aBitCO2))
8490 then throw("Use cBitCO2 tokens only for the wallet deposit")
8591 else {
8692 let supplier = toBase58String(i.caller.bytes)
8793 let currentAmount = match getInteger(this, supplier) {
8894 case a: Int =>
8995 a
9096 case _ =>
9197 startQty
9298 }
9399 let newAmount = (currentAmount + pmt.amount)
94100 WriteSet([DataEntry(supplier, newAmount)])
95101 }
96102 }
97103
98104
99105
100106 @Callable(i)
101-func purchase (item,projectName,userData,userDiscount,orderQty,amount) = {
107+func purchase (item,userName,userData,userDiscount,orderQty) = {
102108 let pmt = extract(i.payment)
103109 if (isDefined(pmt.assetId))
104110 then throw("you can adquire cBitCO2 only by Waves tokens")
105111 else {
106112 let supplier = match getString(this, getKeyItemSupplier(item)) {
107113 case a: String =>
108114 a
109115 case _ =>
110116 NONE
111117 }
112118 let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
113119 case a: Int =>
114120 a
115121 case _ =>
116122 startQty
117123 }
118124 let balanceSupplier = match getInteger(this, getKeyBalanceSupplier(supplier)) {
119125 case a: Int =>
120126 a
121127 case _ =>
122128 0
123129 }
124130 let userAddress = toBase58String(i.caller.bytes)
125131 let buyerTokenPrice = ((nomPrice * (100 - userDiscount)) / 100)
126132 let totalAmount = (orderQty * buyerTokenPrice)
127133 if ((totalAmount > pmt.amount))
128134 then throw("Payment Amount cannot be less than item Purchase Order")
129135 else if ((pmt.amount > totalAmount))
130136 then throw("Payment Amount can't be higher than item Purchase Order")
131- else ScriptResult(WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyItemUser(item), projectName), DataEntry(getKeyBalanceQtySupplier(item), (preIcoQty - orderQty)), DataEntry(getKeyItemUserData(item), userData), DataEntry((("Descuento solicitado:_" + userAddress) + "_%"), userDiscount), DataEntry(("Cantidad_solicitada:" + getKeyItemUserOrderQty(item)), orderQty), DataEntry((("Monto pagado:_" + userAddress) + "_waves"), amount), DataEntry(("Request_Status:_" + userAddress), "confirmed"), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount))]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, aBitCO2)]))
137+ else ScriptResult(WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceQtySupplier(item), (preIcoQty - orderQty)), DataEntry(getKeyItemUser(item), userName), DataEntry(getKeyItemUserData(item), userData), DataEntry(getKeyItemDiscountUser(item), userDiscount), DataEntry(getKeyItemUserOrderQty(item), orderQty), DataEntry(("UserPrice_1_token,_waves:_" + userAddress), buyerTokenPrice), DataEntry(("Payment_amount,_waves:_" + userAddress), totalAmount), DataEntry(("Order_Status:_" + userAddress), "confirmed"), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount))]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, aBitCO2)]))
132138 }
133139 }
134140
135141
136142
137143 @Callable(i)
138144 func withdraw (item,amount) = {
139145 let userAddress = toBase58String(i.caller.bytes)
140146 let supplier = match getString(this, getKeyItemSupplier(item)) {
141147 case a: String =>
142148 a
143149 case _ =>
144150 NONE
145151 }
146152 let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
147153 case a: Int =>
148154 a
149155 case _ =>
150156 startQty
151157 }
152158 let newAmount = (preIcoQty - amount)
153159 if ((0 > amount))
154160 then throw("Can't withdraw negative amount")
155161 else if ((0 > newAmount))
156162 then throw("Not enought /suficiente balance")
157163 else ScriptResult(WriteSet([DataEntry(item, newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, aBitCO2)]))
158164 }
159165
160166
161167 @Verifier(tx)
162168 func verify () = match tx {
163169 case t: SetScriptTransaction =>
164170 sigVerify(tx.bodyBytes, tx.proofs[0], OwnerPubKey)
165171 case d: DataTransaction =>
166172 true
167173 case tx: TransferTransaction =>
168174 let recipient = toBase58String(addressFromRecipient(tx.recipient).bytes)
169175 if ((tx.sender == issuer))
170176 then true
171177 else throw("You can't transferred this token")
172178 case _ =>
173179 false
174180 }
175181

github/deemru/w8io/169f3d6 
43.25 ms