diff --git a/applications/tari_app_grpc/proto/types.proto b/applications/tari_app_grpc/proto/types.proto index c4b5cdfeef..a9eeea1105 100644 --- a/applications/tari_app_grpc/proto/types.proto +++ b/applications/tari_app_grpc/proto/types.proto @@ -411,3 +411,11 @@ message SoftwareUpdate { string sha = 3; string download_url = 4; } + +message GetIdentityRequest { } + +message GetIdentityResponse { + bytes public_key = 1; + string public_address = 2; + bytes node_id = 3; +} diff --git a/applications/tari_app_grpc/proto/validator_node.proto b/applications/tari_app_grpc/proto/validator_node.proto index 7582f73687..807a5e80e2 100644 --- a/applications/tari_app_grpc/proto/validator_node.proto +++ b/applications/tari_app_grpc/proto/validator_node.proto @@ -25,6 +25,7 @@ import "types.proto"; package tari.rpc; service ValidatorNode { + rpc GetIdentity(GetIdentityRequest) returns (GetIdentityResponse); rpc GetMetadata(GetMetadataRequest) returns (GetMetadataResponse); rpc GetTokenData(GetTokenDataRequest) returns (GetTokenDataResponse); // rpc ExecuteInstruction(ExecuteInstructionRequest) returns (ExecuteInstructionResponse); @@ -32,6 +33,7 @@ service ValidatorNode { rpc InvokeMethod(InvokeMethodRequest) returns (InvokeMethodResponse); } + message GetMetadataRequest { // empty } diff --git a/applications/tari_app_grpc/proto/wallet.proto b/applications/tari_app_grpc/proto/wallet.proto index 546dd29086..6c051b5cad 100644 --- a/applications/tari_app_grpc/proto/wallet.proto +++ b/applications/tari_app_grpc/proto/wallet.proto @@ -79,13 +79,6 @@ service Wallet { message GetVersionRequest { } -message GetIdentityRequest { } - -message GetIdentityResponse { - bytes public_key = 1; - string public_address = 2; - bytes node_id = 3; -} message GetVersionResponse { string version = 1; diff --git a/applications/tari_validator_node/src/grpc/validator_node_grpc_server.rs b/applications/tari_validator_node/src/grpc/validator_node_grpc_server.rs index 0aa61a8eeb..c052d4c66e 100644 --- a/applications/tari_validator_node/src/grpc/validator_node_grpc_server.rs +++ b/applications/tari_validator_node/src/grpc/validator_node_grpc_server.rs @@ -21,6 +21,7 @@ // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. use tari_app_grpc::tari_rpc as rpc; use tari_common_types::types::PublicKey; +use tari_comms::NodeIdentity; use tari_crypto::tari_utilities::ByteArray; use tari_dan_core::{ models::TemplateId, @@ -30,6 +31,7 @@ use tari_dan_core::{ use tonic::{Request, Response, Status}; pub struct ValidatorNodeGrpcServer { + node_identity: NodeIdentity, db_factory: TServiceSpecification::DbFactory, asset_processor: TServiceSpecification::AssetProcessor, asset_proxy: TServiceSpecification::AssetProxy, @@ -37,11 +39,13 @@ pub struct ValidatorNodeGrpcServer impl ValidatorNodeGrpcServer { pub fn new( + node_identity: NodeIdentity, db_factory: TServiceSpecification::DbFactory, asset_processor: TServiceSpecification::AssetProcessor, asset_proxy: TServiceSpecification::AssetProxy, ) -> Self { Self { + node_identity, db_factory, asset_processor, asset_proxy, @@ -53,6 +57,18 @@ impl ValidatorNodeGrpcServer rpc::validator_node_server::ValidatorNode for ValidatorNodeGrpcServer { + async fn get_identity( + &self, + _request: tonic::Request, + ) -> Result, tonic::Status> { + let response = rpc::GetIdentityResponse { + public_key: self.node_identity.public_key().to_vec(), + public_address: self.node_identity.public_address().to_string(), + node_id: self.node_identity.node_id().to_vec(), + }; + Ok(Response::new(response)) + } + async fn get_token_data( &self, request: tonic::Request, diff --git a/applications/tari_validator_node/src/main.rs b/applications/tari_validator_node/src/main.rs index c51c2084bb..99e95ad21c 100644 --- a/applications/tari_validator_node/src/main.rs +++ b/applications/tari_validator_node/src/main.rs @@ -129,8 +129,12 @@ async fn run_node(config: GlobalConfig, create_id: bool) -> Result<(), ExitCodes db_factory.clone(), ); - let grpc_server: ValidatorNodeGrpcServer = - ValidatorNodeGrpcServer::new(db_factory.clone(), asset_processor, asset_proxy); + let grpc_server: ValidatorNodeGrpcServer = ValidatorNodeGrpcServer::new( + node_identity.as_ref().clone(), + db_factory.clone(), + asset_processor, + asset_proxy, + ); let grpc_addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)), 18144); task::spawn(run_grpc(grpc_server, grpc_addr, shutdown.to_signal()));