diff --git a/src/cpp/HTTPInterface/DecodeTransactionPage.cpp b/src/cpp/HTTPInterface/DecodeTransactionPage.cpp
index 8348495e4..add8dfaad 100644
--- a/src/cpp/HTTPInterface/DecodeTransactionPage.cpp
+++ b/src/cpp/HTTPInterface/DecodeTransactionPage.cpp
@@ -33,7 +33,7 @@ void DecodeTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
const char* pageName = "Decode Transaction";
- model::messages::gradido::TransactionBody transactionBody;
+ proto::gradido::TransactionBody transactionBody;
bool decoded = false;
bool adminUser = false;
if(mSession && mSession->getNewUser()) {
@@ -182,58 +182,51 @@ void DecodeTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
#line 82 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
if(transactionBody.has_transfer()) {
auto transfer = transactionBody.transfer();
+ char hex[65]; memset(hex, 0, 65);
responseStream << "\n";
- responseStream << "\t\t
Transfer
\n";
- responseStream << "\t\tSender\n";
- responseStream << "\t\t";
-#line 87 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
- for(int i = 0; i < transfer.senderamounts_size(); i++) {
- auto sender = transfer.senderamounts(i);
- char hex[65]; memset(hex, 0, 65);
- sodium_bin2hex(hex, 65, (const unsigned char*)sender.ed25519_sender_pubkey().data(), sender.ed25519_sender_pubkey().size());
+ responseStream << "\t\t\t";
+#line 86 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+ if(transfer.has_local()) {
+ auto local_transfer = transfer.local();
+ auto sender_pubkey = local_transfer.sender().pubkey();
+ auto receiver_pubkey = local_transfer.receiver();
+ sodium_bin2hex(hex, 65, (const unsigned char*)sender_pubkey.data(), sender_pubkey.size());
responseStream << "\n";
- responseStream << "\t\t\tpubkey: ";
-#line 92 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
- responseStream << ( hex );
- responseStream << "
\n";
- responseStream << "\t\t\tamount: ";
+ responseStream << "\t\t\t\t
Local Transfer
\n";
+ responseStream << "\t\t\t\tFrom: ";
#line 93 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
- responseStream << ( TransactionBase::amountToString(sender.amount()) );
- responseStream << " GDD\n";
- responseStream << "\t\t";
-#line 94 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
- } responseStream << "\n";
- responseStream << "\t\tReceiver\n";
- responseStream << "\t\t";
-#line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
- for(int i = 0; i < transfer.receiveramounts_size(); i++) {
- auto receiver = transfer.receiveramounts(i);
- char hex[65]; memset(hex, 0, 65);
- sodium_bin2hex(hex, 65, (const unsigned char*)receiver.ed25519_receiver_pubkey().data(), receiver.ed25519_receiver_pubkey().size());
- responseStream << "\n";
- responseStream << "\t\t\tpubkey: ";
-#line 101 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( hex );
- responseStream << "
\n";
- responseStream << "\t\t\tamount: ";
-#line 102 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
- responseStream << ( TransactionBase::amountToString(receiver.amount()) );
- responseStream << " GDD
\n";
- responseStream << "\t\t";
-#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+ responseStream << "\n";
+ responseStream << "\t\t\t\t";
+#line 94 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+ sodium_bin2hex(hex, 65, (const unsigned char*)receiver_pubkey.data(), receiver_pubkey.size()); responseStream << "\n";
+ responseStream << "\t\t\t\tTo: ";
+#line 95 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+ responseStream << ( hex );
+ responseStream << "\n";
+ responseStream << "\t\t\t\tAmount: ";
+#line 96 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+ responseStream << ( TransactionBase::amountToString(local_transfer.sender().amount()) );
+ responseStream << "\n";
+ responseStream << "\t\t\t";
+#line 97 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+ } else { responseStream << "\n";
+ responseStream << "\t\t\t\t- Not implemented yet (Group Transfer) -
\n";
+ responseStream << "\t\t\t";
+#line 99 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\t";
-#line 104 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+#line 101 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} else if(transactionBody.has_creation()) {
auto creation = transactionBody.creation();
- auto receiver = creation.receiveramount();
+ auto receiver = creation.receiver();
char hex[65]; memset(hex, 0, 65);
- sodium_bin2hex(hex, 65, (const unsigned char*)receiver.ed25519_receiver_pubkey().data(), receiver.ed25519_receiver_pubkey().size());
+ sodium_bin2hex(hex, 65, (const unsigned char*)receiver.pubkey().data(), receiver.pubkey().size());
Poco::AutoPtr user = nullptr;
if(adminUser) {
user = controller::User::create();
- if(!user->load((const unsigned char*)receiver.ed25519_receiver_pubkey().data())) {
+ if(!user->load((const unsigned char*)receiver.pubkey().data())) {
user.assign(nullptr);
}
}
@@ -241,32 +234,32 @@ void DecodeTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request,
responseStream << "\n";
responseStream << "\t\tCreation
\n";
responseStream << "\t\t";
-#line 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+#line 117 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
if(!adminUser || user.isNull() || !user->getModel()) { responseStream << "\n";
responseStream << "\t\tpubkey: ";
-#line 121 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+#line 118 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( hex );
responseStream << "
\n";
responseStream << "\t\t";
-#line 122 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} else { responseStream << "\n";
responseStream << "\t\tuser:
\n";
responseStream << "\t\t";
-#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+#line 121 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( user->getModel()->toHTMLString() );
responseStream << "
\n";
responseStream << "\t\t";
-#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+#line 122 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t\tamount: ";
-#line 126 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+#line 123 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
responseStream << ( TransactionBase::amountToString(receiver.amount()) );
responseStream << " GDD
\n";
responseStream << "\t\t";
-#line 127 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+#line 124 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} responseStream << "\n";
responseStream << "\t";
-#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
+#line 125 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\decodeTransaction.cpsp"
} responseStream << "\n";
responseStream << "\n";
// begin include footer.cpsp
diff --git a/src/cpp/model/TransactionCreation.cpp b/src/cpp/model/TransactionCreation.cpp
index 8408823de..499aef61d 100644
--- a/src/cpp/model/TransactionCreation.cpp
+++ b/src/cpp/model/TransactionCreation.cpp
@@ -2,7 +2,7 @@
#include "Poco/DateTimeFormatter.h"
#include
-TransactionCreation::TransactionCreation(const std::string& memo, const model::messages::gradido::TransactionCreation& protoCreation)
+TransactionCreation::TransactionCreation(const std::string& memo, const proto::gradido::GradidoCreation& protoCreation)
: TransactionBase(memo), mProtoCreation(protoCreation), mReceiverUser(nullptr)
{
memset(mReceiverPublicHex, 0, 65);
@@ -19,13 +19,13 @@ TransactionCreation::~TransactionCreation()
int TransactionCreation::prepare()
{
const static char functionName[] = { "TransactionCreation::prepare" };
- if (!mProtoCreation.has_receiveramount()) {
+ if (!mProtoCreation.has_receiver()) {
addError(new Error(functionName, "hasn't receiver amount"));
return -1;
}
- auto receiverAmount = mProtoCreation.receiveramount();
+ auto receiver_amount = mProtoCreation.receiver();
- auto receiverPublic = receiverAmount.ed25519_receiver_pubkey();
+ auto receiverPublic = receiver_amount.pubkey();
if (receiverPublic.size() != 32) {
addError(new Error(functionName, "receiver public invalid (size not 32)"));
return -2;
diff --git a/src/cpp/model/TransactionCreation.h b/src/cpp/model/TransactionCreation.h
index a696ff962..ff1fd62a8 100644
--- a/src/cpp/model/TransactionCreation.h
+++ b/src/cpp/model/TransactionCreation.h
@@ -12,26 +12,26 @@
#pragma warning(disable:4800)
#include "TransactionBase.h"
-#include "../proto/gradido/TransactionCreation.pb.h"
+#include "../proto/gradido/GradidoCreation.pb.h"
#include "User.h"
class TransactionCreation : public TransactionBase
{
public:
- TransactionCreation(const std::string& memo, const model::messages::gradido::TransactionCreation& protoCreation);
+ TransactionCreation(const std::string& memo, const proto::gradido::GradidoCreation& protoCreation);
~TransactionCreation();
int prepare();
inline User* getUser() { return mReceiverUser; }
- inline google::protobuf::int64 getAmount() { return mProtoCreation.receiveramount().amount(); }
+ inline google::protobuf::int64 getAmount() { return mProtoCreation.receiver().amount(); }
inline char* getPublicHex() { return mReceiverPublicHex; }
inline std::string getAmountString() { return amountToString(getAmount()); }
std::string getTargetDateString();
protected:
- const model::messages::gradido::TransactionCreation& mProtoCreation;
+ const proto::gradido::GradidoCreation& mProtoCreation;
char mReceiverPublicHex[65];
User* mReceiverUser;
};
diff --git a/src/cpp/model/TransactionTransfer.cpp b/src/cpp/model/TransactionTransfer.cpp
index d90933530..54bf8b00e 100644
--- a/src/cpp/model/TransactionTransfer.cpp
+++ b/src/cpp/model/TransactionTransfer.cpp
@@ -46,7 +46,7 @@ void TransactionTransfer::KontoTableEntry::composeAmountCellString(google::proto
// ********************************************************************************************************************************
-TransactionTransfer::TransactionTransfer(const std::string& memo, const model::messages::gradido::Transfer& protoTransfer)
+TransactionTransfer::TransactionTransfer(const std::string& memo, const proto::gradido::GradidoTransfer& protoTransfer)
: TransactionBase(memo), mProtoTransfer(protoTransfer)
{
@@ -61,67 +61,41 @@ int TransactionTransfer::prepare()
{
lock();
const static char functionName[] = { "TransactionTransfer::prepare" };
- if (mProtoTransfer.senderamounts_size() == 0) {
- addError(new Error(functionName, "hasn't sender amount(s)"));
- unlock();
- return -1;
- }
- if (mProtoTransfer.receiveramounts_size() == 0) {
- addError(new Error(functionName, "hasn't receiver amount(s)"));
- unlock();
- return -2;
- }
- mKontoTable.reserve(mProtoTransfer.senderamounts_size() + mProtoTransfer.receiveramounts_size());
+
+ mKontoTable.reserve(2);
//auto receiverAmount = mProtoTransfer.receiveramount();
//auto senderAmount
- int senderSum = 0;
- int receiverSum = 0;
char pubkeyHexTemp[65];
- for (int i = 0; i < mProtoTransfer.senderamounts_size(); i++) {
- auto senderAmount = mProtoTransfer.senderamounts(i);
- auto pubkey = senderAmount.ed25519_sender_pubkey();
- senderSum += senderAmount.amount();
- if (pubkey.size() != 32) {
- addError(new ParamError(functionName, "invalid public key for sender ", i));
- unlock();
- return -3;
- }
- //User user((const unsigned char*)pubkey.data());
- auto user = controller::User::create();
- if (!user->load((const unsigned char*)pubkey.data())) {
- sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)pubkey.data(), pubkey.size());
- mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, senderAmount.amount(), true));
+ if (mProtoTransfer.has_local())
+ {
+ auto local_transfer = mProtoTransfer.local();
+ auto sender = local_transfer.sender();
+ auto sender_pubkey = sender.pubkey();
+ auto receiver_pubkey = local_transfer.receiver();
+ auto amount = sender.amount();
+ auto sender_user = controller::User::create();
+ auto receiver_user = controller::User::create();
+
+ if (!sender_user->load((const unsigned char*)sender_pubkey.data())) {
+ sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)sender_pubkey.data(), sender_pubkey.size());
+ mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, -amount, true));
}
else {
- mKontoTable.push_back(KontoTableEntry(user->getModel(), senderAmount.amount(), true));
+ mKontoTable.push_back(KontoTableEntry(sender_user->getModel(), -amount, true));
}
- }
- for (int i = 0; i < mProtoTransfer.receiveramounts_size(); i++) {
- auto receiverAmount = mProtoTransfer.receiveramounts(i);
- auto pubkey = receiverAmount.ed25519_receiver_pubkey();
- receiverSum += receiverAmount.amount();
- if (receiverAmount.ed25519_receiver_pubkey().size() != 32) {
- addError(new ParamError(functionName, "invalid public key for receiver ", i));
- unlock();
- return -4;
- }
- auto user = controller::User::create();
- if (!user->load((const unsigned char*)pubkey.data())) {
- sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)pubkey.data(), pubkey.size());
- mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, receiverAmount.amount(), false));
+
+ if (!receiver_user->load((const unsigned char*)receiver_pubkey.data())) {
+ sodium_bin2hex(pubkeyHexTemp, 65, (const unsigned char*)receiver_pubkey.data(), receiver_pubkey.size());
+ mKontoTable.push_back(KontoTableEntry(pubkeyHexTemp, amount, true));
}
else {
- mKontoTable.push_back(KontoTableEntry(user->getModel(), receiverAmount.amount(), false));
+ mKontoTable.push_back(KontoTableEntry(sender_user->getModel(), amount, true));
}
- }
- if (senderSum != receiverSum) {
- addError(new Error(functionName, "sender amounts sum != receiver amounts sum"));
- unlock();
- return -5;
- }
+ }
+ // TODO: add version for group transfer
/*
diff --git a/src/cpp/model/TransactionTransfer.h b/src/cpp/model/TransactionTransfer.h
index b57abd6b3..ff2acfa02 100644
--- a/src/cpp/model/TransactionTransfer.h
+++ b/src/cpp/model/TransactionTransfer.h
@@ -12,14 +12,14 @@
#pragma warning(disable:4800)
#include "TransactionBase.h"
-#include "../proto/gradido/Transfer.pb.h"
+#include "../proto/gradido/GradidoTransfer.pb.h"
#include "../controller/User.h"
class TransactionTransfer : public TransactionBase
{
public:
- TransactionTransfer(const std::string& memo, const model::messages::gradido::Transfer& protoTransfer);
+ TransactionTransfer(const std::string& memo, const proto::gradido::GradidoTransfer& protoTransfer);
~TransactionTransfer();
int prepare();
@@ -44,7 +44,7 @@ protected:
void composeAmountCellString(google::protobuf::int64 amount, bool negativeAmount);
};
- const model::messages::gradido::Transfer& mProtoTransfer;
+ const proto::gradido::GradidoTransfer& mProtoTransfer;
std::vector mKontoTable;
};
diff --git a/src/cpp/tasks/ProcessingTransaction.h b/src/cpp/tasks/ProcessingTransaction.h
index 2bf2beb83..ed446935b 100644
--- a/src/cpp/tasks/ProcessingTransaction.h
+++ b/src/cpp/tasks/ProcessingTransaction.h
@@ -56,7 +56,7 @@ protected:
TransactionType mType;
std::string mProtoMessageBase64;
- model::messages::gradido::TransactionBody mTransactionBody;
+ proto::gradido::TransactionBody mTransactionBody;
TransactionBase* mTransactionSpecific;
HASH mHash;
diff --git a/src/cpp/tasks/SigningTransaction.cpp b/src/cpp/tasks/SigningTransaction.cpp
index 50e5953b3..8c23d6181 100644
--- a/src/cpp/tasks/SigningTransaction.cpp
+++ b/src/cpp/tasks/SigningTransaction.cpp
@@ -11,8 +11,6 @@
#include "../lib/Profiler.h"
-#include "../proto/gradido/Transaction.pb.h"
-
#include "sodium.h"
#include "../ServerConfig.h"
@@ -96,8 +94,8 @@ int SigningTransaction::run() {
}
}
// get body bytes
- model::messages::gradido::Transaction transaction;
- auto bodyBytes = transaction.mutable_bodybytes();
+ proto::gradido::GradidoTransaction transaction;
+ auto bodyBytes = transaction.mutable_body_bytes();
*bodyBytes = mProcessingeTransaction->getBodyBytes();
if (*bodyBytes == "") {
getErrors(mProcessingeTransaction);
@@ -132,7 +130,7 @@ int SigningTransaction::run() {
}
*/
// add to message
- auto sigMap = transaction.mutable_sigmap();
+ auto sigMap = transaction.mutable_sig_map();
auto sigPair = sigMap->add_sigpair();
auto pubkeyBytes = sigPair->mutable_pubkey();
@@ -147,7 +145,7 @@ int SigningTransaction::run() {
/*std::string protoPrettyPrint;
google::protobuf::TextFormat::PrintToString(transaction, &protoPrettyPrint);
printf("transaction pretty: %s\n", protoPrettyPrint.data());
- model::messages::gradido::TransactionBody transactionBody;
+ proto::gradido::TransactionBody transactionBody;
transactionBody.MergeFromString(transaction.bodybytes());
google::protobuf::TextFormat::PrintToString(transactionBody, &protoPrettyPrint);
printf("transaction body pretty: \n%s\n", protoPrettyPrint.data());
diff --git a/src/cpp/tasks/SigningTransaction.h b/src/cpp/tasks/SigningTransaction.h
index 30c962bf0..aaaeb9253 100644
--- a/src/cpp/tasks/SigningTransaction.h
+++ b/src/cpp/tasks/SigningTransaction.h
@@ -8,7 +8,7 @@
#include "../model/User.h"
#include "../controller/User.h"
-#include "../proto/gradido/Transaction.pb.h"
+#include "../proto/gradido/GradidoTransaction.pb.h"
#include "ProcessingTransaction.h"
diff --git a/src/cpsp/decodeTransaction.cpsp b/src/cpsp/decodeTransaction.cpsp
index d91bf4b56..109251ccb 100644
--- a/src/cpsp/decodeTransaction.cpsp
+++ b/src/cpsp/decodeTransaction.cpsp
@@ -12,7 +12,7 @@
%>
<%%
const char* pageName = "Decode Transaction";
- model::messages::gradido::TransactionBody transactionBody;
+ proto::gradido::TransactionBody transactionBody;
bool decoded = false;
bool adminUser = false;
if(mSession && mSession->getNewUser()) {
@@ -81,36 +81,33 @@
<%= transactionBody.memo() %>
<% if(transactionBody.has_transfer()) {
auto transfer = transactionBody.transfer();
+ char hex[65]; memset(hex, 0, 65);
%>
- Transfer
- Sender
- <% for(int i = 0; i < transfer.senderamounts_size(); i++) {
- auto sender = transfer.senderamounts(i);
- char hex[65]; memset(hex, 0, 65);
- sodium_bin2hex(hex, 65, (const unsigned char*)sender.ed25519_sender_pubkey().data(), sender.ed25519_sender_pubkey().size());
+ <% if(transfer.has_local()) {
+ auto local_transfer = transfer.local();
+ auto sender_pubkey = local_transfer.sender().pubkey();
+ auto receiver_pubkey = local_transfer.receiver();
+ sodium_bin2hex(hex, 65, (const unsigned char*)sender_pubkey.data(), sender_pubkey.size());
%>
- pubkey: <%= hex %>
- amount: <%= TransactionBase::amountToString(sender.amount()) %> GDD
- <% } %>
- Receiver
- <% for(int i = 0; i < transfer.receiveramounts_size(); i++) {
- auto receiver = transfer.receiveramounts(i);
- char hex[65]; memset(hex, 0, 65);
- sodium_bin2hex(hex, 65, (const unsigned char*)receiver.ed25519_receiver_pubkey().data(), receiver.ed25519_receiver_pubkey().size());
- %>
- pubkey: <%= hex %>
- amount: <%= TransactionBase::amountToString(receiver.amount()) %> GDD
- <% } %>
+ Local Transfer
+ From: <%= hex %>
+ <% sodium_bin2hex(hex, 65, (const unsigned char*)receiver_pubkey.data(), receiver_pubkey.size()); %>
+ To: <%= hex %>
+ Amount: <%= TransactionBase::amountToString(local_transfer.sender().amount()) %>
+ <% } else { %>
+ - Not implemented yet (Group Transfer) -
+ <% } %>
+
<% } else if(transactionBody.has_creation()) {
auto creation = transactionBody.creation();
- auto receiver = creation.receiveramount();
+ auto receiver = creation.receiver();
char hex[65]; memset(hex, 0, 65);
- sodium_bin2hex(hex, 65, (const unsigned char*)receiver.ed25519_receiver_pubkey().data(), receiver.ed25519_receiver_pubkey().size());
+ sodium_bin2hex(hex, 65, (const unsigned char*)receiver.pubkey().data(), receiver.pubkey().size());
Poco::AutoPtr user = nullptr;
if(adminUser) {
user = controller::User::create();
- if(!user->load((const unsigned char*)receiver.ed25519_receiver_pubkey().data())) {
+ if(!user->load((const unsigned char*)receiver.pubkey().data())) {
user.assign(nullptr);
}
}