diff --git a/login_server/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp b/login_server/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp index b5d943d6a..474b6db6d 100644 --- a/login_server/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp +++ b/login_server/src/cpp/HTTPInterface/AdminNodeServerTestPage.cpp @@ -5,7 +5,7 @@ #include "Poco/DeflatingStream.h" -#line 6 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 6 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" #include "../controller/NodeServer.h" @@ -27,7 +27,7 @@ enum PageType PAGE_GET_TRANSACTION_RPC_CALL }; -#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" +#line 1 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\header_large.cpsp" #include "../ServerConfig.h" @@ -40,7 +40,7 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques if (_compressResponse) response.set("Content-Encoding", "gzip"); Poco::Net::HTMLForm form(request, request.stream()); -#line 28 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 28 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" const char* pageName = "Node Server Test"; PageType page = PAGE_CHOOSE_TEST; @@ -115,7 +115,7 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques auto node_servers = controller::NodeServer::load(model::table::NODE_SERVER_GRADIDO_NODE); auto hedera_topics = controller::HederaTopic::listAll(); -#line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" +#line 3 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\header_large.cpsp" bool withMaterialIcons = false; std::ostream& _responseStream = response.send(); @@ -130,20 +130,20 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\n"; responseStream << "\n"; responseStream << "Gradido Login Server: "; -#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" +#line 11 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\header_large.cpsp" responseStream << ( pageName ); responseStream << "\n"; responseStream << "\n"; -#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" +#line 13 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\header_large.cpsp" if(withMaterialIcons) { responseStream << "\n"; responseStream << "\n"; -#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp" +#line 15 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\header_large.cpsp" } responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; @@ -152,29 +152,29 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t\n"; @@ -183,131 +183,131 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t
"; // end include header_large.cpsp responseStream << "\n"; -#line 103 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 103 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\n"; responseStream << "
\n"; responseStream << "\t\n"; responseStream << "\t
\n"; responseStream << "\t \n"; responseStream << "\t \n"; responseStream << "\t
\n"; responseStream << "\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t

Test 6-Set (3 AddMember, Creation, 2 Transfer)\n"; responseStream << "\t\t

\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t
\n"; responseStream << "\t\t\t\t

1. Create three new accounts and show user public keys for comparisation

\n"; responseStream << "\t\t\t\t

2. Send a add-member transaction to hedera topic with one signature (first user)

\n"; responseStream << "\t\t\t\t

3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

\n"; responseStream << "\t\t\t\t

4. Send a creation transaction to second user, signed by first user

\n"; responseStream << "\t\t\t\t

5. Send a transfer transaction from second user to first user signed by second user

\n"; responseStream << "\t\t\t\t

6. Send a add-member transaction to hedera topic 2 with one signature (third user)

\n"; responseStream << "\t\t\t\t

7. Send a cross group transfer from second user to third user signed by second user

\n"; responseStream << "\t\t\t\t

8. Wait x seconds to give hedera time to process transactions

\n"; responseStream << "\t\t\t\t

9. Ask choosen node for transaction and print result

