Skip to content

Commit

Permalink
Updates after review v3
Browse files Browse the repository at this point in the history
Signed-off-by: Grzegorz Bazior <g.bazior@yodiss.pl>
  • Loading branch information
Grzegorz Bazior authored and appetrosyan committed Mar 19, 2023
1 parent a791070 commit fd0d5dd
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 35 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ if(CCACHE_PROGRAM)
endif()

PROJECT(iroha
VERSION 1.4.0
VERSION 1.6.0
LANGUAGES C CXX)

SET(CMAKE_CXX_STANDARD 17)
Expand Down
1 change: 1 addition & 0 deletions iroha-lib/examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ add_executable(irohalib_domainassetcreation_example
target_link_libraries(irohalib_domainassetcreation_example
iroha_lib_model
logger_manager
gflags
)

add_install_step_for_bin(irohalib_domainassetcreation_example)
83 changes: 52 additions & 31 deletions iroha-lib/examples/DomainAssetCreation.cpp
Original file line number Diff line number Diff line change
@@ -1,19 +1,28 @@
#include <iostream>
#include <string>
#include <cassert>

#include <gflags/gflags.h>
#include "model/Tx.hpp"
#include "model/Query.hpp"
#include "model/utils/Utils.h"


/// Command line options:
DEFINE_string(admin_account_name, "admin@test", "set the admin account name. The account will be used to create domain and asset");
DEFINE_string(key_path, ".", "set the key path. Here should be private and public key pair for admin");
DEFINE_string(peer_ip, "127.0.0.1", "set the peer IP address. It is address of Iroha node");
DEFINE_uint32(torii_port, 50051u, "set the torii port. Port of iroha node to send commands and queries.");
DEFINE_string(user_default_role, "user", "set the user default role for newly created domain");
DEFINE_string(asset_full_name, "assetnamesamplev4#domainsamplev4", "set the asset full name (format asset_name#domain)");


iroha_lib::Query generateQueryBase(const std::string& account_name, const std::string& key_path);
iroha::protocol::Query generateGetAccountAssetsQuery(const std::string& account_name, const std::string& key_path);
iroha::protocol::Query generateGetAccountTransactionsQuery(const std::string& account_name, const std::string& key_path);
iroha::protocol::Query generateGetAccountQuery(const std::string& account_name, const std::string& key_path);

template<typename Tx>
void sendTransaction(Tx& tx, const std::string& peer_ip, uint16_t torii_port);
void sendTransaction(Tx& tx, const std::string& peer_ip, const uint16_t torii_port);

iroha::protocol::Transaction generateTransactionWhichCreatesDomainAndAsset(
const std::string& account_name,
Expand All @@ -27,34 +36,39 @@ iroha::protocol::Transaction generateTransactionWhichAddsAssetQuantiti(
const std::string& assetIdWithDomain,
const std::string& assetAmount);

void printAccountAssets(const std::string& account_name, const std::string& key_path, const std::string& peer_ip, uint16_t torii_port);
void printAccount(const std::string& account_name, const std::string& key_path, const std::string& peer_ip, uint16_t torii_port);
void printAccountAssets(const std::string& account_name, const std::string& key_path, const std::string& peer_ip, const uint16_t torii_port);
void printAccount(const std::string& account_name, const std::string& key_path, const std::string& peer_ip, const uint16_t torii_port);

void printErrorResponse(const QueryResponse& response);

void run(const std::string& key_path);
void run(const std::string& adminAccountName, const std::string& key_path,
const std::string& peer_ip, uint16_t torii_port,
const std::string& user_default_role,
const std::string& assetFullName);


int main(int argc, char* argv[])
{
if (2 == argc) {
run(argv[1]);
} else {
fmt::print("Usage: {} <key_path>\n", argv[0]);
}
}
int main(int argc, char* argv[]) try {
gflags::SetUsageMessage("Usage: " + std::string(argv[0]));
gflags::ParseCommandLineFlags(&argc, &argv, true);

run(FLAGS_admin_account_name,
FLAGS_key_path,
FLAGS_peer_ip,
FLAGS_torii_port,
FLAGS_user_default_role,
FLAGS_asset_full_name);

void run(const std::string& key_path)
{
const auto adminAccountName = "admin@test";
const auto peer_ip = "127.0.0.1";
const uint16_t torii_port = 50051;
const auto user_default_role = "user";
gflags::ShutDownCommandLineFlags();
} catch (const std::exception& e) {
std::cerr << fmt::format("Exception from {}: '{}'\n", __FUNCTION__, e.what());
}

const std::string assetName = "assetnamesamplev4";
const std::string assetDomain = "domainsamplev4";
const std::string assetFullname = assetName + "#" + assetDomain;
void run(const std::string& adminAccountName, const std::string& key_path,
const std::string& peer_ip, uint16_t torii_port,
const std::string& user_default_role,
const std::string& assetFullName)
{
const auto [assetName, assetDomain] = splitAssetFullName(assetFullName);

const auto tx2CreateDomainAndAsset = generateTransactionWhichCreatesDomainAndAsset(
adminAccountName,
Expand All @@ -66,7 +80,7 @@ void run(const std::string& key_path)
const auto tx2AddAssetQuantity = generateTransactionWhichAddsAssetQuantiti(
adminAccountName,
key_path,
assetFullname,
assetFullName,
"100");

sendTransaction(tx2CreateDomainAndAsset, peer_ip, torii_port);
Expand All @@ -84,7 +98,7 @@ iroha::protocol::Transaction generateTransactionWhichCreatesDomainAndAsset(
const std::string& user_default_role,
const std::string& asset_name)
{
auto log_manager = std::make_shared<logger::LoggerManagerTree>(
static auto log_manager = std::make_shared<logger::LoggerManagerTree>(
logger::LoggerConfig{logger::LogLevel::kInfo,
logger::getDefaultLogPatterns()})->getChild("CLI");
const auto keypair = generateKeypair(
Expand All @@ -111,7 +125,7 @@ iroha::protocol::Transaction generateTransactionWhichAddsAssetQuantiti(
const std::string& assetIdWithDomain,
const std::string& assetAmount)
{
auto log_manager = std::make_shared<logger::LoggerManagerTree>(
static auto log_manager = std::make_shared<logger::LoggerManagerTree>(
logger::LoggerConfig{logger::LogLevel::kInfo,
logger::getDefaultLogPatterns()})->getChild("CLI");
const auto keypair = generateKeypair(
Expand All @@ -130,7 +144,7 @@ template<typename Tx>
void sendTransaction(
Tx& tx,
const std::string& peer_ip,
uint16_t torii_port)
const uint16_t torii_port)
{
iroha_lib::GrpcClient(
peer_ip,
Expand All @@ -143,14 +157,17 @@ void sendTransaction(
getTransactionHash(tx));
}

void printAccountAssets(const std::string& account_name, const std::string& key_path, const std::string& peer_ip, uint16_t torii_port)
void printAccountAssets(const std::string& account_name,
const std::string& key_path,
const std::string& peer_ip,
const uint16_t torii_port)
{
fmt::print("----------->{}-----------\n", __FUNCTION__);

const auto query_proto = generateGetAccountAssetsQuery(
account_name,
key_path);
QueryResponse response = iroha_lib::GrpcClient(
const QueryResponse response = iroha_lib::GrpcClient(
peer_ip,
torii_port)
.send(query_proto);
Expand All @@ -161,11 +178,12 @@ void printAccountAssets(const std::string& account_name, const std::string& key_
if (response.has_error_response())
{
printErrorResponse(response);
return;
}

assert(response.has_account_assets_response());
const auto accountAssetsResponce = response.account_assets_response();
for (const auto& r : response.account_assets_response().account_assets())
for (const auto& r : accountAssetsResponce.account_assets())
{
fmt::print("\tasset: {} {}\n", r.asset_id(), r.balance());
}
Expand Down Expand Up @@ -220,14 +238,17 @@ void printErrorResponse(const QueryResponse& response)
std::cerr << fmt::format("{}: {}", errorResponse.error_code(), errorResponse.message()) << std::endl;
}

void printAccount(const std::string& account_name, const std::string& key_path, const std::string& peer_ip, uint16_t torii_port)
void printAccount(const std::string& account_name,
const std::string& key_path,
const std::string& peer_ip,
const uint16_t torii_port)
{
fmt::print("----------->{}-----------\n", __FUNCTION__);

const auto query_proto = generateGetAccountQuery(
account_name,
key_path);
QueryResponse response = iroha_lib::GrpcClient(
const QueryResponse response = iroha_lib::GrpcClient(
peer_ip,
torii_port)
.send(query_proto);
Expand Down
3 changes: 1 addition & 2 deletions iroha-lib/model/Query.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#include "grpc_client/GrpcClient.hpp"
#include "cryptography/ed25519_sha3_impl/internal/ed25519_impl.hpp"
#include "Query.hpp"
#include "model/converters/pb_common.hpp"
Expand All @@ -9,7 +8,7 @@ namespace iroha_lib {
Query::Query(
const iroha::keypair_t& keypair,
uint64_t counter,
uint64_t created_time)
uint64_t created_time) noexcept
: counter_(counter),
created_time_(created_time),
keypair_(keypair)
Expand Down
2 changes: 1 addition & 1 deletion iroha-lib/model/Query.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class Query {
public:
Query(const iroha::keypair_t& keypair,
uint64_t counter = 1u,
uint64_t created_time = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());
uint64_t created_time = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count()) noexcept;

Query& getAccount(const std::string& account_id);
Query& getAccountAssets(const std::string& account_id);
Expand Down
9 changes: 9 additions & 0 deletions iroha-lib/model/utils/Utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,3 +124,12 @@ std::string string_to_hex(const std::string& in)
}
return ss.str();
}

std::pair<std::string,std::string> splitAssetFullName(const std::string& assetFullName)
{
constexpr const char nameDomainSeparator = '#';
const auto separatorPosition = assetFullName.find(nameDomainSeparator);
const std::string assetName = assetFullName.substr(0, separatorPosition);
const std::string assetDomain = assetFullName.substr(separatorPosition+1);
return {assetName, assetDomain};
}
2 changes: 2 additions & 0 deletions iroha-lib/model/utils/Utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,5 @@ void printTransactionStatuses(
const std::vector<Transaction>& transactions);

std::string string_to_hex(const std::string& in);

std::pair<std::string,std::string> splitAssetFullName(const std::string& assetFullName);

0 comments on commit fd0d5dd

Please sign in to comment.