tx · CeQ6FRYjw9DipT6RwvVZWVdJiRtf4Qc8dTWsHYSabi4

3N8RGScPyKYySaXd5Z3VcpnttH2uBeMpSy4:  -0.01400000 Waves

2020.03.20 22:48 [918100] smart account 3N8RGScPyKYySaXd5Z3VcpnttH2uBeMpSy4 > SELF 0.00000000 Waves

{ "type": 13, "id": "CeQ6FRYjw9DipT6RwvVZWVdJiRtf4Qc8dTWsHYSabi4", "fee": 1400000, "feeAssetId": null, "timestamp": 1584733642046, "version": 1, "sender": "3N8RGScPyKYySaXd5Z3VcpnttH2uBeMpSy4", "senderPublicKey": "4AHsCbS9QYVdKNvxrPWwsMwwy3KqXaCMXeAscExJZk9L", "proofs": [ "3QdiWZxMfsHULD7B2D9j7ki3A53dQX74dk9eCF5KgL6hJjjvBX8iD959vSSwwQR6g4cRDBJsnauPLKX9kE6eW9S8" ], "script": "base64:AAIDAAAAAAAAAB4IARIDCgEBEgYKBAgBAQgSBwoFCAgIAQESBAoCCAEAAAAfAAAAAAdhQml0Q08yAQAAACDH+HoAnTdQnyoybLskiHPdWM4Tg4veh8IaLSgbZ8EolgAAAAAIc3RhcnRRdHkAAAAAAAAFFAAAAAAACG5vbVByaWNlAAAAAAAAAAABAAAAABBzdXBwbGllckRpc2NvdW50AAAAAAAAAAAMAAAAAA5Pd25lckVjb1B1YktleQEAAAAgLvRbo0AJGg7wNzBbRHjrN75s0YuvS2DdwCQ0/xY2QB8AAAAAA3d2cwAAAAAABfXhAAAAAAAETk9ORQIAAAAEbm9uZQAAAAAGaXNzdWVyCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUyvc7Pucv0VXiD634RbMs3vuN0A1Fa31vAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAACmdldEtleUl0ZW0AAAACAAAACHN1cHBsaWVyAAAABXRpdGxlCQABLAAAAAICAAAAD0JpdC1DTzJfdG9rZW46IAkAAlgAAAABCQAB9wAAAAEJAAGbAAAAAQkAASwAAAACBQAAAAhzdXBwbGllcgUAAAAFdGl0bGUBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkAASwAAAACBQAAAARpdGVtAgAAABpfdG9fQW1hem9uaWFuX0NvbnNlcnZhdGlvbgEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEAAAAEaXRlbQIAAAANZGVzY3JpcHRpb246IAEAAAAaZ2V0S2V5SXRlbURpc2NvdW50U3VwcGxpZXIAAAABAAAABGl0ZW0CAAAAH09mZmVyZWRfU3VwcGxpZXJEaXNjb3VudCxfbWF4XyUBAAAAHGdldFZhbHVlSXRlbURpc2NvdW50U3VwcGxpZXIAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABpnZXRLZXlJdGVtRGlzY291bnRTdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAGGdldEtleUJhbGFuY2VRdHlTdXBwbGllcgAAAAEAAAAEaXRlbQIAAAAVT2ZmZXJlZF9RdHksIGJhbGFuY2U6AQAAABpnZXRWYWx1ZUJhbGFuY2VRdHlTdXBwbGllcgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGGdldEtleUJhbGFuY2VRdHlTdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEAAAAIc3VwcGxpZXICAAAAFVNlbGxlcl9CYWxhbmNlOl93YXZlcwEAAAAXZ2V0VmFsdWVCYWxhbmNlU3VwcGxpZXIAAAABAAAACHN1cHBsaWVyCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAIc3VwcGxpZXIBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtAgAAAApPcmRlcl/ihJY6AQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIAAAAEdXNlcgAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQEAAAAOZ2V0S2V5SXRlbVVzZXIAAAABAAAABGl0ZW0CAAAACVVzZXJOYW1lOgEAAAAQZ2V0VmFsdWVJdGVtVXNlcgAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAADmdldEtleUl0ZW1Vc2VyAAAAAQUAAAAEaXRlbQEAAAASZ2V0S2V5SXRlbVVzZXJEYXRhAAAAAQAAAARpdGVtAgAAAAxVc2VyQ291bnRyeToBAAAAFmdldEtleUl0ZW1EaXNjb3VudFVzZXIAAAABAAAABGl0ZW0CAAAAEFVzZXJEaXNjb3VudCxfJToBAAAAGGdldFZhbHVlSXRlbURpc2NvdW50VXNlcgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldEtleUl0ZW1EaXNjb3VudFVzZXIAAAABBQAAAARpdGVtAQAAABZnZXRLZXlJdGVtVXNlck9yZGVyUXR5AAAAAQAAAARpdGVtAgAAABJPcmRlcl9xdHksX3Rva2VuczoBAAAAGGdldFZhbHVlSXRlbVVzZXJPcmRlclF0eQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldEtleUl0ZW1Vc2VyT3JkZXJRdHkAAAABBQAAAARpdGVtAQAAABdnZXRLZXlJdGVtUHJpY2VTdXBwbGllcgAAAAEAAAAEaXRlbQIAAAAGX3dhdmVzAQAAABlnZXRWYWx1ZUl0ZW1QcmljZVN1cHBsaWVyAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAXZ2V0S2V5SXRlbVByaWNlU3VwcGxpZXIAAAABBQAAAARpdGVtAAAABAAAAAFpAQAAAAdkZXBvc2l0AAAAAQAAAAZhbW91bnQEAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50AwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkBQAAAAdhQml0Q08yCQAAAgAAAAECAAAALlVzZSBjQml0Q08yIHRva2VucyBvbmx5IGZvciB0aGUgd2FsbGV0IGRlcG9zaXQEAAAACHN1cHBsaWVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADWN1cnJlbnRBbW91bnQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAAIc3VwcGxpZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAIc3RhcnRRdHkEAAAACW5ld0Ftb3VudAkAAGQAAAACBQAAAA1jdXJyZW50QW1vdW50CAUAAAADcG10AAAABmFtb3VudAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAIc3VwcGxpZXIFAAAACW5ld0Ftb3VudAUAAAADbmlsAAAAAWkBAAAAEEFkZFN1cHBsaWVyVG9rZW4AAAAEAAAABXRpdGxlAAAACXByZUljb1F0eQAAABBzdXBwbGllckRpc2NvdW50AAAADHN1cHBsaWVyRGF0YQQAAAAIc3VwcGxpZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAEaXRlbQkBAAAACmdldEtleUl0ZW0AAAACBQAAAAhzdXBwbGllcgUAAAAFdGl0bGUDCQAAZwAAAAIAAAAAAAAAAAAFAAAACXByZUljb1F0eQkAAAIAAAABAgAAAB9Tb3JyeSwgaW5zdWZmaWNpZW50IHRva2VuIG9mZmVyCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAICAAAAC09mZXJ0YW50ZTpfCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQUAAAAIc3VwcGxpZXIJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRLZXlCYWxhbmNlUXR5U3VwcGxpZXIAAAABBQAAAARpdGVtBQAAAAlwcmVJY29RdHkJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAPUHJlY2lvX05vbWluYWw6CQEAAAAXZ2V0S2V5SXRlbVByaWNlU3VwcGxpZXIAAAABBQAAAARpdGVtCQAAaAAAAAIFAAAACG5vbVByaWNlBQAAAAN3dnMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgIAAAAXTWF4X0Rlc2N1ZW50b19vZnJlY2lkbzoJAQAAABpnZXRLZXlJdGVtRGlzY291bnRTdXBwbGllcgAAAAEFAAAABGl0ZW0FAAAAEHN1cHBsaWVyRGlzY291bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEFAAAABGl0ZW0FAAAADHN1cHBsaWVyRGF0YQUAAAADbmlsAAAAAWkBAAAACHB1cmNoYXNlAAAABQAAAARpdGVtAAAACHVzZXJOYW1lAAAAC3VzZXJDb3VudHJ5AAAADHVzZXJEaXNjb3VudAAAAAhvcmRlclF0eQQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkCQAAAgAAAAECAAAALHlvdSBjYW4gYWRxdWlyZSBjQml0Q08yIG9ubHkgYnkgV2F2ZXMgdG9rZW5zBAAAAAhzdXBwbGllcgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBAAAAAlwcmVJY29RdHkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAAGGdldEtleUJhbGFuY2VRdHlTdXBwbGllcgAAAAEFAAAABGl0ZW0DCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAIc3RhcnRRdHkEAAAAD2JhbGFuY2VTdXBwbGllcgQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAIc3VwcGxpZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAALdXNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAPYnV5ZXJUb2tlblByaWNlCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACCQAAZQAAAAIAAAAAAAAAAGQFAAAADHVzZXJEaXNjb3VudAUAAAAIbm9tUHJpY2UFAAAAA3d2cwAAAAAAAAAAZAQAAAALdG90YWxBbW91bnQJAABoAAAAAgUAAAAIb3JkZXJRdHkFAAAAD2J1eWVyVG9rZW5QcmljZQMJAABmAAAAAgUAAAALdG90YWxBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAANlBheW1lbnQgQW1vdW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRlbSBQdXJjaGFzZSBPcmRlcgMJAABmAAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAAC3RvdGFsQW1vdW50CQAAAgAAAAECAAAAN1BheW1lbnQgQW1vdW50IGNhbid0IGJlIGhpZ2hlciB0aGFuIGl0ZW0gUHVyY2hhc2UgT3JkZXIJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABGl0ZW0JAABkAAAAAgkBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABGl0ZW0AAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRLZXlCYWxhbmNlUXR5U3VwcGxpZXIAAAABBQAAAARpdGVtCQAAZQAAAAIFAAAACXByZUljb1F0eQUAAAAIb3JkZXJRdHkJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAAA5nZXRLZXlJdGVtVXNlcgAAAAEFAAAABGl0ZW0FAAAACHVzZXJOYW1lCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAASZ2V0S2V5SXRlbVVzZXJEYXRhAAAAAQUAAAAEaXRlbQUAAAALdXNlckNvdW50cnkJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABZnZXRLZXlJdGVtRGlzY291bnRVc2VyAAAAAQUAAAAEaXRlbQUAAAAMdXNlckRpc2NvdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAWZ2V0S2V5SXRlbVVzZXJPcmRlclF0eQAAAAEFAAAABGl0ZW0FAAAACG9y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", "chainId": 84, "height": 918100, "spentComplexity": 0 } View: original | compacted Prev: HQhdCMq81ThXL8fv87TdmrQrL9ycKcUV4weBjZK1fyZ5 Next: EgsoWZGWt6BEkfbcaHuvtRAkaz8SNXmBEdLEELxh3PX7 Diff:
OldNewDifferences
3939 }
4040
4141
42-func getKeyItem (supplier,title) = ("tokens_Bit-CO2:_" + toBase58String(sha256(toBytes((supplier + title)))))
42+func getKeyItem (supplier,title) = ("Bit-CO2_token: " + toBase58String(sha256(toBytes((supplier + title)))))
4343
4444
4545 func getKeyItemSupplier (item) = (item + "_to_Amazonian_Conservation")
4848 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
4949
5050
51-func getKeyBalanceQtySupplier (item) = "Tokens_ofertados,_Saldo"
51+func getKeyItemData (item) = "description: "
52+
53+
54+func getKeyItemDiscountSupplier (item) = "Offered_SupplierDiscount,_max_%"
55+
56+
57+func getValueItemDiscountSupplier (item) = getNumberByKey(getKeyItemDiscountSupplier(item))
58+
59+
60+func getKeyBalanceQtySupplier (item) = "Offered_Qty, balance:"
5261
5362
5463 func getValueBalanceQtySupplier (item) = getNumberByKey(getKeyBalanceQtySupplier(item))
55-
56-
57-func getKeyItemData (item) = (item + "_description")
58-
59-
60-func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
61-
62-
63-func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
64-
65-
66-func getKeyItemUserData (item) = "_userdata"
67-
68-
69-func getKeyItemUserOrderQty (item) = "_tokens"
70-
71-
72-func getValueItemUserOrderQty (item) = getNumberByKey(getKeyItemUserOrderQty(item))
7364
7465
7566 func getKeyBalanceSupplier (supplier) = "Seller_Balance:_waves"
7869 func getValueBalanceSupplier (supplier) = getNumberByKey(getKeyBalanceSupplier(supplier))
7970
8071
81-func getKeyItemUser (item) = "Project_name:"
72+func getKeyUserItemCounter (user,item) = "Order_№:"
73+
74+
75+func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
76+
77+
78+func getKeyItemUser (item) = "UserName:"
8279
8380
8481 func getValueItemUser (item) = getStrByKey(getKeyItemUser(item))
8582
8683
87-func getKeyItemDiscountSupplier (item) = "_%"
84+func getKeyItemUserData (item) = "UserCountry:"
8885
8986
90-func getValueItemDiscountSupplier (item) = getNumberByKey(getKeyItemDiscountSupplier(item))
87+func getKeyItemDiscountUser (item) = "UserDiscount,_%:"
88+
89+
90+func getValueItemDiscountUser (item) = getNumberByKey(getKeyItemDiscountUser(item))
91+
92+
93+func getKeyItemUserOrderQty (item) = "Order_qty,_tokens:"
94+
95+
96+func getValueItemUserOrderQty (item) = getNumberByKey(getKeyItemUserOrderQty(item))
9197
9298
9399 func getKeyItemPriceSupplier (item) = "_waves"
128134
129135
130136 @Callable(i)
131-func purchase (item,projectName,userData,userDiscount,orderQty) = {
137+func purchase (item,userName,userCountry,userDiscount,orderQty) = {
132138 let pmt = extract(i.payment)
133139 if (isDefined(pmt.assetId))
134140 then throw("you can adquire cBitCO2 only by Waves tokens")
158164 then throw("Payment Amount cannot be less than item Purchase Order")
159165 else if ((pmt.amount > totalAmount))
160166 then throw("Payment Amount can't be higher than item Purchase Order")
161- 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((("Precio_de_1_Token_con_dscto:_" + userAddress) + "_waves"), buyerTokenPrice), DataEntry(("Request_Status:_" + userAddress), "confirmed"), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount))]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, aBitCO2)]))
167+ else ScriptResult(WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceQtySupplier(item), (preIcoQty - orderQty)), DataEntry(getKeyItemUser(item), userName), DataEntry(getKeyItemUserData(item), userCountry), 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)]))
162168 }
163169 }
164170
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let aBitCO2 = base58'ETbtNp6MBuSM9EfjmLDwctrYEBBiq8CZ7ti7zbwTktry'
55
66 let startQty = 332800
77
88 let nomPrice = 1
99
1010 let supplierDiscount = 12
1111
1212 let OwnerEcoPubKey = base58'4AHsCbS9QYVdKNvxrPWwsMwwy3KqXaCMXeAscExJZk9L'
1313
1414 let wvs = 100000000
1515
1616 let NONE = "none"
1717
1818 let issuer = Address(base58'3N8RGScPyKYySaXd5Z3VcpnttH2uBeMpSy4')
1919
2020 func getNumberByKey (key) = {
2121 let num = match getInteger(this, key) {
2222 case a: Int =>
2323 a
2424 case _ =>
2525 0
2626 }
2727 num
2828 }
2929
3030
3131 func getStrByKey (key) = {
3232 let str = match getString(this, key) {
3333 case a: String =>
3434 a
3535 case _ =>
3636 NONE
3737 }
3838 str
3939 }
4040
4141
42-func getKeyItem (supplier,title) = ("tokens_Bit-CO2:_" + toBase58String(sha256(toBytes((supplier + title)))))
42+func getKeyItem (supplier,title) = ("Bit-CO2_token: " + toBase58String(sha256(toBytes((supplier + title)))))
4343
4444
4545 func getKeyItemSupplier (item) = (item + "_to_Amazonian_Conservation")
4646
4747
4848 func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
4949
5050
51-func getKeyBalanceQtySupplier (item) = "Tokens_ofertados,_Saldo"
51+func getKeyItemData (item) = "description: "
52+
53+
54+func getKeyItemDiscountSupplier (item) = "Offered_SupplierDiscount,_max_%"
55+
56+
57+func getValueItemDiscountSupplier (item) = getNumberByKey(getKeyItemDiscountSupplier(item))
58+
59+
60+func getKeyBalanceQtySupplier (item) = "Offered_Qty, balance:"
5261
5362
5463 func getValueBalanceQtySupplier (item) = getNumberByKey(getKeyBalanceQtySupplier(item))
55-
56-
57-func getKeyItemData (item) = (item + "_description")
58-
59-
60-func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
61-
62-
63-func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
64-
65-
66-func getKeyItemUserData (item) = "_userdata"
67-
68-
69-func getKeyItemUserOrderQty (item) = "_tokens"
70-
71-
72-func getValueItemUserOrderQty (item) = getNumberByKey(getKeyItemUserOrderQty(item))
7364
7465
7566 func getKeyBalanceSupplier (supplier) = "Seller_Balance:_waves"
7667
7768
7869 func getValueBalanceSupplier (supplier) = getNumberByKey(getKeyBalanceSupplier(supplier))
7970
8071
81-func getKeyItemUser (item) = "Project_name:"
72+func getKeyUserItemCounter (user,item) = "Order_№:"
73+
74+
75+func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
76+
77+
78+func getKeyItemUser (item) = "UserName:"
8279
8380
8481 func getValueItemUser (item) = getStrByKey(getKeyItemUser(item))
8582
8683
87-func getKeyItemDiscountSupplier (item) = "_%"
84+func getKeyItemUserData (item) = "UserCountry:"
8885
8986
90-func getValueItemDiscountSupplier (item) = getNumberByKey(getKeyItemDiscountSupplier(item))
87+func getKeyItemDiscountUser (item) = "UserDiscount,_%:"
88+
89+
90+func getValueItemDiscountUser (item) = getNumberByKey(getKeyItemDiscountUser(item))
91+
92+
93+func getKeyItemUserOrderQty (item) = "Order_qty,_tokens:"
94+
95+
96+func getValueItemUserOrderQty (item) = getNumberByKey(getKeyItemUserOrderQty(item))
9197
9298
9399 func getKeyItemPriceSupplier (item) = "_waves"
94100
95101
96102 func getValueItemPriceSupplier (item) = getNumberByKey(getKeyItemPriceSupplier(item))
97103
98104
99105 @Callable(i)
100106 func deposit (amount) = {
101107 let pmt = extract(i.payment)
102108 if ((pmt.assetId != aBitCO2))
103109 then throw("Use cBitCO2 tokens only for the wallet deposit")
104110 else {
105111 let supplier = toBase58String(i.caller.bytes)
106112 let currentAmount = match getInteger(this, supplier) {
107113 case a: Int =>
108114 a
109115 case _ =>
110116 startQty
111117 }
112118 let newAmount = (currentAmount + pmt.amount)
113119 WriteSet([DataEntry(supplier, newAmount)])
114120 }
115121 }
116122
117123
118124
119125 @Callable(i)
120126 func AddSupplierToken (title,preIcoQty,supplierDiscount,supplierData) = {
121127 let supplier = toBase58String(i.caller.bytes)
122128 let item = getKeyItem(supplier, title)
123129 if ((0 >= preIcoQty))
124130 then throw("Sorry, insufficient token offer")
125131 else WriteSet([DataEntry(("Ofertante:_" + getKeyItemSupplier(item)), supplier), DataEntry(getKeyBalanceQtySupplier(item), preIcoQty), DataEntry(("Precio_Nominal:" + getKeyItemPriceSupplier(item)), (nomPrice * wvs)), DataEntry(("Max_Descuento_ofrecido:" + getKeyItemDiscountSupplier(item)), supplierDiscount), DataEntry(getKeyItemData(item), supplierData)])
126132 }
127133
128134
129135
130136 @Callable(i)
131-func purchase (item,projectName,userData,userDiscount,orderQty) = {
137+func purchase (item,userName,userCountry,userDiscount,orderQty) = {
132138 let pmt = extract(i.payment)
133139 if (isDefined(pmt.assetId))
134140 then throw("you can adquire cBitCO2 only by Waves tokens")
135141 else {
136142 let supplier = match getString(this, getKeyItemSupplier(item)) {
137143 case a: String =>
138144 a
139145 case _ =>
140146 NONE
141147 }
142148 let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
143149 case a: Int =>
144150 a
145151 case _ =>
146152 startQty
147153 }
148154 let balanceSupplier = match getInteger(this, getKeyBalanceSupplier(supplier)) {
149155 case a: Int =>
150156 a
151157 case _ =>
152158 0
153159 }
154160 let userAddress = toBase58String(i.caller.bytes)
155161 let buyerTokenPrice = ((((100 - userDiscount) * nomPrice) * wvs) / 100)
156162 let totalAmount = (orderQty * buyerTokenPrice)
157163 if ((totalAmount > pmt.amount))
158164 then throw("Payment Amount cannot be less than item Purchase Order")
159165 else if ((pmt.amount > totalAmount))
160166 then throw("Payment Amount can't be higher than item Purchase Order")
161- 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((("Precio_de_1_Token_con_dscto:_" + userAddress) + "_waves"), buyerTokenPrice), DataEntry(("Request_Status:_" + userAddress), "confirmed"), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount))]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, aBitCO2)]))
167+ else ScriptResult(WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyBalanceQtySupplier(item), (preIcoQty - orderQty)), DataEntry(getKeyItemUser(item), userName), DataEntry(getKeyItemUserData(item), userCountry), 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)]))
162168 }
163169 }
164170
165171
166172
167173 @Callable(i)
168174 func withdraw (title,amount) = {
169175 let supplier = toBase58String(i.caller.bytes)
170176 let item = getKeyItem(supplier, title)
171177 let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
172178 case a: Int =>
173179 a
174180 case _ =>
175181 startQty
176182 }
177183 let newAmount = (preIcoQty - amount)
178184 if ((0 > amount))
179185 then throw("Can't withdraw negative amount")
180186 else if ((0 > newAmount))
181187 then throw("Not enought /suficiente balance")
182188 else ScriptResult(WriteSet([DataEntry(item, newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, aBitCO2)]))
183189 }
184190
185191
186192 @Verifier(tx)
187193 func verify () = match tx {
188194 case t: SetScriptTransaction =>
189195 sigVerify(tx.bodyBytes, tx.proofs[0], OwnerEcoPubKey)
190196 case d: DataTransaction =>
191197 true
192198 case tx: TransferTransaction =>
193199 let recipient = toBase58String(addressFromRecipient(tx.recipient).bytes)
194200 if ((tx.sender == issuer))
195201 then true
196202 else throw("You can't transferred this token")
197203 case tx: ExchangeTransaction =>
198204 let withWaves = if (!(isDefined(tx.sellOrder.assetPair.priceAsset)))
199205 then true
200206 else !(isDefined(tx.sellOrder.assetPair.amountAsset))
201207 withWaves
202208 case tx: ExchangeTransaction =>
203209 let pk = tx.proofs[1]
204210 let address = addressFromPublicKey(pk)
205211 let fee = 1400000
206212 let hasMoney = ((wavesBalance(address) - fee) >= tx.buyOrder.price)
207213 let sell = sigVerify(tx.sellOrder.bodyBytes, tx.sellOrder.proofs[0], tx.sellOrder.senderPublicKey)
208214 let buy = sigVerify(tx.buyOrder.bodyBytes, tx.buyOrder.proofs[0], tx.buyOrder.senderPublicKey)
209215 let sellOrderSender = toBase58String(tx.sellOrder.sender.bytes)
210216 let minAmount = 1
211217 let maxAmount = 4
212218 let maxPrice = (maxAmount * nomPrice)
213219 if (if (buy)
214220 then if (isDefined((maxPrice >= tx.buyOrder.price)))
215221 then true
216222 else throw("El monto a pagar no puede ser menor que el precio de venta")
217223 else false)
218224 then true
219225 else if (sell)
220226 then if (if (if ((tx.sellOrder.sender == issuer))
221227 then (tx.amount >= minAmount)
222228 else false)
223229 then (maxAmount >= tx.amount)
224230 else false)
225231 then true
226232 else throw("Error: Minimum amount: 1 aBitCO2; Maximum amount offered: 4 aBitCO2 by User Account")
227233 else false
228234 case c: InvokeScriptTransaction =>
229235 true
230236 case _ =>
231237 false
232238 }
233239

github/deemru/w8io/873ac7e 
56.23 ms