\n"; responseStream << "\t\t\t\t
\n"; responseStream << "\t\t\t\t\tGroup 1 \n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t"; -#line 128 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 128 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" if(node_servers.size() == 0) { responseStream << "\n"; responseStream << "\t\t\t\t\t\tEdit Node-Servers\n"; responseStream << "\t\t\t\t\t"; -#line 130 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 130 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t"; -#line 139 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 139 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" if(hedera_topics.size() == 0) { responseStream << "\n"; responseStream << "\t\t\t\t\t\tEdit Hedera-Topics\n"; responseStream << "\t\t\t\t\t"; -#line 141 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 141 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t
\n"; @@ -341,56 +341,56 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t\t\t\tGroup 2 \n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t"; -#line 157 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 157 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" if(node_servers.size() == 0) { responseStream << "\n"; responseStream << "\t\t\t\t\t\tEdit Node-Servers\n"; responseStream << "\t\t\t\t\t"; -#line 159 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 159 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\t"; -#line 168 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 168 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" if(hedera_topics.size() == 0) { responseStream << "\n"; responseStream << "\t\t\t\t\t\tEdit Hedera-Topics\n"; responseStream << "\t\t\t\t\t"; -#line 170 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 170 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t seconds \n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t ms\n"; responseStream << "\t\t\t\t\n"; @@ -436,54 +436,54 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t
\n"; responseStream << "\t
\n"; responseStream << "\t
\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t

Test 4-Set (2 AddMember, Creation, Transfer)\n"; responseStream << "\t\t

\n"; responseStream << "\t\t
\n"; responseStream << "\t\t\t\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t"; -#line 199 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 199 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" if(node_servers.size() == 0) { responseStream << "\n"; responseStream << "\t\t\t\t\tEdit Node-Servers\n"; responseStream << "\t\t\t\t"; -#line 201 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 201 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t\t\n"; responseStream << "\t\t\t\t\n"; @@ -491,13 +491,13 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t
\n"; responseStream << "\t
\n"; responseStream << "\t"; -#line 213 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 213 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" if(PAGE_RUN_4_SET_TEST == page && !hedera_topic.isNull() && !node_server.isNull()) { responseStream << "\n"; responseStream << "\t
    \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    1. Create three new accounts and show user public keys for comparisation:

    \n"; responseStream << "\t\t\t"; -#line 217 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 217 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" Profiler time2; auto group_id = hedera_topic->getModel()->getGroupId(); @@ -528,42 +528,42 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques user_3->login(password3); responseStream << "\t\t\t\n"; responseStream << "\t\t\t
    "; -#line 246 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 246 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( user_group->getModel()->getName() ); responseStream << "\n"; responseStream << "\t\t\t\t

    User 1: "; -#line 247 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 247 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( user_1->getPublicHex() ); responseStream << "

    \n"; responseStream << "\t\t\t\t

    User 2: "; -#line 248 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 248 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( user_2->getPublicHex() ); responseStream << "

    \n"; responseStream << "\t\t\t
    \n"; responseStream << "\t\t\t
    "; -#line 250 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 250 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( user_group2->getModel()->getName() ); responseStream << "\n"; responseStream << "\t\t\t\t

    User 3: "; -#line 251 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 251 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( user_3->getPublicHex() ); responseStream << "

    \n"; responseStream << "\t\t\t
    \n"; responseStream << "\t\t\t

    Time: "; -#line 253 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 253 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( time2.string() ); responseStream << "\n"; responseStream << "\t\t

  • \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    2. Send a add-member transaction to hedera topic with one signature (first user)

    \n"; responseStream << "\t\t\t"; -#line 257 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 257 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" time2.reset(); if(!steps[0]) { responseStream << "\n"; responseStream << "\t\t\t\t

    skipped

    \n"; responseStream << "\t\t\t"; -#line 261 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 261 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { auto transaction1 = model::gradido::Transaction::createGroupMemberUpdate(user_1, user_group); transaction1->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); @@ -571,27 +571,27 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques auto transaction1_json = transaction1->getTransactionAsJson(true); responseStream << "\n"; responseStream << "\t\t\t

    "; -#line 267 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 267 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction1_json) ); responseStream << "

    \n"; responseStream << "\t\t\t"; -#line 268 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 268 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t

    Time: "; -#line 269 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 269 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( time2.string() ); responseStream << "\n"; responseStream << "\t\t

  • \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    3. Send a add-member transaction to hedera topic with two signatures (first user and second user)

    \n"; responseStream << "\t\t\t"; -#line 273 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 273 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" time2.reset(); if(!steps[1]) { responseStream << "\n"; responseStream << "\t\t\t\t

    skipped

    \n"; responseStream << "\t\t\t"; -#line 277 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 277 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { auto transaction2 = model::gradido::Transaction::createGroupMemberUpdate(user_2, user_group); transaction2->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(2); @@ -602,86 +602,86 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques auto transaction2_json = transaction2->getTransactionAsJson(true); responseStream << "\n"; responseStream << "\t\t\t

    "; -#line 286 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 286 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction2_json) ); responseStream << "

    \n"; responseStream << "\t\t\t"; -#line 287 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 287 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t

    Time: "; -#line 288 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 288 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( time2.string() ); responseStream << "\n"; responseStream << "\t\t

  • \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    4. Send a creation transaction to second user, signed by first user

    \n"; responseStream << "\t\t\t"; -#line 292 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 292 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" time2.reset(); if(!steps[2]) { responseStream << "\n"; responseStream << "\t\t\t\t

    skipped

    \n"; responseStream << "\t\t\t"; -#line 296 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 296 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { - auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation"); + auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation", model::gradido::BLOCKCHAIN_HEDERA); // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time Poco::Thread::sleep(sleep_ms_between_transactions); transaction3->sign(user_1); auto transaction3_json = transaction3->getTransactionAsJson(true); responseStream << "\n"; responseStream << "\t\t\t

    "; -#line 303 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 303 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction3_json) ); responseStream << "

    \n"; responseStream << "\t\t\t"; -#line 304 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 304 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t

    Time: "; -#line 305 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 305 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( time2.string() ); responseStream << "

    \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    5. Send a transfer transaction from second user to first user signed by second user

    \n"; responseStream << "\t\t\t"; -#line 309 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 309 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" time2.reset(); if(!steps[3]) { responseStream << "\n"; responseStream << "\t\t\t\t

    skipped

    \n"; responseStream << "\t\t\t"; -#line 313 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 313 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { auto user_1_pubkey = user_1->getModel()->getPublicKeyCopy(); - auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer"); + auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer", model::gradido::BLOCKCHAIN_HEDERA); // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time Poco::Thread::sleep(sleep_ms_between_transactions); transaction4[0]->sign(user_2); auto transaction4_json = transaction4[0]->getTransactionAsJson(true); responseStream << "\n"; responseStream << "\t\t\t

    "; -#line 321 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 321 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction4_json) ); responseStream << "

    \n"; responseStream << "\t\t\t"; -#line 322 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 322 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t

    Time: "; -#line 323 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 323 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( time2.string() ); responseStream << "

    \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    6. Send a add-member transaction to hedera topic 2 with one signature (third user)

    \n"; responseStream << "\t\t\t"; -#line 327 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 327 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" time2.reset(); if(!steps[4]) { responseStream << "\n"; responseStream << "\t\t\t\t

    skipped

    \n"; responseStream << "\t\t\t"; -#line 331 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 331 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { auto transaction5 = model::gradido::Transaction::createGroupMemberUpdate(user_3, user_group2); transaction5->getTransactionBody()->getGroupMemberUpdate()->setMinSignatureCount(1); @@ -690,30 +690,30 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques auto transaction5_json = transaction5->getTransactionAsJson(true); responseStream << "\n"; responseStream << "\t\t\t

    "; -#line 338 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 338 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction5_json) ); responseStream << "

    \n"; responseStream << "\t\t\t"; -#line 339 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 339 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t

    Time: "; -#line 340 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 340 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( time2.string() ); responseStream << "

    \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    7. Send a cross group transfer from second user to third user signed by second user

    \n"; responseStream << "\t\t\t"; -#line 344 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 344 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" time2.reset(); if(!steps[5]) { responseStream << "\n"; responseStream << "\t\t\t\t

    skipped

    \n"; responseStream << "\t\t\t"; -#line 348 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 348 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { auto user_3_pubkey = user_3->getModel()->getPublicKeyCopy(); - auto transaction6 = model::gradido::Transaction::createTransfer(user_2, user_3_pubkey, user_group2, 4000000, "Test Group Transfer", false); + auto transaction6 = model::gradido::Transaction::createTransfer(user_2, user_3_pubkey, user_group2, 4000000, "Test Group Transfer", model::gradido::BLOCKCHAIN_HEDERA, false); if(!transaction6.size()) { responseStream << "\n"; responseStream << "\t\t\t\t
    \n"; @@ -721,7 +721,7 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t\t\t\tError creating Transaction\n"; responseStream << "\t\t\t\t
    \n"; responseStream << "\t\t\t\t"; -#line 357 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 357 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { Poco::Thread::sleep(sleep_ms_between_transactions); @@ -730,42 +730,42 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques auto paired_transaction = transaction6[0]->getPairedTransaction(); responseStream << "\n"; responseStream << "\t\t\t\t\t

    "; -#line 364 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 364 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction6_json) ); responseStream << "

    \t\t\n"; responseStream << "\t\t\t\t\t"; -#line 365 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 365 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" if(!paired_transaction.isNull()) { auto transaction6_2_json = paired_transaction->getTransactionAsJson(true); responseStream << "

    "; -#line 367 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 367 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(transaction6_2_json) ); responseStream << "

    \n"; responseStream << "\t\t\t\t\t"; -#line 368 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 368 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t\t"; -#line 369 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 369 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t\t"; -#line 370 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 370 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << " \n"; responseStream << "\t\t\t

    Time: "; -#line 371 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 371 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( time2.string() ); responseStream << "

    \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    8. Wait "; -#line 374 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 374 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( hedera_timeout ); responseStream << " seconds to give hedera time to process transactions

    \n"; responseStream << "\t\t\t"; -#line 375 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 375 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" if(!steps[6]) { responseStream << "\n"; responseStream << "\t\t\t\t

    skipped

    \n"; responseStream << "\t\t\t"; -#line 377 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 377 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { Poco::Thread::sleep(hedera_timeout * 1000); } responseStream << "\n"; @@ -773,12 +773,12 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "\t\t
  • \n"; responseStream << "\t\t\t

    9. Ask choosen node for transaction and print result

    \n"; responseStream << "\t\t\t"; -#line 383 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 383 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" time2.reset(); if(!steps[7] || node_server.isNull()) { responseStream << "

    skipped

    \n"; responseStream << "\t\t\t"; -#line 386 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 386 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else { auto node_server_model = node_server->getModel(); JsonRPCRequest jsonrpc(node_server_model->getUrl(), node_server_model->getPort()); @@ -791,20 +791,20 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); std::string answear_string = ss.str(); responseStream << "\n"; responseStream << "\t\t\t\t\t"; -#line 397 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 397 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(answear_string) ); -#line 397 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 397 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } } responseStream << "\n"; responseStream << "\t\t\t

    Time: "; -#line 400 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 400 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( time2.string() ); responseStream << "

    \n"; responseStream << "\t\t
  • \n"; responseStream << "\t
\n"; responseStream << "\t"; -#line 403 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 403 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } else if(PAGE_GET_TRANSACTION_RPC_CALL == page && !node_server.isNull()) { Profiler time3; auto node_server_model = node_server->getModel(); @@ -819,23 +819,23 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques Poco::JSON::Stringifier::stringify(gn_answear, ss, 4, -1, Poco::JSON_PRESERVE_KEY_ORDER); std::string answear_string = ss.str(); responseStream << "\n"; responseStream << "\t\t\t"; -#line 416 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 416 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( DataTypeConverter::replaceNewLineWithBr(answear_string) ); -#line 416 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 416 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\t

Time: "; -#line 419 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 419 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" responseStream << ( time3.string() ); responseStream << "

\n"; responseStream << "\t"; -#line 420 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminNodeServerTest.cpsp" +#line 420 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\adminNodeServerTest.cpsp" } responseStream << "\n"; responseStream << "\t\n"; responseStream << "
\n"; responseStream << "\n"; // begin include footer.cpsp @@ -845,14 +845,14 @@ void AdminNodeServerTestPage::handleRequest(Poco::Net::HTTPServerRequest& reques responseStream << "
\n"; responseStream << "
\n"; responseStream << " "; -#line 6 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" +#line 6 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\footer.cpsp" responseStream << ( mTimeProfiler.string() ); responseStream << "\n"; responseStream << "
\n"; responseStream << "
\n"; responseStream << "

Login Server in Entwicklung

\n"; responseStream << "

Alpha "; -#line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp" +#line 10 "F:\\Gradido\\gradido_stage2\\login_server\\src\\cpsp\\footer.cpsp" responseStream << ( ServerConfig::g_versionString ); responseStream << "

\n"; responseStream << "
\n"; diff --git a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp index 3fb31f4f3..81303161a 100644 --- a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp +++ b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp @@ -14,6 +14,7 @@ Poco::JSON::Object* JsonCreateTransaction::handle(Poco::Dynamic::Var params) int session_id = 0; std::string transaction_type; + std::string blockchain_type; // if is json object if (params.type() == typeid(Poco::JSON::Object::Ptr)) { @@ -26,6 +27,7 @@ Poco::JSON::Object* JsonCreateTransaction::handle(Poco::Dynamic::Var params) try { paramJsonObject->get("session_id").convert(session_id); paramJsonObject->get("transaction_type").convert(transaction_type); + paramJsonObject->get("blockchain_type").convert(blockchain_type); paramJsonObject->get("memo").convert(mMemo); } catch (Poco::Exception& ex) { @@ -35,6 +37,10 @@ Poco::JSON::Object* JsonCreateTransaction::handle(Poco::Dynamic::Var params) else { return stateError("parameter format unknown"); } + mBlockchainType = model::gradido::TransactionBody::blockchainTypeFromString(blockchain_type); + if (model::gradido::BLOCKCHAIN_UNKNOWN == mBlockchainType) { + return stateError("unknown blockchain type"); + } // allow session_id from community server (allowed caller) // else use cookie (if call cames from vue) if (!session_id) { @@ -52,8 +58,13 @@ Poco::JSON::Object* JsonCreateTransaction::handle(Poco::Dynamic::Var params) em->sendErrorsAsEmail(); return customStateError("code error", "user is zero"); } - - getTargetGroup(params); + + if (mBlockchainType == model::gradido::BLOCKCHAIN_HEDERA) { + getTargetGroup(params); + } + else { + mTargetGroup = controller::Group::load(user->getModel()->getGroupId()); + } if (transaction_type == "transfer") { return transfer(params); } @@ -107,7 +118,7 @@ Poco::JSON::Object* JsonCreateTransaction::transfer(Poco::Dynamic::Var params) } } if (!result) { - model::gradido::Transaction::createTransfer(mSession->getNewUser(), target_pubkey, mTargetGroup, amount, mMemo); + model::gradido::Transaction::createTransfer(mSession->getNewUser(), target_pubkey, mTargetGroup, amount, mMemo, mBlockchainType); result = stateSuccess(); } mm->releaseMemory(target_pubkey); @@ -173,7 +184,7 @@ Poco::JSON::Object* JsonCreateTransaction::creation(Poco::Dynamic::Var params) } if(!result) { - model::gradido::Transaction::createCreation(mReceiverUser, amount, target_date, mMemo); + model::gradido::Transaction::createCreation(mReceiverUser, amount, target_date, mMemo, mBlockchainType); result = stateSuccess(); } mm->releaseMemory(target_pubkey); @@ -183,6 +194,9 @@ Poco::JSON::Object* JsonCreateTransaction::creation(Poco::Dynamic::Var params) } Poco::JSON::Object* JsonCreateTransaction::groupMemberUpdate(Poco::Dynamic::Var params) { + if (mBlockchainType == model::gradido::BLOCKCHAIN_MYSQL) { + return stateError("groupMemberUpdate not allowed with mysql blockchain"); + } if (mTargetGroup.isNull()) { return stateError("target_group not found"); } diff --git a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.h b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.h index 356e13fc1..b35438077 100644 --- a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.h +++ b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.h @@ -4,6 +4,7 @@ #include "JsonRequestHandler.h" #include "../SingletonManager/SessionManager.h" #include "../controller/Group.h" +#include "../model/gradido/TransactionBody.h" class JsonCreateTransaction : public JsonRequestHandler { @@ -22,6 +23,8 @@ protected: std::string mMemo; Poco::AutoPtr mTargetGroup; Poco::AutoPtr mReceiverUser; + model::gradido::BlockchainType mBlockchainType; + }; #endif // __JSON_INTERFACE_JSON_CREATE_TRANSACTION_ \ No newline at end of file diff --git a/login_server/src/cpp/model/gradido/Transaction.cpp b/login_server/src/cpp/model/gradido/Transaction.cpp index 0bbaf0ec1..348eaf6b9 100644 --- a/login_server/src/cpp/model/gradido/Transaction.cpp +++ b/login_server/src/cpp/model/gradido/Transaction.cpp @@ -80,7 +80,13 @@ namespace model { return result; } - Poco::AutoPtr Transaction::createCreation(Poco::AutoPtr receiver, Poco::UInt32 amount, Poco::DateTime targetDate, const std::string& memo) + Poco::AutoPtr Transaction::createCreation( + Poco::AutoPtr receiver, + Poco::UInt32 amount, + Poco::DateTime targetDate, + const std::string& memo, + BlockchainType blockchainType + ) { auto em = ErrorManager::getInstance(); static const char* function_name = "Transaction::create creation"; @@ -98,7 +104,7 @@ namespace model { em->sendErrorsAsEmail(); return nullptr; } - auto body = TransactionBody::create(memo, receiver, amount, targetDate); + auto body = TransactionBody::create(memo, receiver, amount, targetDate, blockchainType); Poco::AutoPtr result = new Transaction(body); auto model = result->getModel(); model->setHederaId(topic_id->getModel()->getID()); @@ -107,7 +113,15 @@ namespace model { return result; } - std::vector> Transaction::createTransfer(Poco::AutoPtr sender, const MemoryBin* receiverPubkey, Poco::AutoPtr receiverGroup, Poco::UInt32 amount, const std::string& memo, bool inbound/* = true*/) + std::vector> Transaction::createTransfer( + Poco::AutoPtr sender, + const MemoryBin* receiverPubkey, + Poco::AutoPtr receiverGroup, + Poco::UInt32 amount, + const std::string& memo, + BlockchainType blockhainType, + bool inbound/* = true*/ + ) { std::vector> results; auto em = ErrorManager::getInstance(); @@ -123,7 +137,7 @@ namespace model { // LOCAL Transfer if (receiverGroup.isNull() || sender_model->getGroupId() == receiverGroup->getModel()->getID()) { - auto body = TransactionBody::create(memo, sender, receiverPubkey, amount); + auto body = TransactionBody::create(memo, sender, receiverPubkey, amount, blockhainType); Poco::AutoPtr transaction = new Transaction(body); auto topic_id = controller::HederaId::find(sender_model->getGroupId(), network_type); if (topic_id.isNull()) { @@ -172,7 +186,7 @@ namespace model { return results; } - auto body = TransactionBody::create(memo, sender, receiverPubkey, amount, pairedTransactionId, transaction_group); + auto body = TransactionBody::create(memo, sender, receiverPubkey, amount, blockhainType, pairedTransactionId, transaction_group); Poco::AutoPtr transaction = new Transaction(body); transaction->getModel()->setHederaId(topic_id->getModel()->getID()); auto transfer_transaction = transaction->getTransactionBody()->getTransferTransaction(); @@ -216,7 +230,14 @@ namespace model { return true; } - Poco::AutoPtr Transaction::createTransfer(const MemoryBin* senderPubkey, Poco::AutoPtr receiver, std::string senderGroupAlias, Poco::UInt32 amount, const std::string& memo) + Poco::AutoPtr Transaction::createTransfer( + const MemoryBin* senderPubkey, + Poco::AutoPtr receiver, + std::string senderGroupAlias, + Poco::UInt32 amount, + const std::string& memo, + BlockchainType blockchainType + ) { Poco::AutoPtr result; auto em = ErrorManager::getInstance(); diff --git a/login_server/src/cpp/model/gradido/Transaction.h b/login_server/src/cpp/model/gradido/Transaction.h index 109f34e48..9f18b2717 100644 --- a/login_server/src/cpp/model/gradido/Transaction.h +++ b/login_server/src/cpp/model/gradido/Transaction.h @@ -18,6 +18,9 @@ namespace model { namespace gradido { + + + class Transaction : public GradidoTask { public: @@ -30,10 +33,31 @@ namespace model { static Poco::AutoPtr createGroupMemberUpdate(Poco::AutoPtr user, Poco::AutoPtr group); //! \brief transfer //! \return for cross group transaction return two transactions - static std::vector> createTransfer(Poco::AutoPtr sender, const MemoryBin* receiverPubkey, Poco::AutoPtr receiverGroup, Poco::UInt32 amount, const std::string& memo, bool inbound = true); - Poco::AutoPtr createTransfer(const MemoryBin* senderPubkey, Poco::AutoPtr receiver, std::string senderGroupAlias, Poco::UInt32 amount, const std::string& memo); + static std::vector> createTransfer( + Poco::AutoPtr sender, + const MemoryBin* receiverPubkey, + Poco::AutoPtr receiverGroup, + Poco::UInt32 amount, + const std::string& memo, + BlockchainType blockchainType, + bool inbound = true); + + Poco::AutoPtr createTransfer( + const MemoryBin* senderPubkey, + Poco::AutoPtr receiver, + std::string senderGroupAlias, + Poco::UInt32 amount, + const std::string& memo, + BlockchainType blockchainType); + //! \brief creation transaction - static Poco::AutoPtr createCreation(Poco::AutoPtr receiver, Poco::UInt32 amount, Poco::DateTime targetDate, const std::string& memo); + static Poco::AutoPtr createCreation( + Poco::AutoPtr receiver, + Poco::UInt32 amount, + Poco::DateTime targetDate, + const std::string& memo, + BlockchainType blockchainType); + static Poco::AutoPtr load(model::table::PendingTask* dbModel); bool sign(Poco::AutoPtr user); diff --git a/login_server/src/cpp/model/gradido/TransactionBody.cpp b/login_server/src/cpp/model/gradido/TransactionBody.cpp index 2e69085e0..5430ca53d 100644 --- a/login_server/src/cpp/model/gradido/TransactionBody.cpp +++ b/login_server/src/cpp/model/gradido/TransactionBody.cpp @@ -36,7 +36,14 @@ namespace model { return obj; } - Poco::AutoPtr TransactionBody::create(const std::string& memo, Poco::AutoPtr sender, const MemoryBin* receiverPublicKey, Poco::UInt32 amount, Poco::Timestamp pairedTransactionId, Poco::AutoPtr group/* = nullptr*/) + Poco::AutoPtr TransactionBody::create( + const std::string& memo, + Poco::AutoPtr sender, + const MemoryBin* receiverPublicKey, + Poco::UInt32 amount, + BlockchainType blockchainType, + Poco::Timestamp pairedTransactionId, + Poco::AutoPtr group/* = nullptr*/) { if (sender.isNull() || !sender->getModel()) { return nullptr; @@ -78,6 +85,7 @@ namespace model { *receiver = std::string((const char*)receiverPublicKey->data(), receiverPublicKey->size()); obj->mType = TRANSACTION_TRANSFER; + obj->mBlockchainType = blockchainType; obj->mTransactionSpecific = new TransactionTransfer(memo, obj->mTransactionBody.transfer()); obj->mTransactionSpecific->prepare(); @@ -173,7 +181,13 @@ namespace model { return obj; } - Poco::AutoPtr TransactionBody::create(const std::string& memo, Poco::AutoPtr receiver, Poco::UInt32 amount, Poco::DateTime targetDate) + Poco::AutoPtr TransactionBody::create( + const std::string& memo, + Poco::AutoPtr receiver, + Poco::UInt32 amount, + Poco::DateTime targetDate, + BlockchainType blockchainType + ) { if (receiver.isNull() || !receiver->getModel()) { return nullptr; @@ -294,5 +308,16 @@ namespace model { { return mTransactionSpecific; } + + BlockchainType TransactionBody::blockchainTypeFromString(const std::string& blockainTypeString) + { + if (blockainTypeString == "db" || blockainTypeString == "mysql" || blockainTypeString == "mariadb") { + return BLOCKCHAIN_MYSQL; + } + else if (blockainTypeString == "hedera") { + return BLOCKCHAIN_HEDERA; + } + return BLOCKCHAIN_UNKNOWN; + } } } \ No newline at end of file diff --git a/login_server/src/cpp/model/gradido/TransactionBody.h b/login_server/src/cpp/model/gradido/TransactionBody.h index f88344eb2..26fddcda9 100644 --- a/login_server/src/cpp/model/gradido/TransactionBody.h +++ b/login_server/src/cpp/model/gradido/TransactionBody.h @@ -21,7 +21,14 @@ namespace model { TRANSACTION_GROUP_MEMBER_UPDATE }; - + enum BlockchainType + { + BLOCKCHAIN_MYSQL, + BLOCKCHAIN_HEDERA, + BLOCKCHAIN_UNKNOWN + + }; + class TransactionBody : public Poco::RefCountedObject, UniLib::lib::MultithreadContainer { @@ -33,11 +40,25 @@ namespace model { //! \brief GradidoTransfer Transaction //! \param group if group.isNull() it is a local transfer, else cross group transfer, //! \param group if group is same as sender group outbound, else inbound - static Poco::AutoPtr create(const std::string& memo, Poco::AutoPtr sender, const MemoryBin* receiverPublicKey, Poco::UInt32 amount, Poco::Timestamp pairedTransactionId = Poco::Timestamp(), Poco::AutoPtr group = nullptr); + static Poco::AutoPtr create( + const std::string& memo, + Poco::AutoPtr sender, + const MemoryBin* receiverPublicKey, + Poco::UInt32 amount, + BlockchainType blockchainType, + Poco::Timestamp pairedTransactionId = Poco::Timestamp(), + Poco::AutoPtr group = nullptr + ); static Poco::AutoPtr create(const std::string& memo, const MemoryBin* senderPublicKey, Poco::AutoPtr receiver, Poco::UInt32 amount, Poco::Timestamp pairedTransactionId = Poco::Timestamp(), Poco::AutoPtr group = nullptr); static Poco::AutoPtr create(const std::string& memo, const MemoryBin* senderPublicKey, const MemoryBin* receiverPublicKey, Poco::UInt32 amount, const std::string groupAlias, TransactionTransferType transferType, Poco::Timestamp pairedTransactionId = Poco::Timestamp()); //! \brief GradidoCreation Transaction - static Poco::AutoPtr create(const std::string& memo, Poco::AutoPtr receiver, Poco::UInt32 amount, Poco::DateTime targetDate); + static Poco::AutoPtr create( + const std::string& memo, + Poco::AutoPtr receiver, + Poco::UInt32 amount, + Poco::DateTime targetDate, + BlockchainType blockchainType + ); static Poco::AutoPtr load(const std::string& protoMessageBin); @@ -59,11 +80,14 @@ namespace model { GroupMemberUpdate* getGroupMemberUpdate(); TransactionBase* getTransactionBase(); + static BlockchainType blockchainTypeFromString(const std::string& blockainTypeString); + protected: TransactionBody(); proto::gradido::TransactionBody mTransactionBody; TransactionBase* mTransactionSpecific; TransactionType mType; + BlockchainType mBlockchainType; }; } } diff --git a/login_server/src/cpsp/adminNodeServerTest.cpsp b/login_server/src/cpsp/adminNodeServerTest.cpsp index 610bb89d2..c1ea3ff0d 100644 --- a/login_server/src/cpsp/adminNodeServerTest.cpsp +++ b/login_server/src/cpsp/adminNodeServerTest.cpsp @@ -294,7 +294,7 @@ enum PageType if(!steps[2]) { %>

skipped

<% } else { - auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation"); + auto transaction3 = model::gradido::Transaction::createCreation(user_2, 10000000, Poco::DateTime(), "Test Creation", model::gradido::BLOCKCHAIN_HEDERA); // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time Poco::Thread::sleep(sleep_ms_between_transactions); transaction3->sign(user_1); @@ -312,7 +312,7 @@ enum PageType

skipped

<% } else { auto user_1_pubkey = user_1->getModel()->getPublicKeyCopy(); - auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer"); + auto transaction4 = model::gradido::Transaction::createTransfer(user_2, user_1_pubkey, user_group, 5000000, "Test Transfer", model::gradido::BLOCKCHAIN_HEDERA); // wait before sending fourth transaction, gn seems to crash by more than 3 transaction at nearly the same time Poco::Thread::sleep(sleep_ms_between_transactions); transaction4[0]->sign(user_2); @@ -347,7 +347,7 @@ enum PageType

skipped

<% } else { auto user_3_pubkey = user_3->getModel()->getPublicKeyCopy(); - auto transaction6 = model::gradido::Transaction::createTransfer(user_2, user_3_pubkey, user_group2, 4000000, "Test Group Transfer", false); + auto transaction6 = model::gradido::Transaction::createTransfer(user_2, user_3_pubkey, user_group2, 4000000, "Test Group Transfer", model::gradido::BLOCKCHAIN_HEDERA, false); if(!transaction6.size()) { %>