Skip to content

Commit a214d2b

Browse files
authored
Merge pull request #656 from zhuliting/develop
Add broadcast_transaction method for broadcasting transaction signed by …
2 parents 97d86fe + cdb4307 commit a214d2b

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

libraries/wallet/include/graphene/wallet/wallet.hpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,13 @@ class wallet_api
507507
* @ingroup Transaction Builder API
508508
*/
509509
signed_transaction sign_builder_transaction(transaction_handle_type transaction_handle, bool broadcast = true);
510+
511+
/** Broadcast signed transaction
512+
* @param tx signed transaction
513+
* @returns the transaction ID along with the signed transaction.
514+
*/
515+
pair<transaction_id_type,signed_transaction> broadcast_transaction(signed_transaction tx);
516+
510517
/**
511518
* @ingroup Transaction Builder API
512519
*/
@@ -660,8 +667,6 @@ class wallet_api
660667
bool is_public_key_registered(string public_key) const;
661668

662669
/** Converts a signed_transaction in JSON form to its binary representation.
663-
*
664-
* TODO: I don't see a broadcast_transaction() function, do we need one?
665670
*
666671
* @param tx the transaction to serialize
667672
* @returns the binary form of the transaction. It will not be hex encoded,
@@ -1628,6 +1633,7 @@ FC_API( graphene::wallet::wallet_api,
16281633
(set_fees_on_builder_transaction)
16291634
(preview_builder_transaction)
16301635
(sign_builder_transaction)
1636+
(broadcast_transaction)
16311637
(propose_builder_transaction)
16321638
(propose_builder_transaction2)
16331639
(remove_builder_transaction)

libraries/wallet/wallet.cpp

+18
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,19 @@ class wallet_api_impl
851851

852852
return _builder_transactions[transaction_handle] = sign_transaction(_builder_transactions[transaction_handle], broadcast);
853853
}
854+
855+
pair<transaction_id_type,signed_transaction> broadcast_transaction(signed_transaction tx)
856+
{
857+
try {
858+
_remote_net_broadcast->broadcast_transaction(tx);
859+
}
860+
catch (const fc::exception& e) {
861+
elog("Caught exception while broadcasting tx ${id}: ${e}", ("id", tx.id().str())("e", e.to_detail_string()));
862+
throw;
863+
}
864+
return std::make_pair(tx.id(),tx);
865+
}
866+
854867
signed_transaction propose_builder_transaction(
855868
transaction_handle_type handle,
856869
time_point_sec expiration = time_point::now() + fc::minutes(1),
@@ -3028,6 +3041,11 @@ signed_transaction wallet_api::sign_builder_transaction(transaction_handle_type
30283041
return my->sign_builder_transaction(transaction_handle, broadcast);
30293042
}
30303043

3044+
pair<transaction_id_type,signed_transaction> wallet_api::broadcast_transaction(signed_transaction tx)
3045+
{
3046+
return my->broadcast_transaction(tx);
3047+
}
3048+
30313049
signed_transaction wallet_api::propose_builder_transaction(
30323050
transaction_handle_type handle,
30333051
time_point_sec expiration,

0 commit comments

Comments
 (0)