tx · 5JVjnq7HYPBhwiE9pYncuKsAaJY4csinJQCf2H8s5t8k

3N5v9ndbkGSWy1SfeJSz94tYU8qVNTUJV2q:  -0.01400000 Waves

2020.08.02 14:36 [1114675] smart account 3N5v9ndbkGSWy1SfeJSz94tYU8qVNTUJV2q > SELF 0.00000000 Waves

{ "type": 13, "id": "5JVjnq7HYPBhwiE9pYncuKsAaJY4csinJQCf2H8s5t8k", "fee": 1400000, "feeAssetId": null, "timestamp": 1596368148323, "version": 1, "sender": "3N5v9ndbkGSWy1SfeJSz94tYU8qVNTUJV2q", "senderPublicKey": "6tctCnkRasXYuZWRpzZz9ogLri6aifJ19LTtx9uFQv67", "proofs": [ "572qfVpPL3HS1tocb86BP1E4CoaPqPbfqCpsbgve5tHEUQzB8egipyo2vet7pAHNYbDgaV391B1tPgqdFRGgo8Ea" ], "script": "base64:AAIDAAAAAAAAADMIARIECgIICBIHCgUICAgBARIICgYICAgBAQgSBgoECAgIARIICgYICAgBAQgSBAoCCAEAAAA+AAAAAAd4Qml0Q08yAQAAACAgBGSmqgN7DW+mqvqXJVizlol6Uwz/77rGaIdsg1TcjQAAAAAIc3RhcnRRdHkAAAAAAABMS0AAAAAACG5vbVByaWNlAAAAAAAAAAABAAAAAAN3dnMAAAAAAAX14QAAAAAAEHN1cHBsaWVyRGlzY291bnQAAAAAAAAAAAwAAAAABE5PTkUCAAAABG5vbmUAAAAAC093bmVyUHViS2V5AQAAACBXg6Dz9iwxuW6OZN3ObCk6NCcw047cUbg0y/YmycTlFAAAAAAGaXNzdWVyCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUS0gVj7khTyyW8drcBieKY28h0dbnPZfaAAAAAARlQWRkCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUTBaoO/bGBDOBrm064MWNCsZzgwdlxMLyAAAAAARwQWRkCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUr4Vcn4wBB78CoLaGa2WDuKHfP9Hd98MyAAAAAANpZ3YAAAAAAAAAABIAAAAAA2NQQgAAAAAAAAAAWAAAAAADdUlQAAAAAAAAAAAFAAAAAANwSVAAAAAAAAAAAAoAAAAAA3NJUAAAAAAAAAAAAQAAAAADZUlQAAAAAAAAAAABAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAACmdldEtleUl0ZW0AAAACAAAACHN1cHBsaWVyAAAABXRpdGxlCQABLAAAAAICAAAAG1Jlc2VydmEgRm9yZXN0YWwgQW1hesOzbmljYQkAAlgAAAABCQAB9wAAAAEJAAGbAAAAAQkAASwAAAACBQAAAAhzdXBwbGllcgUAAAAFdGl0bGUBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEAAAAIc3VwcGxpZXIJAAEsAAAAAgUAAAAIc3VwcGxpZXICAAAAI0NvbXVuaWRhZCBBY2h1YXIgS2FwYXdpIGRlbCBFY3VhZG9yAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEAAAAIc3VwcGxpZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAAhzdXBwbGllcgEAAAARZ2V0S2V5UHJvamVjdENvZGUAAAABAAAAC3Byb2plY3RDb2RlAgAAABswMS1FQy9TR1QgLSBBQ0hVQVJLQVBBV0ktMDEBAAAAEWdldEtleVByb2plY3ROYW1lAAAAAQAAAAtwcm9qZWN0TmFtZQIAAAAgUmVzZXJ2YSBBbWF6w7NuaWNhIEFjaHVhci1LYXBhd2kBAAAAE2dldFZhbHVlUHJvamVjdE5hbWUAAAABAAAAC3Byb2plY3ROYW1lCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAARZ2V0S2V5UHJvamVjdE5hbWUAAAABBQAAAAtwcm9qZWN0TmFtZQEAAAASZ2V0S2V5UHJvamVjdEV0YXBhAAAAAQAAAA5wcm9qZWN0QWRkcmVzcwIAAAAdQWNodWFyS2FwYXdpLCBJIEV0YXBhOiBQcmVJQ08BAAAAFGdldFZhbHVlUHJvamVjdEV0YXBhAAAAAQAAAA5wcm9qZWN0QWRkcmVzcwkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAEmdldEtleVByb2plY3RFdGFwYQAAAAEFAAAADnByb2plY3RBZGRyZXNzAQAAABRnZXRLZXlQcm9qZWN0Q291bnRyeQAAAAEAAAAEaXRlbQIAAAAWUmVww7pibGljYSBkZWwgRWN1YWRvcgEAAAAQZ2V0S2V5UHJvamVjdERldgAAAAEAAAAIc3VwcGxpZXICAAAAHEZ1bmRhY2nDs24gRWNvbMOzZ2ljYSAnTkFTRScBAAAAEmdldFZhbHVlUHJvamVjdERldgAAAAEAAAAIc3VwcGxpZXIJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABBnZXRLZXlQcm9qZWN0RGV2AAAAAQUAAAAIc3VwcGxpZXIBAAAAE2dldEtleVRva2VuU3RhcnRRdHkAAAABAAAABGl0ZW0CAAAAFDE1NjkzIHRva2VucyBCaXQtQ08yAQAAABNnZXRLZXlOb21Ub2tlblByaWNlAAAAAQAAAARpdGVtAgAAAAsxMC4wMCBFdXJvcwEAAAAXZ2V0S2V5SXRlbVByaWNlU3VwcGxpZXIAAAABAAAABGl0ZW0CAAAABl93YXZlcwEAAAAZZ2V0VmFsdWVJdGVtUHJpY2VTdXBwbGllcgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAF2dldEtleUl0ZW1QcmljZVN1cHBsaWVyAAAAAQUAAAAEaXRlbQEAAAASZ2V0S2V5TWF4RGVzY3VlbnRvAAAAAQAAAARpdGVtAgAAACwxMi4wMCUgZGVsIFByZWNpbyBOb21pbmFsIGRlIDEgdG9rZW4gQml0LUNPMgEAAAATZ2V0S2V5TWluVG9rZW5QcmljZQAAAAEAAAAEaXRlbQIAAAAeOC44MCBFdXJvcyBwb3IgMSB0b2tlbiBCaXQtQ08yAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQIAAAAKT3JkZXJf4oSWOgEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0BAAAADmdldEtleVVzZXJOYW1lAAAAAQAAAARpdGVtAgAAABNOb21icmUgZGVsIFVzdWFyaW86AQAAABBnZXRWYWx1ZVVzZXJOYW1lAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAAOZ2V0S2V5VXNlck5hbWUAAAABBQAAAARpdGVtAQAAABJnZXRLZXlVc2VyRG9jdW1lbnQAAAABAAAABGl0ZW0CAAAAOeKEliBkZSBEb2N1bWVudG8gTmFjaW9uYWwgZGUgSWRlbnRpZGFkIC8gRE5JIGRlbCBVc3VhcmlvOgEAAAAUZ2V0VmFsdWVVc2VyRG9jdW1lbnQAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABJnZXRLZXlVc2VyRG9jdW1lbnQAAAABBQAAAARpdGVtAQAAABFnZXRLZXlVc2VyQ291bnRyeQAAAAEAAAAEaXRlbQIAAAAgUGHDrXMgZGUgUmVzaWRlbmNpYSBkZWwgVXN1YXJpbzoBAAAAE2dldFZhbHVlVXNlckNvdW50cnkAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAABFnZXRLZXlVc2VyQ291bnRyeQAAAAEFAAAABGl0ZW0BAAAAFmdldEtleUl0ZW1EaXNjb3VudFVzZXIAAAABAAAABGl0ZW0CAAAAJERlc2N1ZW50byBlbGVqaWRvIHBvciBlbCBVc3VhcmlvLCAlOgEAAAAYZ2V0VmFsdWVJdGVtRGlzY291bnRVc2VyAAAAAQAAAARpdGVtCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAWZ2V0S2V5SXRlbURpc2NvdW50VXNlcgAAAAEFAAAABGl0ZW0BAAAAGmdldEtleUl0ZW1EaXNjb3VudFN1cHBsaWVyAAAAAQAAAARpdGVtAgAAABhTdXBwbGllckRpc2NvdW50LCBtYXhfJToBAAAAHGdldFZhbHVlSXRlbURpc2NvdW50U3VwcGxpZXIAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABpnZXRLZXlJdGVtRGlzY291bnRTdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAFmdldEtleUl0ZW1Vc2VyT3JkZXJRdHkAAAABAAAABGl0ZW0CAAAAJU9yZGVuIGRlIENvbXByYSwgY2FudGlkYWQgc29saWNpdGFkYToBAAAAGGdldFZhbHVlSXRlbVVzZXJPcmRlclF0eQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFmdldEtleUl0ZW1Vc2VyT3JkZXJRdHkAAAABBQAAAARpdGVtAQAAAB1nZXRLZXlTYWxkb1Rva2VuUXR5U3RhcnRFdGFwYQAAAAEAAAAEaXRlbQIAAAAuVG9rZW5zIE9mZXJ0YWRvcyBlbiBsYSBwcmVzZW50ZSBldGFwYSAvIFNhbGRvOgEAAAAfZ2V0VmFsdWVTYWxkb1Rva2VuUXR5U3RhcnRFdGFwYQAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAHWdldEtleVNhbGRvVG9rZW5RdHlTdGFydEV0YXBhAAAAAQUAAAAEaXRlbQEAAAAYZ2V0S2V5QmFsYW5jZVF0eVN1cHBsaWVyAAAAAQAAAARpdGVtAgAAABZCYWxhbmNlL1NhbGRvLCB0b2tlbnM6AQAAABpnZXRWYWx1ZUJhbGFuY2VRdHlTdXBwbGllcgAAAAEAAAAEaXRlbQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGGdldEtleUJhbGFuY2VRdHlTdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEAAAAIc3VwcGxpZXICAAAAKEluZ3Jlc29zIHBvciBWZW50YSBEaXJlY3RhIC8gQmxvY2tDaGFpbjoBAAAAF2dldFZhbHVlQmFsYW5jZVN1cHBsaWVyAAAAAQAAAAhzdXBwbGllcgkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldEtleUJhbGFuY2VTdXBwbGllcgAAAAEFAAAACHN1cHBsaWVyAQAAAAhnZXRLZXlVSQAAAAEAAAAEaXRlbQIAAAAIVUksX3d2czoBAAAACmdldFZhbHVlVUkAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAAhnZXRLZXlVSQAAAAEFAAAABGl0ZW0BAAAACGdldEtleVBJAAAAAQAAAARpdGVtAgAAAAZQSSxfJToBAAAACmdldFZhbHVlUEkAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAAhnZXRLZXlQSQAAAAEFAAAABGl0ZW0BAAAACGdldEtleVNJAAAAAQAAAARpdGVtAgAAAAZTSSxfJToBAAAACmdldFZhbHVlU0kAAAABAAAABGl0ZW0JAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAAhnZXRLZXlTSQAAAAEFAAAABGl0ZW0BAAAADmdldEtleUl0ZW1EYXRhAAAAAQAAAARpdGVt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IEJpdC1DTzI6AgAAAAsxMC4wMCBFdXJvcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAkTcOheGltbyBEZXNjdWVudG8gb2ZyZWNpZG8sIEkgRXRhcGE6AgAAAAcxMi4wMCAlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABGl0ZW0JAABkAAAAAgkBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABGl0ZW0AAAAAAAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAJlRvdGFsIFRva2VucyBFbWl0aWRvcywgSSBFdGFwYSBQcmUtSUNPBQAAAAhzdGFydFF0eQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAADmdldEtleVVzZXJOYW1lAAAAAQUAAAAEaXRlbQUAAAAIdXNlck5hbWUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABFnZXRLZXlVc2VyQ291bnRyeQAAAAEFAAAABGl0ZW0FAAAAC3VzZXJDb3VudHJ5CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAWZ2V0S2V5SXRlbURpc2NvdW50VXNlcgAAAAEFAAAABGl0ZW0FAAAADHVzZXJEaXNjb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFmdldEtleUl0ZW1Vc2VyT3JkZXJRdHkAAAABBQAAAARpdGVtBQAAAAhvcmRlclF0eQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAYdG9rZW5QcmljZS9TdXBwbGllciwgd3ZzCQAAaAAAAAIFAAAACG5vbVByaWNlBQAAAAN3dnMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAFHRva2VuUHJpY2UvVXNlciwgd3ZzBQAAABFjdXJyZW50VG9rZW5QcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAYaW52ZXN0ZWRBbW91bnQvVXNlciwgd3ZzBQAAAAt0b3RhbEFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAVcHVyY2hhc2VPcmRlci9TdGF0dXM6AgAAABrCoUFkcXVpc2ljacOzbiBDb25maXJtYWRhIQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAGGdldEtleUJhbGFuY2VRdHlTdXBwbGllcgAAAAEFAAAABGl0ZW0JAABlAAAAAgUAAAAJcHJlSWNvUXR5BQAAAAhvcmRlclF0eQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAHWdldEtleVNhbGRvVG9rZW5RdHlTdGFydEV0YXBhAAAAAQUAAAAEaXRlbQkAAGUAAAACBQAAAAlwcmVJY29RdHkFAAAACG9yZGVyUXR5CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0S2V5QmFsYW5jZVN1cHBsaWVyAAAAAQUAAAAIc3VwcGxpZXIJAABkAAAAAgUAAAAPYmFsYW5jZVN1cHBsaWVyCAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAiQ3VlbnRhIGRlbCBQcm95ZWN0byBlbiBCbG9ja0NoYWluOgUAAAAIc3VwcGxpZXIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAAAhvcmRlclF0eQUAAAAHeEJpdENPMgUAAAADbmlsAAAAAWkBAAAAEEFkZFN1cHBsaWVyVG9rZW4AAAAGAAAABXRpdGxlAAAABG5hbWUAAAAHY291bnRyeQAAAAlwcmVJY29RdHkAAAAQc3VwcGxpZXJEaXNjb3VudAAAAAxzdXBwbGllckRhdGEEAAAACHN1cHBsaWVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABGl0ZW0JAQAAAApnZXRLZXlJdGVtAAAAAgUAAAAIc3VwcGxpZXIFAAAABXRpdGxlAwkAAGcAAAACAAAAAAAAAAAABQAAAAlwcmVJY29RdHkJAAACAAAAAQIAAAAfU29ycnksIGlu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", "chainId": 84, "height": 1114675, "spentComplexity": 0 } View: original | compacted Prev: 83qcqP9SJRLBK2xwJS1GE7oebzU15jvR9jipDMwiPdyv Next: 5GYwzCMXDPv25LKYbSJpyitnBZTXGWn4tjU43Bx1pZfZ Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let xBitCO2 = base58'39yw38hm342hiK43SqELTaZRkTWJoBc22XpxmsSiBrsN'
55
6-let startQty = 15000
6+let startQty = 5000000
77
88 let nomPrice = 1
9+
10+let wvs = 100000000
11+
12+let supplierDiscount = 12
913
1014 let NONE = "none"
1115
1216 let OwnerPubKey = base58'6tctCnkRasXYuZWRpzZz9ogLri6aifJ19LTtx9uFQv67'
1317
14-let issuer = Address(base58'3N5v9ndbkGSWy1SfeJSz94tYU8qVNTUJV2q')
18+let issuer = Address(base58'3Mvn8oonnpiasA3bkq36N9qeqqXWfFW437o')
1519
16-let projectAddress = Address(base58'3N6iAhMV5VZ31hJSJT4e3DoaBoiHCPxbZNa')
20+let eAdd = Address(base58'3MvrQGkHQtyLTC2QXgPnQ6oCEWhHyUJpU4q')
21+
22+let pAdd = Address(base58'3N5v9ndbkGSWy1SfeJSz94tYU8qVNTUJV2q')
23+
24+let igv = 18
25+
26+let cPB = 88
27+
28+let uIP = 5
29+
30+let pIP = 10
31+
32+let sIP = 1
33+
34+let eIP = 1
1735
1836 func getNumberByKey (key) = {
1937 let num = match getInteger(this, key) {
4058 func getKeyItem (supplier,title) = ("Reserva Forestal Amazónica" + toBase58String(sha256(toBytes((supplier + title)))))
4159
4260
43-func getKeyPropietario (supplier) = (supplier + "Comunidad Achuar Kapawi del Ecuador")
61+func getKeyItemSupplier (supplier) = (supplier + "Comunidad Achuar Kapawi del Ecuador")
4462
4563
46-func getValuePropietario (supplier) = getStrByKey(getKeyPropietario(supplier))
64+func getValueItemSupplier (supplier) = getStrByKey(getKeyItemSupplier(supplier))
4765
4866
4967 func getKeyProjectCode (projectCode) = "01-EC/SGT - ACHUARKAPAWI-01"
6482 func getKeyProjectCountry (item) = "República del Ecuador"
6583
6684
67-func getKeyProjectDev (item) = "Fundación Ecológica 'NASE'"
85+func getKeyProjectDev (supplier) = "Fundación Ecológica 'NASE'"
6886
6987
70-func getKeyTokenStartQty (item) = "15000 tokens Bit-CO2"
88+func getValueProjectDev (supplier) = getStrByKey(getKeyProjectDev(supplier))
89+
90+
91+func getKeyTokenStartQty (item) = "15693 tokens Bit-CO2"
7192
7293
7394 func getKeyNomTokenPrice (item) = "10.00 Euros"
95+
96+
97+func getKeyItemPriceSupplier (item) = "_waves"
98+
99+
100+func getValueItemPriceSupplier (item) = getNumberByKey(getKeyItemPriceSupplier(item))
74101
75102
76103 func getKeyMaxDescuento (item) = "12.00% del Precio Nominal de 1 token Bit-CO2"
109136 func getValueItemDiscountUser (item) = getNumberByKey(getKeyItemDiscountUser(item))
110137
111138
139+func getKeyItemDiscountSupplier (item) = "SupplierDiscount, max_%:"
140+
141+
142+func getValueItemDiscountSupplier (item) = getNumberByKey(getKeyItemDiscountSupplier(item))
143+
144+
112145 func getKeyItemUserOrderQty (item) = "Orden de Compra, cantidad solicitada:"
113146
114147
121154 func getValueSaldoTokenQtyStartEtapa (item) = getNumberByKey(getKeySaldoTokenQtyStartEtapa(item))
122155
123156
124-func getKeyBalanceSupplierSellIncome (supplier) = "Ingresos por Venta Directa / BlockChain:"
157+func getKeyBalanceQtySupplier (item) = "Balance/Saldo, tokens:"
125158
126159
127-func getValueBalanceSupplierSellIncome (supplier) = getNumberByKey(getKeyBalanceSupplierSellIncome(supplier))
160+func getValueBalanceQtySupplier (item) = getNumberByKey(getKeyBalanceQtySupplier(item))
161+
162+
163+func getKeyBalanceSupplier (supplier) = "Ingresos por Venta Directa / BlockChain:"
164+
165+
166+func getValueBalanceSupplier (supplier) = getNumberByKey(getKeyBalanceSupplier(supplier))
167+
168+
169+func getKeyUI (item) = "UI,_wvs:"
170+
171+
172+func getValueUI (item) = getNumberByKey(getKeyUI(item))
173+
174+
175+func getKeyPI (item) = "PI,_%:"
176+
177+
178+func getValuePI (item) = getNumberByKey(getKeyPI(item))
179+
180+
181+func getKeySI (item) = "SI,_%:"
182+
183+
184+func getValueSI (item) = getNumberByKey(getKeySI(item))
185+
186+
187+func getKeyItemData (item) = "description: "
128188
129189
130190 @Callable(i)
131-func deposit (amount) = {
191+func deposit (title,supplierData) = {
132192 let pmt = extract(i.payment)
133193 if ((pmt.assetId != xBitCO2))
134- then throw("Use xBitCO2 tokens only for the wallet deposit")
194+ then throw("deposito permitido solo en xBitCO2 tokens")
135195 else {
136196 let supplier = toBase58String(i.caller.bytes)
137197 let currentAmount = match getInteger(this, supplier) {
141201 startQty
142202 }
143203 let newAmount = (currentAmount + pmt.amount)
144- WriteSet([DataEntry(supplier, newAmount)])
204+ if ((0 >= newAmount))
205+ then throw("No hay xBitCO2 en su balance")
206+ else WriteSet([DataEntry(supplier, newAmount)])
145207 }
146208 }
147209
151213 func purchase (item,userName,userCountry,userDiscount,orderQty) = {
152214 let pmt = extract(i.payment)
153215 if (isDefined(pmt.assetId))
154- then throw("you can adquire xBitCO2 only by Waves tokens")
216+ then throw("En la presente Plastaforma Ud. puede adquirir sus tokens xBitCO2 usando WavesKeeper y su token de pago Waves.")
155217 else {
156- let supplier = match getString(this, getKeyPropietario(item)) {
218+ let supplier = match getString(this, getKeyItemSupplier(item)) {
157219 case a: String =>
158220 a
159221 case _ =>
160222 NONE
161223 }
162- let preIcoQty = match getInteger(this, getKeySaldoTokenQtyStartEtapa(item)) {
224+ let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
163225 case a: Int =>
164226 a
165227 case _ =>
166228 startQty
167229 }
168- let balanceSupplier = match getInteger(this, getKeyBalanceSupplierSellIncome(supplier)) {
230+ let balanceSupplier = match getInteger(this, getKeyBalanceSupplier(supplier)) {
169231 case a: Int =>
170232 a
171233 case _ =>
172234 0
173235 }
174236 let userAddress = toBase58String(i.caller.bytes)
175- let buyerTokenPrice = (((100 - userDiscount) * nomPrice) / 100)
176- let totalAmount = (orderQty * buyerTokenPrice)
237+ let currentTokenPrice = ((((100 - userDiscount) * nomPrice) * wvs) / 100)
238+ let totalAmount = (orderQty * currentTokenPrice)
177239 if ((totalAmount > pmt.amount))
178240 then throw("Payment Amount can't be less than item Purchase Order")
179241 else if ((pmt.amount > totalAmount))
180242 then throw("Payment Amount can't be higher than item Purchase Order")
181- else ScriptResult(WriteSet([DataEntry("Tipo de Proyecto:", "Reserva Forestal Amazónica"), DataEntry("Categoría:", "Emisión de CO2 Evitada"), DataEntry("País/Ubicación:", "República del Ecuador"), DataEntry("Nombre del Proyecto:", "Reserva Amazónica Achuar-Kapawi"), DataEntry("Código:", "01-EC/SGT - ACHUARKAPAWI-01"), DataEntry("Emisor:", "Comunidad Achuar Kapawi"), DataEntry("Desarrollador/Responsable:", "Fundación Ecológica 'NASE'"), DataEntry("Etapas del Proyecto, Pre-ICO:", "2 Etapas"), DataEntry("Etapas del Proyecto, en Ejecución:", "A Definir, Fundación REDD"), DataEntry("Cantidad Total de Tokens a Emitir, I y II Etapa Pre-ICO:", "305693 tokens Bit-CO2"), DataEntry("Precio Nominal, 1 token Bit-CO2:", "10.00 Euros"), DataEntry("Máximo Descuento ofrecido, I Etapa:", "12.00 %"), DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry("Total Tokens Emitidos, I Etapa Pre-ICO", startQty), DataEntry(getKeyUserName(item), userName), DataEntry(getKeyUserCountry(item), userCountry), DataEntry(getKeyItemDiscountUser(item), userDiscount), DataEntry(getKeyItemUserOrderQty(item), orderQty), DataEntry("tokenPrice/Supplier, waves", nomPrice), DataEntry("tokenPrice/User, waves", buyerTokenPrice), DataEntry("investedAmount/User, waves", totalAmount), DataEntry("purchaseOrder/Status:", "¡Adquisición Confirmada!"), DataEntry(getKeySaldoTokenQtyStartEtapa(item), (preIcoQty - orderQty)), DataEntry(getKeyBalanceSupplierSellIncome(supplier), (balanceSupplier + pmt.amount)), DataEntry("Cuenta del Proyecto en BlockChain:", supplier), DataEntry("Cuenta del Proyecto en BlockChain:", base58'3N6iAhMV5VZ31hJSJT4e3DoaBoiHCPxbZNa')]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, xBitCO2)]))
243+ else ScriptResult(WriteSet([DataEntry("Tipo de Proyecto:", "Reserva Forestal Amazónica"), DataEntry("Categoría:", "Emisión de CO2 Evitada"), DataEntry("País/Ubicación:", "República del Ecuador"), DataEntry("Nombre del Proyecto:", "Reserva Amazónica Achuar-Kapawi"), DataEntry("Código:", "01-EC/SGT - ACHUARKAPAWI-01"), DataEntry("Emisor:", "Comunidad Achuar Kapawi"), DataEntry("Desarrollador/Responsable:", "Fundación Ecológica 'NASE'"), DataEntry("Etapas del Proyecto, Pre-ICO:", "2 Etapas"), DataEntry("Etapas del Proyecto, en Ejecución:", "A Definir, Fundación REDD"), DataEntry("Cantidad Total de Tokens Bit-CO2 a Emitir, I y II Etapa Pre-ICO:", "305693"), DataEntry("Precio Nominal, 1 token Bit-CO2:", "10.00 Euros"), DataEntry("Máximo Descuento ofrecido, I Etapa:", "12.00 %"), DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry("Total Tokens Emitidos, I Etapa Pre-ICO", startQty), DataEntry(getKeyUserName(item), userName), DataEntry(getKeyUserCountry(item), userCountry), DataEntry(getKeyItemDiscountUser(item), userDiscount), DataEntry(getKeyItemUserOrderQty(item), orderQty), DataEntry("tokenPrice/Supplier, wvs", (nomPrice * wvs)), DataEntry("tokenPrice/User, wvs", currentTokenPrice), DataEntry("investedAmount/User, wvs", totalAmount), DataEntry("purchaseOrder/Status:", "¡Adquisición Confirmada!"), DataEntry(getKeyBalanceQtySupplier(item), (preIcoQty - orderQty)), DataEntry(getKeySaldoTokenQtyStartEtapa(item), (preIcoQty - orderQty)), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount)), DataEntry("Cuenta del Proyecto en BlockChain:", supplier)]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, xBitCO2)]))
182244 }
245+ }
246+
247+
248+
249+@Callable(i)
250+func AddSupplierToken (title,name,country,preIcoQty,supplierDiscount,supplierData) = {
251+ let supplier = toBase58String(i.caller.bytes)
252+ let item = getKeyItem(supplier, title)
253+ if ((0 >= preIcoQty))
254+ then throw("Sorry, insufficient token offer")
255+ else WriteSet([DataEntry(("Supplier:_" + getKeyProjectDev(item)), supplier), DataEntry(("Title:_" + supplier), title), DataEntry(("ProjectName:_" + supplier), name), DataEntry(("Country:_" + supplier), country), DataEntry(getKeyBalanceQtySupplier(item), preIcoQty), DataEntry(("NomTokenPrice:_" + getKeyItemPriceSupplier(item)), (nomPrice * wvs)), DataEntry(("Max_Descuento_ofrecido:" + getKeyItemDiscountSupplier(item)), supplierDiscount), DataEntry(("Development:_" + getKeyItemData(item)), supplierData)])
256+ }
257+
258+
259+
260+@Callable(i)
261+func purchaseGTS (item,userName,userDocument,totalAmount) = {
262+ let pmt = extract(i.payment)
263+ if (isDefined(pmt.assetId))
264+ then throw("El Precio de los aves.")
265+ else {
266+ let supplier = match getString(this, getKeyItemSupplier(item)) {
267+ case a: String =>
268+ a
269+ case _ =>
270+ NONE
271+ }
272+ let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
273+ case a: Int =>
274+ a
275+ case _ =>
276+ startQty
277+ }
278+ let balanceSupplier = match getInteger(this, getKeyBalanceSupplier(supplier)) {
279+ case a: Int =>
280+ a
281+ case _ =>
282+ 0
283+ }
284+ let userAddress = toBase58String(i.caller.bytes)
285+ let subTotal = (totalAmount - ((igv * totalAmount) / 100))
286+ let uI = ((subTotal * uIP) / 100)
287+ let uBI = (uI / cPB)
288+ let pI = ((subTotal * pIP) / 100)
289+ let eI = ((subTotal * eIP) / 100)
290+ let eBI = ((subTotal * eIP) / (cPB * 100))
291+ let sI = ((totalAmount - pI) - eI)
292+ let sBI = ((subTotal * sIP) / (cPB * 100))
293+ if ((totalAmount > pmt.amount))
294+ then throw("Payment Amount can't be less than item Purchase Order")
295+ else if ((pmt.amount > totalAmount))
296+ then throw("Payment Amount can't be higher than item Purchase Order")
297+ else ScriptResult(WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyUserName(item), userName), DataEntry(getKeyUserDocument(item), userDocument), DataEntry("Payment_amount,_wvs", totalAmount), DataEntry("Imp, %", igv), DataEntry("STtl, wvs", subTotal), DataEntry("CP 1 B, wvs", (cPB * 1000000)), DataEntry(getKeyUI(item), uI), DataEntry("UBI", uBI), DataEntry(getKeyPI(item), pI), DataEntry("EcSys", eBI), DataEntry(("Order_Status:_" + userAddress), "Adquisición Confirmada!"), DataEntry(getKeySI(item), sI), DataEntry("SBI: b", sBI), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount))]), TransferSet([ScriptTransfer(i.caller, uBI, xBitCO2), ScriptTransfer(pAdd, pI, unit), ScriptTransfer(issuer, sI, unit), ScriptTransfer(issuer, sBI, xBitCO2), ScriptTransfer(eAdd, eI, unit), ScriptTransfer(eAdd, eBI, xBitCO2)]))
298+ }
299+ }
300+
301+
302+
303+@Callable(i)
304+func AddVendedorGTS (title,name,country,preIcoQty,supplierDiscount,supplierData) = {
305+ let supplier = toBase58String(i.caller.bytes)
306+ let item = getKeyItem(supplier, title)
307+ if ((0 >= preIcoQty))
308+ then throw("Sorry, insufficient token offer")
309+ else WriteSet([DataEntry(("Supplier:_" + getKeyProjectDev(item)), supplier), DataEntry(("Title:_" + supplier), title), DataEntry(("ProjectName:_" + supplier), name), DataEntry(("Country:_" + supplier), country), DataEntry(getKeyBalanceQtySupplier(item), preIcoQty), DataEntry(("NomTokenPrice:_" + getKeyItemPriceSupplier(item)), (nomPrice * wvs)), DataEntry(("Max_Descuento_ofrecido:" + getKeyItemDiscountSupplier(item)), supplierDiscount), DataEntry(("Development:_" + getKeyItemData(item)), supplierData)])
310+ }
311+
312+
313+
314+@Callable(i)
315+func withdraw (item,amount) = {
316+ let userAddress = toBase58String(i.caller.bytes)
317+ let supplier = match getString(this, getKeyItemSupplier(item)) {
318+ case a: String =>
319+ a
320+ case _ =>
321+ NONE
322+ }
323+ let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
324+ case a: Int =>
325+ a
326+ case _ =>
327+ startQty
328+ }
329+ let newAmount = (preIcoQty - amount)
330+ if ((0 > amount))
331+ then throw("El balance de retiro no puede ser negativo!")
332+ else if ((0 >= newAmount))
333+ then throw("Ooppss.. Insuficiente balance!")
334+ else ScriptResult(WriteSet([DataEntry(item, newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, xBitCO2)]))
183335 }
184336
185337
187339 func verify () = match tx {
188340 case t: SetScriptTransaction =>
189341 sigVerify(tx.bodyBytes, tx.proofs[0], OwnerPubKey)
190- case d: DataTransaction =>
342+ case d: DataTransaction|ReissueTransaction =>
191343 true
192344 case tx: TransferTransaction =>
193- let recipient = toBase58String(addressFromRecipient(tx.recipient).bytes)
194- if ((tx.sender == issuer))
345+ true
346+ case tx: ExchangeTransaction =>
347+ let withWaves = if (!(isDefined(tx.sellOrder.assetPair.priceAsset)))
195348 then true
196- else throw("You can't transferred this token")
349+ else !(isDefined(tx.sellOrder.assetPair.amountAsset))
350+ withWaves
197351 case _ =>
198352 false
199353 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let xBitCO2 = base58'39yw38hm342hiK43SqELTaZRkTWJoBc22XpxmsSiBrsN'
55
6-let startQty = 15000
6+let startQty = 5000000
77
88 let nomPrice = 1
9+
10+let wvs = 100000000
11+
12+let supplierDiscount = 12
913
1014 let NONE = "none"
1115
1216 let OwnerPubKey = base58'6tctCnkRasXYuZWRpzZz9ogLri6aifJ19LTtx9uFQv67'
1317
14-let issuer = Address(base58'3N5v9ndbkGSWy1SfeJSz94tYU8qVNTUJV2q')
18+let issuer = Address(base58'3Mvn8oonnpiasA3bkq36N9qeqqXWfFW437o')
1519
16-let projectAddress = Address(base58'3N6iAhMV5VZ31hJSJT4e3DoaBoiHCPxbZNa')
20+let eAdd = Address(base58'3MvrQGkHQtyLTC2QXgPnQ6oCEWhHyUJpU4q')
21+
22+let pAdd = Address(base58'3N5v9ndbkGSWy1SfeJSz94tYU8qVNTUJV2q')
23+
24+let igv = 18
25+
26+let cPB = 88
27+
28+let uIP = 5
29+
30+let pIP = 10
31+
32+let sIP = 1
33+
34+let eIP = 1
1735
1836 func getNumberByKey (key) = {
1937 let num = match getInteger(this, key) {
2038 case a: Int =>
2139 a
2240 case _ =>
2341 0
2442 }
2543 num
2644 }
2745
2846
2947 func getStrByKey (key) = {
3048 let str = match getString(this, key) {
3149 case a: String =>
3250 a
3351 case _ =>
3452 NONE
3553 }
3654 str
3755 }
3856
3957
4058 func getKeyItem (supplier,title) = ("Reserva Forestal Amazónica" + toBase58String(sha256(toBytes((supplier + title)))))
4159
4260
43-func getKeyPropietario (supplier) = (supplier + "Comunidad Achuar Kapawi del Ecuador")
61+func getKeyItemSupplier (supplier) = (supplier + "Comunidad Achuar Kapawi del Ecuador")
4462
4563
46-func getValuePropietario (supplier) = getStrByKey(getKeyPropietario(supplier))
64+func getValueItemSupplier (supplier) = getStrByKey(getKeyItemSupplier(supplier))
4765
4866
4967 func getKeyProjectCode (projectCode) = "01-EC/SGT - ACHUARKAPAWI-01"
5068
5169
5270 func getKeyProjectName (projectName) = "Reserva Amazónica Achuar-Kapawi"
5371
5472
5573 func getValueProjectName (projectName) = getStrByKey(getKeyProjectName(projectName))
5674
5775
5876 func getKeyProjectEtapa (projectAddress) = "AchuarKapawi, I Etapa: PreICO"
5977
6078
6179 func getValueProjectEtapa (projectAddress) = getStrByKey(getKeyProjectEtapa(projectAddress))
6280
6381
6482 func getKeyProjectCountry (item) = "República del Ecuador"
6583
6684
67-func getKeyProjectDev (item) = "Fundación Ecológica 'NASE'"
85+func getKeyProjectDev (supplier) = "Fundación Ecológica 'NASE'"
6886
6987
70-func getKeyTokenStartQty (item) = "15000 tokens Bit-CO2"
88+func getValueProjectDev (supplier) = getStrByKey(getKeyProjectDev(supplier))
89+
90+
91+func getKeyTokenStartQty (item) = "15693 tokens Bit-CO2"
7192
7293
7394 func getKeyNomTokenPrice (item) = "10.00 Euros"
95+
96+
97+func getKeyItemPriceSupplier (item) = "_waves"
98+
99+
100+func getValueItemPriceSupplier (item) = getNumberByKey(getKeyItemPriceSupplier(item))
74101
75102
76103 func getKeyMaxDescuento (item) = "12.00% del Precio Nominal de 1 token Bit-CO2"
77104
78105
79106 func getKeyMinTokenPrice (item) = "8.80 Euros por 1 token Bit-CO2"
80107
81108
82109 func getKeyUserItemCounter (user,item) = "Order_№:"
83110
84111
85112 func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
86113
87114
88115 func getKeyUserName (item) = "Nombre del Usuario:"
89116
90117
91118 func getValueUserName (item) = getStrByKey(getKeyUserName(item))
92119
93120
94121 func getKeyUserDocument (item) = "№ de Documento Nacional de Identidad / DNI del Usuario:"
95122
96123
97124 func getValueUserDocument (item) = getStrByKey(getKeyUserDocument(item))
98125
99126
100127 func getKeyUserCountry (item) = "País de Residencia del Usuario:"
101128
102129
103130 func getValueUserCountry (item) = getStrByKey(getKeyUserCountry(item))
104131
105132
106133 func getKeyItemDiscountUser (item) = "Descuento elejido por el Usuario, %:"
107134
108135
109136 func getValueItemDiscountUser (item) = getNumberByKey(getKeyItemDiscountUser(item))
110137
111138
139+func getKeyItemDiscountSupplier (item) = "SupplierDiscount, max_%:"
140+
141+
142+func getValueItemDiscountSupplier (item) = getNumberByKey(getKeyItemDiscountSupplier(item))
143+
144+
112145 func getKeyItemUserOrderQty (item) = "Orden de Compra, cantidad solicitada:"
113146
114147
115148 func getValueItemUserOrderQty (item) = getNumberByKey(getKeyItemUserOrderQty(item))
116149
117150
118151 func getKeySaldoTokenQtyStartEtapa (item) = "Tokens Ofertados en la presente etapa / Saldo:"
119152
120153
121154 func getValueSaldoTokenQtyStartEtapa (item) = getNumberByKey(getKeySaldoTokenQtyStartEtapa(item))
122155
123156
124-func getKeyBalanceSupplierSellIncome (supplier) = "Ingresos por Venta Directa / BlockChain:"
157+func getKeyBalanceQtySupplier (item) = "Balance/Saldo, tokens:"
125158
126159
127-func getValueBalanceSupplierSellIncome (supplier) = getNumberByKey(getKeyBalanceSupplierSellIncome(supplier))
160+func getValueBalanceQtySupplier (item) = getNumberByKey(getKeyBalanceQtySupplier(item))
161+
162+
163+func getKeyBalanceSupplier (supplier) = "Ingresos por Venta Directa / BlockChain:"
164+
165+
166+func getValueBalanceSupplier (supplier) = getNumberByKey(getKeyBalanceSupplier(supplier))
167+
168+
169+func getKeyUI (item) = "UI,_wvs:"
170+
171+
172+func getValueUI (item) = getNumberByKey(getKeyUI(item))
173+
174+
175+func getKeyPI (item) = "PI,_%:"
176+
177+
178+func getValuePI (item) = getNumberByKey(getKeyPI(item))
179+
180+
181+func getKeySI (item) = "SI,_%:"
182+
183+
184+func getValueSI (item) = getNumberByKey(getKeySI(item))
185+
186+
187+func getKeyItemData (item) = "description: "
128188
129189
130190 @Callable(i)
131-func deposit (amount) = {
191+func deposit (title,supplierData) = {
132192 let pmt = extract(i.payment)
133193 if ((pmt.assetId != xBitCO2))
134- then throw("Use xBitCO2 tokens only for the wallet deposit")
194+ then throw("deposito permitido solo en xBitCO2 tokens")
135195 else {
136196 let supplier = toBase58String(i.caller.bytes)
137197 let currentAmount = match getInteger(this, supplier) {
138198 case a: Int =>
139199 a
140200 case _ =>
141201 startQty
142202 }
143203 let newAmount = (currentAmount + pmt.amount)
144- WriteSet([DataEntry(supplier, newAmount)])
204+ if ((0 >= newAmount))
205+ then throw("No hay xBitCO2 en su balance")
206+ else WriteSet([DataEntry(supplier, newAmount)])
145207 }
146208 }
147209
148210
149211
150212 @Callable(i)
151213 func purchase (item,userName,userCountry,userDiscount,orderQty) = {
152214 let pmt = extract(i.payment)
153215 if (isDefined(pmt.assetId))
154- then throw("you can adquire xBitCO2 only by Waves tokens")
216+ then throw("En la presente Plastaforma Ud. puede adquirir sus tokens xBitCO2 usando WavesKeeper y su token de pago Waves.")
155217 else {
156- let supplier = match getString(this, getKeyPropietario(item)) {
218+ let supplier = match getString(this, getKeyItemSupplier(item)) {
157219 case a: String =>
158220 a
159221 case _ =>
160222 NONE
161223 }
162- let preIcoQty = match getInteger(this, getKeySaldoTokenQtyStartEtapa(item)) {
224+ let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
163225 case a: Int =>
164226 a
165227 case _ =>
166228 startQty
167229 }
168- let balanceSupplier = match getInteger(this, getKeyBalanceSupplierSellIncome(supplier)) {
230+ let balanceSupplier = match getInteger(this, getKeyBalanceSupplier(supplier)) {
169231 case a: Int =>
170232 a
171233 case _ =>
172234 0
173235 }
174236 let userAddress = toBase58String(i.caller.bytes)
175- let buyerTokenPrice = (((100 - userDiscount) * nomPrice) / 100)
176- let totalAmount = (orderQty * buyerTokenPrice)
237+ let currentTokenPrice = ((((100 - userDiscount) * nomPrice) * wvs) / 100)
238+ let totalAmount = (orderQty * currentTokenPrice)
177239 if ((totalAmount > pmt.amount))
178240 then throw("Payment Amount can't be less than item Purchase Order")
179241 else if ((pmt.amount > totalAmount))
180242 then throw("Payment Amount can't be higher than item Purchase Order")
181- else ScriptResult(WriteSet([DataEntry("Tipo de Proyecto:", "Reserva Forestal Amazónica"), DataEntry("Categoría:", "Emisión de CO2 Evitada"), DataEntry("País/Ubicación:", "República del Ecuador"), DataEntry("Nombre del Proyecto:", "Reserva Amazónica Achuar-Kapawi"), DataEntry("Código:", "01-EC/SGT - ACHUARKAPAWI-01"), DataEntry("Emisor:", "Comunidad Achuar Kapawi"), DataEntry("Desarrollador/Responsable:", "Fundación Ecológica 'NASE'"), DataEntry("Etapas del Proyecto, Pre-ICO:", "2 Etapas"), DataEntry("Etapas del Proyecto, en Ejecución:", "A Definir, Fundación REDD"), DataEntry("Cantidad Total de Tokens a Emitir, I y II Etapa Pre-ICO:", "305693 tokens Bit-CO2"), DataEntry("Precio Nominal, 1 token Bit-CO2:", "10.00 Euros"), DataEntry("Máximo Descuento ofrecido, I Etapa:", "12.00 %"), DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry("Total Tokens Emitidos, I Etapa Pre-ICO", startQty), DataEntry(getKeyUserName(item), userName), DataEntry(getKeyUserCountry(item), userCountry), DataEntry(getKeyItemDiscountUser(item), userDiscount), DataEntry(getKeyItemUserOrderQty(item), orderQty), DataEntry("tokenPrice/Supplier, waves", nomPrice), DataEntry("tokenPrice/User, waves", buyerTokenPrice), DataEntry("investedAmount/User, waves", totalAmount), DataEntry("purchaseOrder/Status:", "¡Adquisición Confirmada!"), DataEntry(getKeySaldoTokenQtyStartEtapa(item), (preIcoQty - orderQty)), DataEntry(getKeyBalanceSupplierSellIncome(supplier), (balanceSupplier + pmt.amount)), DataEntry("Cuenta del Proyecto en BlockChain:", supplier), DataEntry("Cuenta del Proyecto en BlockChain:", base58'3N6iAhMV5VZ31hJSJT4e3DoaBoiHCPxbZNa')]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, xBitCO2)]))
243+ else ScriptResult(WriteSet([DataEntry("Tipo de Proyecto:", "Reserva Forestal Amazónica"), DataEntry("Categoría:", "Emisión de CO2 Evitada"), DataEntry("País/Ubicación:", "República del Ecuador"), DataEntry("Nombre del Proyecto:", "Reserva Amazónica Achuar-Kapawi"), DataEntry("Código:", "01-EC/SGT - ACHUARKAPAWI-01"), DataEntry("Emisor:", "Comunidad Achuar Kapawi"), DataEntry("Desarrollador/Responsable:", "Fundación Ecológica 'NASE'"), DataEntry("Etapas del Proyecto, Pre-ICO:", "2 Etapas"), DataEntry("Etapas del Proyecto, en Ejecución:", "A Definir, Fundación REDD"), DataEntry("Cantidad Total de Tokens Bit-CO2 a Emitir, I y II Etapa Pre-ICO:", "305693"), DataEntry("Precio Nominal, 1 token Bit-CO2:", "10.00 Euros"), DataEntry("Máximo Descuento ofrecido, I Etapa:", "12.00 %"), DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry("Total Tokens Emitidos, I Etapa Pre-ICO", startQty), DataEntry(getKeyUserName(item), userName), DataEntry(getKeyUserCountry(item), userCountry), DataEntry(getKeyItemDiscountUser(item), userDiscount), DataEntry(getKeyItemUserOrderQty(item), orderQty), DataEntry("tokenPrice/Supplier, wvs", (nomPrice * wvs)), DataEntry("tokenPrice/User, wvs", currentTokenPrice), DataEntry("investedAmount/User, wvs", totalAmount), DataEntry("purchaseOrder/Status:", "¡Adquisición Confirmada!"), DataEntry(getKeyBalanceQtySupplier(item), (preIcoQty - orderQty)), DataEntry(getKeySaldoTokenQtyStartEtapa(item), (preIcoQty - orderQty)), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount)), DataEntry("Cuenta del Proyecto en BlockChain:", supplier)]), TransferSet([ScriptTransfer(addressFromStringValue(userAddress), orderQty, xBitCO2)]))
182244 }
245+ }
246+
247+
248+
249+@Callable(i)
250+func AddSupplierToken (title,name,country,preIcoQty,supplierDiscount,supplierData) = {
251+ let supplier = toBase58String(i.caller.bytes)
252+ let item = getKeyItem(supplier, title)
253+ if ((0 >= preIcoQty))
254+ then throw("Sorry, insufficient token offer")
255+ else WriteSet([DataEntry(("Supplier:_" + getKeyProjectDev(item)), supplier), DataEntry(("Title:_" + supplier), title), DataEntry(("ProjectName:_" + supplier), name), DataEntry(("Country:_" + supplier), country), DataEntry(getKeyBalanceQtySupplier(item), preIcoQty), DataEntry(("NomTokenPrice:_" + getKeyItemPriceSupplier(item)), (nomPrice * wvs)), DataEntry(("Max_Descuento_ofrecido:" + getKeyItemDiscountSupplier(item)), supplierDiscount), DataEntry(("Development:_" + getKeyItemData(item)), supplierData)])
256+ }
257+
258+
259+
260+@Callable(i)
261+func purchaseGTS (item,userName,userDocument,totalAmount) = {
262+ let pmt = extract(i.payment)
263+ if (isDefined(pmt.assetId))
264+ then throw("El Precio de los aves.")
265+ else {
266+ let supplier = match getString(this, getKeyItemSupplier(item)) {
267+ case a: String =>
268+ a
269+ case _ =>
270+ NONE
271+ }
272+ let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
273+ case a: Int =>
274+ a
275+ case _ =>
276+ startQty
277+ }
278+ let balanceSupplier = match getInteger(this, getKeyBalanceSupplier(supplier)) {
279+ case a: Int =>
280+ a
281+ case _ =>
282+ 0
283+ }
284+ let userAddress = toBase58String(i.caller.bytes)
285+ let subTotal = (totalAmount - ((igv * totalAmount) / 100))
286+ let uI = ((subTotal * uIP) / 100)
287+ let uBI = (uI / cPB)
288+ let pI = ((subTotal * pIP) / 100)
289+ let eI = ((subTotal * eIP) / 100)
290+ let eBI = ((subTotal * eIP) / (cPB * 100))
291+ let sI = ((totalAmount - pI) - eI)
292+ let sBI = ((subTotal * sIP) / (cPB * 100))
293+ if ((totalAmount > pmt.amount))
294+ then throw("Payment Amount can't be less than item Purchase Order")
295+ else if ((pmt.amount > totalAmount))
296+ then throw("Payment Amount can't be higher than item Purchase Order")
297+ else ScriptResult(WriteSet([DataEntry(getKeyUserItemCounter(userAddress, item), (getValueUserItemCounter(userAddress, item) + 1)), DataEntry(getKeyUserName(item), userName), DataEntry(getKeyUserDocument(item), userDocument), DataEntry("Payment_amount,_wvs", totalAmount), DataEntry("Imp, %", igv), DataEntry("STtl, wvs", subTotal), DataEntry("CP 1 B, wvs", (cPB * 1000000)), DataEntry(getKeyUI(item), uI), DataEntry("UBI", uBI), DataEntry(getKeyPI(item), pI), DataEntry("EcSys", eBI), DataEntry(("Order_Status:_" + userAddress), "Adquisición Confirmada!"), DataEntry(getKeySI(item), sI), DataEntry("SBI: b", sBI), DataEntry(getKeyBalanceSupplier(supplier), (balanceSupplier + pmt.amount))]), TransferSet([ScriptTransfer(i.caller, uBI, xBitCO2), ScriptTransfer(pAdd, pI, unit), ScriptTransfer(issuer, sI, unit), ScriptTransfer(issuer, sBI, xBitCO2), ScriptTransfer(eAdd, eI, unit), ScriptTransfer(eAdd, eBI, xBitCO2)]))
298+ }
299+ }
300+
301+
302+
303+@Callable(i)
304+func AddVendedorGTS (title,name,country,preIcoQty,supplierDiscount,supplierData) = {
305+ let supplier = toBase58String(i.caller.bytes)
306+ let item = getKeyItem(supplier, title)
307+ if ((0 >= preIcoQty))
308+ then throw("Sorry, insufficient token offer")
309+ else WriteSet([DataEntry(("Supplier:_" + getKeyProjectDev(item)), supplier), DataEntry(("Title:_" + supplier), title), DataEntry(("ProjectName:_" + supplier), name), DataEntry(("Country:_" + supplier), country), DataEntry(getKeyBalanceQtySupplier(item), preIcoQty), DataEntry(("NomTokenPrice:_" + getKeyItemPriceSupplier(item)), (nomPrice * wvs)), DataEntry(("Max_Descuento_ofrecido:" + getKeyItemDiscountSupplier(item)), supplierDiscount), DataEntry(("Development:_" + getKeyItemData(item)), supplierData)])
310+ }
311+
312+
313+
314+@Callable(i)
315+func withdraw (item,amount) = {
316+ let userAddress = toBase58String(i.caller.bytes)
317+ let supplier = match getString(this, getKeyItemSupplier(item)) {
318+ case a: String =>
319+ a
320+ case _ =>
321+ NONE
322+ }
323+ let preIcoQty = match getInteger(this, getKeyBalanceQtySupplier(item)) {
324+ case a: Int =>
325+ a
326+ case _ =>
327+ startQty
328+ }
329+ let newAmount = (preIcoQty - amount)
330+ if ((0 > amount))
331+ then throw("El balance de retiro no puede ser negativo!")
332+ else if ((0 >= newAmount))
333+ then throw("Ooppss.. Insuficiente balance!")
334+ else ScriptResult(WriteSet([DataEntry(item, newAmount)]), TransferSet([ScriptTransfer(i.caller, amount, xBitCO2)]))
183335 }
184336
185337
186338 @Verifier(tx)
187339 func verify () = match tx {
188340 case t: SetScriptTransaction =>
189341 sigVerify(tx.bodyBytes, tx.proofs[0], OwnerPubKey)
190- case d: DataTransaction =>
342+ case d: DataTransaction|ReissueTransaction =>
191343 true
192344 case tx: TransferTransaction =>
193- let recipient = toBase58String(addressFromRecipient(tx.recipient).bytes)
194- if ((tx.sender == issuer))
345+ true
346+ case tx: ExchangeTransaction =>
347+ let withWaves = if (!(isDefined(tx.sellOrder.assetPair.priceAsset)))
195348 then true
196- else throw("You can't transferred this token")
349+ else !(isDefined(tx.sellOrder.assetPair.amountAsset))
350+ withWaves
197351 case _ =>
198352 false
199353 }
200354

github/deemru/w8io/873ac7e 
96.12 ms