From d14809694f646b97065bde3ffd8af69b3d8c923b Mon Sep 17 00:00:00 2001 From: stasatdaglabs <39559713+stasatdaglabs@users.noreply.github.com> Date: Tue, 18 Aug 2020 10:26:39 +0300 Subject: [PATCH] [NOD-1223] Reorganize directory structure (#874) * [NOD-1223] Delete unused files/packages. * [NOD-1223] Move signal and limits to the os package. * [NOD-1223] Put database and dbaccess into the db package. * [NOD-1223] Fold the logs package into the logger package. * [NOD-1223] Rename domainmessage to appmessage. * [NOD-1223] Rename to/from DomainMessage to AppMessage. * [NOD-1223] Move appmessage to the app packge. * [NOD-1223] Move protocol to the app packge. * [NOD-1223] Move the network package to the infrastructure packge. * [NOD-1223] Rename cmd to executables. * [NOD-1223] Fix go.doc in the logger package. --- README.md | 2 - app/app.go | 24 ++-- .../appmessage}/README.md | 2 +- .../appmessage}/base_message.go | 2 +- .../appmessage}/bench_test.go | 2 +- .../appmessage}/blockheader.go | 14 +-- .../appmessage}/blockheader_test.go | 14 +-- .../appmessage}/common.go | 4 +- .../appmessage}/common_test.go | 70 +++++------ .../domainmessage => app/appmessage}/doc.go | 38 +++--- .../domainmessage => app/appmessage}/error.go | 2 +- .../appmessage}/fakemessage_test.go | 6 +- .../appmessage}/fixedIO_test.go | 2 +- .../appmessage}/message.go | 2 +- .../appmessage}/msgaddresses.go | 2 +- .../appmessage}/msgaddresses_test.go | 2 +- .../appmessage}/msgblock.go | 20 +-- .../appmessage}/msgblock_test.go | 28 ++--- .../appmessage}/msgblocklocator.go | 2 +- .../appmessage}/msgblocklocator_test.go | 2 +- .../appmessage}/msgdoneibdblocks.go | 2 +- .../appmessage}/msgibdblock.go | 2 +- .../appmessage}/msgibdblock_test.go | 10 +- .../appmessage}/msginvrelayblock.go | 2 +- .../appmessage}/msginvtransaction.go | 2 +- .../appmessage}/msgping.go | 2 +- .../appmessage}/msgping_test.go | 2 +- .../appmessage}/msgpong.go | 2 +- .../appmessage}/msgpong_test.go | 2 +- .../appmessage}/msgreject.go | 2 +- .../appmessage}/msgrequestaddresses.go | 2 +- .../appmessage}/msgrequestaddresses_test.go | 2 +- .../appmessage}/msgrequestblocklocator.go | 2 +- .../msgrequestblocklocator_test.go | 2 +- .../appmessage}/msgrequestibdblocks.go | 2 +- .../appmessage}/msgrequestibdblocks_test.go | 2 +- .../appmessage}/msgrequestnextibdblocks.go | 2 +- .../appmessage}/msgrequestrelayblocks.go | 2 +- .../appmessage}/msgrequestselectedtip.go | 2 +- .../appmessage}/msgrequestselectedtip_test.go | 2 +- .../appmessage}/msgrequesttransactions.go | 2 +- .../appmessage}/msgselectedtip.go | 2 +- .../appmessage}/msgselectedtip_test.go | 2 +- .../appmessage}/msgtransactionnotfound.go | 2 +- .../domainmessage => app/appmessage}/msgtx.go | 22 ++-- .../appmessage}/msgtx_test.go | 28 ++--- .../appmessage}/msgverack.go | 2 +- .../appmessage}/msgverack_test.go | 2 +- .../appmessage}/msgversion.go | 10 +- .../appmessage}/msgversion_test.go | 4 +- .../appmessage}/netaddress.go | 4 +- .../appmessage}/netaddress_test.go | 2 +- .../appmessage}/protocol.go | 2 +- .../appmessage}/protocol_test.go | 2 +- .../appmessage}/testdata/megatx.bin.bz2 | Bin .../protocol/blocklogger/blocklogger.go | 0 {network => app}/protocol/blocklogger/log.go | 0 {network => app}/protocol/common/common.go | 0 .../protocol/flowcontext/addresses.go | 2 +- .../protocol/flowcontext/blocks.go | 12 +- .../protocol/flowcontext/config.go | 0 .../protocol/flowcontext/consensus.go | 0 .../protocol/flowcontext/errors.go | 4 +- .../protocol/flowcontext/flow_context.go | 14 +-- {network => app}/protocol/flowcontext/ibd.go | 2 +- {network => app}/protocol/flowcontext/log.go | 0 .../protocol/flowcontext/network.go | 12 +- .../protocol/flowcontext/transactions.go | 6 +- .../flows/addressexchange/receiveaddresses.go | 16 +-- .../flows/addressexchange/sendaddresses.go | 18 +-- .../blockrelay/handle_relay_block_requests.go | 12 +- .../flows/blockrelay/handle_relay_invs.go | 42 +++---- .../flows/blockrelay/hashes_queue_set.go | 0 .../protocol/flows/blockrelay/log.go | 0 .../blockrelay/shared_requested_blocks.go | 0 .../protocol/flows/handshake/handshake.go | 16 +-- .../protocol/flows/handshake/log.go | 0 .../flows/handshake/receiveversion.go | 22 ++-- .../protocol/flows/handshake/sendversion.go | 14 +-- .../flows/ibd/handle_request_block_locator.go | 10 +- .../flows/ibd/handle_request_ibd_blocks.go | 24 ++-- {network => app}/protocol/flows/ibd/ibd.go | 30 ++--- {network => app}/protocol/flows/ibd/log.go | 0 .../handle_request_selected_tip.go | 10 +- .../ibd/selectedtip/request_selected_tip.go | 12 +- .../protocol/flows/ping/receive.go | 8 +- {network => app}/protocol/flows/ping/send.go | 14 +-- .../protocol/flows/rejects/handle_rejects.go | 8 +- .../handle_relayed_transactions.go | 40 +++--- .../handle_requested_transactions.go | 12 +- .../shared_requested_transactions.go | 0 {network => app}/protocol/log.go | 0 {network => app}/protocol/manager.go | 10 +- {network => app}/protocol/peer/log.go | 0 {network => app}/protocol/peer/peer.go | 10 +- {network => app}/protocol/protocol.go | 70 +++++------ .../protocol/protocolerrors/protocolerrors.go | 0 docker/Dockerfile | 1 - domain/blockdag/blockindex.go | 2 +- domain/blockdag/blocklocator.go | 10 +- domain/blockdag/blocknode.go | 8 +- domain/blockdag/coinbase.go | 14 +-- domain/blockdag/common_test.go | 10 +- domain/blockdag/config.go | 2 +- domain/blockdag/confirmations.go | 4 +- domain/blockdag/dag.go | 18 +-- domain/blockdag/dag_test.go | 106 ++++++++-------- domain/blockdag/dagio.go | 24 ++-- domain/blockdag/external_dag_test.go | 108 ++++++++-------- domain/blockdag/ghostdag_test.go | 2 +- domain/blockdag/index_manager.go | 2 +- domain/blockdag/indexers/acceptanceindex.go | 6 +- .../blockdag/indexers/acceptanceindex_test.go | 16 +-- domain/blockdag/indexers/indexer.go | 2 +- domain/blockdag/indexers/manager.go | 2 +- domain/blockdag/mining.go | 8 +- domain/blockdag/multiset.go | 6 +- domain/blockdag/multisetstore.go | 2 +- domain/blockdag/process.go | 2 +- domain/blockdag/reachability.go | 2 +- domain/blockdag/reachabilitystore.go | 34 ++--- domain/blockdag/scriptval.go | 4 +- domain/blockdag/sequence_lock.go | 16 +-- domain/blockdag/subnetworks.go | 14 +-- domain/blockdag/test_utils.go | 34 ++--- domain/blockdag/utxo_ecmh.go | 6 +- domain/blockdag/utxodiffstore.go | 2 +- domain/blockdag/utxodiffstore_test.go | 8 +- domain/blockdag/utxoio.go | 24 ++-- domain/blockdag/utxoset.go | 46 +++---- domain/blockdag/utxoset_test.go | 90 ++++++------- domain/blockdag/validate.go | 38 +++--- domain/blockdag/validate_test.go | 114 ++++++++--------- domain/dagconfig/genesis.go | 52 ++++---- domain/dagconfig/params.go | 18 +-- domain/mempool/error.go | 2 +- domain/mempool/mempool.go | 36 +++--- domain/mempool/mempool_test.go | 118 +++++++++--------- domain/mempool/policy.go | 4 +- domain/mempool/policy_test.go | 56 ++++----- domain/mining/mining.go | 6 +- domain/mining/test_utils.go | 8 +- domain/txscript/engine.go | 6 +- domain/txscript/engine_test.go | 34 ++--- domain/txscript/main_test.go | 5 +- domain/txscript/opcode.go | 16 +-- domain/txscript/reference_test.go | 24 ++-- domain/txscript/script.go | 20 +-- domain/txscript/sign.go | 12 +- domain/txscript/sign_test.go | 64 +++++----- {cmd => executables}/addblock/addblock.go | 8 +- {cmd => executables}/addblock/config.go | 0 {cmd => executables}/addblock/import.go | 6 +- {cmd => executables}/gencerts/gencerts.go | 0 {cmd => executables}/kaspactl/config.go | 2 +- {cmd => executables}/kaspactl/httpclient.go | 2 +- {cmd => executables}/kaspactl/kaspactl.go | 2 +- {cmd => executables}/kaspaminer/client.go | 6 +- {cmd => executables}/kaspaminer/config.go | 0 .../kaspaminer/docker/Dockerfile | 0 {cmd => executables}/kaspaminer/log.go | 16 +-- {cmd => executables}/kaspaminer/main.go | 2 +- {cmd => executables}/kaspaminer/mineloop.go | 4 +- {cmd => executables}/txsigner/config.go | 0 {cmd => executables}/txsigner/txsigner.go | 10 +- infrastructure/{ => db}/database/README.md | 0 .../{ => db}/database/common_test.go | 4 +- infrastructure/{ => db}/database/cursor.go | 0 .../{ => db}/database/cursor_test.go | 2 +- .../{ => db}/database/dataaccessor.go | 0 infrastructure/{ => db}/database/database.go | 0 .../{ => db}/database/database_test.go | 2 +- infrastructure/{ => db}/database/doc.go | 0 infrastructure/{ => db}/database/errors.go | 0 .../{ => db}/database/ffldb/ff/flatfile.go | 0 .../database/ffldb/ff/flatfile_test.go | 2 +- .../{ => db}/database/ffldb/ff/flatfiledb.go | 0 .../{ => db}/database/ffldb/ff/location.go | 0 .../database/ffldb/ff/location_test.go | 0 .../database/ffldb/ff/lockablefile.go | 0 .../{ => db}/database/ffldb/ff/log.go | 0 .../{ => db}/database/ffldb/ff/read.go | 2 +- .../{ => db}/database/ffldb/ff/rollback.go | 0 .../{ => db}/database/ffldb/ff/write.go | 0 .../{ => db}/database/ffldb/ffldb.go | 6 +- .../{ => db}/database/ffldb/ffldb_test.go | 2 +- .../{ => db}/database/ffldb/initialize.go | 0 .../{ => db}/database/ffldb/ldb/cursor.go | 2 +- .../database/ffldb/ldb/cursor_test.go | 2 +- .../{ => db}/database/ffldb/ldb/leveldb.go | 2 +- .../database/ffldb/ldb/leveldb_test.go | 2 +- .../{ => db}/database/ffldb/ldb/log.go | 0 .../{ => db}/database/ffldb/ldb/options.go | 0 .../database/ffldb/ldb/transaction.go | 2 +- .../database/ffldb/ldb/transaction_test.go | 2 +- infrastructure/{ => db}/database/ffldb/log.go | 0 .../{ => db}/database/ffldb/transaction.go | 6 +- .../database/ffldb/transaction_test.go | 2 +- infrastructure/{ => db}/database/keys.go | 0 infrastructure/{ => db}/database/keys_test.go | 0 .../{ => db}/database/transaction.go | 0 .../{ => db}/database/transaction_test.go | 2 +- .../{ => db}/dbaccess/acceptanceindex.go | 2 +- infrastructure/{ => db}/dbaccess/block.go | 2 +- .../{ => db}/dbaccess/block_test.go | 0 .../{ => db}/dbaccess/blockindex.go | 2 +- infrastructure/{ => db}/dbaccess/common.go | 2 +- infrastructure/{ => db}/dbaccess/context.go | 2 +- infrastructure/{ => db}/dbaccess/dagstate.go | 2 +- infrastructure/{ => db}/dbaccess/db.go | 4 +- infrastructure/{ => db}/dbaccess/errors.go | 2 +- infrastructure/{ => db}/dbaccess/fee_data.go | 2 +- infrastructure/{ => db}/dbaccess/multiset.go | 2 +- infrastructure/{ => db}/dbaccess/peers.go | 2 +- .../{ => db}/dbaccess/reachability.go | 2 +- .../{ => db}/dbaccess/subnetwork.go | 2 +- infrastructure/{ => db}/dbaccess/utxo.go | 2 +- infrastructure/{ => db}/dbaccess/utxodiff.go | 2 +- infrastructure/{logs => logger}/doc.go | 4 +- infrastructure/logger/logger.go | 18 ++- infrastructure/{logs => logger}/logs.go | 2 +- .../network}/addressmanager/addressmanager.go | 66 +++++----- .../addressmanager/addressmanager_test.go | 88 ++++++------- .../network}/addressmanager/doc.go | 0 .../network}/addressmanager/internal_test.go | 4 +- .../network}/addressmanager/knownaddress.go | 10 +- .../addressmanager/knownaddress_test.go | 22 ++-- .../network}/addressmanager/log.go | 0 .../network}/addressmanager/network.go | 38 +++--- .../network}/addressmanager/network_test.go | 8 +- .../connmanager/connection_requests.go | 0 .../network}/connmanager/connection_set.go | 2 +- .../network}/connmanager/connmanager.go | 4 +- .../connmanager/incoming_connections.go | 0 .../network}/connmanager/log.go | 0 .../connmanager/outgoing_connections.go | 0 .../network}/dnsseed/log.go | 0 .../network}/dnsseed/seed.go | 12 +- .../network}/netadapter/id/id.go | 0 .../network}/netadapter/log.go | 0 .../network}/netadapter/netadapter.go | 18 +-- .../network}/netadapter/netadapter_test.go | 20 +-- .../network}/netadapter/netconnection.go | 12 +- .../network}/netadapter/router/route.go | 14 +-- .../network}/netadapter/router/router.go | 22 ++-- .../server/grpcserver/connection_loops.go | 8 +- .../server/grpcserver/grpc_connection.go | 6 +- .../server/grpcserver/grpc_server.go | 4 +- .../netadapter/server/grpcserver/log.go | 0 .../netadapter/server/grpcserver/p2pserver.go | 2 +- .../server/grpcserver/protowire/README.md | 0 .../server/grpcserver/protowire/common.go | 10 +- .../server/grpcserver/protowire/generate.go | 0 .../grpcserver/protowire/message_addresses.go | 18 +-- .../grpcserver/protowire/message_block.go | 34 ++--- .../protowire/message_block_locator.go | 29 +++++ .../protowire/message_done_ibd_blocks.go | 11 ++ .../grpcserver/protowire/message_ibd_block.go | 16 +++ .../protowire/message_inv_relay_block.go | 19 +++ .../protowire/message_inv_transactions.go | 31 +++++ .../grpcserver/protowire/message_ping.go | 18 +++ .../grpcserver/protowire/message_pong.go | 18 +++ .../grpcserver/protowire/message_reject.go | 18 +++ .../protowire/message_request_addresses.go | 8 +- .../message_request_block_locator.go | 8 +- .../protowire/message_request_ibd_blocks.go | 8 +- .../message_request_next_ibd_blocks.go | 11 ++ .../protowire/message_request_relay_blocks.go | 30 +++++ .../protowire/message_request_selected_tip.go | 11 ++ .../protowire/message_request_transactions.go | 31 +++++ .../protowire/message_selected_tip.go | 19 +++ .../protowire/message_transaction.go | 26 ++-- .../message_transaction_not_found.go | 20 +++ .../grpcserver/protowire/message_verack.go | 11 ++ .../grpcserver/protowire/message_version.go | 18 +-- .../grpcserver/protowire/messages.pb.go | 0 .../grpcserver/protowire/messages.proto | 0 .../grpcserver/protowire/messages_grpc.pb.go | 0 .../server/grpcserver/protowire/wire.go | 100 +++++++-------- .../network}/netadapter/server/server.go | 2 +- .../network}/netadapter/standalone/log.go | 0 .../standalone/minimal_net_adapter.go | 36 +++--- .../network}/netadapter/standalone/routes.go | 8 +- .../network}/rpc/client/CONTRIBUTORS | 0 .../network}/rpc/client/README.md | 0 .../network}/rpc/client/dag.go | 16 +-- .../network}/rpc/client/doc.go | 0 .../rpc/client/examples/httppost/README.md | 0 .../rpc/client/examples/httppost/main.go | 2 +- .../rpc/client/examples/websockets/README.md | 0 .../rpc/client/examples/websockets/main.go | 6 +- .../network}/rpc/client/infrastructure.go | 4 +- .../network}/rpc/client/log.go | 10 +- .../network}/rpc/client/mining.go | 10 +- .../network}/rpc/client/net.go | 26 ++-- .../network}/rpc/client/notify.go | 14 +-- .../network}/rpc/client/rawrequest.go | 2 +- .../network}/rpc/client/rawtransactions.go | 8 +- .../network}/rpc/common.go | 14 +-- .../network}/rpc/handle_connect.go | 2 +- .../network}/rpc/handle_debug_level.go | 2 +- .../network}/rpc/handle_disconnect.go | 2 +- .../network}/rpc/handle_get_block.go | 2 +- .../network}/rpc/handle_get_block_count.go | 0 .../network}/rpc/handle_get_block_dag_info.go | 2 +- .../network}/rpc/handle_get_block_header.go | 2 +- .../network}/rpc/handle_get_block_template.go | 10 +- .../network}/rpc/handle_get_blocks.go | 2 +- .../rpc/handle_get_chain_from_block.go | 2 +- .../rpc/handle_get_connected_peer_info.go | 2 +- .../rpc/handle_get_connection_count.go | 0 .../network}/rpc/handle_get_current_net.go | 0 .../network}/rpc/handle_get_difficulty.go | 0 .../network}/rpc/handle_get_headers.go | 2 +- .../network}/rpc/handle_get_info.go | 2 +- .../network}/rpc/handle_get_mempool_entry.go | 2 +- .../network}/rpc/handle_get_mempool_info.go | 2 +- .../network}/rpc/handle_get_peer_addresses.go | 4 +- .../network}/rpc/handle_get_raw_mempool.go | 2 +- .../network}/rpc/handle_get_selected_tip.go | 2 +- .../rpc/handle_get_selected_tip_hash.go | 0 .../network}/rpc/handle_get_subnetwork.go | 2 +- .../network}/rpc/handle_get_top_headers.go | 2 +- .../network}/rpc/handle_get_tx_out.go | 6 +- .../network}/rpc/handle_help.go | 2 +- .../network}/rpc/handle_load_tx_filter.go | 8 +- .../network}/rpc/handle_notify_blocks.go | 0 .../rpc/handle_notify_chain_changes.go | 2 +- .../rpc/handle_notify_new_transactions.go | 2 +- .../rpc/handle_rescan_block_filter.go | 4 +- .../network}/rpc/handle_rescan_blocks.go | 2 +- .../rpc/handle_send_raw_transaction.go | 6 +- .../network}/rpc/handle_session.go | 2 +- .../network}/rpc/handle_stop.go | 0 .../network}/rpc/handle_stop_notify_blocks.go | 0 .../rpc/handle_stop_notify_chain_changes.go | 0 .../handle_stop_notify_new_transactions.go | 0 .../network}/rpc/handle_submit_block.go | 2 +- .../network}/rpc/handle_uptime.go | 0 .../network}/rpc/handle_version.go | 2 +- .../network}/rpc/handle_websocket_help.go | 2 +- .../network}/rpc/log.go | 0 .../network}/rpc/model/CONTRIBUTORS | 0 .../network}/rpc/model/README.md | 0 .../network}/rpc/model/command_info.go | 0 .../network}/rpc/model/command_info_test.go | 2 +- .../network}/rpc/model/command_parse.go | 0 .../network}/rpc/model/command_parse_test.go | 2 +- .../network}/rpc/model/doc.go | 8 +- .../network}/rpc/model/error.go | 2 +- .../network}/rpc/model/error_test.go | 2 +- .../network}/rpc/model/example_test.go | 14 +-- .../network}/rpc/model/export_test.go | 0 .../network}/rpc/model/help.go | 0 .../network}/rpc/model/help_test.go | 2 +- .../network}/rpc/model/jsonrpc.go | 2 +- .../network}/rpc/model/jsonrpc_errors.go | 0 .../network}/rpc/model/jsonrpc_test.go | 2 +- .../network}/rpc/model/register.go | 0 .../network}/rpc/model/register_test.go | 2 +- .../network}/rpc/model/rpc_commands.go | 0 .../network}/rpc/model/rpc_commands_test.go | 2 +- .../network}/rpc/model/rpc_results.go | 2 +- .../network}/rpc/model/rpc_results_test.go | 2 +- .../rpc/model/rpc_websocket_commands.go | 0 .../rpc/model/rpc_websocket_commands_test.go | 2 +- .../rpc/model/rpc_websocket_notifications.go | 0 .../model/rpc_websocket_notifications_test.go | 2 +- .../rpc/model/rpc_websocket_results.go | 0 .../rpc/model/rpc_websocket_results_test.go | 2 +- .../network}/rpc/rpcserver.go | 8 +- .../network}/rpc/rpcserverhelp.go | 6 +- .../network}/rpc/rpcserverhelp_test.go | 0 .../network}/rpc/rpcwebsocket.go | 20 +-- .../network}/rpc/utils.go | 0 .../{ => os}/limits/limits_plan9.go | 0 infrastructure/{ => os}/limits/limits_unix.go | 0 .../{ => os}/limits/limits_windows.go | 0 infrastructure/{ => os}/signal/log.go | 0 infrastructure/{ => os}/signal/signal.go | 0 .../{ => os}/signal/signalsigterm.go | 0 main.go | 12 +- network/domainmessage/base_message.go | 24 ---- .../server/grpcserver/protowire/README.md | 7 -- .../protowire/message_block_locator.go | 29 ----- .../protowire/message_done_ibd_blocks.go | 11 -- .../grpcserver/protowire/message_ibd_block.go | 16 --- .../protowire/message_inv_relay_block.go | 19 --- .../protowire/message_inv_transactions.go | 31 ----- .../grpcserver/protowire/message_ping.go | 18 --- .../grpcserver/protowire/message_pong.go | 18 --- .../grpcserver/protowire/message_reject.go | 18 --- .../message_request_next_ibd_blocks.go | 11 -- .../protowire/message_request_relay_blocks.go | 30 ----- .../protowire/message_request_selected_tip.go | 11 -- .../protowire/message_request_transactions.go | 31 ----- .../protowire/message_selected_tip.go | 19 --- .../message_transaction_not_found.go | 20 --- .../grpcserver/protowire/message_verack.go | 11 -- service_windows.go | 2 +- test.sh | 16 --- .../64_incoming_connections_test.go | 4 +- testing/integration/basic_sync_test.go | 12 +- testing/integration/ibd_test.go | 4 +- testing/integration/mining_test.go | 6 +- testing/integration/notifications_test.go | 4 +- testing/integration/rpc_test.go | 8 +- testing/integration/setup_test.go | 2 +- testing/integration/tx_relay_test.go | 18 +-- upgrade.go | 11 -- util/block.go | 34 ++--- util/block_test.go | 34 ++--- util/coinbasepayload/coinbasepayload.go | 8 +- util/panics/panics.go | 15 ++- util/profiling/profiling.go | 4 +- util/testtools/testtools.go | 18 +-- util/tx.go | 24 ++-- util/txsort/txsort.go | 12 +- util/txsort/txsort_test.go | 4 +- 419 files changed, 1989 insertions(+), 2048 deletions(-) rename {network/domainmessage => app/appmessage}/README.md (97%) rename {domainmessage => app/appmessage}/base_message.go (95%) rename {network/domainmessage => app/appmessage}/bench_test.go (99%) rename {network/domainmessage => app/appmessage}/blockheader.go (94%) rename {network/domainmessage => app/appmessage}/blockheader_test.go (96%) rename {network/domainmessage => app/appmessage}/common.go (99%) rename {network/domainmessage => app/appmessage}/common_test.go (90%) rename {network/domainmessage => app/appmessage}/doc.go (80%) rename {network/domainmessage => app/appmessage}/error.go (98%) rename {network/domainmessage => app/appmessage}/fakemessage_test.go (91%) rename {network/domainmessage => app/appmessage}/fixedIO_test.go (98%) rename {network/domainmessage => app/appmessage}/message.go (99%) rename {network/domainmessage => app/appmessage}/msgaddresses.go (99%) rename {network/domainmessage => app/appmessage}/msgaddresses_test.go (98%) rename {network/domainmessage => app/appmessage}/msgblock.go (91%) rename {network/domainmessage => app/appmessage}/msgblock_test.go (96%) rename {network/domainmessage => app/appmessage}/msgblocklocator.go (97%) rename {network/domainmessage => app/appmessage}/msgblocklocator_test.go (97%) rename {network/domainmessage => app/appmessage}/msgdoneibdblocks.go (96%) rename {network/domainmessage => app/appmessage}/msgibdblock.go (97%) rename {network/domainmessage => app/appmessage}/msgibdblock_test.go (91%) rename {network/domainmessage => app/appmessage}/msginvrelayblock.go (97%) rename {network/domainmessage => app/appmessage}/msginvtransaction.go (97%) rename {network/domainmessage => app/appmessage}/msgping.go (98%) rename {network/domainmessage => app/appmessage}/msgping_test.go (97%) rename {network/domainmessage => app/appmessage}/msgpong.go (97%) rename {network/domainmessage => app/appmessage}/msgpong_test.go (97%) rename {network/domainmessage => app/appmessage}/msgreject.go (96%) rename {network/domainmessage => app/appmessage}/msgrequestaddresses.go (98%) rename {network/domainmessage => app/appmessage}/msgrequestaddresses_test.go (95%) rename {network/domainmessage => app/appmessage}/msgrequestblocklocator.go (97%) rename {network/domainmessage => app/appmessage}/msgrequestblocklocator_test.go (96%) rename {network/domainmessage => app/appmessage}/msgrequestibdblocks.go (97%) rename {network/domainmessage => app/appmessage}/msgrequestibdblocks_test.go (98%) rename {network/domainmessage => app/appmessage}/msgrequestnextibdblocks.go (96%) rename {network/domainmessage => app/appmessage}/msgrequestrelayblocks.go (97%) rename {network/domainmessage => app/appmessage}/msgrequestselectedtip.go (96%) rename {network/domainmessage => app/appmessage}/msgrequestselectedtip_test.go (95%) rename {network/domainmessage => app/appmessage}/msgrequesttransactions.go (97%) rename {network/domainmessage => app/appmessage}/msgselectedtip.go (97%) rename {network/domainmessage => app/appmessage}/msgselectedtip_test.go (94%) rename {network/domainmessage => app/appmessage}/msgtransactionnotfound.go (97%) rename {network/domainmessage => app/appmessage}/msgtx.go (97%) rename {network/domainmessage => app/appmessage}/msgtx_test.go (97%) rename {network/domainmessage => app/appmessage}/msgverack.go (97%) rename {network/domainmessage => app/appmessage}/msgverack_test.go (95%) rename {network/domainmessage => app/appmessage}/msgversion.go (94%) rename {network/domainmessage => app/appmessage}/msgversion_test.go (97%) rename {network/domainmessage => app/appmessage}/netaddress.go (98%) rename {network/domainmessage => app/appmessage}/netaddress_test.go (98%) rename {network/domainmessage => app/appmessage}/protocol.go (99%) rename {network/domainmessage => app/appmessage}/protocol_test.go (98%) rename {network/domainmessage => app/appmessage}/testdata/megatx.bin.bz2 (100%) rename {network => app}/protocol/blocklogger/blocklogger.go (100%) rename {network => app}/protocol/blocklogger/log.go (100%) rename {network => app}/protocol/common/common.go (100%) rename {network => app}/protocol/flowcontext/addresses.go (75%) rename {network => app}/protocol/flowcontext/blocks.go (83%) rename {network => app}/protocol/flowcontext/config.go (100%) rename {network => app}/protocol/flowcontext/consensus.go (100%) rename {network => app}/protocol/flowcontext/errors.go (84%) rename {network => app}/protocol/flowcontext/flow_context.go (81%) rename {network => app}/protocol/flowcontext/ibd.go (96%) rename {network => app}/protocol/flowcontext/log.go (100%) rename {network => app}/protocol/flowcontext/network.go (81%) rename {network => app}/protocol/flowcontext/transactions.go (91%) rename {network => app}/protocol/flows/addressexchange/receiveaddresses.go (77%) rename {network => app}/protocol/flows/addressexchange/sendaddresses.go (64%) rename {network => app}/protocol/flows/blockrelay/handle_relay_block_requests.go (78%) rename {network => app}/protocol/flows/blockrelay/handle_relay_invs.go (80%) rename {network => app}/protocol/flows/blockrelay/hashes_queue_set.go (100%) rename {network => app}/protocol/flows/blockrelay/log.go (100%) rename {network => app}/protocol/flows/blockrelay/shared_requested_blocks.go (100%) rename {network => app}/protocol/flows/handshake/handshake.go (86%) rename {network => app}/protocol/flows/handshake/log.go (100%) rename {network => app}/protocol/flows/handshake/receiveversion.go (80%) rename {network => app}/protocol/flows/handshake/sendversion.go (80%) rename {network => app}/protocol/flows/ibd/handle_request_block_locator.go (85%) rename {network => app}/protocol/flows/ibd/handle_request_ibd_blocks.go (78%) rename {network => app}/protocol/flows/ibd/ibd.go (81%) rename {network => app}/protocol/flows/ibd/log.go (100%) rename {network => app}/protocol/flows/ibd/selectedtip/handle_request_selected_tip.go (81%) rename {network => app}/protocol/flows/ibd/selectedtip/request_selected_tip.go (84%) rename {network => app}/protocol/flows/ping/receive.go (80%) rename {network => app}/protocol/flows/ping/send.go (78%) rename {network => app}/protocol/flows/rejects/handle_rejects.go (82%) rename {network => app}/protocol/flows/relaytransactions/handle_relayed_transactions.go (82%) rename {network => app}/protocol/flows/relaytransactions/handle_requested_transactions.go (74%) rename {network => app}/protocol/flows/relaytransactions/shared_requested_transactions.go (100%) rename {network => app}/protocol/log.go (100%) rename {network => app}/protocol/manager.go (86%) rename {network => app}/protocol/peer/log.go (100%) rename {network => app}/protocol/peer/peer.go (94%) rename {network => app}/protocol/protocol.go (71%) rename {network => app}/protocol/protocolerrors/protocolerrors.go (100%) rename {cmd => executables}/addblock/addblock.go (92%) rename {cmd => executables}/addblock/config.go (100%) rename {cmd => executables}/addblock/import.go (98%) rename {cmd => executables}/gencerts/gencerts.go (100%) rename {cmd => executables}/kaspactl/config.go (99%) rename {cmd => executables}/kaspactl/httpclient.go (98%) rename {cmd => executables}/kaspactl/kaspactl.go (98%) rename {cmd => executables}/kaspaminer/client.go (90%) rename {cmd => executables}/kaspaminer/config.go (100%) rename {cmd => executables}/kaspaminer/docker/Dockerfile (100%) rename {cmd => executables}/kaspaminer/log.go (51%) rename {cmd => executables}/kaspaminer/main.go (96%) rename {cmd => executables}/kaspaminer/mineloop.go (97%) rename {cmd => executables}/txsigner/config.go (100%) rename {cmd => executables}/txsigner/txsigner.go (88%) rename infrastructure/{ => db}/database/README.md (100%) rename infrastructure/{ => db}/database/common_test.go (95%) rename infrastructure/{ => db}/database/cursor.go (100%) rename infrastructure/{ => db}/database/cursor_test.go (99%) rename infrastructure/{ => db}/database/dataaccessor.go (100%) rename infrastructure/{ => db}/database/database.go (100%) rename infrastructure/{ => db}/database/database_test.go (99%) rename infrastructure/{ => db}/database/doc.go (100%) rename infrastructure/{ => db}/database/errors.go (100%) rename infrastructure/{ => db}/database/ffldb/ff/flatfile.go (100%) rename infrastructure/{ => db}/database/ffldb/ff/flatfile_test.go (98%) rename infrastructure/{ => db}/database/ffldb/ff/flatfiledb.go (100%) rename infrastructure/{ => db}/database/ffldb/ff/location.go (100%) rename infrastructure/{ => db}/database/ffldb/ff/location_test.go (100%) rename infrastructure/{ => db}/database/ffldb/ff/lockablefile.go (100%) rename infrastructure/{ => db}/database/ffldb/ff/log.go (100%) rename infrastructure/{ => db}/database/ffldb/ff/read.go (98%) rename infrastructure/{ => db}/database/ffldb/ff/rollback.go (100%) rename infrastructure/{ => db}/database/ffldb/ff/write.go (100%) rename infrastructure/{ => db}/database/ffldb/ffldb.go (96%) rename infrastructure/{ => db}/database/ffldb/ffldb_test.go (98%) rename infrastructure/{ => db}/database/ffldb/initialize.go (100%) rename infrastructure/{ => db}/database/ffldb/ldb/cursor.go (98%) rename infrastructure/{ => db}/database/ffldb/ldb/cursor_test.go (99%) rename infrastructure/{ => db}/database/ffldb/ldb/leveldb.go (97%) rename infrastructure/{ => db}/database/ffldb/ldb/leveldb_test.go (98%) rename infrastructure/{ => db}/database/ffldb/ldb/log.go (100%) rename infrastructure/{ => db}/database/ffldb/ldb/options.go (100%) rename infrastructure/{ => db}/database/ffldb/ldb/transaction.go (98%) rename infrastructure/{ => db}/database/ffldb/ldb/transaction_test.go (98%) rename infrastructure/{ => db}/database/ffldb/log.go (100%) rename infrastructure/{ => db}/database/ffldb/transaction.go (95%) rename infrastructure/{ => db}/database/ffldb/transaction_test.go (99%) rename infrastructure/{ => db}/database/keys.go (100%) rename infrastructure/{ => db}/database/keys_test.go (100%) rename infrastructure/{ => db}/database/transaction.go (100%) rename infrastructure/{ => db}/database/transaction_test.go (99%) rename infrastructure/{ => db}/dbaccess/acceptanceindex.go (96%) rename infrastructure/{ => db}/dbaccess/block.go (97%) rename infrastructure/{ => db}/dbaccess/block_test.go (100%) rename infrastructure/{ => db}/dbaccess/blockindex.go (96%) rename infrastructure/{ => db}/dbaccess/common.go (91%) rename infrastructure/{ => db}/dbaccess/context.go (96%) rename infrastructure/{ => db}/dbaccess/dagstate.go (90%) rename infrastructure/{ => db}/dbaccess/db.go (84%) rename infrastructure/{ => db}/dbaccess/errors.go (71%) rename infrastructure/{ => db}/dbaccess/fee_data.go (94%) rename infrastructure/{ => db}/dbaccess/multiset.go (94%) rename infrastructure/{ => db}/dbaccess/peers.go (90%) rename infrastructure/{ => db}/dbaccess/reachability.go (97%) rename infrastructure/{ => db}/dbaccess/subnetwork.go (95%) rename infrastructure/{ => db}/dbaccess/utxo.go (94%) rename infrastructure/{ => db}/dbaccess/utxodiff.go (95%) rename infrastructure/{logs => logger}/doc.go (89%) rename infrastructure/{logs => logger}/logs.go (99%) rename {network => infrastructure/network}/addressmanager/addressmanager.go (94%) rename {network => infrastructure/network}/addressmanager/addressmanager_test.go (86%) rename {network => infrastructure/network}/addressmanager/doc.go (100%) rename {network => infrastructure/network}/addressmanager/internal_test.go (83%) rename {network => infrastructure/network}/addressmanager/knownaddress.go (90%) rename {network => infrastructure/network}/addressmanager/knownaddress_test.go (81%) rename {network => infrastructure/network}/addressmanager/log.go (100%) rename {network => infrastructure/network}/addressmanager/network.go (88%) rename {network => infrastructure/network}/addressmanager/network_test.go (97%) rename {network => infrastructure/network}/connmanager/connection_requests.go (100%) rename {network => infrastructure/network}/connmanager/connection_set.go (91%) rename {network => infrastructure/network}/connmanager/connmanager.go (96%) rename {network => infrastructure/network}/connmanager/incoming_connections.go (100%) rename {network => infrastructure/network}/connmanager/log.go (100%) rename {network => infrastructure/network}/connmanager/outgoing_connections.go (100%) rename {network => infrastructure/network}/dnsseed/log.go (100%) rename {network => infrastructure/network}/dnsseed/seed.go (87%) rename {network => infrastructure/network}/netadapter/id/id.go (100%) rename {network => infrastructure/network}/netadapter/log.go (100%) rename {network => infrastructure/network}/netadapter/netadapter.go (88%) rename {network => infrastructure/network}/netadapter/netadapter_test.go (86%) rename {network => infrastructure/network}/netadapter/netconnection.go (86%) rename {network => infrastructure/network}/netadapter/router/route.go (84%) rename {network => infrastructure/network}/netadapter/router/router.go (77%) rename {network => infrastructure/network}/netadapter/server/grpcserver/connection_loops.go (89%) rename {network => infrastructure/network}/netadapter/server/grpcserver/grpc_connection.go (92%) rename {network => infrastructure/network}/netadapter/server/grpcserver/grpc_server.go (95%) rename {network => infrastructure/network}/netadapter/server/grpcserver/log.go (100%) rename {network => infrastructure/network}/netadapter/server/grpcserver/p2pserver.go (91%) rename {netadapter => infrastructure/network/netadapter}/server/grpcserver/protowire/README.md (100%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/common.go (88%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/generate.go (100%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/message_addresses.go (59%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/message_block.go (68%) create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_block_locator.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_done_ibd_blocks.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_ibd_block.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_inv_relay_block.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_inv_transactions.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_ping.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_pong.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_reject.go rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/message_request_addresses.go (61%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/message_request_block_locator.go (57%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/message_request_ibd_blocks.go (57%) create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_request_next_ibd_blocks.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_request_relay_blocks.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_request_selected_tip.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_request_transactions.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_selected_tip.go rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/message_transaction.go (71%) create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_transaction_not_found.go create mode 100644 infrastructure/network/netadapter/server/grpcserver/protowire/message_verack.go rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/message_version.go (75%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/messages.pb.go (100%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/messages.proto (100%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/messages_grpc.pb.go (100%) rename {network => infrastructure/network}/netadapter/server/grpcserver/protowire/wire.go (53%) rename {network => infrastructure/network}/netadapter/server/server.go (94%) rename {network => infrastructure/network}/netadapter/standalone/log.go (100%) rename {network => infrastructure/network}/netadapter/standalone/minimal_net_adapter.go (77%) rename {network => infrastructure/network}/netadapter/standalone/routes.go (82%) rename {network => infrastructure/network}/rpc/client/CONTRIBUTORS (100%) rename {network => infrastructure/network}/rpc/client/README.md (100%) rename {network => infrastructure/network}/rpc/client/dag.go (98%) rename {network => infrastructure/network}/rpc/client/doc.go (100%) rename {network => infrastructure/network}/rpc/client/examples/httppost/README.md (100%) rename {network => infrastructure/network}/rpc/client/examples/httppost/main.go (92%) rename {network => infrastructure/network}/rpc/client/examples/websockets/README.md (100%) rename {network => infrastructure/network}/rpc/client/examples/websockets/main.go (90%) rename {network => infrastructure/network}/rpc/client/infrastructure.go (99%) rename {network => infrastructure/network}/rpc/client/log.go (81%) rename {network => infrastructure/network}/rpc/client/mining.go (95%) rename {network => infrastructure/network}/rpc/client/net.go (95%) rename {network => infrastructure/network}/rpc/client/notify.go (98%) rename {network => infrastructure/network}/rpc/client/rawrequest.go (97%) rename {network => infrastructure/network}/rpc/client/rawtransactions.go (84%) rename {network => infrastructure/network}/rpc/common.go (95%) rename {network => infrastructure/network}/rpc/handle_connect.go (90%) rename {network => infrastructure/network}/rpc/handle_debug_level.go (91%) rename {network => infrastructure/network}/rpc/handle_disconnect.go (89%) rename {network => infrastructure/network}/rpc/handle_get_block.go (97%) rename {network => infrastructure/network}/rpc/handle_get_block_count.go (100%) rename {network => infrastructure/network}/rpc/handle_get_block_dag_info.go (93%) rename {network => infrastructure/network}/rpc/handle_get_block_header.go (97%) rename {network => infrastructure/network}/rpc/handle_get_block_template.go (99%) rename {network => infrastructure/network}/rpc/handle_get_blocks.go (97%) rename {network => infrastructure/network}/rpc/handle_get_chain_from_block.go (97%) rename {network => infrastructure/network}/rpc/handle_get_connected_peer_info.go (94%) rename {network => infrastructure/network}/rpc/handle_get_connection_count.go (100%) rename {network => infrastructure/network}/rpc/handle_get_current_net.go (100%) rename {network => infrastructure/network}/rpc/handle_get_difficulty.go (100%) rename {network => infrastructure/network}/rpc/handle_get_headers.go (95%) rename {network => infrastructure/network}/rpc/handle_get_info.go (92%) rename {network => infrastructure/network}/rpc/handle_get_mempool_entry.go (91%) rename {network => infrastructure/network}/rpc/handle_get_mempool_info.go (86%) rename {network => infrastructure/network}/rpc/handle_get_peer_addresses.go (94%) rename {network => infrastructure/network}/rpc/handle_get_raw_mempool.go (96%) rename {network => infrastructure/network}/rpc/handle_get_selected_tip.go (94%) rename {network => infrastructure/network}/rpc/handle_get_selected_tip_hash.go (100%) rename {network => infrastructure/network}/rpc/handle_get_subnetwork.go (92%) rename {network => infrastructure/network}/rpc/handle_get_top_headers.go (94%) rename {network => infrastructure/network}/rpc/handle_get_tx_out.go (95%) rename {network => infrastructure/network}/rpc/handle_help.go (94%) rename {network => infrastructure/network}/rpc/handle_load_tx_filter.go (85%) rename {network => infrastructure/network}/rpc/handle_notify_blocks.go (100%) rename {network => infrastructure/network}/rpc/handle_notify_chain_changes.go (88%) rename {network => infrastructure/network}/rpc/handle_notify_new_transactions.go (96%) rename {network => infrastructure/network}/rpc/handle_rescan_block_filter.go (94%) rename {network => infrastructure/network}/rpc/handle_rescan_blocks.go (97%) rename {network => infrastructure/network}/rpc/handle_send_raw_transaction.go (88%) rename {network => infrastructure/network}/rpc/handle_session.go (77%) rename {network => infrastructure/network}/rpc/handle_stop.go (100%) rename {network => infrastructure/network}/rpc/handle_stop_notify_blocks.go (100%) rename {network => infrastructure/network}/rpc/handle_stop_notify_chain_changes.go (100%) rename {network => infrastructure/network}/rpc/handle_stop_notify_new_transactions.go (100%) rename {network => infrastructure/network}/rpc/handle_submit_block.go (94%) rename {network => infrastructure/network}/rpc/handle_uptime.go (100%) rename {network => infrastructure/network}/rpc/handle_version.go (88%) rename {network => infrastructure/network}/rpc/handle_websocket_help.go (95%) rename {network => infrastructure/network}/rpc/log.go (100%) rename {network => infrastructure/network}/rpc/model/CONTRIBUTORS (100%) rename {network => infrastructure/network}/rpc/model/README.md (100%) rename {network => infrastructure/network}/rpc/model/command_info.go (100%) rename {network => infrastructure/network}/rpc/model/command_info_test.go (99%) rename {network => infrastructure/network}/rpc/model/command_parse.go (100%) rename {network => infrastructure/network}/rpc/model/command_parse_test.go (99%) rename {network => infrastructure/network}/rpc/model/doc.go (96%) rename {network => infrastructure/network}/rpc/model/error.go (99%) rename {network => infrastructure/network}/rpc/model/error_test.go (97%) rename {network => infrastructure/network}/rpc/model/example_test.go (89%) rename {network => infrastructure/network}/rpc/model/export_test.go (100%) rename {network => infrastructure/network}/rpc/model/help.go (100%) rename {network => infrastructure/network}/rpc/model/help_test.go (99%) rename {network => infrastructure/network}/rpc/model/jsonrpc.go (98%) rename {network => infrastructure/network}/rpc/model/jsonrpc_errors.go (100%) rename {network => infrastructure/network}/rpc/model/jsonrpc_test.go (98%) rename {network => infrastructure/network}/rpc/model/register.go (100%) rename {network => infrastructure/network}/rpc/model/register_test.go (99%) rename {network => infrastructure/network}/rpc/model/rpc_commands.go (100%) rename {network => infrastructure/network}/rpc/model/rpc_commands_test.go (99%) rename {network => infrastructure/network}/rpc/model/rpc_results.go (99%) rename {network => infrastructure/network}/rpc/model/rpc_results_test.go (97%) rename {network => infrastructure/network}/rpc/model/rpc_websocket_commands.go (100%) rename {network => infrastructure/network}/rpc/model/rpc_websocket_commands_test.go (99%) rename {network => infrastructure/network}/rpc/model/rpc_websocket_notifications.go (100%) rename {network => infrastructure/network}/rpc/model/rpc_websocket_notifications_test.go (99%) rename {network => infrastructure/network}/rpc/model/rpc_websocket_results.go (100%) rename {network => infrastructure/network}/rpc/model/rpc_websocket_results_test.go (94%) rename {network => infrastructure/network}/rpc/rpcserver.go (99%) rename {network => infrastructure/network}/rpc/rpcserverhelp.go (99%) rename {network => infrastructure/network}/rpc/rpcserverhelp_test.go (100%) rename {network => infrastructure/network}/rpc/rpcwebsocket.go (98%) rename {network => infrastructure/network}/rpc/utils.go (100%) rename infrastructure/{ => os}/limits/limits_plan9.go (100%) rename infrastructure/{ => os}/limits/limits_unix.go (100%) rename infrastructure/{ => os}/limits/limits_windows.go (100%) rename infrastructure/{ => os}/signal/log.go (100%) rename infrastructure/{ => os}/signal/signal.go (100%) rename infrastructure/{ => os}/signal/signalsigterm.go (100%) delete mode 100644 network/domainmessage/base_message.go delete mode 100644 network/netadapter/server/grpcserver/protowire/README.md delete mode 100644 network/netadapter/server/grpcserver/protowire/message_block_locator.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_done_ibd_blocks.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_ibd_block.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_inv_relay_block.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_inv_transactions.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_ping.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_pong.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_reject.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_request_next_ibd_blocks.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_request_relay_blocks.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_request_selected_tip.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_request_transactions.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_selected_tip.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_transaction_not_found.go delete mode 100644 network/netadapter/server/grpcserver/protowire/message_verack.go delete mode 100755 test.sh delete mode 100644 upgrade.go diff --git a/README.md b/README.md index 2dbd6e811..2e50a2b13 100644 --- a/README.md +++ b/README.md @@ -40,10 +40,8 @@ recommended that `GOPATH` is set to a directory in your home directory such as ```bash $ git clone https://github.com/kaspanet/kaspad $GOPATH/src/github.com/kaspanet/kaspad $ cd $GOPATH/src/github.com/kaspanet/kaspad -$ ./test.sh $ go install . ./cmd/... ``` -`./test.sh` tests can be skipped, but some things might not run correctly on your system if tests fail. - Kaspad (and utilities) should now be installed in `$GOPATH/bin`. If you did not already add the bin directory to your system path during Go installation, diff --git a/app/app.go b/app/app.go index 0c4c5e5b9..975aa6c21 100644 --- a/app/app.go +++ b/app/app.go @@ -4,24 +4,24 @@ import ( "fmt" "sync/atomic" - "github.com/kaspanet/kaspad/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" - "github.com/kaspanet/kaspad/network/netadapter/id" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/blockdag/indexers" "github.com/kaspanet/kaspad/domain/mempool" "github.com/kaspanet/kaspad/domain/mining" "github.com/kaspanet/kaspad/domain/txscript" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" - "github.com/kaspanet/kaspad/infrastructure/signal" - "github.com/kaspanet/kaspad/network/connmanager" - "github.com/kaspanet/kaspad/network/dnsseed" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter" - "github.com/kaspanet/kaspad/network/protocol" - "github.com/kaspanet/kaspad/network/rpc" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/network/connmanager" + "github.com/kaspanet/kaspad/infrastructure/network/dnsseed" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/rpc" + "github.com/kaspanet/kaspad/infrastructure/os/signal" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/panics" ) @@ -143,8 +143,8 @@ func New(cfg *config.Config, databaseContext *dbaccess.DatabaseContext, interrup func (a *App) maybeSeedFromDNS() { if !a.cfg.DisableDNSSeed { - dnsseed.SeedFromDNS(a.cfg.NetParams(), a.cfg.DNSSeed, domainmessage.SFNodeNetwork, false, nil, - a.cfg.Lookup, func(addresses []*domainmessage.NetAddress) { + dnsseed.SeedFromDNS(a.cfg.NetParams(), a.cfg.DNSSeed, appmessage.SFNodeNetwork, false, nil, + a.cfg.Lookup, func(addresses []*appmessage.NetAddress) { // Kaspad uses a lookup of the dns seeder here. Since seeder returns // IPs of nodes and not its own IP, we can not know real IP of // source. So we'll take first returned address as source. diff --git a/network/domainmessage/README.md b/app/appmessage/README.md similarity index 97% rename from network/domainmessage/README.md rename to app/appmessage/README.md index 373d6993c..579b74e2c 100644 --- a/network/domainmessage/README.md +++ b/app/appmessage/README.md @@ -36,7 +36,7 @@ to a remote node running a kaspa peer. Example syntax is: // Reads and validates the next kaspa message from conn using the // protocol version pver and the kaspa network kaspanet. The returns - // are a domainmessage.Message, a []byte which contains the unmarshalled + // are a appmessage.Message, a []byte which contains the unmarshalled // raw payload, and a possible error. msg, rawPayload, err := wire.ReadMessage(conn, pver, kaspanet) if err != nil { diff --git a/domainmessage/base_message.go b/app/appmessage/base_message.go similarity index 95% rename from domainmessage/base_message.go rename to app/appmessage/base_message.go index 7fec1e6f7..bb2d42544 100644 --- a/domainmessage/base_message.go +++ b/app/appmessage/base_message.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import "time" diff --git a/network/domainmessage/bench_test.go b/app/appmessage/bench_test.go similarity index 99% rename from network/domainmessage/bench_test.go rename to app/appmessage/bench_test.go index 79a0124a8..1a70d13a2 100644 --- a/network/domainmessage/bench_test.go +++ b/app/appmessage/bench_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "bytes" diff --git a/network/domainmessage/blockheader.go b/app/appmessage/blockheader.go similarity index 94% rename from network/domainmessage/blockheader.go rename to app/appmessage/blockheader.go index 5af6264c1..797b3839a 100644 --- a/network/domainmessage/blockheader.go +++ b/app/appmessage/blockheader.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "fmt" @@ -88,7 +88,7 @@ func (h *BlockHeader) IsGenesis() bool { // KaspaDecode decodes r using the kaspa protocol encoding into the receiver. // This is part of the Message interface implementation. // See Deserialize for decoding block headers stored to disk, such as in a -// database, as opposed to decoding block headers from the domainmessage. +// database, as opposed to decoding block headers from the appmessage. func (h *BlockHeader) KaspaDecode(r io.Reader, pver uint32) error { return readBlockHeader(r, pver, h) } @@ -96,7 +96,7 @@ func (h *BlockHeader) KaspaDecode(r io.Reader, pver uint32) error { // KaspaEncode encodes the receiver to w using the kaspa protocol encoding. // This is part of the Message interface implementation. // See Serialize for encoding block headers to be stored to disk, such as in a -// database, as opposed to encoding block headers for the domainmessage. +// database, as opposed to encoding block headers for the appmessage. func (h *BlockHeader) KaspaEncode(w io.Writer, pver uint32) error { return writeBlockHeader(w, pver, h) } @@ -105,7 +105,7 @@ func (h *BlockHeader) KaspaEncode(w io.Writer, pver uint32) error { // that is suitable for long-term storage such as a database while respecting // the Version field. func (h *BlockHeader) Deserialize(r io.Reader) error { - // At the current time, there is no difference between the domainmessage encoding + // At the current time, there is no difference between the appmessage encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of readBlockHeader. return readBlockHeader(r, 0, h) @@ -115,7 +115,7 @@ func (h *BlockHeader) Deserialize(r io.Reader) error { // that is suitable for long-term storage such as a database while respecting // the Version field. func (h *BlockHeader) Serialize(w io.Writer) error { - // At the current time, there is no difference between the domainmessage encoding + // At the current time, there is no difference between the appmessage encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of writeBlockHeader. return writeBlockHeader(w, 0, h) @@ -149,7 +149,7 @@ func NewBlockHeader(version int32, parentHashes []*daghash.Hash, hashMerkleRoot // readBlockHeader reads a kaspa block header from r. See Deserialize for // decoding block headers stored to disk, such as in a database, as opposed to -// decoding from the domainmessage. +// decoding from the appmessage. func readBlockHeader(r io.Reader, pver uint32, bh *BlockHeader) error { var numParentBlocks byte err := readElements(r, &bh.Version, &numParentBlocks) @@ -175,7 +175,7 @@ func readBlockHeader(r io.Reader, pver uint32, bh *BlockHeader) error { // writeBlockHeader writes a kaspa block header to w. See Serialize for // encoding block headers to be stored to disk, such as in a database, as -// opposed to encoding for the domainmessage. +// opposed to encoding for the appmessage. func writeBlockHeader(w io.Writer, pver uint32, bh *BlockHeader) error { timestamp := bh.Timestamp.UnixMilliseconds() if err := writeElements(w, bh.Version, bh.NumParentBlocks()); err != nil { diff --git a/network/domainmessage/blockheader_test.go b/app/appmessage/blockheader_test.go similarity index 96% rename from network/domainmessage/blockheader_test.go rename to app/appmessage/blockheader_test.go index 8dd8d0265..8f4d7e529 100644 --- a/network/domainmessage/blockheader_test.go +++ b/app/appmessage/blockheader_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "bytes" @@ -47,7 +47,7 @@ func TestBlockHeader(t *testing.T) { } } -// TestBlockHeaderEncoding tests the BlockHeader domainmessage encode and decode for various +// TestBlockHeaderEncoding tests the BlockHeader appmessage encode and decode for various // protocol versions. func TestBlockHeaderEncoding(t *testing.T) { nonce := uint64(123123) // 0x000000000001e0f3 @@ -66,7 +66,7 @@ func TestBlockHeaderEncoding(t *testing.T) { Nonce: nonce, } - // baseBlockHdrEncoded is the domainmessage encoded bytes of baseBlockHdr. + // baseBlockHdrEncoded is the appmessage encoded bytes of baseBlockHdr. baseBlockHdrEncoded := []byte{ 0x01, 0x00, 0x00, 0x00, // Version 1 0x02, // NumParentBlocks @@ -99,7 +99,7 @@ func TestBlockHeaderEncoding(t *testing.T) { in *BlockHeader // Data to encode out *BlockHeader // Expected decoded data buf []byte // Encoded data - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding }{ // Latest protocol version. { @@ -112,7 +112,7 @@ func TestBlockHeaderEncoding(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. var buf bytes.Buffer err := writeBlockHeader(&buf, test.pver, test.in) if err != nil { @@ -137,7 +137,7 @@ func TestBlockHeaderEncoding(t *testing.T) { continue } - // Decode the block header from domainmessage format. + // Decode the block header from appmessage format. var bh BlockHeader rbuf := bytes.NewReader(test.buf) err = readBlockHeader(rbuf, test.pver, &bh) @@ -182,7 +182,7 @@ func TestBlockHeaderSerialize(t *testing.T) { Nonce: nonce, } - // baseBlockHdrEncoded is the domainmessage encoded bytes of baseBlockHdr. + // baseBlockHdrEncoded is the appmessage encoded bytes of baseBlockHdr. baseBlockHdrEncoded := []byte{ 0x01, 0x00, 0x00, 0x00, // Version 1 0x02, // NumParentBlocks diff --git a/network/domainmessage/common.go b/app/appmessage/common.go similarity index 99% rename from network/domainmessage/common.go rename to app/appmessage/common.go index ac47d1a57..2613d8849 100644 --- a/network/domainmessage/common.go +++ b/app/appmessage/common.go @@ -2,12 +2,12 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "encoding/binary" "fmt" - "github.com/kaspanet/kaspad/network/netadapter/id" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" "github.com/kaspanet/kaspad/util/binaryserializer" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/mstime" diff --git a/network/domainmessage/common_test.go b/app/appmessage/common_test.go similarity index 90% rename from network/domainmessage/common_test.go rename to app/appmessage/common_test.go index 25c25596a..f4c9aa1b0 100644 --- a/network/domainmessage/common_test.go +++ b/app/appmessage/common_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "bytes" @@ -57,7 +57,7 @@ var exampleUTXOCommitment = &daghash.Hash{ 0x65, 0x9C, 0x79, 0x3C, 0xE3, 0x70, 0xD9, 0x5F, } -// TestElementEncoding tests domainmessage encode and decode for various element types. This +// TestElementEncoding tests appmessage encode and decode for various element types. This // is mainly to test the "fast" paths in readElement and writeElement which use // type assertions to avoid reflection when possible. func TestElementEncoding(t *testing.T) { @@ -129,7 +129,7 @@ func TestElementEncoding(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Write to domainmessage format. + // Write to appmessage format. var buf bytes.Buffer err := WriteElement(&buf, test.in) if err != nil { @@ -142,7 +142,7 @@ func TestElementEncoding(t *testing.T) { continue } - // Read from domainmessage format. + // Read from appmessage format. rbuf := bytes.NewReader(test.buf) val := test.in if reflect.ValueOf(test.in).Kind() != reflect.Ptr { @@ -165,7 +165,7 @@ func TestElementEncoding(t *testing.T) { } } -// TestElementEncodingErrors performs negative tests against domainmessage encode and decode +// TestElementEncodingErrors performs negative tests against appmessage encode and decode // of various element types to confirm error paths work correctly. func TestElementEncodingErrors(t *testing.T) { type writeElementReflect int32 @@ -209,7 +209,7 @@ func TestElementEncodingErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. w := newFixedWriter(test.max) err := WriteElement(w, test.in) if !errors.Is(err, test.writeErr) { @@ -218,7 +218,7 @@ func TestElementEncodingErrors(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. r := newFixedReader(test.max, nil) val := test.in if reflect.ValueOf(test.in).Kind() != reflect.Ptr { @@ -233,7 +233,7 @@ func TestElementEncodingErrors(t *testing.T) { } } -// TestVarIntEncoding tests domainmessage encode and decode for variable length integers. +// TestVarIntEncoding tests appmessage encode and decode for variable length integers. func TestVarIntEncoding(t *testing.T) { tests := []struct { value uint64 // Value to encode @@ -266,7 +266,7 @@ func TestVarIntEncoding(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. buf := &bytes.Buffer{} err := WriteVarInt(buf, test.value) if err != nil { @@ -279,7 +279,7 @@ func TestVarIntEncoding(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. rbuf := bytes.NewReader(test.buf) val, err := ReadVarInt(rbuf) if err != nil { @@ -294,7 +294,7 @@ func TestVarIntEncoding(t *testing.T) { } } -// TestVarIntEncodingErrors performs negative tests against domainmessage encode and decode +// TestVarIntEncodingErrors performs negative tests against appmessage encode and decode // of variable length integers to confirm error paths work correctly. func TestVarIntEncodingErrors(t *testing.T) { tests := []struct { @@ -319,7 +319,7 @@ func TestVarIntEncodingErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. w := newFixedWriter(test.max) err := WriteVarInt(w, test.in) if !errors.Is(err, test.writeErr) { @@ -328,7 +328,7 @@ func TestVarIntEncodingErrors(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. r := newFixedReader(test.max, test.buf) _, err = ReadVarInt(r) if !errors.Is(err, test.readErr) { @@ -347,7 +347,7 @@ func TestVarIntNonCanonical(t *testing.T) { tests := []struct { name string // Test name for easier identification in []byte // Value to decode - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding }{ { "0 encoded with 3 bytes", []byte{0xfd, 0x00, 0x00}, @@ -379,7 +379,7 @@ func TestVarIntNonCanonical(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Decode from domainmessage format. + // Decode from appmessage format. rbuf := bytes.NewReader(test.in) val, err := ReadVarInt(rbuf) if msgErr := &(MessageError{}); !errors.As(err, &msgErr) { @@ -430,7 +430,7 @@ func TestVarIntSerializeSize(t *testing.T) { } } -// TestVarStringEncoding tests domainmessage encode and decode for variable length strings. +// TestVarStringEncoding tests appmessage encode and decode for variable length strings. func TestVarStringEncoding(t *testing.T) { pver := ProtocolVersion @@ -441,7 +441,7 @@ func TestVarStringEncoding(t *testing.T) { in string // String to encode out string // String to decoded value buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding }{ // Latest protocol version. // Empty string @@ -454,7 +454,7 @@ func TestVarStringEncoding(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. var buf bytes.Buffer err := WriteVarString(&buf, test.in) if err != nil { @@ -467,7 +467,7 @@ func TestVarStringEncoding(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. rbuf := bytes.NewReader(test.buf) val, err := ReadVarString(rbuf, test.pver) if err != nil { @@ -482,7 +482,7 @@ func TestVarStringEncoding(t *testing.T) { } } -// TestVarStringEncodingErrors performs negative tests against domainmessage encode and +// TestVarStringEncodingErrors performs negative tests against appmessage encode and // decode of variable length strings to confirm error paths work correctly. func TestVarStringEncodingErrors(t *testing.T) { pver := ProtocolVersion @@ -493,7 +493,7 @@ func TestVarStringEncodingErrors(t *testing.T) { tests := []struct { in string // Value to encode buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding max int // Max size of fixed buffer to induce errors writeErr error // Expected write error readErr error // Expected read error @@ -509,7 +509,7 @@ func TestVarStringEncodingErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. w := newFixedWriter(test.max) err := WriteVarString(w, test.in) if !errors.Is(err, test.writeErr) { @@ -518,7 +518,7 @@ func TestVarStringEncodingErrors(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. r := newFixedReader(test.max, test.buf) _, err = ReadVarString(r, test.pver) if !errors.Is(err, test.readErr) { @@ -538,7 +538,7 @@ func TestVarStringOverflowErrors(t *testing.T) { tests := []struct { buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding err error // Expected error }{ {[]byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, @@ -549,7 +549,7 @@ func TestVarStringOverflowErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Decode from domainmessage format. + // Decode from appmessage format. rbuf := bytes.NewReader(test.buf) _, err := ReadVarString(rbuf, test.pver) if reflect.TypeOf(err) != reflect.TypeOf(test.err) { @@ -561,7 +561,7 @@ func TestVarStringOverflowErrors(t *testing.T) { } -// TestVarBytesEncoding tests domainmessage encode and decode for variable length byte array. +// TestVarBytesEncoding tests appmessage encode and decode for variable length byte array. func TestVarBytesEncoding(t *testing.T) { pver := ProtocolVersion @@ -571,7 +571,7 @@ func TestVarBytesEncoding(t *testing.T) { tests := []struct { in []byte // Byte Array to write buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding }{ // Latest protocol version. // Empty byte array @@ -584,7 +584,7 @@ func TestVarBytesEncoding(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. var buf bytes.Buffer err := WriteVarBytes(&buf, test.pver, test.in) if err != nil { @@ -597,7 +597,7 @@ func TestVarBytesEncoding(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. rbuf := bytes.NewReader(test.buf) val, err := ReadVarBytes(rbuf, test.pver, MaxMessagePayload, "test payload") @@ -613,7 +613,7 @@ func TestVarBytesEncoding(t *testing.T) { } } -// TestVarBytesEncodingErrors performs negative tests against domainmessage encode and +// TestVarBytesEncodingErrors performs negative tests against appmessage encode and // decode of variable length byte arrays to confirm error paths work correctly. func TestVarBytesEncodingErrors(t *testing.T) { pver := ProtocolVersion @@ -624,7 +624,7 @@ func TestVarBytesEncodingErrors(t *testing.T) { tests := []struct { in []byte // Byte Array to write buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding max int // Max size of fixed buffer to induce errors writeErr error // Expected write error readErr error // Expected read error @@ -640,7 +640,7 @@ func TestVarBytesEncodingErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. w := newFixedWriter(test.max) err := WriteVarBytes(w, test.pver, test.in) if !errors.Is(err, test.writeErr) { @@ -649,7 +649,7 @@ func TestVarBytesEncodingErrors(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. r := newFixedReader(test.max, test.buf) _, err = ReadVarBytes(r, test.pver, MaxMessagePayload, "test payload") @@ -670,7 +670,7 @@ func TestVarBytesOverflowErrors(t *testing.T) { tests := []struct { buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding err error // Expected error }{ {[]byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, @@ -681,7 +681,7 @@ func TestVarBytesOverflowErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Decode from domainmessage format. + // Decode from appmessage format. rbuf := bytes.NewReader(test.buf) _, err := ReadVarBytes(rbuf, test.pver, MaxMessagePayload, "test payload") diff --git a/network/domainmessage/doc.go b/app/appmessage/doc.go similarity index 80% rename from network/domainmessage/doc.go rename to app/appmessage/doc.go index 39a893409..24aaeafb9 100644 --- a/network/domainmessage/doc.go +++ b/app/appmessage/doc.go @@ -1,8 +1,8 @@ /* -Package domainmessage implements the kaspa domainmessage protocol. +Package appmessage implements the kaspa appmessage protocol. At a high level, this package provides support for marshalling and unmarshalling -supported kaspa messages to and from the domainmessage. This package does not deal +supported kaspa messages to and from the appmessage. This package does not deal with the specifics of message handling such as what to do when a message is received. This provides the caller with a high level of flexibility. @@ -19,7 +19,7 @@ Message which allows messages of any type to be read, written, or passed around through channels, functions, etc. In addition, concrete implementations of most of the currently supported kaspa messages are provided. For these supported messages, all of the details of marshalling and unmarshalling to and from the -domainmessage using kaspa encoding are handled so the caller doesn't have to concern +appmessage using kaspa encoding are handled so the caller doesn't have to concern themselves with the specifics. Message Interaction @@ -55,7 +55,7 @@ Protocol Version The protocol version should be negotiated with the remote peer at a higher level than this package via the version (MsgVersion) message exchange, however, -this package provides the domainmessage.ProtocolVersion constant which indicates the +this package provides the appmessage.ProtocolVersion constant which indicates the latest protocol version this package supports and is typically the value to use for all outbound connections before a potentially lower protocol version is negotiated. @@ -66,11 +66,11 @@ The kaspa network is a magic number which is used to identify the start of a message and which kaspa network the message applies to. This package provides the following constants: - domainmessage.Mainnet - domainmessage.Testnet (Test network) - domainmessage.Regtest (Regression test network) - domainmessage.Simnet (Simulation test network) - domainmessage.Devnet (Development network) + appmessage.Mainnet + appmessage.Testnet (Test network) + appmessage.Regtest (Regression test network) + appmessage.Simnet (Simulation test network) + appmessage.Devnet (Development network) Determining Message Type @@ -82,43 +82,43 @@ switch or type assertion. An example of a type switch follows: // Assumes msg is already a valid concrete message such as one created // via NewMsgVersion or read via ReadMessage. switch msg := msg.(type) { - case *domainmessage.MsgVersion: + case *appmessage.MsgVersion: // The message is a pointer to a MsgVersion struct. fmt.Printf("Protocol version: %d", msg.ProtocolVersion) - case *domainmessage.MsgBlock: + case *appmessage.MsgBlock: // The message is a pointer to a MsgBlock struct. fmt.Printf("Number of tx in block: %d", msg.Header.TxnCount) } Reading Messages -In order to unmarshall kaspa messages from the domainmessage, use the ReadMessage +In order to unmarshall kaspa messages from the appmessage, use the ReadMessage function. It accepts any io.Reader, but typically this will be a net.Conn to a remote node running a kaspa peer. Example syntax is: // Reads and validates the next kaspa message from conn using the // protocol version pver and the kaspa network kaspaNet. The returns - // are a domainmessage.Message, a []byte which contains the unmarshalled + // are a appmessage.Message, a []byte which contains the unmarshalled // raw payload, and a possible error. - msg, rawPayload, err := domainmessage.ReadMessage(conn, pver, kaspaNet) + msg, rawPayload, err := appmessage.ReadMessage(conn, pver, kaspaNet) if err != nil { // Log and handle the error } Writing Messages -In order to marshall kaspa messages to the domainmessage, use the WriteMessage +In order to marshall kaspa messages to the appmessage, use the WriteMessage function. It accepts any io.Writer, but typically this will be a net.Conn to a remote node running a kaspa peer. Example syntax to request addresses from a remote peer is: // Create a new getaddr kaspa message. - msg := domainmessage.NewMsgRequestAddresses() + msg := appmessage.NewMsgRequestAddresses() // Writes a kaspa message msg to conn using the protocol version // pver, and the kaspa network kaspaNet. The return is a possible // error. - err := domainmessage.WriteMessage(conn, msg, pver, kaspaNet) + err := appmessage.WriteMessage(conn, msg, pver, kaspaNet) if err != nil { // Log and handle the error } @@ -127,8 +127,8 @@ Errors Errors returned by this package are either the raw errors provided by underlying calls to read/write from streams such as io.EOF, io.ErrUnexpectedEOF, and -io.ErrShortWrite, or of type domainmessage.MessageError. This allows the caller to +io.ErrShortWrite, or of type appmessage.MessageError. This allows the caller to differentiate between general IO errors and malformed messages through type assertions. */ -package domainmessage +package appmessage diff --git a/network/domainmessage/error.go b/app/appmessage/error.go similarity index 98% rename from network/domainmessage/error.go rename to app/appmessage/error.go index 656d01c30..134fef0c7 100644 --- a/network/domainmessage/error.go +++ b/app/appmessage/error.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "fmt" diff --git a/network/domainmessage/fakemessage_test.go b/app/appmessage/fakemessage_test.go similarity index 91% rename from network/domainmessage/fakemessage_test.go rename to app/appmessage/fakemessage_test.go index 20c7bee11..cbf783f96 100644 --- a/network/domainmessage/fakemessage_test.go +++ b/app/appmessage/fakemessage_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import "io" @@ -15,7 +15,7 @@ type fakeMessage struct { forceLenErr bool } -// KaspaDecode doesn't do anything. It just satisfies the domainmessage.Message +// KaspaDecode doesn't do anything. It just satisfies the appmessage.Message // interface. func (msg *fakeMessage) KaspaDecode(r io.Reader, pver uint32) error { return nil @@ -23,7 +23,7 @@ func (msg *fakeMessage) KaspaDecode(r io.Reader, pver uint32) error { // KaspaEncode writes the payload field of the fake message or forces an error // if the forceEncodeErr flag of the fake message is set. It also satisfies the -// domainmessage.Message interface. +// appmessage.Message interface. func (msg *fakeMessage) KaspaEncode(w io.Writer, pver uint32) error { if msg.forceEncodeErr { err := &MessageError{ diff --git a/network/domainmessage/fixedIO_test.go b/app/appmessage/fixedIO_test.go similarity index 98% rename from network/domainmessage/fixedIO_test.go rename to app/appmessage/fixedIO_test.go index 3d2a3ac7b..24175e9c0 100644 --- a/network/domainmessage/fixedIO_test.go +++ b/app/appmessage/fixedIO_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "bytes" diff --git a/network/domainmessage/message.go b/app/appmessage/message.go similarity index 99% rename from network/domainmessage/message.go rename to app/appmessage/message.go index 59baa26d4..1009e61a3 100644 --- a/network/domainmessage/message.go +++ b/app/appmessage/message.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "fmt" diff --git a/network/domainmessage/msgaddresses.go b/app/appmessage/msgaddresses.go similarity index 99% rename from network/domainmessage/msgaddresses.go rename to app/appmessage/msgaddresses.go index cf813f1e6..387666a34 100644 --- a/network/domainmessage/msgaddresses.go +++ b/app/appmessage/msgaddresses.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "fmt" diff --git a/network/domainmessage/msgaddresses_test.go b/app/appmessage/msgaddresses_test.go similarity index 98% rename from network/domainmessage/msgaddresses_test.go rename to app/appmessage/msgaddresses_test.go index 886a7b7c1..38d50c550 100644 --- a/network/domainmessage/msgaddresses_test.go +++ b/app/appmessage/msgaddresses_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "net" diff --git a/network/domainmessage/msgblock.go b/app/appmessage/msgblock.go similarity index 91% rename from network/domainmessage/msgblock.go rename to app/appmessage/msgblock.go index 2298d4dad..e34fa9162 100644 --- a/network/domainmessage/msgblock.go +++ b/app/appmessage/msgblock.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "bytes" @@ -60,7 +60,7 @@ func (msg *MsgBlock) ClearTransactions() { // KaspaDecode decodes r using the kaspa protocol encoding into the receiver. // This is part of the Message interface implementation. // See Deserialize for decoding blocks stored to disk, such as in a database, as -// opposed to decoding blocks from the domainmessage. +// opposed to decoding blocks from the appmessage. func (msg *MsgBlock) KaspaDecode(r io.Reader, pver uint32) error { err := readBlockHeader(r, pver, &msg.Header) if err != nil { @@ -97,14 +97,14 @@ func (msg *MsgBlock) KaspaDecode(r io.Reader, pver uint32) error { // Deserialize decodes a block from r into the receiver using a format that is // suitable for long-term storage such as a database while respecting the // Version field in the block. This function differs from KaspaDecode in that -// KaspaDecode decodes from the kaspa domainmessage protocol as it was sent across the -// network. The domainmessage encoding can technically differ depending on the protocol +// KaspaDecode decodes from the kaspa appmessage protocol as it was sent across the +// network. The appmessage encoding can technically differ depending on the protocol // version and doesn't even really need to match the format of a stored block at // all. As of the time this comment was written, the encoded block is the same // in both instances, but there is a distinct difference and separating the two // allows the API to be flexible enough to deal with changes. func (msg *MsgBlock) Deserialize(r io.Reader) error { - // At the current time, there is no difference between the domainmessage encoding + // At the current time, there is no difference between the appmessage encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of KaspaDecode. return msg.KaspaDecode(r, 0) @@ -117,9 +117,9 @@ func (msg *MsgBlock) Deserialize(r io.Reader) error { func (msg *MsgBlock) DeserializeTxLoc(r *bytes.Buffer) ([]TxLoc, error) { fullLen := r.Len() - // At the current time, there is no difference between the domainmessage encoding + // At the current time, there is no difference between the appmessage encoding // at protocol version 0 and the stable long-term storage format. As - // a result, make use of existing domainmessage protocol functions. + // a result, make use of existing appmessage protocol functions. err := readBlockHeader(r, 0, &msg.Header) if err != nil { return nil, err @@ -160,7 +160,7 @@ func (msg *MsgBlock) DeserializeTxLoc(r *bytes.Buffer) ([]TxLoc, error) { // KaspaEncode encodes the receiver to w using the kaspa protocol encoding. // This is part of the Message interface implementation. // See Serialize for encoding blocks to be stored to disk, such as in a -// database, as opposed to encoding blocks for the domainmessage. +// database, as opposed to encoding blocks for the appmessage. func (msg *MsgBlock) KaspaEncode(w io.Writer, pver uint32) error { err := writeBlockHeader(w, pver, &msg.Header) if err != nil { @@ -185,14 +185,14 @@ func (msg *MsgBlock) KaspaEncode(w io.Writer, pver uint32) error { // Serialize encodes the block to w using a format that suitable for long-term // storage such as a database while respecting the Version field in the block. // This function differs from KaspaEncode in that KaspaEncode encodes the block to -// the kaspa domainmessage protocol in order to be sent across the network. The domainmessage +// the kaspa appmessage protocol in order to be sent across the network. The appmessage // encoding can technically differ depending on the protocol version and doesn't // even really need to match the format of a stored block at all. As of the // time this comment was written, the encoded block is the same in both // instances, but there is a distinct difference and separating the two allows // the API to be flexible enough to deal with changes. func (msg *MsgBlock) Serialize(w io.Writer) error { - // At the current time, there is no difference between the domainmessage encoding + // At the current time, there is no difference between the appmessage encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of KaspaEncode. return msg.KaspaEncode(w, 0) diff --git a/network/domainmessage/msgblock_test.go b/app/appmessage/msgblock_test.go similarity index 96% rename from network/domainmessage/msgblock_test.go rename to app/appmessage/msgblock_test.go index 5e4e2a863..d101a722b 100644 --- a/network/domainmessage/msgblock_test.go +++ b/app/appmessage/msgblock_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "bytes" @@ -144,7 +144,7 @@ func TestConvertToPartial(t *testing.T) { } } -// TestBlockEncoding tests the MsgBlock domainmessage encode and decode for various numbers +// TestBlockEncoding tests the MsgBlock appmessage encode and decode for various numbers // of transaction inputs and outputs and protocol versions. func TestBlockEncoding(t *testing.T) { tests := []struct { @@ -152,7 +152,7 @@ func TestBlockEncoding(t *testing.T) { out *MsgBlock // Expected decoded message buf []byte // Encoded value txLocs []TxLoc // Expected transaction locations - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding }{ // Latest protocol version. { @@ -166,7 +166,7 @@ func TestBlockEncoding(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode the message to domainmessage format. + // Encode the message to appmessage format. var buf bytes.Buffer err := test.in.KaspaEncode(&buf, test.pver) if err != nil { @@ -179,7 +179,7 @@ func TestBlockEncoding(t *testing.T) { continue } - // Decode the message from domainmessage format. + // Decode the message from appmessage format. var msg MsgBlock rbuf := bytes.NewReader(test.buf) err = msg.KaspaDecode(rbuf, test.pver) @@ -195,7 +195,7 @@ func TestBlockEncoding(t *testing.T) { } } -// TestBlockEncodingErrors performs negative tests against domainmessage encode and decode +// TestBlockEncodingErrors performs negative tests against appmessage encode and decode // of MsgBlock to confirm error paths work correctly. func TestBlockEncodingErrors(t *testing.T) { pver := ProtocolVersion @@ -203,7 +203,7 @@ func TestBlockEncodingErrors(t *testing.T) { tests := []struct { in *MsgBlock // Value to encode buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding max int // Max size of fixed buffer to induce errors writeErr error // Expected write error readErr error // Expected read error @@ -236,7 +236,7 @@ func TestBlockEncodingErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. w := newFixedWriter(test.max) err := test.in.KaspaEncode(w, test.pver) if !errors.Is(err, test.writeErr) { @@ -245,7 +245,7 @@ func TestBlockEncodingErrors(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. var msg MsgBlock r := newFixedReader(test.max, test.buf) err = msg.KaspaDecode(r, test.pver) @@ -324,7 +324,7 @@ func TestBlockSerialize(t *testing.T) { } } -// TestBlockSerializeErrors performs negative tests against domainmessage encode and +// TestBlockSerializeErrors performs negative tests against appmessage encode and // decode of MsgBlock to confirm error paths work correctly. func TestBlockSerializeErrors(t *testing.T) { tests := []struct { @@ -401,7 +401,7 @@ func TestBlockOverflowErrors(t *testing.T) { tests := []struct { buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding err error // Expected error }{ // Block that claims to have ~uint64(0) transactions. @@ -440,7 +440,7 @@ func TestBlockOverflowErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Decode from domainmessage format. + // Decode from appmessage format. var msg MsgBlock r := bytes.NewReader(test.buf) err := msg.KaspaDecode(r, test.pver) @@ -450,7 +450,7 @@ func TestBlockOverflowErrors(t *testing.T) { continue } - // Deserialize from domainmessage format. + // Deserialize from appmessage format. r = bytes.NewReader(test.buf) err = msg.Deserialize(r) if reflect.TypeOf(err) != reflect.TypeOf(test.err) { @@ -459,7 +459,7 @@ func TestBlockOverflowErrors(t *testing.T) { continue } - // Deserialize with transaction location info from domainmessage format. + // Deserialize with transaction location info from appmessage format. br := bytes.NewBuffer(test.buf) _, err = msg.DeserializeTxLoc(br) if reflect.TypeOf(err) != reflect.TypeOf(test.err) { diff --git a/network/domainmessage/msgblocklocator.go b/app/appmessage/msgblocklocator.go similarity index 97% rename from network/domainmessage/msgblocklocator.go rename to app/appmessage/msgblocklocator.go index 71ecfc326..c05871073 100644 --- a/network/domainmessage/msgblocklocator.go +++ b/app/appmessage/msgblocklocator.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msgblocklocator_test.go b/app/appmessage/msgblocklocator_test.go similarity index 97% rename from network/domainmessage/msgblocklocator_test.go rename to app/appmessage/msgblocklocator_test.go index f35c5e3dc..c1e1929cb 100644 --- a/network/domainmessage/msgblocklocator_test.go +++ b/app/appmessage/msgblocklocator_test.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "testing" diff --git a/network/domainmessage/msgdoneibdblocks.go b/app/appmessage/msgdoneibdblocks.go similarity index 96% rename from network/domainmessage/msgdoneibdblocks.go rename to app/appmessage/msgdoneibdblocks.go index 9ff008d77..e8d0983f7 100644 --- a/network/domainmessage/msgdoneibdblocks.go +++ b/app/appmessage/msgdoneibdblocks.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage // MsgDoneIBDBlocks implements the Message interface and represents a kaspa // DoneIBDBlocks message. It is used to notify the IBD syncing peer that the diff --git a/network/domainmessage/msgibdblock.go b/app/appmessage/msgibdblock.go similarity index 97% rename from network/domainmessage/msgibdblock.go rename to app/appmessage/msgibdblock.go index 07daff084..cf2b67a44 100644 --- a/network/domainmessage/msgibdblock.go +++ b/app/appmessage/msgibdblock.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage // MsgIBDBlock implements the Message interface and represents a kaspa // ibdblock message. It is used to deliver block and transaction information in diff --git a/network/domainmessage/msgibdblock_test.go b/app/appmessage/msgibdblock_test.go similarity index 91% rename from network/domainmessage/msgibdblock_test.go rename to app/appmessage/msgibdblock_test.go index c01d9b487..1706375b1 100644 --- a/network/domainmessage/msgibdblock_test.go +++ b/app/appmessage/msgibdblock_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "bytes" @@ -65,7 +65,7 @@ func TestIBDBlock(t *testing.T) { } } -// TestIBDBlockEncoding tests the MsgIBDBlock domainmessage encode and decode for various numbers +// TestIBDBlockEncoding tests the MsgIBDBlock appmessage encode and decode for various numbers // of transaction inputs and outputs and protocol versions. func TestIBDBlockEncoding(t *testing.T) { tests := []struct { @@ -73,7 +73,7 @@ func TestIBDBlockEncoding(t *testing.T) { out *MsgIBDBlock // Expected decoded message buf []byte // Encoded value txLocs []TxLoc // Expected transaction locations - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding }{ // Latest protocol version. { @@ -87,7 +87,7 @@ func TestIBDBlockEncoding(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode the message to domainmessage format. + // Encode the message to appmessage format. var buf bytes.Buffer err := test.in.KaspaEncode(&buf, test.pver) if err != nil { @@ -100,7 +100,7 @@ func TestIBDBlockEncoding(t *testing.T) { continue } - // Decode the message from domainmessage format. + // Decode the message from appmessage format. var msg MsgIBDBlock msg.MsgBlock = new(MsgBlock) rbuf := bytes.NewReader(test.buf) diff --git a/network/domainmessage/msginvrelayblock.go b/app/appmessage/msginvrelayblock.go similarity index 97% rename from network/domainmessage/msginvrelayblock.go rename to app/appmessage/msginvrelayblock.go index 3134f9c40..73e32f93f 100644 --- a/network/domainmessage/msginvrelayblock.go +++ b/app/appmessage/msginvrelayblock.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msginvtransaction.go b/app/appmessage/msginvtransaction.go similarity index 97% rename from network/domainmessage/msginvtransaction.go rename to app/appmessage/msginvtransaction.go index bee533a5f..35636ae6c 100644 --- a/network/domainmessage/msginvtransaction.go +++ b/app/appmessage/msginvtransaction.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msgping.go b/app/appmessage/msgping.go similarity index 98% rename from network/domainmessage/msgping.go rename to app/appmessage/msgping.go index b3f3d31a4..444557ab5 100644 --- a/network/domainmessage/msgping.go +++ b/app/appmessage/msgping.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage // MsgPing implements the Message interface and represents a kaspa ping // message. diff --git a/network/domainmessage/msgping_test.go b/app/appmessage/msgping_test.go similarity index 97% rename from network/domainmessage/msgping_test.go rename to app/appmessage/msgping_test.go index 9f4c96f73..05459169a 100644 --- a/network/domainmessage/msgping_test.go +++ b/app/appmessage/msgping_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "testing" diff --git a/network/domainmessage/msgpong.go b/app/appmessage/msgpong.go similarity index 97% rename from network/domainmessage/msgpong.go rename to app/appmessage/msgpong.go index f8ad866bd..ee847f44b 100644 --- a/network/domainmessage/msgpong.go +++ b/app/appmessage/msgpong.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage // MsgPong implements the Message interface and represents a kaspa pong // message which is used primarily to confirm that a connection is still valid diff --git a/network/domainmessage/msgpong_test.go b/app/appmessage/msgpong_test.go similarity index 97% rename from network/domainmessage/msgpong_test.go rename to app/appmessage/msgpong_test.go index b8053039b..47400c139 100644 --- a/network/domainmessage/msgpong_test.go +++ b/app/appmessage/msgpong_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "testing" diff --git a/network/domainmessage/msgreject.go b/app/appmessage/msgreject.go similarity index 96% rename from network/domainmessage/msgreject.go rename to app/appmessage/msgreject.go index 40bb122cd..887e4895b 100644 --- a/network/domainmessage/msgreject.go +++ b/app/appmessage/msgreject.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage // MsgReject implements the Message interface and represents a kaspa // Reject message. It is used to notify peers why they are banned. diff --git a/network/domainmessage/msgrequestaddresses.go b/app/appmessage/msgrequestaddresses.go similarity index 98% rename from network/domainmessage/msgrequestaddresses.go rename to app/appmessage/msgrequestaddresses.go index dda1c4d2f..9e971bb0c 100644 --- a/network/domainmessage/msgrequestaddresses.go +++ b/app/appmessage/msgrequestaddresses.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/subnetworkid" diff --git a/network/domainmessage/msgrequestaddresses_test.go b/app/appmessage/msgrequestaddresses_test.go similarity index 95% rename from network/domainmessage/msgrequestaddresses_test.go rename to app/appmessage/msgrequestaddresses_test.go index eede271f2..f9dee9f34 100644 --- a/network/domainmessage/msgrequestaddresses_test.go +++ b/app/appmessage/msgrequestaddresses_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "testing" diff --git a/network/domainmessage/msgrequestblocklocator.go b/app/appmessage/msgrequestblocklocator.go similarity index 97% rename from network/domainmessage/msgrequestblocklocator.go rename to app/appmessage/msgrequestblocklocator.go index cc1e4c28f..165e6620b 100644 --- a/network/domainmessage/msgrequestblocklocator.go +++ b/app/appmessage/msgrequestblocklocator.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msgrequestblocklocator_test.go b/app/appmessage/msgrequestblocklocator_test.go similarity index 96% rename from network/domainmessage/msgrequestblocklocator_test.go rename to app/appmessage/msgrequestblocklocator_test.go index 1693d64d8..ff866328a 100644 --- a/network/domainmessage/msgrequestblocklocator_test.go +++ b/app/appmessage/msgrequestblocklocator_test.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "testing" diff --git a/network/domainmessage/msgrequestibdblocks.go b/app/appmessage/msgrequestibdblocks.go similarity index 97% rename from network/domainmessage/msgrequestibdblocks.go rename to app/appmessage/msgrequestibdblocks.go index 1301e6381..80b08b779 100644 --- a/network/domainmessage/msgrequestibdblocks.go +++ b/app/appmessage/msgrequestibdblocks.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msgrequestibdblocks_test.go b/app/appmessage/msgrequestibdblocks_test.go similarity index 98% rename from network/domainmessage/msgrequestibdblocks_test.go rename to app/appmessage/msgrequestibdblocks_test.go index 581fd472d..e5449b0e1 100644 --- a/network/domainmessage/msgrequestibdblocks_test.go +++ b/app/appmessage/msgrequestibdblocks_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "testing" diff --git a/network/domainmessage/msgrequestnextibdblocks.go b/app/appmessage/msgrequestnextibdblocks.go similarity index 96% rename from network/domainmessage/msgrequestnextibdblocks.go rename to app/appmessage/msgrequestnextibdblocks.go index 8fb1ca0e1..9b3a4c13c 100644 --- a/network/domainmessage/msgrequestnextibdblocks.go +++ b/app/appmessage/msgrequestnextibdblocks.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage // MsgRequestNextIBDBlocks implements the Message interface and represents a kaspa // RequestNextIBDBlocks message. It is used to notify the IBD syncer peer to send diff --git a/network/domainmessage/msgrequestrelayblocks.go b/app/appmessage/msgrequestrelayblocks.go similarity index 97% rename from network/domainmessage/msgrequestrelayblocks.go rename to app/appmessage/msgrequestrelayblocks.go index dc61a3534..c80b9569d 100644 --- a/network/domainmessage/msgrequestrelayblocks.go +++ b/app/appmessage/msgrequestrelayblocks.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msgrequestselectedtip.go b/app/appmessage/msgrequestselectedtip.go similarity index 96% rename from network/domainmessage/msgrequestselectedtip.go rename to app/appmessage/msgrequestselectedtip.go index 578efaf02..e52a28e6d 100644 --- a/network/domainmessage/msgrequestselectedtip.go +++ b/app/appmessage/msgrequestselectedtip.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage // MsgRequestSelectedTip implements the Message interface and represents a kaspa // RequestSelectedTip message. It is used to request the selected tip of another peer. diff --git a/network/domainmessage/msgrequestselectedtip_test.go b/app/appmessage/msgrequestselectedtip_test.go similarity index 95% rename from network/domainmessage/msgrequestselectedtip_test.go rename to app/appmessage/msgrequestselectedtip_test.go index 826ec7f89..1191cdf50 100644 --- a/network/domainmessage/msgrequestselectedtip_test.go +++ b/app/appmessage/msgrequestselectedtip_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "testing" diff --git a/network/domainmessage/msgrequesttransactions.go b/app/appmessage/msgrequesttransactions.go similarity index 97% rename from network/domainmessage/msgrequesttransactions.go rename to app/appmessage/msgrequesttransactions.go index b6a0831b6..3ecca955f 100644 --- a/network/domainmessage/msgrequesttransactions.go +++ b/app/appmessage/msgrequesttransactions.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msgselectedtip.go b/app/appmessage/msgselectedtip.go similarity index 97% rename from network/domainmessage/msgselectedtip.go rename to app/appmessage/msgselectedtip.go index 36669616b..b7806bcb7 100644 --- a/network/domainmessage/msgselectedtip.go +++ b/app/appmessage/msgselectedtip.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msgselectedtip_test.go b/app/appmessage/msgselectedtip_test.go similarity index 94% rename from network/domainmessage/msgselectedtip_test.go rename to app/appmessage/msgselectedtip_test.go index a6ba1e5e9..8dcadee37 100644 --- a/network/domainmessage/msgselectedtip_test.go +++ b/app/appmessage/msgselectedtip_test.go @@ -1,4 +1,4 @@ -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msgtransactionnotfound.go b/app/appmessage/msgtransactionnotfound.go similarity index 97% rename from network/domainmessage/msgtransactionnotfound.go rename to app/appmessage/msgtransactionnotfound.go index 167d2b4e1..6966943b3 100644 --- a/network/domainmessage/msgtransactionnotfound.go +++ b/app/appmessage/msgtransactionnotfound.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/daghash" diff --git a/network/domainmessage/msgtx.go b/app/appmessage/msgtx.go similarity index 97% rename from network/domainmessage/msgtx.go rename to app/appmessage/msgtx.go index 526767826..de093ed32 100644 --- a/network/domainmessage/msgtx.go +++ b/app/appmessage/msgtx.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "encoding/binary" @@ -83,7 +83,7 @@ const ( minTxPayload = 10 // freeListMaxScriptSize is the size of each buffer in the free list - // that is used for deserializing scripts from the domainmessage before they are + // that is used for deserializing scripts from the appmessage before they are // concatenated into a single contiguous buffers. This value was chosen // because it is slightly more than twice the size of the vast majority // of all "standard" scripts. Larger scripts are still deserialized @@ -406,7 +406,7 @@ func (msg *MsgTx) Copy() *MsgTx { // KaspaDecode decodes r using the kaspa protocol encoding into the receiver. // This is part of the Message interface implementation. // See Deserialize for decoding transactions stored to disk, such as in a -// database, as opposed to decoding transactions from the domainmessage. +// database, as opposed to decoding transactions from the appmessage. func (msg *MsgTx) KaspaDecode(r io.Reader, pver uint32) error { version, err := binaryserializer.Uint32(r, littleEndian) if err != nil { @@ -596,15 +596,15 @@ func (msg *MsgTx) KaspaDecode(r io.Reader, pver uint32) error { // Deserialize decodes a transaction from r into the receiver using a format // that is suitable for long-term storage such as a database while respecting // the Version field in the transaction. This function differs from KaspaDecode -// in that KaspaDecode decodes from the kaspa domainmessage protocol as it was sent -// across the network. The domainmessage encoding can technically differ depending on +// in that KaspaDecode decodes from the kaspa appmessage protocol as it was sent +// across the network. The appmessage encoding can technically differ depending on // the protocol version and doesn't even really need to match the format of a // stored transaction at all. As of the time this comment was written, the // encoded transaction is the same in both instances, but there is a distinct // difference and separating the two allows the API to be flexible enough to // deal with changes. func (msg *MsgTx) Deserialize(r io.Reader) error { - // At the current time, there is no difference between the domainmessage encoding + // At the current time, there is no difference between the appmessage encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of KaspaDecode. return msg.KaspaDecode(r, 0) @@ -613,7 +613,7 @@ func (msg *MsgTx) Deserialize(r io.Reader) error { // KaspaEncode encodes the receiver to w using the kaspa protocol encoding. // This is part of the Message interface implementation. // See Serialize for encoding transactions to be stored to disk, such as in a -// database, as opposed to encoding transactions for the domainmessage. +// database, as opposed to encoding transactions for the appmessage. func (msg *MsgTx) KaspaEncode(w io.Writer, pver uint32) error { return msg.encode(w, pver, txEncodingFull) } @@ -702,22 +702,22 @@ func (msg *MsgTx) encode(w io.Writer, pver uint32, encodingFlags txEncoding) err // Serialize encodes the transaction to w using a format that suitable for // long-term storage such as a database while respecting the Version field in // the transaction. This function differs from KaspaEncode in that KaspaEncode -// encodes the transaction to the kaspa domainmessage protocol in order to be sent -// across the network. The domainmessage encoding can technically differ depending on +// encodes the transaction to the kaspa appmessage protocol in order to be sent +// across the network. The appmessage encoding can technically differ depending on // the protocol version and doesn't even really need to match the format of a // stored transaction at all. As of the time this comment was written, the // encoded transaction is the same in both instances, but there is a distinct // difference and separating the two allows the API to be flexible enough to // deal with changes. func (msg *MsgTx) Serialize(w io.Writer) error { - // At the current time, there is no difference between the domainmessage encoding + // At the current time, there is no difference between the appmessage encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of KaspaEncode. return msg.KaspaEncode(w, 0) } func (msg *MsgTx) serialize(w io.Writer, encodingFlags txEncoding) error { - // At the current time, there is no difference between the domainmessage encoding + // At the current time, there is no difference between the appmessage encoding // at protocol version 0 and the stable long-term storage format. As // a result, make use of `encode`. return msg.encode(w, 0, encodingFlags) diff --git a/network/domainmessage/msgtx_test.go b/app/appmessage/msgtx_test.go similarity index 97% rename from network/domainmessage/msgtx_test.go rename to app/appmessage/msgtx_test.go index d49e97954..42ce1fb38 100644 --- a/network/domainmessage/msgtx_test.go +++ b/app/appmessage/msgtx_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "bytes" @@ -253,7 +253,7 @@ func TestTxHashAndID(t *testing.T) { } } -// TestTxEncoding tests the MsgTx domainmessage encode and decode for various numbers +// TestTxEncoding tests the MsgTx appmessage encode and decode for various numbers // of transaction inputs and outputs and protocol versions. func TestTxEncoding(t *testing.T) { // Empty tx message. @@ -272,7 +272,7 @@ func TestTxEncoding(t *testing.T) { in *MsgTx // Message to encode out *MsgTx // Expected decoded message buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding }{ // Latest protocol version with no transactions. { @@ -293,7 +293,7 @@ func TestTxEncoding(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode the message to domainmessage format. + // Encode the message to appmessage format. var buf bytes.Buffer err := test.in.KaspaEncode(&buf, test.pver) if err != nil { @@ -306,7 +306,7 @@ func TestTxEncoding(t *testing.T) { continue } - // Decode the message from domainmessage format. + // Decode the message from appmessage format. var msg MsgTx rbuf := bytes.NewReader(test.buf) err = msg.KaspaDecode(rbuf, test.pver) @@ -322,7 +322,7 @@ func TestTxEncoding(t *testing.T) { } } -// TestTxEncodingErrors performs negative tests against domainmessage encode and decode +// TestTxEncodingErrors performs negative tests against appmessage encode and decode // of MsgTx to confirm error paths work correctly. func TestTxEncodingErrors(t *testing.T) { pver := ProtocolVersion @@ -330,7 +330,7 @@ func TestTxEncodingErrors(t *testing.T) { tests := []struct { in *MsgTx // Value to encode buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding max int // Max size of fixed buffer to induce errors writeErr error // Expected write error readErr error // Expected read error @@ -363,7 +363,7 @@ func TestTxEncodingErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Encode to domainmessage format. + // Encode to appmessage format. w := newFixedWriter(test.max) err := test.in.KaspaEncode(w, test.pver) if !errors.Is(err, test.writeErr) { @@ -372,7 +372,7 @@ func TestTxEncodingErrors(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. var msg MsgTx r := newFixedReader(test.max, test.buf) err = msg.KaspaDecode(r, test.pver) @@ -528,7 +528,7 @@ func TestTxSerialize(t *testing.T) { } } -// TestTxSerializeErrors performs negative tests against domainmessage encode and decode +// TestTxSerializeErrors performs negative tests against appmessage encode and decode // of MsgTx to confirm error paths work correctly. func TestTxSerializeErrors(t *testing.T) { tests := []struct { @@ -629,7 +629,7 @@ func TestTxOverflowErrors(t *testing.T) { tests := []struct { buf []byte // Encoded value - pver uint32 // Protocol version for domainmessage encoding + pver uint32 // Protocol version for appmessage encoding version uint32 // Transaction version err error // Expected error }{ @@ -691,7 +691,7 @@ func TestTxOverflowErrors(t *testing.T) { t.Logf("Running %d tests", len(tests)) for i, test := range tests { - // Decode from domainmessage format. + // Decode from appmessage format. var msg MsgTx r := bytes.NewReader(test.buf) err := msg.KaspaDecode(r, test.pver) @@ -701,7 +701,7 @@ func TestTxOverflowErrors(t *testing.T) { continue } - // Decode from domainmessage format. + // Decode from appmessage format. r = bytes.NewReader(test.buf) err = msg.Deserialize(r) if reflect.TypeOf(err) != reflect.TypeOf(test.err) { @@ -891,7 +891,7 @@ var multiTxOuts = []*TxOut{ } var multiTx = NewNativeMsgTx(1, multiTxIns, multiTxOuts) -// multiTxEncoded is the domainmessage encoded bytes for multiTx using protocol version +// multiTxEncoded is the appmessage encoded bytes for multiTx using protocol version // 60002 and is used in the various tests. var multiTxEncoded = []byte{ 0x01, 0x00, 0x00, 0x00, // Version diff --git a/network/domainmessage/msgverack.go b/app/appmessage/msgverack.go similarity index 97% rename from network/domainmessage/msgverack.go rename to app/appmessage/msgverack.go index 681a8e79c..1fcbcf45e 100644 --- a/network/domainmessage/msgverack.go +++ b/app/appmessage/msgverack.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage // MsgVerAck defines a kaspa verack message which is used for a peer to // acknowledge a version message (MsgVersion) after it has used the information diff --git a/network/domainmessage/msgverack_test.go b/app/appmessage/msgverack_test.go similarity index 95% rename from network/domainmessage/msgverack_test.go rename to app/appmessage/msgverack_test.go index a39f9edbd..a56787612 100644 --- a/network/domainmessage/msgverack_test.go +++ b/app/appmessage/msgverack_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "testing" diff --git a/network/domainmessage/msgversion.go b/app/appmessage/msgversion.go similarity index 94% rename from network/domainmessage/msgversion.go rename to app/appmessage/msgversion.go index a1fa03c2e..1705e4b19 100644 --- a/network/domainmessage/msgversion.go +++ b/app/appmessage/msgversion.go @@ -2,14 +2,14 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "fmt" "github.com/kaspanet/kaspad/version" "strings" - "github.com/kaspanet/kaspad/network/netadapter/id" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" "github.com/kaspanet/kaspad/util/mstime" "github.com/kaspanet/kaspad/util/daghash" @@ -20,7 +20,7 @@ import ( // version message (MsgVersion). const MaxUserAgentLen = 256 -// DefaultUserAgent for domainmessage in the stack +// DefaultUserAgent for appmessage in the stack var DefaultUserAgent = fmt.Sprintf("/kaspad:%s/", version.Version()) // MsgVersion implements the Message interface and represents a kaspa version @@ -41,7 +41,7 @@ type MsgVersion struct { // Bitfield which identifies the enabled services. Services ServiceFlag - // Time the message was generated. This is encoded as an int64 on the domainmessage. + // Time the message was generated. This is encoded as an int64 on the appmessage. Timestamp mstime.Time // Address of the local peer. @@ -51,7 +51,7 @@ type MsgVersion struct { ID *id.ID // The user agent that generated messsage. This is a encoded as a varString - // on the domainmessage. This has a max length of MaxUserAgentLen. + // on the appmessage. This has a max length of MaxUserAgentLen. UserAgent string // The selected tip hash of the generator of the version message. diff --git a/network/domainmessage/msgversion_test.go b/app/appmessage/msgversion_test.go similarity index 97% rename from network/domainmessage/msgversion_test.go rename to app/appmessage/msgversion_test.go index 923228f5f..b3fd58347 100644 --- a/network/domainmessage/msgversion_test.go +++ b/app/appmessage/msgversion_test.go @@ -2,11 +2,11 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "github.com/davecgh/go-spew/spew" - "github.com/kaspanet/kaspad/network/netadapter/id" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" "github.com/kaspanet/kaspad/util/daghash" "net" "reflect" diff --git a/network/domainmessage/netaddress.go b/app/appmessage/netaddress.go similarity index 98% rename from network/domainmessage/netaddress.go rename to app/appmessage/netaddress.go index d0bf92844..dd6eca39a 100644 --- a/network/domainmessage/netaddress.go +++ b/app/appmessage/netaddress.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "github.com/kaspanet/kaspad/util/mstime" @@ -21,7 +21,7 @@ type NetAddress struct { // IP address of the peer. IP net.IP - // Port the peer is using. This is encoded in big endian on the domainmessage + // Port the peer is using. This is encoded in big endian on the appmessage // which differs from most everything else. Port uint16 } diff --git a/network/domainmessage/netaddress_test.go b/app/appmessage/netaddress_test.go similarity index 98% rename from network/domainmessage/netaddress_test.go rename to app/appmessage/netaddress_test.go index b9e3b5031..63f0b2326 100644 --- a/network/domainmessage/netaddress_test.go +++ b/app/appmessage/netaddress_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "net" diff --git a/network/domainmessage/protocol.go b/app/appmessage/protocol.go similarity index 99% rename from network/domainmessage/protocol.go rename to app/appmessage/protocol.go index 08bd9fdf6..20e219d6a 100644 --- a/network/domainmessage/protocol.go +++ b/app/appmessage/protocol.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import ( "fmt" diff --git a/network/domainmessage/protocol_test.go b/app/appmessage/protocol_test.go similarity index 98% rename from network/domainmessage/protocol_test.go rename to app/appmessage/protocol_test.go index 5176566b6..e9a800133 100644 --- a/network/domainmessage/protocol_test.go +++ b/app/appmessage/protocol_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. -package domainmessage +package appmessage import "testing" diff --git a/network/domainmessage/testdata/megatx.bin.bz2 b/app/appmessage/testdata/megatx.bin.bz2 similarity index 100% rename from network/domainmessage/testdata/megatx.bin.bz2 rename to app/appmessage/testdata/megatx.bin.bz2 diff --git a/network/protocol/blocklogger/blocklogger.go b/app/protocol/blocklogger/blocklogger.go similarity index 100% rename from network/protocol/blocklogger/blocklogger.go rename to app/protocol/blocklogger/blocklogger.go diff --git a/network/protocol/blocklogger/log.go b/app/protocol/blocklogger/log.go similarity index 100% rename from network/protocol/blocklogger/log.go rename to app/protocol/blocklogger/log.go diff --git a/network/protocol/common/common.go b/app/protocol/common/common.go similarity index 100% rename from network/protocol/common/common.go rename to app/protocol/common/common.go diff --git a/network/protocol/flowcontext/addresses.go b/app/protocol/flowcontext/addresses.go similarity index 75% rename from network/protocol/flowcontext/addresses.go rename to app/protocol/flowcontext/addresses.go index b2a7d339e..0ecf91c48 100644 --- a/network/protocol/flowcontext/addresses.go +++ b/app/protocol/flowcontext/addresses.go @@ -1,7 +1,7 @@ package flowcontext import ( - "github.com/kaspanet/kaspad/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" ) // AddressManager returns the address manager associated to the flow context. diff --git a/network/protocol/flowcontext/blocks.go b/app/protocol/flowcontext/blocks.go similarity index 83% rename from network/protocol/flowcontext/blocks.go rename to app/protocol/flowcontext/blocks.go index ec7519092..2cbf9cd90 100644 --- a/network/protocol/flowcontext/blocks.go +++ b/app/protocol/flowcontext/blocks.go @@ -3,9 +3,9 @@ package flowcontext import ( "sync/atomic" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/flows/blockrelay" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/protocol/flows/blockrelay" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -47,10 +47,10 @@ func (f *FlowContext) broadcastTransactionsAfterBlockAdded(block *util.Block, tr if len(txIDsToBroadcast) == 0 { return nil } - if len(txIDsToBroadcast) > domainmessage.MaxInvPerTxInvMsg { - txIDsToBroadcast = txIDsToBroadcast[:domainmessage.MaxInvPerTxInvMsg] + if len(txIDsToBroadcast) > appmessage.MaxInvPerTxInvMsg { + txIDsToBroadcast = txIDsToBroadcast[:appmessage.MaxInvPerTxInvMsg] } - inv := domainmessage.NewMsgInvTransaction(txIDsToBroadcast) + inv := appmessage.NewMsgInvTransaction(txIDsToBroadcast) return f.Broadcast(inv) } @@ -70,5 +70,5 @@ func (f *FlowContext) AddBlock(block *util.Block, flags blockdag.BehaviorFlags) if err != nil { return err } - return f.Broadcast(domainmessage.NewMsgInvBlock(block.Hash())) + return f.Broadcast(appmessage.NewMsgInvBlock(block.Hash())) } diff --git a/network/protocol/flowcontext/config.go b/app/protocol/flowcontext/config.go similarity index 100% rename from network/protocol/flowcontext/config.go rename to app/protocol/flowcontext/config.go diff --git a/network/protocol/flowcontext/consensus.go b/app/protocol/flowcontext/consensus.go similarity index 100% rename from network/protocol/flowcontext/consensus.go rename to app/protocol/flowcontext/consensus.go diff --git a/network/protocol/flowcontext/errors.go b/app/protocol/flowcontext/errors.go similarity index 84% rename from network/protocol/flowcontext/errors.go rename to app/protocol/flowcontext/errors.go index 946e47522..0a02e7536 100644 --- a/network/protocol/flowcontext/errors.go +++ b/app/protocol/flowcontext/errors.go @@ -4,9 +4,9 @@ import ( "errors" "sync/atomic" - "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" ) // HandleError handles an error from a flow, diff --git a/network/protocol/flowcontext/flow_context.go b/app/protocol/flowcontext/flow_context.go similarity index 81% rename from network/protocol/flowcontext/flow_context.go rename to app/protocol/flowcontext/flow_context.go index c4210624b..fa75e303e 100644 --- a/network/protocol/flowcontext/flow_context.go +++ b/app/protocol/flowcontext/flow_context.go @@ -4,16 +4,16 @@ import ( "sync" "time" + "github.com/kaspanet/kaspad/app/protocol/flows/blockrelay" + "github.com/kaspanet/kaspad/app/protocol/flows/relaytransactions" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/mempool" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/network/addressmanager" - "github.com/kaspanet/kaspad/network/connmanager" - "github.com/kaspanet/kaspad/network/netadapter" - "github.com/kaspanet/kaspad/network/netadapter/id" - "github.com/kaspanet/kaspad/network/protocol/flows/blockrelay" - "github.com/kaspanet/kaspad/network/protocol/flows/relaytransactions" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/connmanager" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/network/protocol/flowcontext/ibd.go b/app/protocol/flowcontext/ibd.go similarity index 96% rename from network/protocol/flowcontext/ibd.go rename to app/protocol/flowcontext/ibd.go index fad5bb880..19b5eb9de 100644 --- a/network/protocol/flowcontext/ibd.go +++ b/app/protocol/flowcontext/ibd.go @@ -4,8 +4,8 @@ import ( "sync/atomic" "time" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" "github.com/kaspanet/kaspad/domain/blockdag" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" ) // StartIBDIfRequired selects a peer and starts IBD against it diff --git a/network/protocol/flowcontext/log.go b/app/protocol/flowcontext/log.go similarity index 100% rename from network/protocol/flowcontext/log.go rename to app/protocol/flowcontext/log.go diff --git a/network/protocol/flowcontext/network.go b/app/protocol/flowcontext/network.go similarity index 81% rename from network/protocol/flowcontext/network.go rename to app/protocol/flowcontext/network.go index 1abda0b1c..38418c599 100644 --- a/network/protocol/flowcontext/network.go +++ b/app/protocol/flowcontext/network.go @@ -1,11 +1,11 @@ package flowcontext import ( - "github.com/kaspanet/kaspad/network/connmanager" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter" - "github.com/kaspanet/kaspad/network/protocol/common" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/common" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" + "github.com/kaspanet/kaspad/infrastructure/network/connmanager" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" "github.com/pkg/errors" ) @@ -47,7 +47,7 @@ func (f *FlowContext) readyPeerConnections() []*netadapter.NetConnection { } // Broadcast broadcast the given message to all the ready peers. -func (f *FlowContext) Broadcast(message domainmessage.Message) error { +func (f *FlowContext) Broadcast(message appmessage.Message) error { return f.netAdapter.Broadcast(f.readyPeerConnections(), message) } diff --git a/network/protocol/flowcontext/transactions.go b/app/protocol/flowcontext/transactions.go similarity index 91% rename from network/protocol/flowcontext/transactions.go rename to app/protocol/flowcontext/transactions.go index e2f322681..3e9aef7ff 100644 --- a/network/protocol/flowcontext/transactions.go +++ b/app/protocol/flowcontext/transactions.go @@ -1,9 +1,9 @@ package flowcontext import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/flows/relaytransactions" "github.com/kaspanet/kaspad/domain/mempool" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/protocol/flows/relaytransactions" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" @@ -25,7 +25,7 @@ func (f *FlowContext) AddTransaction(tx *util.Tx) error { } f.transactionsToRebroadcast[*tx.ID()] = tx - inv := domainmessage.NewMsgInvTransaction([]*daghash.TxID{tx.ID()}) + inv := appmessage.NewMsgInvTransaction([]*daghash.TxID{tx.ID()}) return f.Broadcast(inv) } diff --git a/network/protocol/flows/addressexchange/receiveaddresses.go b/app/protocol/flows/addressexchange/receiveaddresses.go similarity index 77% rename from network/protocol/flows/addressexchange/receiveaddresses.go rename to app/protocol/flows/addressexchange/receiveaddresses.go index 45166b7fd..15c285088 100644 --- a/network/protocol/flows/addressexchange/receiveaddresses.go +++ b/app/protocol/flows/addressexchange/receiveaddresses.go @@ -1,13 +1,13 @@ package addressexchange import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/common" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/network/addressmanager" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/common" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" ) // ReceiveAddressesContext is the interface for the context needed for the ReceiveAddresses flow. @@ -25,7 +25,7 @@ func ReceiveAddresses(context ReceiveAddressesContext, incomingRoute *router.Rou } subnetworkID := peer.SubnetworkID() - msgGetAddresses := domainmessage.NewMsgRequestAddresses(false, subnetworkID) + msgGetAddresses := appmessage.NewMsgRequestAddresses(false, subnetworkID) err := outgoingRoute.Enqueue(msgGetAddresses) if err != nil { return err @@ -36,7 +36,7 @@ func ReceiveAddresses(context ReceiveAddressesContext, incomingRoute *router.Rou return err } - msgAddresses := message.(*domainmessage.MsgAddresses) + msgAddresses := message.(*appmessage.MsgAddresses) if len(msgAddresses.AddrList) > addressmanager.GetAddressesMax { return protocolerrors.Errorf(true, "address count excceeded %d", addressmanager.GetAddressesMax) } diff --git a/network/protocol/flows/addressexchange/sendaddresses.go b/app/protocol/flows/addressexchange/sendaddresses.go similarity index 64% rename from network/protocol/flows/addressexchange/sendaddresses.go rename to app/protocol/flows/addressexchange/sendaddresses.go index 9a8196e49..c20941ef3 100644 --- a/network/protocol/flows/addressexchange/sendaddresses.go +++ b/app/protocol/flows/addressexchange/sendaddresses.go @@ -1,9 +1,9 @@ package addressexchange import ( - "github.com/kaspanet/kaspad/network/addressmanager" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "math/rand" ) @@ -20,10 +20,10 @@ func SendAddresses(context SendAddressesContext, incomingRoute *router.Route, ou return err } - msgGetAddresses := message.(*domainmessage.MsgRequestAddresses) + msgGetAddresses := message.(*appmessage.MsgRequestAddresses) addresses := context.AddressManager().AddressCache(msgGetAddresses.IncludeAllSubnetworks, msgGetAddresses.SubnetworkID) - msgAddresses := domainmessage.NewMsgAddresses(msgGetAddresses.IncludeAllSubnetworks, msgGetAddresses.SubnetworkID) + msgAddresses := appmessage.NewMsgAddresses(msgGetAddresses.IncludeAllSubnetworks, msgGetAddresses.SubnetworkID) err = msgAddresses.AddAddresses(shuffleAddresses(addresses)...) if err != nil { return err @@ -33,14 +33,14 @@ func SendAddresses(context SendAddressesContext, incomingRoute *router.Route, ou } // shuffleAddresses randomizes the given addresses sent if there are more than the maximum allowed in one message. -func shuffleAddresses(addresses []*domainmessage.NetAddress) []*domainmessage.NetAddress { +func shuffleAddresses(addresses []*appmessage.NetAddress) []*appmessage.NetAddress { addressCount := len(addresses) - if addressCount < domainmessage.MaxAddressesPerMsg { + if addressCount < appmessage.MaxAddressesPerMsg { return addresses } - shuffleAddresses := make([]*domainmessage.NetAddress, addressCount) + shuffleAddresses := make([]*appmessage.NetAddress, addressCount) copy(shuffleAddresses, addresses) rand.Shuffle(addressCount, func(i, j int) { @@ -48,6 +48,6 @@ func shuffleAddresses(addresses []*domainmessage.NetAddress) []*domainmessage.Ne }) // Truncate it to the maximum size. - shuffleAddresses = shuffleAddresses[:domainmessage.MaxAddressesPerMsg] + shuffleAddresses = shuffleAddresses[:appmessage.MaxAddressesPerMsg] return shuffleAddresses } diff --git a/network/protocol/flows/blockrelay/handle_relay_block_requests.go b/app/protocol/flows/blockrelay/handle_relay_block_requests.go similarity index 78% rename from network/protocol/flows/blockrelay/handle_relay_block_requests.go rename to app/protocol/flows/blockrelay/handle_relay_block_requests.go index dccad5a02..780812ae0 100644 --- a/network/protocol/flows/blockrelay/handle_relay_block_requests.go +++ b/app/protocol/flows/blockrelay/handle_relay_block_requests.go @@ -1,11 +1,11 @@ package blockrelay import ( + "github.com/kaspanet/kaspad/app/appmessage" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/pkg/errors" ) @@ -14,7 +14,7 @@ type RelayBlockRequestsContext interface { DAG() *blockdag.BlockDAG } -// HandleRelayBlockRequests listens to domainmessage.MsgRequestRelayBlocks messages and sends +// HandleRelayBlockRequests listens to appmessage.MsgRequestRelayBlocks messages and sends // their corresponding blocks to the requesting peer. func HandleRelayBlockRequests(context RelayBlockRequestsContext, incomingRoute *router.Route, outgoingRoute *router.Route, peer *peerpkg.Peer) error { @@ -24,7 +24,7 @@ func HandleRelayBlockRequests(context RelayBlockRequestsContext, incomingRoute * if err != nil { return err } - getRelayBlocksMessage := message.(*domainmessage.MsgRequestRelayBlocks) + getRelayBlocksMessage := message.(*appmessage.MsgRequestRelayBlocks) for _, hash := range getRelayBlocksMessage.Hashes { // Fetch the block from the database. block, err := context.DAG().BlockByHash(hash) diff --git a/network/protocol/flows/blockrelay/handle_relay_invs.go b/app/protocol/flows/blockrelay/handle_relay_invs.go similarity index 80% rename from network/protocol/flows/blockrelay/handle_relay_invs.go rename to app/protocol/flows/blockrelay/handle_relay_invs.go index 38c21434f..1d8b37cd4 100644 --- a/network/protocol/flows/blockrelay/handle_relay_invs.go +++ b/app/protocol/flows/blockrelay/handle_relay_invs.go @@ -1,14 +1,14 @@ package blockrelay import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/blocklogger" + "github.com/kaspanet/kaspad/app/protocol/common" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/blocklogger" - "github.com/kaspanet/kaspad/network/protocol/common" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" mathUtil "github.com/kaspanet/kaspad/util/math" @@ -23,17 +23,17 @@ type RelayInvsContext interface { SharedRequestedBlocks() *SharedRequestedBlocks StartIBDIfRequired() IsInIBD() bool - Broadcast(message domainmessage.Message) error + Broadcast(message appmessage.Message) error } type handleRelayInvsFlow struct { RelayInvsContext incomingRoute, outgoingRoute *router.Route peer *peerpkg.Peer - invsQueue []*domainmessage.MsgInvRelayBlock + invsQueue []*appmessage.MsgInvRelayBlock } -// HandleRelayInvs listens to domainmessage.MsgInvRelayBlock messages, requests their corresponding blocks if they +// HandleRelayInvs listens to appmessage.MsgInvRelayBlock messages, requests their corresponding blocks if they // are missing, adds them to the DAG and propagates them to the rest of the network. func HandleRelayInvs(context RelayInvsContext, incomingRoute *router.Route, outgoingRoute *router.Route, peer *peerpkg.Peer) error { @@ -43,7 +43,7 @@ func HandleRelayInvs(context RelayInvsContext, incomingRoute *router.Route, outg incomingRoute: incomingRoute, outgoingRoute: outgoingRoute, peer: peer, - invsQueue: make([]*domainmessage.MsgInvRelayBlock, 0), + invsQueue: make([]*appmessage.MsgInvRelayBlock, 0), } return flow.start() } @@ -81,10 +81,10 @@ func (flow *handleRelayInvsFlow) start() error { } } -func (flow *handleRelayInvsFlow) readInv() (*domainmessage.MsgInvRelayBlock, error) { +func (flow *handleRelayInvsFlow) readInv() (*appmessage.MsgInvRelayBlock, error) { if len(flow.invsQueue) > 0 { - var inv *domainmessage.MsgInvRelayBlock + var inv *appmessage.MsgInvRelayBlock inv, flow.invsQueue = flow.invsQueue[0], flow.invsQueue[1:] return inv, nil } @@ -94,7 +94,7 @@ func (flow *handleRelayInvsFlow) readInv() (*domainmessage.MsgInvRelayBlock, err return nil, err } - inv, ok := msg.(*domainmessage.MsgInvRelayBlock) + inv, ok := msg.(*appmessage.MsgInvRelayBlock) if !ok { return nil, protocolerrors.Errorf(true, "unexpected %s message in the block relay handleRelayInvsFlow while "+ "expecting an inv message", msg.Command()) @@ -103,7 +103,7 @@ func (flow *handleRelayInvsFlow) readInv() (*domainmessage.MsgInvRelayBlock, err } func (flow *handleRelayInvsFlow) requestBlocks(requestQueue *hashesQueueSet) error { - numHashesToRequest := mathUtil.MinInt(domainmessage.MsgRequestRelayBlocksHashes, requestQueue.len()) + numHashesToRequest := mathUtil.MinInt(appmessage.MsgRequestRelayBlocksHashes, requestQueue.len()) hashesToRequest := requestQueue.dequeue(numHashesToRequest) pendingBlocks := map[daghash.Hash]struct{}{} @@ -127,7 +127,7 @@ func (flow *handleRelayInvsFlow) requestBlocks(requestQueue *hashesQueueSet) err // clean from any pending blocks. defer flow.SharedRequestedBlocks().removeSet(pendingBlocks) - getRelayBlocksMsg := domainmessage.NewMsgRequestRelayBlocks(filteredHashesToRequest) + getRelayBlocksMsg := appmessage.NewMsgRequestRelayBlocks(filteredHashesToRequest) err := flow.outgoingRoute.Enqueue(getRelayBlocksMsg) if err != nil { return err @@ -160,9 +160,9 @@ func (flow *handleRelayInvsFlow) requestBlocks(requestQueue *hashesQueueSet) err // readMsgBlock returns the next msgBlock in msgChan, and populates invsQueue with any inv messages that meanwhile arrive. // -// Note: this function assumes msgChan can contain only domainmessage.MsgInvRelayBlock and domainmessage.MsgBlock messages. +// Note: this function assumes msgChan can contain only appmessage.MsgInvRelayBlock and appmessage.MsgBlock messages. func (flow *handleRelayInvsFlow) readMsgBlock() ( - msgBlock *domainmessage.MsgBlock, err error) { + msgBlock *appmessage.MsgBlock, err error) { for { message, err := flow.incomingRoute.DequeueWithTimeout(common.DefaultTimeout) @@ -171,9 +171,9 @@ func (flow *handleRelayInvsFlow) readMsgBlock() ( } switch message := message.(type) { - case *domainmessage.MsgInvRelayBlock: + case *appmessage.MsgInvRelayBlock: flow.invsQueue = append(flow.invsQueue, message) - case *domainmessage.MsgBlock: + case *appmessage.MsgBlock: return message, nil default: return nil, errors.Errorf("unexpected message %s", message.Command()) @@ -224,7 +224,7 @@ func (flow *handleRelayInvsFlow) processAndRelayBlock(requestQueue *hashesQueueS if err != nil { return err } - err = flow.Broadcast(domainmessage.NewMsgInvBlock(blockHash)) + err = flow.Broadcast(appmessage.NewMsgInvBlock(blockHash)) if err != nil { return err } diff --git a/network/protocol/flows/blockrelay/hashes_queue_set.go b/app/protocol/flows/blockrelay/hashes_queue_set.go similarity index 100% rename from network/protocol/flows/blockrelay/hashes_queue_set.go rename to app/protocol/flows/blockrelay/hashes_queue_set.go diff --git a/network/protocol/flows/blockrelay/log.go b/app/protocol/flows/blockrelay/log.go similarity index 100% rename from network/protocol/flows/blockrelay/log.go rename to app/protocol/flows/blockrelay/log.go diff --git a/network/protocol/flows/blockrelay/shared_requested_blocks.go b/app/protocol/flows/blockrelay/shared_requested_blocks.go similarity index 100% rename from network/protocol/flows/blockrelay/shared_requested_blocks.go rename to app/protocol/flows/blockrelay/shared_requested_blocks.go diff --git a/network/protocol/flows/handshake/handshake.go b/app/protocol/flows/handshake/handshake.go similarity index 86% rename from network/protocol/flows/handshake/handshake.go rename to app/protocol/flows/handshake/handshake.go index 2911c430c..9d4c0bb36 100644 --- a/network/protocol/flows/handshake/handshake.go +++ b/app/protocol/flows/handshake/handshake.go @@ -4,17 +4,17 @@ import ( "sync" "sync/atomic" - "github.com/kaspanet/kaspad/network/addressmanager" - "github.com/kaspanet/kaspad/network/protocol/common" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/app/protocol/common" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" - "github.com/kaspanet/kaspad/network/domainmessage" - routerpkg "github.com/kaspanet/kaspad/network/netadapter/router" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" + "github.com/kaspanet/kaspad/app/appmessage" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" + routerpkg "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/util/locks" "github.com/pkg/errors" ) @@ -47,7 +47,7 @@ func HandleHandshake(context HandleHandshakeContext, netConnection *netadapter.N peer = peerpkg.New(netConnection) - var peerAddress *domainmessage.NetAddress + var peerAddress *appmessage.NetAddress spawn("HandleHandshake-ReceiveVersion", func() { defer wg.Done() address, err := ReceiveVersion(context, receiveVersionRoute, outgoingRoute, peer) diff --git a/network/protocol/flows/handshake/log.go b/app/protocol/flows/handshake/log.go similarity index 100% rename from network/protocol/flows/handshake/log.go rename to app/protocol/flows/handshake/log.go diff --git a/network/protocol/flows/handshake/receiveversion.go b/app/protocol/flows/handshake/receiveversion.go similarity index 80% rename from network/protocol/flows/handshake/receiveversion.go rename to app/protocol/flows/handshake/receiveversion.go index 8333641de..3ea905f20 100644 --- a/network/protocol/flows/handshake/receiveversion.go +++ b/app/protocol/flows/handshake/receiveversion.go @@ -1,11 +1,11 @@ package handshake import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/common" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/common" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" ) var ( @@ -16,7 +16,7 @@ var ( // minAcceptableProtocolVersion is the lowest protocol version that a // connected peer may support. - minAcceptableProtocolVersion = domainmessage.ProtocolVersion + minAcceptableProtocolVersion = appmessage.ProtocolVersion ) type receiveVersionFlow struct { @@ -28,7 +28,7 @@ type receiveVersionFlow struct { // ReceiveVersion waits for the peer to send a version message, sends a // verack in response, and updates its info accordingly. func ReceiveVersion(context HandleHandshakeContext, incomingRoute *router.Route, outgoingRoute *router.Route, - peer *peerpkg.Peer) (*domainmessage.NetAddress, error) { + peer *peerpkg.Peer) (*appmessage.NetAddress, error) { flow := &receiveVersionFlow{ HandleHandshakeContext: context, @@ -40,13 +40,13 @@ func ReceiveVersion(context HandleHandshakeContext, incomingRoute *router.Route, return flow.start() } -func (flow *receiveVersionFlow) start() (*domainmessage.NetAddress, error) { +func (flow *receiveVersionFlow) start() (*appmessage.NetAddress, error) { message, err := flow.incomingRoute.DequeueWithTimeout(common.DefaultTimeout) if err != nil { return nil, err } - msgVersion, ok := message.(*domainmessage.MsgVersion) + msgVersion, ok := message.(*appmessage.MsgVersion) if !ok { return nil, protocolerrors.New(true, "a version message must precede all others") } @@ -64,7 +64,7 @@ func (flow *receiveVersionFlow) start() (*domainmessage.NetAddress, error) { // too old. // // NOTE: If minAcceptableProtocolVersion is raised to be higher than - // domainmessage.RejectVersion, this should send a reject packet before + // appmessage.RejectVersion, this should send a reject packet before // disconnecting. if msgVersion.ProtocolVersion < minAcceptableProtocolVersion { return nil, protocolerrors.Errorf(false, "protocol version must be %d or greater", @@ -90,7 +90,7 @@ func (flow *receiveVersionFlow) start() (*domainmessage.NetAddress, error) { } flow.peer.UpdateFieldsFromMsgVersion(msgVersion) - err = flow.outgoingRoute.Enqueue(domainmessage.NewMsgVerAck()) + err = flow.outgoingRoute.Enqueue(appmessage.NewMsgVerAck()) if err != nil { return nil, err } diff --git a/network/protocol/flows/handshake/sendversion.go b/app/protocol/flows/handshake/sendversion.go similarity index 80% rename from network/protocol/flows/handshake/sendversion.go rename to app/protocol/flows/handshake/sendversion.go index dc431c1a9..5b2b0c555 100644 --- a/network/protocol/flows/handshake/sendversion.go +++ b/app/protocol/flows/handshake/sendversion.go @@ -1,9 +1,9 @@ package handshake import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/common" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/common" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/version" ) @@ -18,11 +18,11 @@ var ( // defaultServices describes the default services that are supported by // the server. - defaultServices = domainmessage.SFNodeNetwork | domainmessage.SFNodeBloom | domainmessage.SFNodeCF + defaultServices = appmessage.SFNodeNetwork | appmessage.SFNodeBloom | appmessage.SFNodeCF // defaultRequiredServices describes the default services that are // required to be supported by outbound peers. - defaultRequiredServices = domainmessage.SFNodeNetwork + defaultRequiredServices = appmessage.SFNodeNetwork ) type sendVersionFlow struct { @@ -49,7 +49,7 @@ func (flow *sendVersionFlow) start() error { if err != nil { return err } - msg := domainmessage.NewMsgVersion(localAddress, flow.NetAdapter().ID(), + msg := appmessage.NewMsgVersion(localAddress, flow.NetAdapter().ID(), flow.Config().ActiveNetParams.Name, selectedTipHash, subnetworkID) msg.AddUserAgent(userAgentName, userAgentVersion, flow.Config().UserAgentComments...) @@ -57,7 +57,7 @@ func (flow *sendVersionFlow) start() error { msg.Services = defaultServices // Advertise our max supported protocol version. - msg.ProtocolVersion = domainmessage.ProtocolVersion + msg.ProtocolVersion = appmessage.ProtocolVersion // Advertise if inv messages for transactions are desired. msg.DisableRelayTx = flow.Config().BlocksOnly diff --git a/network/protocol/flows/ibd/handle_request_block_locator.go b/app/protocol/flows/ibd/handle_request_block_locator.go similarity index 85% rename from network/protocol/flows/ibd/handle_request_block_locator.go rename to app/protocol/flows/ibd/handle_request_block_locator.go index 5b5c68d5c..84d7851da 100644 --- a/network/protocol/flows/ibd/handle_request_block_locator.go +++ b/app/protocol/flows/ibd/handle_request_block_locator.go @@ -1,10 +1,10 @@ package ibd import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/util/daghash" ) @@ -57,13 +57,13 @@ func (flow *handleRequestBlockLocatorFlow) receiveGetBlockLocator() (lowHash *da if err != nil { return nil, nil, err } - msgGetBlockLocator := message.(*domainmessage.MsgRequestBlockLocator) + msgGetBlockLocator := message.(*appmessage.MsgRequestBlockLocator) return msgGetBlockLocator.LowHash, msgGetBlockLocator.HighHash, nil } func (flow *handleRequestBlockLocatorFlow) sendBlockLocator(locator blockdag.BlockLocator) error { - msgBlockLocator := domainmessage.NewMsgBlockLocator(locator) + msgBlockLocator := appmessage.NewMsgBlockLocator(locator) err := flow.outgoingRoute.Enqueue(msgBlockLocator) if err != nil { return err diff --git a/network/protocol/flows/ibd/handle_request_ibd_blocks.go b/app/protocol/flows/ibd/handle_request_ibd_blocks.go similarity index 78% rename from network/protocol/flows/ibd/handle_request_ibd_blocks.go rename to app/protocol/flows/ibd/handle_request_ibd_blocks.go index 23f17671a..946054c78 100644 --- a/network/protocol/flows/ibd/handle_request_ibd_blocks.go +++ b/app/protocol/flows/ibd/handle_request_ibd_blocks.go @@ -2,10 +2,10 @@ package ibd import ( "errors" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/util/daghash" ) @@ -66,12 +66,12 @@ func (flow *handleRequestBlocksFlow) start() error { return err } - if _, ok := message.(*domainmessage.MsgRequestNextIBDBlocks); !ok { + if _, ok := message.(*appmessage.MsgRequestNextIBDBlocks); !ok { return protocolerrors.Errorf(true, "received unexpected message type. "+ - "expected: %s, got: %s", domainmessage.CmdRequestNextIBDBlocks, message.Command()) + "expected: %s, got: %s", appmessage.CmdRequestNextIBDBlocks, message.Command()) } } - err = flow.outgoingRoute.Enqueue(domainmessage.NewMsgDoneIBDBlocks()) + err = flow.outgoingRoute.Enqueue(appmessage.NewMsgDoneIBDBlocks()) if err != nil { return err } @@ -85,15 +85,15 @@ func receiveRequestIBDBlocks(incomingRoute *router.Route) (lowHash *daghash.Hash if err != nil { return nil, nil, err } - msgRequestIBDBlocks := message.(*domainmessage.MsgRequestIBDBlocks) + msgRequestIBDBlocks := message.(*appmessage.MsgRequestIBDBlocks) return msgRequestIBDBlocks.LowHash, msgRequestIBDBlocks.HighHash, nil } func (flow *handleRequestBlocksFlow) buildMsgIBDBlocks(lowHash *daghash.Hash, - highHash *daghash.Hash) ([]*domainmessage.MsgIBDBlock, error) { + highHash *daghash.Hash) ([]*appmessage.MsgIBDBlock, error) { - const maxHashesInMsgIBDBlocks = domainmessage.MaxInvPerMsg + const maxHashesInMsgIBDBlocks = appmessage.MaxInvPerMsg blockHashes, err := flow.DAG().AntiPastHashesBetween(lowHash, highHash, maxHashesInMsgIBDBlocks) if err != nil { if errors.Is(err, blockdag.ErrInvalidParameter) { @@ -103,19 +103,19 @@ func (flow *handleRequestBlocksFlow) buildMsgIBDBlocks(lowHash *daghash.Hash, return nil, err } - msgIBDBlocks := make([]*domainmessage.MsgIBDBlock, len(blockHashes)) + msgIBDBlocks := make([]*appmessage.MsgIBDBlock, len(blockHashes)) for i, blockHash := range blockHashes { block, err := flow.DAG().BlockByHash(blockHash) if err != nil { return nil, err } - msgIBDBlocks[i] = domainmessage.NewMsgIBDBlock(block.MsgBlock()) + msgIBDBlocks[i] = appmessage.NewMsgIBDBlock(block.MsgBlock()) } return msgIBDBlocks, nil } -func (flow *handleRequestBlocksFlow) sendMsgIBDBlocks(msgIBDBlocks []*domainmessage.MsgIBDBlock) error { +func (flow *handleRequestBlocksFlow) sendMsgIBDBlocks(msgIBDBlocks []*appmessage.MsgIBDBlock) error { for _, msgIBDBlock := range msgIBDBlocks { err := flow.outgoingRoute.Enqueue(msgIBDBlock) if err != nil { diff --git a/network/protocol/flows/ibd/ibd.go b/app/protocol/flows/ibd/ibd.go similarity index 81% rename from network/protocol/flows/ibd/ibd.go rename to app/protocol/flows/ibd/ibd.go index 836fe0442..3eee96a70 100644 --- a/network/protocol/flows/ibd/ibd.go +++ b/app/protocol/flows/ibd/ibd.go @@ -1,12 +1,12 @@ package ibd import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/common" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/common" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -96,7 +96,7 @@ func (flow *handleIBDFlow) findHighestSharedBlockHash(peerSelectedTipHash *dagha func (flow *handleIBDFlow) sendGetBlockLocator(lowHash *daghash.Hash, highHash *daghash.Hash) error { - msgGetBlockLocator := domainmessage.NewMsgRequestBlockLocator(highHash, lowHash) + msgGetBlockLocator := appmessage.NewMsgRequestBlockLocator(highHash, lowHash) return flow.outgoingRoute.Enqueue(msgGetBlockLocator) } @@ -105,11 +105,11 @@ func (flow *handleIBDFlow) receiveBlockLocator() (blockLocatorHashes []*daghash. if err != nil { return nil, err } - msgBlockLocator, ok := message.(*domainmessage.MsgBlockLocator) + msgBlockLocator, ok := message.(*appmessage.MsgBlockLocator) if !ok { return nil, protocolerrors.Errorf(true, "received unexpected message type. "+ - "expected: %s, got: %s", domainmessage.CmdBlockLocator, message.Command()) + "expected: %s, got: %s", appmessage.CmdBlockLocator, message.Command()) } return msgBlockLocator.BlockLocatorHashes, nil } @@ -140,7 +140,7 @@ func (flow *handleIBDFlow) downloadBlocks(highestSharedBlockHash *daghash.Hash, blocksReceived++ if blocksReceived%ibdBatchSize == 0 { - err = flow.outgoingRoute.Enqueue(domainmessage.NewMsgRequestNextIBDBlocks()) + err = flow.outgoingRoute.Enqueue(appmessage.NewMsgRequestNextIBDBlocks()) if err != nil { return err } @@ -151,28 +151,28 @@ func (flow *handleIBDFlow) downloadBlocks(highestSharedBlockHash *daghash.Hash, func (flow *handleIBDFlow) sendGetBlocks(highestSharedBlockHash *daghash.Hash, peerSelectedTipHash *daghash.Hash) error { - msgGetBlockInvs := domainmessage.NewMsgRequstIBDBlocks(highestSharedBlockHash, peerSelectedTipHash) + msgGetBlockInvs := appmessage.NewMsgRequstIBDBlocks(highestSharedBlockHash, peerSelectedTipHash) return flow.outgoingRoute.Enqueue(msgGetBlockInvs) } -func (flow *handleIBDFlow) receiveIBDBlock() (msgIBDBlock *domainmessage.MsgIBDBlock, doneIBD bool, err error) { +func (flow *handleIBDFlow) receiveIBDBlock() (msgIBDBlock *appmessage.MsgIBDBlock, doneIBD bool, err error) { message, err := flow.incomingRoute.DequeueWithTimeout(common.DefaultTimeout) if err != nil { return nil, false, err } switch message := message.(type) { - case *domainmessage.MsgIBDBlock: + case *appmessage.MsgIBDBlock: return message, false, nil - case *domainmessage.MsgDoneIBDBlocks: + case *appmessage.MsgDoneIBDBlocks: return nil, true, nil default: return nil, false, protocolerrors.Errorf(true, "received unexpected message type. "+ - "expected: %s, got: %s", domainmessage.CmdIBDBlock, message.Command()) + "expected: %s, got: %s", appmessage.CmdIBDBlock, message.Command()) } } -func (flow *handleIBDFlow) processIBDBlock(msgIBDBlock *domainmessage.MsgIBDBlock) error { +func (flow *handleIBDFlow) processIBDBlock(msgIBDBlock *appmessage.MsgIBDBlock) error { block := util.NewBlock(msgIBDBlock.MsgBlock) if flow.DAG().IsInDAG(block.Hash()) { diff --git a/network/protocol/flows/ibd/log.go b/app/protocol/flows/ibd/log.go similarity index 100% rename from network/protocol/flows/ibd/log.go rename to app/protocol/flows/ibd/log.go diff --git a/network/protocol/flows/ibd/selectedtip/handle_request_selected_tip.go b/app/protocol/flows/ibd/selectedtip/handle_request_selected_tip.go similarity index 81% rename from network/protocol/flows/ibd/selectedtip/handle_request_selected_tip.go rename to app/protocol/flows/ibd/selectedtip/handle_request_selected_tip.go index 8aa1f535d..e49dd5611 100644 --- a/network/protocol/flows/ibd/selectedtip/handle_request_selected_tip.go +++ b/app/protocol/flows/ibd/selectedtip/handle_request_selected_tip.go @@ -1,9 +1,9 @@ package selectedtip import ( + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/pkg/errors" ) @@ -46,16 +46,16 @@ func (flow *handleRequestSelectedTipFlow) receiveGetSelectedTip() error { if err != nil { return err } - _, ok := message.(*domainmessage.MsgRequestSelectedTip) + _, ok := message.(*appmessage.MsgRequestSelectedTip) if !ok { return errors.Errorf("received unexpected message type. "+ - "expected: %s, got: %s", domainmessage.CmdRequestSelectedTip, message.Command()) + "expected: %s, got: %s", appmessage.CmdRequestSelectedTip, message.Command()) } return nil } func (flow *handleRequestSelectedTipFlow) sendSelectedTipHash() error { - msgSelectedTip := domainmessage.NewMsgSelectedTip(flow.DAG().SelectedTipHash()) + msgSelectedTip := appmessage.NewMsgSelectedTip(flow.DAG().SelectedTipHash()) return flow.outgoingRoute.Enqueue(msgSelectedTip) } diff --git a/network/protocol/flows/ibd/selectedtip/request_selected_tip.go b/app/protocol/flows/ibd/selectedtip/request_selected_tip.go similarity index 84% rename from network/protocol/flows/ibd/selectedtip/request_selected_tip.go rename to app/protocol/flows/ibd/selectedtip/request_selected_tip.go index f11f4094a..3f9460f69 100644 --- a/network/protocol/flows/ibd/selectedtip/request_selected_tip.go +++ b/app/protocol/flows/ibd/selectedtip/request_selected_tip.go @@ -1,11 +1,11 @@ package selectedtip import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/common" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/common" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/util/daghash" ) @@ -64,7 +64,7 @@ func (flow *requestSelectedTipFlow) runSelectedTipRequest() error { } func (flow *requestSelectedTipFlow) requestSelectedTip() error { - msgGetSelectedTip := domainmessage.NewMsgRequestSelectedTip() + msgGetSelectedTip := appmessage.NewMsgRequestSelectedTip() return flow.outgoingRoute.Enqueue(msgGetSelectedTip) } @@ -73,7 +73,7 @@ func (flow *requestSelectedTipFlow) receiveSelectedTip() (selectedTipHash *dagha if err != nil { return nil, err } - msgSelectedTip := message.(*domainmessage.MsgSelectedTip) + msgSelectedTip := message.(*appmessage.MsgSelectedTip) return msgSelectedTip.SelectedTipHash, nil } diff --git a/network/protocol/flows/ping/receive.go b/app/protocol/flows/ping/receive.go similarity index 80% rename from network/protocol/flows/ping/receive.go rename to app/protocol/flows/ping/receive.go index d6e721092..afa92acbe 100644 --- a/network/protocol/flows/ping/receive.go +++ b/app/protocol/flows/ping/receive.go @@ -1,8 +1,8 @@ package ping import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" ) // ReceivePingsContext is the interface for the context needed for the ReceivePings flow. @@ -31,9 +31,9 @@ func (flow *receivePingsFlow) start() error { if err != nil { return err } - pingMessage := message.(*domainmessage.MsgPing) + pingMessage := message.(*appmessage.MsgPing) - pongMessage := domainmessage.NewMsgPong(pingMessage.Nonce) + pongMessage := appmessage.NewMsgPong(pingMessage.Nonce) err = flow.outgoingRoute.Enqueue(pongMessage) if err != nil { return err diff --git a/network/protocol/flows/ping/send.go b/app/protocol/flows/ping/send.go similarity index 78% rename from network/protocol/flows/ping/send.go rename to app/protocol/flows/ping/send.go index 774d5c4d0..e46c1672e 100644 --- a/network/protocol/flows/ping/send.go +++ b/app/protocol/flows/ping/send.go @@ -3,11 +3,11 @@ package ping import ( "time" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/common" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/common" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/util/random" ) @@ -46,7 +46,7 @@ func (flow *sendPingsFlow) start() error { } flow.peer.SetPingPending(nonce) - pingMessage := domainmessage.NewMsgPing(nonce) + pingMessage := appmessage.NewMsgPing(nonce) err = flow.outgoingRoute.Enqueue(pingMessage) if err != nil { return err @@ -56,7 +56,7 @@ func (flow *sendPingsFlow) start() error { if err != nil { return err } - pongMessage := message.(*domainmessage.MsgPong) + pongMessage := message.(*appmessage.MsgPong) if pongMessage.Nonce != pingMessage.Nonce { return protocolerrors.New(true, "nonce mismatch between ping and pong") } diff --git a/network/protocol/flows/rejects/handle_rejects.go b/app/protocol/flows/rejects/handle_rejects.go similarity index 82% rename from network/protocol/flows/rejects/handle_rejects.go rename to app/protocol/flows/rejects/handle_rejects.go index 57bc1d67c..d3ea4a171 100644 --- a/network/protocol/flows/rejects/handle_rejects.go +++ b/app/protocol/flows/rejects/handle_rejects.go @@ -1,9 +1,9 @@ package rejects import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" ) // HandleRejectsContext is the interface for the context needed for the HandleRejects flow. @@ -31,7 +31,7 @@ func (flow *handleRejectsFlow) start() error { if err != nil { return err } - rejectMessage := message.(*domainmessage.MsgReject) + rejectMessage := message.(*appmessage.MsgReject) const maxReasonLength = 255 if len(rejectMessage.Reason) > maxReasonLength { diff --git a/network/protocol/flows/relaytransactions/handle_relayed_transactions.go b/app/protocol/flows/relaytransactions/handle_relayed_transactions.go similarity index 82% rename from network/protocol/flows/relaytransactions/handle_relayed_transactions.go rename to app/protocol/flows/relaytransactions/handle_relayed_transactions.go index e54a81aad..f480e0fbe 100644 --- a/network/protocol/flows/relaytransactions/handle_relayed_transactions.go +++ b/app/protocol/flows/relaytransactions/handle_relayed_transactions.go @@ -1,13 +1,13 @@ package relaytransactions import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/common" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/mempool" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/common" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" @@ -20,23 +20,23 @@ type TransactionsRelayContext interface { DAG() *blockdag.BlockDAG SharedRequestedTransactions() *SharedRequestedTransactions TxPool() *mempool.TxPool - Broadcast(message domainmessage.Message) error + Broadcast(message appmessage.Message) error } type handleRelayedTransactionsFlow struct { TransactionsRelayContext incomingRoute, outgoingRoute *router.Route - invsQueue []*domainmessage.MsgInvTransaction + invsQueue []*appmessage.MsgInvTransaction } -// HandleRelayedTransactions listens to domainmessage.MsgInvTransaction messages, requests their corresponding transactions if they +// HandleRelayedTransactions listens to appmessage.MsgInvTransaction messages, requests their corresponding transactions if they // are missing, adds them to the mempool and propagates them to the rest of the network. func HandleRelayedTransactions(context TransactionsRelayContext, incomingRoute *router.Route, outgoingRoute *router.Route) error { flow := &handleRelayedTransactionsFlow{ TransactionsRelayContext: context, incomingRoute: incomingRoute, outgoingRoute: outgoingRoute, - invsQueue: make([]*domainmessage.MsgInvTransaction, 0), + invsQueue: make([]*appmessage.MsgInvTransaction, 0), } return flow.start() } @@ -61,7 +61,7 @@ func (flow *handleRelayedTransactionsFlow) start() error { } func (flow *handleRelayedTransactionsFlow) requestInvTransactions( - inv *domainmessage.MsgInvTransaction) (requestedIDs []*daghash.TxID, err error) { + inv *appmessage.MsgInvTransaction) (requestedIDs []*daghash.TxID, err error) { idsToRequest := make([]*daghash.TxID, 0, len(inv.TxIDs)) for _, txID := range inv.TxIDs { @@ -79,7 +79,7 @@ func (flow *handleRelayedTransactionsFlow) requestInvTransactions( return idsToRequest, nil } - msgGetTransactions := domainmessage.NewMsgRequestTransactions(idsToRequest) + msgGetTransactions := appmessage.NewMsgRequestTransactions(idsToRequest) err = flow.outgoingRoute.Enqueue(msgGetTransactions) if err != nil { flow.SharedRequestedTransactions().removeMany(idsToRequest) @@ -103,7 +103,7 @@ func (flow *handleRelayedTransactionsFlow) isKnownTransaction(txID *daghash.TxID // checked because the vast majority of transactions consist of // two outputs where one is some form of "pay-to-somebody-else" // and the other is a change output. - prevOut := domainmessage.Outpoint{TxID: *txID} + prevOut := appmessage.Outpoint{TxID: *txID} for i := uint32(0); i < 2; i++ { prevOut.Index = i _, ok := flow.DAG().GetUTXOEntry(prevOut) @@ -114,9 +114,9 @@ func (flow *handleRelayedTransactionsFlow) isKnownTransaction(txID *daghash.TxID return false } -func (flow *handleRelayedTransactionsFlow) readInv() (*domainmessage.MsgInvTransaction, error) { +func (flow *handleRelayedTransactionsFlow) readInv() (*appmessage.MsgInvTransaction, error) { if len(flow.invsQueue) > 0 { - var inv *domainmessage.MsgInvTransaction + var inv *appmessage.MsgInvTransaction inv, flow.invsQueue = flow.invsQueue[0], flow.invsQueue[1:] return inv, nil } @@ -126,7 +126,7 @@ func (flow *handleRelayedTransactionsFlow) readInv() (*domainmessage.MsgInvTrans return nil, err } - inv, ok := msg.(*domainmessage.MsgInvTransaction) + inv, ok := msg.(*appmessage.MsgInvTransaction) if !ok { return nil, protocolerrors.Errorf(true, "unexpected %s message in the block relay flow while "+ "expecting an inv message", msg.Command()) @@ -139,7 +139,7 @@ func (flow *handleRelayedTransactionsFlow) broadcastAcceptedTransactions(accepte for i, tx := range acceptedTxs { idsToBroadcast[i] = tx.Tx.ID() } - inv := domainmessage.NewMsgInvTransaction(idsToBroadcast) + inv := appmessage.NewMsgInvTransaction(idsToBroadcast) return flow.Broadcast(inv) } @@ -148,7 +148,7 @@ func (flow *handleRelayedTransactionsFlow) broadcastAcceptedTransactions(accepte // // and populates invsQueue with any inv messages that meanwhile arrive. func (flow *handleRelayedTransactionsFlow) readMsgTxOrNotFound() ( - msgTx *domainmessage.MsgTx, msgNotFound *domainmessage.MsgTransactionNotFound, err error) { + msgTx *appmessage.MsgTx, msgNotFound *appmessage.MsgTransactionNotFound, err error) { for { message, err := flow.incomingRoute.DequeueWithTimeout(common.DefaultTimeout) @@ -157,11 +157,11 @@ func (flow *handleRelayedTransactionsFlow) readMsgTxOrNotFound() ( } switch message := message.(type) { - case *domainmessage.MsgInvTransaction: + case *appmessage.MsgInvTransaction: flow.invsQueue = append(flow.invsQueue, message) - case *domainmessage.MsgTx: + case *appmessage.MsgTx: return message, nil, nil - case *domainmessage.MsgTransactionNotFound: + case *appmessage.MsgTransactionNotFound: return nil, message, nil default: return nil, nil, errors.Errorf("unexpected message %s", message.Command()) diff --git a/network/protocol/flows/relaytransactions/handle_requested_transactions.go b/app/protocol/flows/relaytransactions/handle_requested_transactions.go similarity index 74% rename from network/protocol/flows/relaytransactions/handle_requested_transactions.go rename to app/protocol/flows/relaytransactions/handle_requested_transactions.go index 033bc639b..1379bd15c 100644 --- a/network/protocol/flows/relaytransactions/handle_requested_transactions.go +++ b/app/protocol/flows/relaytransactions/handle_requested_transactions.go @@ -1,8 +1,8 @@ package relaytransactions import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" ) type handleRequestedTransactionsFlow struct { @@ -10,7 +10,7 @@ type handleRequestedTransactionsFlow struct { incomingRoute, outgoingRoute *router.Route } -// HandleRequestedTransactions listens to domainmessage.MsgRequestTransactions messages, responding with the requested +// HandleRequestedTransactions listens to appmessage.MsgRequestTransactions messages, responding with the requested // transactions if those are in the mempool. // Missing transactions would be ignored func HandleRequestedTransactions(context TransactionsRelayContext, incomingRoute *router.Route, outgoingRoute *router.Route) error { @@ -33,7 +33,7 @@ func (flow *handleRequestedTransactionsFlow) start() error { tx, ok := flow.TxPool().FetchTransaction(transactionID) if !ok { - msgTransactionNotFound := domainmessage.NewMsgTransactionNotFound(transactionID) + msgTransactionNotFound := appmessage.NewMsgTransactionNotFound(transactionID) err := flow.outgoingRoute.Enqueue(msgTransactionNotFound) if err != nil { return err @@ -49,11 +49,11 @@ func (flow *handleRequestedTransactionsFlow) start() error { } } -func (flow *handleRequestedTransactionsFlow) readRequestTransactions() (*domainmessage.MsgRequestTransactions, error) { +func (flow *handleRequestedTransactionsFlow) readRequestTransactions() (*appmessage.MsgRequestTransactions, error) { msg, err := flow.incomingRoute.Dequeue() if err != nil { return nil, err } - return msg.(*domainmessage.MsgRequestTransactions), nil + return msg.(*appmessage.MsgRequestTransactions), nil } diff --git a/network/protocol/flows/relaytransactions/shared_requested_transactions.go b/app/protocol/flows/relaytransactions/shared_requested_transactions.go similarity index 100% rename from network/protocol/flows/relaytransactions/shared_requested_transactions.go rename to app/protocol/flows/relaytransactions/shared_requested_transactions.go diff --git a/network/protocol/log.go b/app/protocol/log.go similarity index 100% rename from network/protocol/log.go rename to app/protocol/log.go diff --git a/network/protocol/manager.go b/app/protocol/manager.go similarity index 86% rename from network/protocol/manager.go rename to app/protocol/manager.go index 66c8ec5bd..f130e5f4c 100644 --- a/network/protocol/manager.go +++ b/app/protocol/manager.go @@ -3,14 +3,14 @@ package protocol import ( "fmt" + "github.com/kaspanet/kaspad/app/protocol/flowcontext" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/mempool" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/network/addressmanager" - "github.com/kaspanet/kaspad/network/connmanager" - "github.com/kaspanet/kaspad/network/netadapter" - "github.com/kaspanet/kaspad/network/protocol/flowcontext" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/connmanager" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" "github.com/kaspanet/kaspad/util" ) diff --git a/network/protocol/peer/log.go b/app/protocol/peer/log.go similarity index 100% rename from network/protocol/peer/log.go rename to app/protocol/peer/log.go diff --git a/network/protocol/peer/peer.go b/app/protocol/peer/peer.go similarity index 94% rename from network/protocol/peer/peer.go rename to app/protocol/peer/peer.go index fcbaca67c..51d1838c9 100644 --- a/network/protocol/peer/peer.go +++ b/app/protocol/peer/peer.go @@ -1,13 +1,13 @@ package peer import ( - "github.com/kaspanet/kaspad/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" "sync" "sync/atomic" "time" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/id" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" "github.com/kaspanet/kaspad/util/daghash" mathUtil "github.com/kaspanet/kaspad/util/math" "github.com/kaspanet/kaspad/util/mstime" @@ -22,7 +22,7 @@ type Peer struct { selectedTipHash *daghash.Hash userAgent string - services domainmessage.ServiceFlag + services appmessage.ServiceFlag advertisedProtocolVerion uint32 // protocol version advertised by remote protocolVersion uint32 // negotiated protocol version disableRelayTx bool @@ -109,7 +109,7 @@ func (p *Peer) IsOutbound() bool { } // UpdateFieldsFromMsgVersion updates the peer with the data from the version message. -func (p *Peer) UpdateFieldsFromMsgVersion(msg *domainmessage.MsgVersion) { +func (p *Peer) UpdateFieldsFromMsgVersion(msg *appmessage.MsgVersion) { // Negotiate the protocol version. p.advertisedProtocolVerion = msg.ProtocolVersion p.protocolVersion = mathUtil.MinUint32(p.protocolVersion, p.advertisedProtocolVerion) diff --git a/network/protocol/protocol.go b/app/protocol/protocol.go similarity index 71% rename from network/protocol/protocol.go rename to app/protocol/protocol.go index ad4ac393f..52a957d1a 100644 --- a/network/protocol/protocol.go +++ b/app/protocol/protocol.go @@ -1,22 +1,22 @@ package protocol import ( - "github.com/kaspanet/kaspad/network/protocol/flows/rejects" + "github.com/kaspanet/kaspad/app/protocol/flows/rejects" "sync/atomic" - "github.com/kaspanet/kaspad/network/addressmanager" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter" - routerpkg "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/protocol/flows/addressexchange" - "github.com/kaspanet/kaspad/network/protocol/flows/blockrelay" - "github.com/kaspanet/kaspad/network/protocol/flows/handshake" - "github.com/kaspanet/kaspad/network/protocol/flows/ibd" - "github.com/kaspanet/kaspad/network/protocol/flows/ibd/selectedtip" - "github.com/kaspanet/kaspad/network/protocol/flows/ping" - "github.com/kaspanet/kaspad/network/protocol/flows/relaytransactions" - peerpkg "github.com/kaspanet/kaspad/network/protocol/peer" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/app/protocol/flows/addressexchange" + "github.com/kaspanet/kaspad/app/protocol/flows/blockrelay" + "github.com/kaspanet/kaspad/app/protocol/flows/handshake" + "github.com/kaspanet/kaspad/app/protocol/flows/ibd" + "github.com/kaspanet/kaspad/app/protocol/flows/ibd/selectedtip" + "github.com/kaspanet/kaspad/app/protocol/flows/ping" + "github.com/kaspanet/kaspad/app/protocol/flows/relaytransactions" + peerpkg "github.com/kaspanet/kaspad/app/protocol/peer" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" + routerpkg "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/pkg/errors" ) @@ -89,7 +89,7 @@ func (m *Manager) handleError(err error, netConnection *netadapter.NetConnection panic(err) } - err = outgoingRoute.Enqueue(domainmessage.NewMsgReject(protocolErr.Error())) + err = outgoingRoute.Enqueue(appmessage.NewMsgReject(protocolErr.Error())) if err != nil && !errors.Is(err, routerpkg.ErrRouteClosed) { panic(err) } @@ -123,13 +123,13 @@ func (m *Manager) registerAddressFlows(router *routerpkg.Router, isStopping *uin outgoingRoute := router.OutgoingRoute() return []*flow{ - m.registerOneTimeFlow("SendAddresses", router, []domainmessage.MessageCommand{domainmessage.CmdRequestAddresses}, isStopping, errChan, + m.registerOneTimeFlow("SendAddresses", router, []appmessage.MessageCommand{appmessage.CmdRequestAddresses}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return addressexchange.SendAddresses(m.context, incomingRoute, outgoingRoute) }, ), - m.registerOneTimeFlow("ReceiveAddresses", router, []domainmessage.MessageCommand{domainmessage.CmdAddresses}, isStopping, errChan, + m.registerOneTimeFlow("ReceiveAddresses", router, []appmessage.MessageCommand{appmessage.CmdAddresses}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return addressexchange.ReceiveAddresses(m.context, incomingRoute, outgoingRoute, peer) }, @@ -141,14 +141,14 @@ func (m *Manager) registerBlockRelayFlows(router *routerpkg.Router, isStopping * outgoingRoute := router.OutgoingRoute() return []*flow{ - m.registerFlow("HandleRelayInvs", router, []domainmessage.MessageCommand{domainmessage.CmdInvRelayBlock, domainmessage.CmdBlock}, isStopping, errChan, + m.registerFlow("HandleRelayInvs", router, []appmessage.MessageCommand{appmessage.CmdInvRelayBlock, appmessage.CmdBlock}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return blockrelay.HandleRelayInvs(m.context, incomingRoute, outgoingRoute, peer) }, ), - m.registerFlow("HandleRelayBlockRequests", router, []domainmessage.MessageCommand{domainmessage.CmdRequestRelayBlocks}, isStopping, errChan, + m.registerFlow("HandleRelayBlockRequests", router, []appmessage.MessageCommand{appmessage.CmdRequestRelayBlocks}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return blockrelay.HandleRelayBlockRequests(m.context, incomingRoute, outgoingRoute, peer) }, @@ -160,13 +160,13 @@ func (m *Manager) registerPingFlows(router *routerpkg.Router, isStopping *uint32 outgoingRoute := router.OutgoingRoute() return []*flow{ - m.registerFlow("ReceivePings", router, []domainmessage.MessageCommand{domainmessage.CmdPing}, isStopping, errChan, + m.registerFlow("ReceivePings", router, []appmessage.MessageCommand{appmessage.CmdPing}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return ping.ReceivePings(m.context, incomingRoute, outgoingRoute) }, ), - m.registerFlow("SendPings", router, []domainmessage.MessageCommand{domainmessage.CmdPong}, isStopping, errChan, + m.registerFlow("SendPings", router, []appmessage.MessageCommand{appmessage.CmdPong}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return ping.SendPings(m.context, incomingRoute, outgoingRoute, peer) }, @@ -178,32 +178,32 @@ func (m *Manager) registerIBDFlows(router *routerpkg.Router, isStopping *uint32, outgoingRoute := router.OutgoingRoute() return []*flow{ - m.registerFlow("HandleIBD", router, []domainmessage.MessageCommand{domainmessage.CmdBlockLocator, domainmessage.CmdIBDBlock, - domainmessage.CmdDoneIBDBlocks}, isStopping, errChan, + m.registerFlow("HandleIBD", router, []appmessage.MessageCommand{appmessage.CmdBlockLocator, appmessage.CmdIBDBlock, + appmessage.CmdDoneIBDBlocks}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return ibd.HandleIBD(m.context, incomingRoute, outgoingRoute, peer) }, ), - m.registerFlow("RequestSelectedTip", router, []domainmessage.MessageCommand{domainmessage.CmdSelectedTip}, isStopping, errChan, + m.registerFlow("RequestSelectedTip", router, []appmessage.MessageCommand{appmessage.CmdSelectedTip}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return selectedtip.RequestSelectedTip(m.context, incomingRoute, outgoingRoute, peer) }, ), - m.registerFlow("HandleRequestSelectedTip", router, []domainmessage.MessageCommand{domainmessage.CmdRequestSelectedTip}, isStopping, errChan, + m.registerFlow("HandleRequestSelectedTip", router, []appmessage.MessageCommand{appmessage.CmdRequestSelectedTip}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return selectedtip.HandleRequestSelectedTip(m.context, incomingRoute, outgoingRoute) }, ), - m.registerFlow("HandleRequestBlockLocator", router, []domainmessage.MessageCommand{domainmessage.CmdRequestBlockLocator}, isStopping, errChan, + m.registerFlow("HandleRequestBlockLocator", router, []appmessage.MessageCommand{appmessage.CmdRequestBlockLocator}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return ibd.HandleRequestBlockLocator(m.context, incomingRoute, outgoingRoute) }, ), - m.registerFlow("HandleRequestIBDBlocks", router, []domainmessage.MessageCommand{domainmessage.CmdRequestIBDBlocks, domainmessage.CmdRequestNextIBDBlocks}, isStopping, errChan, + m.registerFlow("HandleRequestIBDBlocks", router, []appmessage.MessageCommand{appmessage.CmdRequestIBDBlocks, appmessage.CmdRequestNextIBDBlocks}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return ibd.HandleRequestIBDBlocks(m.context, incomingRoute, outgoingRoute) }, @@ -216,13 +216,13 @@ func (m *Manager) registerTransactionRelayFlow(router *routerpkg.Router, isStopp return []*flow{ m.registerFlow("HandleRelayedTransactions", router, - []domainmessage.MessageCommand{domainmessage.CmdInvTransaction, domainmessage.CmdTx, domainmessage.CmdTransactionNotFound}, isStopping, errChan, + []appmessage.MessageCommand{appmessage.CmdInvTransaction, appmessage.CmdTx, appmessage.CmdTransactionNotFound}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return relaytransactions.HandleRelayedTransactions(m.context, incomingRoute, outgoingRoute) }, ), m.registerFlow("HandleRequestTransactions", router, - []domainmessage.MessageCommand{domainmessage.CmdRequestTransactions}, isStopping, errChan, + []appmessage.MessageCommand{appmessage.CmdRequestTransactions}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return relaytransactions.HandleRequestedTransactions(m.context, incomingRoute, outgoingRoute) }, @@ -235,7 +235,7 @@ func (m *Manager) registerRejectsFlow(router *routerpkg.Router, isStopping *uint return []*flow{ m.registerFlow("HandleRejects", router, - []domainmessage.MessageCommand{domainmessage.CmdReject}, isStopping, errChan, + []appmessage.MessageCommand{appmessage.CmdReject}, isStopping, errChan, func(incomingRoute *routerpkg.Route, peer *peerpkg.Peer) error { return rejects.HandleRejects(m.context, incomingRoute, outgoingRoute) }, @@ -243,7 +243,7 @@ func (m *Manager) registerRejectsFlow(router *routerpkg.Router, isStopping *uint } } -func (m *Manager) registerFlow(name string, router *routerpkg.Router, messageTypes []domainmessage.MessageCommand, isStopping *uint32, +func (m *Manager) registerFlow(name string, router *routerpkg.Router, messageTypes []appmessage.MessageCommand, isStopping *uint32, errChan chan error, initializeFunc flowInitializeFunc) *flow { route, err := router.AddIncomingRoute(messageTypes) @@ -263,7 +263,7 @@ func (m *Manager) registerFlow(name string, router *routerpkg.Router, messageTyp } } -func (m *Manager) registerOneTimeFlow(name string, router *routerpkg.Router, messageTypes []domainmessage.MessageCommand, +func (m *Manager) registerOneTimeFlow(name string, router *routerpkg.Router, messageTypes []appmessage.MessageCommand, isStopping *uint32, stopChan chan error, initializeFunc flowInitializeFunc) *flow { route, err := router.AddIncomingRoute(messageTypes) @@ -292,12 +292,12 @@ func (m *Manager) registerOneTimeFlow(name string, router *routerpkg.Router, mes func registerHandshakeRoutes(router *routerpkg.Router) ( receiveVersionRoute *routerpkg.Route, sendVersionRoute *routerpkg.Route) { - receiveVersionRoute, err := router.AddIncomingRoute([]domainmessage.MessageCommand{domainmessage.CmdVersion}) + receiveVersionRoute, err := router.AddIncomingRoute([]appmessage.MessageCommand{appmessage.CmdVersion}) if err != nil { panic(err) } - sendVersionRoute, err = router.AddIncomingRoute([]domainmessage.MessageCommand{domainmessage.CmdVerAck}) + sendVersionRoute, err = router.AddIncomingRoute([]appmessage.MessageCommand{appmessage.CmdVerAck}) if err != nil { panic(err) } @@ -306,7 +306,7 @@ func registerHandshakeRoutes(router *routerpkg.Router) ( } func removeHandshakeRoutes(router *routerpkg.Router) { - err := router.RemoveRoute([]domainmessage.MessageCommand{domainmessage.CmdVersion, domainmessage.CmdVerAck}) + err := router.RemoveRoute([]appmessage.MessageCommand{appmessage.CmdVersion, appmessage.CmdVerAck}) if err != nil { panic(err) } diff --git a/network/protocol/protocolerrors/protocolerrors.go b/app/protocol/protocolerrors/protocolerrors.go similarity index 100% rename from network/protocol/protocolerrors/protocolerrors.go rename to app/protocol/protocolerrors/protocolerrors.go diff --git a/docker/Dockerfile b/docker/Dockerfile index f69e98255..57fff00fe 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -29,7 +29,6 @@ RUN GOOS=linux go build -a -installsuffix cgo -o kaspad . # Remove the line below and uncomment the line after it for testing with coverage RUN go test ./... -# RUN ./test.sh # --- multistage docker build: stage #2: runtime image FROM alpine diff --git a/domain/blockdag/blockindex.go b/domain/blockdag/blockindex.go index 938b2052b..530eb8bbb 100644 --- a/domain/blockdag/blockindex.go +++ b/domain/blockdag/blockindex.go @@ -6,7 +6,7 @@ package blockdag import ( "fmt" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util" "sync" diff --git a/domain/blockdag/blocklocator.go b/domain/blockdag/blocklocator.go index a2df1090e..c33e4ad81 100644 --- a/domain/blockdag/blocklocator.go +++ b/domain/blockdag/blocklocator.go @@ -1,7 +1,7 @@ package blockdag import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" ) @@ -215,12 +215,12 @@ func (dag *BlockDAG) AntiPastHashesBetween(lowHash, highHash *daghash.Hash, maxH // max number of block headers. // // This function MUST be called with the DAG state lock held (for reads). -func (dag *BlockDAG) antiPastHeadersBetween(lowHash, highHash *daghash.Hash, maxHeaders uint64) ([]*domainmessage.BlockHeader, error) { +func (dag *BlockDAG) antiPastHeadersBetween(lowHash, highHash *daghash.Hash, maxHeaders uint64) ([]*appmessage.BlockHeader, error) { nodes, err := dag.antiPastBetween(lowHash, highHash, maxHeaders) if err != nil { return nil, err } - headers := make([]*domainmessage.BlockHeader, len(nodes)) + headers := make([]*appmessage.BlockHeader, len(nodes)) for i, node := range nodes { headers[i] = node.Header() } @@ -229,10 +229,10 @@ func (dag *BlockDAG) antiPastHeadersBetween(lowHash, highHash *daghash.Hash, max // AntiPastHeadersBetween returns the headers of the blocks between the // lowHash's antiPast and highHash's antiPast, or up to -// domainmessage.MaxBlockHeadersPerMsg block headers. +// appmessage.MaxBlockHeadersPerMsg block headers. // // This function is safe for concurrent access. -func (dag *BlockDAG) AntiPastHeadersBetween(lowHash, highHash *daghash.Hash, maxHeaders uint64) ([]*domainmessage.BlockHeader, error) { +func (dag *BlockDAG) AntiPastHeadersBetween(lowHash, highHash *daghash.Hash, maxHeaders uint64) ([]*appmessage.BlockHeader, error) { dag.dagLock.RLock() defer dag.dagLock.RUnlock() headers, err := dag.antiPastHeadersBetween(lowHash, highHash, maxHeaders) diff --git a/domain/blockdag/blocknode.go b/domain/blockdag/blocknode.go index 3112a1725..957098a77 100644 --- a/domain/blockdag/blocknode.go +++ b/domain/blockdag/blocknode.go @@ -12,7 +12,7 @@ import ( "github.com/kaspanet/kaspad/util/mstime" "github.com/pkg/errors" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -106,7 +106,7 @@ type blockNode struct { // anticone of its selected parent (parent with highest blue score). // selectedParentAnticone is used to update reachability data we store for future reachability queries. // This function is NOT safe for concurrent access. -func (dag *BlockDAG) newBlockNode(blockHeader *domainmessage.BlockHeader, parents blockSet) (node *blockNode, selectedParentAnticone []*blockNode) { +func (dag *BlockDAG) newBlockNode(blockHeader *appmessage.BlockHeader, parents blockSet) (node *blockNode, selectedParentAnticone []*blockNode) { node = &blockNode{ parents: parents, children: make(blockSet), @@ -160,9 +160,9 @@ func (node *blockNode) less(other *blockNode) bool { // Header constructs a block header from the node and returns it. // // This function is safe for concurrent access. -func (node *blockNode) Header() *domainmessage.BlockHeader { +func (node *blockNode) Header() *appmessage.BlockHeader { // No lock is needed because all accessed fields are immutable. - return &domainmessage.BlockHeader{ + return &appmessage.BlockHeader{ Version: node.version, ParentHashes: node.ParentHashes(), HashMerkleRoot: node.hashMerkleRoot, diff --git a/domain/blockdag/coinbase.go b/domain/blockdag/coinbase.go index 2c33f97d2..4b3d27de7 100644 --- a/domain/blockdag/coinbase.go +++ b/domain/blockdag/coinbase.go @@ -6,8 +6,8 @@ import ( "encoding/binary" "io" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/coinbasepayload" "github.com/kaspanet/kaspad/util/daghash" @@ -124,8 +124,8 @@ func (node *blockNode) expectedCoinbaseTransaction(dag *BlockDAG, txsAcceptanceD return nil, err } - txIns := []*domainmessage.TxIn{} - txOuts := []*domainmessage.TxOut{} + txIns := []*appmessage.TxIn{} + txOuts := []*appmessage.TxOut{} for _, blue := range node.blues { txOut, err := coinbaseOutputForBlueBlock(dag, blue, txsAcceptanceData, bluesFeeData) @@ -140,7 +140,7 @@ func (node *blockNode) expectedCoinbaseTransaction(dag *BlockDAG, txsAcceptanceD if err != nil { return nil, err } - coinbaseTx := domainmessage.NewSubnetworkMsgTx(domainmessage.TxVersion, txIns, txOuts, subnetworkid.SubnetworkIDCoinbase, 0, payload) + coinbaseTx := appmessage.NewSubnetworkMsgTx(appmessage.TxVersion, txIns, txOuts, subnetworkid.SubnetworkIDCoinbase, 0, payload) sortedCoinbaseTx := txsort.Sort(coinbaseTx) return util.NewTx(sortedCoinbaseTx), nil } @@ -148,7 +148,7 @@ func (node *blockNode) expectedCoinbaseTransaction(dag *BlockDAG, txsAcceptanceD // coinbaseOutputForBlueBlock calculates the output that should go into the coinbase transaction of blueBlock // If blueBlock gets no fee - returns nil for txOut func coinbaseOutputForBlueBlock(dag *BlockDAG, blueBlock *blockNode, - txsAcceptanceData MultiBlockTxsAcceptanceData, feeData map[daghash.Hash]compactFeeData) (*domainmessage.TxOut, error) { + txsAcceptanceData MultiBlockTxsAcceptanceData, feeData map[daghash.Hash]compactFeeData) (*appmessage.TxOut, error) { blockTxsAcceptanceData, ok := txsAcceptanceData.FindAcceptanceData(blueBlock.hash) if !ok { @@ -190,7 +190,7 @@ func coinbaseOutputForBlueBlock(dag *BlockDAG, blueBlock *blockNode, return nil, err } - txOut := &domainmessage.TxOut{ + txOut := &appmessage.TxOut{ Value: totalReward, ScriptPubKey: scriptPubKey, } diff --git a/domain/blockdag/common_test.go b/domain/blockdag/common_test.go index 319a245c0..504891812 100644 --- a/domain/blockdag/common_test.go +++ b/domain/blockdag/common_test.go @@ -17,8 +17,8 @@ import ( "github.com/pkg/errors" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -78,7 +78,7 @@ func loadUTXOSet(filename string) (UTXOSet, error) { if err != nil { return nil, err } - utxoSet.utxoCollection[domainmessage.Outpoint{TxID: txID, Index: index}] = entry + utxoSet.utxoCollection[appmessage.Outpoint{TxID: txID, Index: index}] = entry } return utxoSet, nil @@ -118,7 +118,7 @@ func newTestDAG(params *dagconfig.Params) *BlockDAG { // provided fields populated and fake values for the other fields. func newTestNode(dag *BlockDAG, parents blockSet, blockVersion int32, bits uint32, timestamp mstime.Time) *blockNode { // Make up a header and create a block node from it. - header := &domainmessage.BlockHeader{ + header := &appmessage.BlockHeader{ Version: blockVersion, ParentHashes: parents.hashes(), Bits: bits, @@ -166,7 +166,7 @@ func checkRuleError(gotErr, wantErr error) error { return nil } -func prepareAndProcessBlockByParentMsgBlocks(t *testing.T, dag *BlockDAG, parents ...*domainmessage.MsgBlock) *domainmessage.MsgBlock { +func prepareAndProcessBlockByParentMsgBlocks(t *testing.T, dag *BlockDAG, parents ...*appmessage.MsgBlock) *appmessage.MsgBlock { parentHashes := make([]*daghash.Hash, len(parents)) for i, parent := range parents { parentHashes[i] = parent.BlockHash() @@ -174,7 +174,7 @@ func prepareAndProcessBlockByParentMsgBlocks(t *testing.T, dag *BlockDAG, parent return PrepareAndProcessBlockForTest(t, dag, parentHashes, nil) } -func nodeByMsgBlock(t *testing.T, dag *BlockDAG, block *domainmessage.MsgBlock) *blockNode { +func nodeByMsgBlock(t *testing.T, dag *BlockDAG, block *appmessage.MsgBlock) *blockNode { node, ok := dag.index.LookupNode(block.BlockHash()) if !ok { t.Fatalf("couldn't find block node with hash %s", block.BlockHash()) diff --git a/domain/blockdag/config.go b/domain/blockdag/config.go index 59340af7d..5685d3dab 100644 --- a/domain/blockdag/config.go +++ b/domain/blockdag/config.go @@ -3,7 +3,7 @@ package blockdag import ( "github.com/kaspanet/kaspad/domain/dagconfig" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/subnetworkid" ) diff --git a/domain/blockdag/confirmations.go b/domain/blockdag/confirmations.go index 63023fc89..b494ea490 100644 --- a/domain/blockdag/confirmations.go +++ b/domain/blockdag/confirmations.go @@ -1,7 +1,7 @@ package blockdag import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" @@ -38,7 +38,7 @@ func (dag *BlockDAG) BlockConfirmationsByHashNoLock(hash *daghash.Hash) (uint64, // in the DAG's UTXO set. // // This function is safe for concurrent access. -func (dag *BlockDAG) UTXOConfirmations(outpoint *domainmessage.Outpoint) (uint64, bool) { +func (dag *BlockDAG) UTXOConfirmations(outpoint *appmessage.Outpoint) (uint64, bool) { dag.dagLock.RLock() defer dag.dagLock.RUnlock() diff --git a/domain/blockdag/dag.go b/domain/blockdag/dag.go index ff687628b..b7cfa706b 100644 --- a/domain/blockdag/dag.go +++ b/domain/blockdag/dag.go @@ -6,11 +6,11 @@ package blockdag import ( "fmt" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/mstime" "sync" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/pkg/errors" @@ -210,7 +210,7 @@ func (dag *BlockDAG) selectedTip() *blockNode { // It will return nil if there is no tip. // // This function is safe for concurrent access. -func (dag *BlockDAG) SelectedTipHeader() *domainmessage.BlockHeader { +func (dag *BlockDAG) SelectedTipHeader() *appmessage.BlockHeader { selectedTip := dag.selectedTip() if selectedTip == nil { return nil @@ -247,7 +247,7 @@ func (dag *BlockDAG) CalcPastMedianTime() mstime.Time { // // This function is safe for concurrent access. However, the returned entry (if // any) is NOT. -func (dag *BlockDAG) GetUTXOEntry(outpoint domainmessage.Outpoint) (*UTXOEntry, bool) { +func (dag *BlockDAG) GetUTXOEntry(outpoint appmessage.Outpoint) (*UTXOEntry, bool) { return dag.virtual.utxoSet.get(outpoint) } @@ -298,11 +298,11 @@ func (dag *BlockDAG) TipHashes() []*daghash.Hash { // HeaderByHash returns the block header identified by the given hash or an // error if it doesn't exist. -func (dag *BlockDAG) HeaderByHash(hash *daghash.Hash) (*domainmessage.BlockHeader, error) { +func (dag *BlockDAG) HeaderByHash(hash *daghash.Hash) (*appmessage.BlockHeader, error) { node, ok := dag.index.LookupNode(hash) if !ok { err := errors.Errorf("block %s is not known", hash) - return &domainmessage.BlockHeader{}, err + return &appmessage.BlockHeader{}, err } return node.Header(), nil @@ -345,8 +345,8 @@ func (dag *BlockDAG) isInPast(this *blockNode, other *blockNode) (bool, error) { return dag.reachabilityTree.isInPast(this, other) } -// GetTopHeaders returns the top domainmessage.MaxBlockHeadersPerMsg block headers ordered by blue score. -func (dag *BlockDAG) GetTopHeaders(highHash *daghash.Hash, maxHeaders uint64) ([]*domainmessage.BlockHeader, error) { +// GetTopHeaders returns the top appmessage.MaxBlockHeadersPerMsg block headers ordered by blue score. +func (dag *BlockDAG) GetTopHeaders(highHash *daghash.Hash, maxHeaders uint64) ([]*appmessage.BlockHeader, error) { highNode := &dag.virtual.blockNode if highHash != nil { var ok bool @@ -355,7 +355,7 @@ func (dag *BlockDAG) GetTopHeaders(highHash *daghash.Hash, maxHeaders uint64) ([ return nil, errors.Errorf("Couldn't find the high hash %s in the dag", highHash) } } - headers := make([]*domainmessage.BlockHeader, 0, highNode.blueScore) + headers := make([]*appmessage.BlockHeader, 0, highNode.blueScore) queue := newDownHeap() queue.pushSet(highNode.parents) diff --git a/domain/blockdag/dag_test.go b/domain/blockdag/dag_test.go index 3fe2fe9f2..d2db4b043 100644 --- a/domain/blockdag/dag_test.go +++ b/domain/blockdag/dag_test.go @@ -14,12 +14,12 @@ import ( "time" "github.com/kaspanet/go-secp256k1" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/pkg/errors" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/dagconfig" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/subnetworkid" @@ -255,7 +255,7 @@ func TestCalcSequenceLock(t *testing.T) { // Create a utxo view with a fake utxo for the inputs used in the // transactions created below. This utxo is added such that it has an // age of 4 blocks. - msgTx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, nil, []*domainmessage.TxOut{{ScriptPubKey: nil, Value: 10}}) + msgTx := appmessage.NewNativeMsgTx(appmessage.TxVersion, nil, []*appmessage.TxOut{{ScriptPubKey: nil, Value: 10}}) targetTx := util.NewTx(msgTx) utxoSet := NewFullUTXOSet() blueScore := uint64(numBlocksToGenerate) - 4 @@ -270,7 +270,7 @@ func TestCalcSequenceLock(t *testing.T) { // that the sequence lock heights are always calculated from the same // point of view that they were originally calculated from for a given // utxo. That is to say, the height prior to it. - utxo := domainmessage.Outpoint{ + utxo := appmessage.Outpoint{ TxID: *targetTx.ID(), Index: 0, } @@ -290,8 +290,8 @@ func TestCalcSequenceLock(t *testing.T) { // Add an additional transaction which will serve as our unconfirmed // output. - unConfTx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, nil, []*domainmessage.TxOut{{ScriptPubKey: nil, Value: 5}}) - unConfUtxo := domainmessage.Outpoint{ + unConfTx := appmessage.NewNativeMsgTx(appmessage.TxVersion, nil, []*appmessage.TxOut{{ScriptPubKey: nil, Value: 5}}) + unConfUtxo := appmessage.Outpoint{ TxID: *unConfTx.TxID(), Index: 0, } @@ -303,7 +303,7 @@ func TestCalcSequenceLock(t *testing.T) { tests := []struct { name string - tx *domainmessage.MsgTx + tx *appmessage.MsgTx utxoSet UTXOSet want *SequenceLock }{ @@ -312,7 +312,7 @@ func TestCalcSequenceLock(t *testing.T) { // should be disabled. { name: "single input, max sequence number", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{PreviousOutpoint: utxo, Sequence: domainmessage.MaxTxInSequenceNum}}, nil), + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{PreviousOutpoint: utxo, Sequence: appmessage.MaxTxInSequenceNum}}, nil), utxoSet: utxoSet, want: &SequenceLock{ Milliseconds: -1, @@ -327,7 +327,7 @@ func TestCalcSequenceLock(t *testing.T) { // the targeted block. { name: "single input, milliseconds lock time below time granularity", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{PreviousOutpoint: utxo, Sequence: LockTimeToSequence(true, 2)}}, nil), + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{PreviousOutpoint: utxo, Sequence: LockTimeToSequence(true, 2)}}, nil), utxoSet: utxoSet, want: &SequenceLock{ Milliseconds: medianTime - 1, @@ -339,7 +339,7 @@ func TestCalcSequenceLock(t *testing.T) { // milliseconds after the median past time of the DAG. { name: "single input, 1048575 milliseconds after median time", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{PreviousOutpoint: utxo, Sequence: LockTimeToSequence(true, 1048576)}}, nil), + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{PreviousOutpoint: utxo, Sequence: LockTimeToSequence(true, 1048576)}}, nil), utxoSet: utxoSet, want: &SequenceLock{ Milliseconds: medianTime + 1048575, @@ -354,8 +354,8 @@ func TestCalcSequenceLock(t *testing.T) { // latest lock that isn't disabled. { name: "multiple varied inputs", - tx: domainmessage.NewNativeMsgTx(1, - []*domainmessage.TxIn{{ + tx: appmessage.NewNativeMsgTx(1, + []*appmessage.TxIn{{ PreviousOutpoint: utxo, Sequence: LockTimeToSequence(true, 2621440), }, { @@ -364,12 +364,12 @@ func TestCalcSequenceLock(t *testing.T) { }, { PreviousOutpoint: utxo, Sequence: LockTimeToSequence(false, 5) | - domainmessage.SequenceLockTimeDisabled, + appmessage.SequenceLockTimeDisabled, }}, nil), utxoSet: utxoSet, want: &SequenceLock{ - Milliseconds: medianTime + (5 << domainmessage.SequenceLockTimeGranularity) - 1, + Milliseconds: medianTime + (5 << appmessage.SequenceLockTimeGranularity) - 1, BlockBlueScore: int64(prevUtxoBlueScore) + 3, }, }, @@ -379,7 +379,7 @@ func TestCalcSequenceLock(t *testing.T) { // height of 2 meaning it can be included at height 3. { name: "single input, lock-time in blocks", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{PreviousOutpoint: utxo, Sequence: LockTimeToSequence(false, 3)}}, nil), + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{PreviousOutpoint: utxo, Sequence: LockTimeToSequence(false, 3)}}, nil), utxoSet: utxoSet, want: &SequenceLock{ Milliseconds: -1, @@ -391,7 +391,7 @@ func TestCalcSequenceLock(t *testing.T) { // be the time further in the future. { name: "two inputs, lock-times in seconds", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{ + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{ PreviousOutpoint: utxo, Sequence: LockTimeToSequence(true, 5242880), }, { @@ -400,7 +400,7 @@ func TestCalcSequenceLock(t *testing.T) { }}, nil), utxoSet: utxoSet, want: &SequenceLock{ - Milliseconds: medianTime + (10 << domainmessage.SequenceLockTimeGranularity) - 1, + Milliseconds: medianTime + (10 << appmessage.SequenceLockTimeGranularity) - 1, BlockBlueScore: -1, }, }, @@ -410,8 +410,8 @@ func TestCalcSequenceLock(t *testing.T) { // indicating it can be included at height 11. { name: "two inputs, lock-times in blocks", - tx: domainmessage.NewNativeMsgTx(1, - []*domainmessage.TxIn{{ + tx: appmessage.NewNativeMsgTx(1, + []*appmessage.TxIn{{ PreviousOutpoint: utxo, Sequence: LockTimeToSequence(false, 1), }, { @@ -430,8 +430,8 @@ func TestCalcSequenceLock(t *testing.T) { // further into the future for both inputs should be chosen. { name: "four inputs, two lock-times in time, two lock-times in blocks", - tx: domainmessage.NewNativeMsgTx(1, - []*domainmessage.TxIn{{ + tx: appmessage.NewNativeMsgTx(1, + []*appmessage.TxIn{{ PreviousOutpoint: utxo, Sequence: LockTimeToSequence(true, 2621440), }, { @@ -447,7 +447,7 @@ func TestCalcSequenceLock(t *testing.T) { nil), utxoSet: utxoSet, want: &SequenceLock{ - Milliseconds: medianTime + (13 << domainmessage.SequenceLockTimeGranularity) - 1, + Milliseconds: medianTime + (13 << appmessage.SequenceLockTimeGranularity) - 1, BlockBlueScore: int64(prevUtxoBlueScore) + 8, }, }, @@ -459,7 +459,7 @@ func TestCalcSequenceLock(t *testing.T) { // after that. { name: "single input, unconfirmed, lock-time in blocks", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{PreviousOutpoint: unConfUtxo, Sequence: LockTimeToSequence(false, 2)}}, nil), + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{PreviousOutpoint: unConfUtxo, Sequence: LockTimeToSequence(false, 2)}}, nil), utxoSet: utxoSet, want: &SequenceLock{ Milliseconds: -1, @@ -471,7 +471,7 @@ func TestCalcSequenceLock(t *testing.T) { // MTP of the *next* block. { name: "single input, unconfirmed, lock-time in milliseoncds", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{PreviousOutpoint: unConfUtxo, Sequence: LockTimeToSequence(true, 1048576)}}, nil), + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{PreviousOutpoint: unConfUtxo, Sequence: LockTimeToSequence(true, 1048576)}}, nil), utxoSet: utxoSet, want: &SequenceLock{ Milliseconds: nextMedianTime + 1048575, @@ -698,7 +698,7 @@ func TestConfirmations(t *testing.T) { } // Add a chain of blocks - chainBlocks := make([]*domainmessage.MsgBlock, 5) + chainBlocks := make([]*appmessage.MsgBlock, 5) chainBlocks[0] = dag.Params.GenesisBlock for i := uint32(1); i < 5; i++ { chainBlocks[i] = prepareAndProcessBlockByParentMsgBlocks(t, dag, chainBlocks[i-1]) @@ -718,7 +718,7 @@ func TestConfirmations(t *testing.T) { } } - branchingBlocks := make([]*domainmessage.MsgBlock, 2) + branchingBlocks := make([]*appmessage.MsgBlock, 2) // Add two branching blocks branchingBlocks[0] = prepareAndProcessBlockByParentMsgBlocks(t, dag, chainBlocks[1]) branchingBlocks[1] = prepareAndProcessBlockByParentMsgBlocks(t, dag, branchingBlocks[0]) @@ -791,7 +791,7 @@ func TestAcceptingBlock(t *testing.T) { defer teardownFunc() dag.TestSetCoinbaseMaturity(0) - acceptingBlockByMsgBlock := func(block *domainmessage.MsgBlock) (*blockNode, error) { + acceptingBlockByMsgBlock := func(block *appmessage.MsgBlock) (*blockNode, error) { node := nodeByMsgBlock(t, dag, block) return dag.acceptingBlock(node) } @@ -807,7 +807,7 @@ func TestAcceptingBlock(t *testing.T) { } numChainBlocks := uint32(10) - chainBlocks := make([]*domainmessage.MsgBlock, numChainBlocks) + chainBlocks := make([]*appmessage.MsgBlock, numChainBlocks) chainBlocks[0] = dag.Params.GenesisBlock for i := uint32(1); i <= numChainBlocks-1; i++ { chainBlocks[i] = prepareAndProcessBlockByParentMsgBlocks(t, dag, chainBlocks[i-1]) @@ -1027,11 +1027,11 @@ func TestDAGIndexFailedStatus(t *testing.T) { } defer teardownFunc() - invalidCbTx := domainmessage.NewSubnetworkMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{}, []*domainmessage.TxOut{}, subnetworkid.SubnetworkIDCoinbase, 0, []byte{}) + invalidCbTx := appmessage.NewSubnetworkMsgTx(appmessage.TxVersion, []*appmessage.TxIn{}, []*appmessage.TxOut{}, subnetworkid.SubnetworkIDCoinbase, 0, []byte{}) txs := []*util.Tx{util.NewTx(invalidCbTx)} hashMerkleRoot := BuildHashMerkleTreeStore(txs).Root() - invalidMsgBlock := domainmessage.NewMsgBlock( - domainmessage.NewBlockHeader( + invalidMsgBlock := appmessage.NewMsgBlock( + appmessage.NewBlockHeader( 1, []*daghash.Hash{params.GenesisHash}, hashMerkleRoot, &daghash.Hash{}, @@ -1063,8 +1063,8 @@ func TestDAGIndexFailedStatus(t *testing.T) { t.Fatalf("invalidBlockNode status to have %b flags raised (got: %b)", statusValidateFailed, invalidBlockNode.status) } - invalidMsgBlockChild := domainmessage.NewMsgBlock( - domainmessage.NewBlockHeader(1, []*daghash.Hash{ + invalidMsgBlockChild := appmessage.NewMsgBlock( + appmessage.NewBlockHeader(1, []*daghash.Hash{ invalidBlock.Hash(), }, hashMerkleRoot, &daghash.Hash{}, &daghash.Hash{}, dag.genesis.bits, 0), ) @@ -1092,8 +1092,8 @@ func TestDAGIndexFailedStatus(t *testing.T) { t.Fatalf("invalidBlockNode status to have %b flags raised (got %b)", statusInvalidAncestor, invalidBlockChildNode.status) } - invalidMsgBlockGrandChild := domainmessage.NewMsgBlock( - domainmessage.NewBlockHeader(1, []*daghash.Hash{ + invalidMsgBlockGrandChild := appmessage.NewMsgBlock( + appmessage.NewBlockHeader(1, []*daghash.Hash{ invalidBlockChild.Hash(), }, hashMerkleRoot, &daghash.Hash{}, &daghash.Hash{}, dag.genesis.bits, 0), ) @@ -1121,7 +1121,7 @@ func TestDAGIndexFailedStatus(t *testing.T) { } } -func testProcessBlockRuleError(t *testing.T, dag *BlockDAG, block *domainmessage.MsgBlock, expectedRuleErr error) { +func testProcessBlockRuleError(t *testing.T, dag *BlockDAG, block *appmessage.MsgBlock, expectedRuleErr error) { isOrphan, isDelayed, err := dag.ProcessBlock(util.NewBlock(block), BFNoPoWCheck) err = checkRuleError(err, expectedRuleErr) @@ -1157,24 +1157,24 @@ func TestDoubleSpends(t *testing.T) { if err != nil { t.Fatalf("Failed to build signature script: %s", err) } - txIn := &domainmessage.TxIn{ - PreviousOutpoint: domainmessage.Outpoint{TxID: *cbTx.TxID(), Index: 0}, + txIn := &appmessage.TxIn{ + PreviousOutpoint: appmessage.Outpoint{TxID: *cbTx.TxID(), Index: 0}, SignatureScript: signatureScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, } - txOut := &domainmessage.TxOut{ + txOut := &appmessage.TxOut{ ScriptPubKey: OpTrueScript, Value: uint64(1), } - tx1 := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn}, []*domainmessage.TxOut{txOut}) + tx1 := appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn}, []*appmessage.TxOut{txOut}) - doubleSpendTxOut := &domainmessage.TxOut{ + doubleSpendTxOut := &appmessage.TxOut{ ScriptPubKey: OpTrueScript, Value: uint64(2), } - doubleSpendTx1 := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn}, []*domainmessage.TxOut{doubleSpendTxOut}) + doubleSpendTx1 := appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn}, []*appmessage.TxOut{doubleSpendTxOut}) - blockWithTx1 := PrepareAndProcessBlockForTest(t, dag, []*daghash.Hash{fundingBlock.BlockHash()}, []*domainmessage.MsgTx{tx1}) + blockWithTx1 := PrepareAndProcessBlockForTest(t, dag, []*daghash.Hash{fundingBlock.BlockHash()}, []*appmessage.MsgTx{tx1}) // Check that a block will be rejected if it has a transaction that already exists in its past. anotherBlockWithTx1, err := PrepareBlockForTest(dag, []*daghash.Hash{blockWithTx1.BlockHash()}, nil) @@ -1209,7 +1209,7 @@ func TestDoubleSpends(t *testing.T) { testProcessBlockRuleError(t, dag, blockWithDoubleSpendForTx1, ruleError(ErrMissingTxOut, "")) - blockInAnticoneOfBlockWithTx1, err := PrepareBlockForTest(dag, []*daghash.Hash{fundingBlock.BlockHash()}, []*domainmessage.MsgTx{doubleSpendTx1}) + blockInAnticoneOfBlockWithTx1, err := PrepareBlockForTest(dag, []*daghash.Hash{fundingBlock.BlockHash()}, []*appmessage.MsgTx{doubleSpendTx1}) if err != nil { t.Fatalf("PrepareBlockForTest: %v", err) } @@ -1264,7 +1264,7 @@ func TestUTXOCommitment(t *testing.T) { resetExtraNonceForTest() - createTx := func(txToSpend *domainmessage.MsgTx) *domainmessage.MsgTx { + createTx := func(txToSpend *appmessage.MsgTx) *appmessage.MsgTx { scriptPubKey, err := txscript.PayToScriptHashScript(OpTrueScript) if err != nil { t.Fatalf("TestUTXOCommitment: failed to build script pub key: %s", err) @@ -1273,16 +1273,16 @@ func TestUTXOCommitment(t *testing.T) { if err != nil { t.Fatalf("TestUTXOCommitment: failed to build signature script: %s", err) } - txIn := &domainmessage.TxIn{ - PreviousOutpoint: domainmessage.Outpoint{TxID: *txToSpend.TxID(), Index: 0}, + txIn := &appmessage.TxIn{ + PreviousOutpoint: appmessage.Outpoint{TxID: *txToSpend.TxID(), Index: 0}, SignatureScript: signatureScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, } - txOut := &domainmessage.TxOut{ + txOut := &appmessage.TxOut{ ScriptPubKey: scriptPubKey, Value: uint64(1), } - return domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn}, []*domainmessage.TxOut{txOut}) + return appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn}, []*appmessage.TxOut{txOut}) } // Build the following DAG: @@ -1298,12 +1298,12 @@ func TestUTXOCommitment(t *testing.T) { // Block C: txSpendBlockACoinbase := createTx(blockA.Transactions[0]) - blockCTxs := []*domainmessage.MsgTx{txSpendBlockACoinbase} + blockCTxs := []*appmessage.MsgTx{txSpendBlockACoinbase} blockC := PrepareAndProcessBlockForTest(t, dag, []*daghash.Hash{blockA.BlockHash()}, blockCTxs) // Block D: txSpendTxInBlockC := createTx(txSpendBlockACoinbase) - blockDTxs := []*domainmessage.MsgTx{txSpendTxInBlockC} + blockDTxs := []*appmessage.MsgTx{txSpendTxInBlockC} blockD := PrepareAndProcessBlockForTest(t, dag, []*daghash.Hash{blockB.BlockHash(), blockC.BlockHash()}, blockDTxs) // Get the pastUTXO of blockD diff --git a/domain/blockdag/dagio.go b/domain/blockdag/dagio.go index 846ab37a2..6d78e5a26 100644 --- a/domain/blockdag/dagio.go +++ b/domain/blockdag/dagio.go @@ -12,10 +12,10 @@ import ( "io" "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/pkg/errors" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/binaryserializer" "github.com/kaspanet/kaspad/util/daghash" @@ -49,7 +49,7 @@ func IsNotInDAGErr(err error) bool { // keys will be iterated in an ascending order by the outpoint index. var outpointIndexByteOrder = binary.BigEndian -func serializeOutpoint(w io.Writer, outpoint *domainmessage.Outpoint) error { +func serializeOutpoint(w io.Writer, outpoint *appmessage.Outpoint) error { _, err := w.Write(outpoint.TxID[:]) if err != nil { return err @@ -61,10 +61,10 @@ func serializeOutpoint(w io.Writer, outpoint *domainmessage.Outpoint) error { var outpointSerializeSize = daghash.TxIDSize + 4 // deserializeOutpoint decodes an outpoint from the passed serialized byte -// slice into a new domainmessage.Outpoint using a format that is suitable for long- +// slice into a new appmessage.Outpoint using a format that is suitable for long- // term storage. This format is described in detail above. -func deserializeOutpoint(r io.Reader) (*domainmessage.Outpoint, error) { - outpoint := &domainmessage.Outpoint{} +func deserializeOutpoint(r io.Reader) (*appmessage.Outpoint, error) { + outpoint := &appmessage.Outpoint{} _, err := r.Read(outpoint.TxID[:]) if err != nil { return nil, err @@ -410,7 +410,7 @@ func (dag *BlockDAG) processUnprocessedBlockNodes(unprocessedBlockNodes []*block func (dag *BlockDAG) deserializeBlockNode(blockRow []byte) (*blockNode, error) { buffer := bytes.NewReader(blockRow) - var header domainmessage.BlockHeader + var header appmessage.BlockHeader err := header.Deserialize(buffer) if err != nil { return nil, err @@ -464,7 +464,7 @@ func (dag *BlockDAG) deserializeBlockNode(blockRow []byte) (*blockNode, error) { return nil, err } - bluesCount, err := domainmessage.ReadVarInt(buffer) + bluesCount, err := appmessage.ReadVarInt(buffer) if err != nil { return nil, err } @@ -483,7 +483,7 @@ func (dag *BlockDAG) deserializeBlockNode(blockRow []byte) (*blockNode, error) { } } - bluesAnticoneSizesLen, err := domainmessage.ReadVarInt(buffer) + bluesAnticoneSizesLen, err := appmessage.ReadVarInt(buffer) if err != nil { return nil, err } @@ -527,7 +527,7 @@ func storeBlock(dbContext *dbaccess.TxContext, block *util.Block) error { } func serializeBlockNode(node *blockNode) ([]byte, error) { - w := bytes.NewBuffer(make([]byte, 0, domainmessage.MaxBlockHeaderPayload+1)) + w := bytes.NewBuffer(make([]byte, 0, appmessage.MaxBlockHeaderPayload+1)) header := node.Header() err := header.Serialize(w) if err != nil { @@ -554,7 +554,7 @@ func serializeBlockNode(node *blockNode) ([]byte, error) { return nil, err } - err = domainmessage.WriteVarInt(w, uint64(len(node.blues))) + err = appmessage.WriteVarInt(w, uint64(len(node.blues))) if err != nil { return nil, err } @@ -566,7 +566,7 @@ func serializeBlockNode(node *blockNode) ([]byte, error) { } } - err = domainmessage.WriteVarInt(w, uint64(len(node.bluesAnticoneSizes))) + err = appmessage.WriteVarInt(w, uint64(len(node.bluesAnticoneSizes))) if err != nil { return nil, err } diff --git a/domain/blockdag/external_dag_test.go b/domain/blockdag/external_dag_test.go index 7d74780d9..c52838e05 100644 --- a/domain/blockdag/external_dag_test.go +++ b/domain/blockdag/external_dag_test.go @@ -13,11 +13,11 @@ import ( "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/testtools" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/dagconfig" "github.com/kaspanet/kaspad/domain/mining" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" ) @@ -125,7 +125,7 @@ func TestFinality(t *testing.T) { t.Errorf("NextBlockCoinbaseTransaction: %s", err) } merkleRoot := blockdag.BuildHashMerkleTreeStore([]*util.Tx{fakeCoinbaseTx}).Root() - beforeFinalityBlock := domainmessage.NewMsgBlock(&domainmessage.BlockHeader{ + beforeFinalityBlock := appmessage.NewMsgBlock(&appmessage.BlockHeader{ Version: 0x10000000, ParentHashes: []*daghash.Hash{genesis.Hash()}, HashMerkleRoot: merkleRoot, @@ -164,7 +164,7 @@ func TestFinality(t *testing.T) { } // TestFinalityInterval tests that the finality interval is -// smaller then domainmessage.MaxInvPerMsg, so when a peer receives +// smaller then appmessage.MaxInvPerMsg, so when a peer receives // a getblocks message it should always be able to send // all the necessary invs. func TestFinalityInterval(t *testing.T) { @@ -185,8 +185,8 @@ func TestFinalityInterval(t *testing.T) { } defer teardownFunc() - if dag.FinalityInterval() > domainmessage.MaxInvPerMsg { - t.Errorf("FinalityInterval in %s should be lower or equal to domainmessage.MaxInvPerMsg", params.Name) + if dag.FinalityInterval() > appmessage.MaxInvPerMsg { + t.Errorf("FinalityInterval in %s should be lower or equal to appmessage.MaxInvPerMsg", params.Name) } }() } @@ -253,34 +253,34 @@ func TestChainedTransactions(t *testing.T) { if err != nil { t.Fatalf("Failed to build signature script: %s", err) } - txIn := &domainmessage.TxIn{ - PreviousOutpoint: domainmessage.Outpoint{TxID: *cbTx.TxID(), Index: 0}, + txIn := &appmessage.TxIn{ + PreviousOutpoint: appmessage.Outpoint{TxID: *cbTx.TxID(), Index: 0}, SignatureScript: signatureScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, } - txOut := &domainmessage.TxOut{ + txOut := &appmessage.TxOut{ ScriptPubKey: blockdag.OpTrueScript, Value: uint64(1), } - tx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn}, []*domainmessage.TxOut{txOut}) + tx := appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn}, []*appmessage.TxOut{txOut}) - chainedTxIn := &domainmessage.TxIn{ - PreviousOutpoint: domainmessage.Outpoint{TxID: *tx.TxID(), Index: 0}, + chainedTxIn := &appmessage.TxIn{ + PreviousOutpoint: appmessage.Outpoint{TxID: *tx.TxID(), Index: 0}, SignatureScript: signatureScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, } scriptPubKey, err := txscript.PayToScriptHashScript(blockdag.OpTrueScript) if err != nil { t.Fatalf("Failed to build public key script: %s", err) } - chainedTxOut := &domainmessage.TxOut{ + chainedTxOut := &appmessage.TxOut{ ScriptPubKey: scriptPubKey, Value: uint64(1), } - chainedTx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{chainedTxIn}, []*domainmessage.TxOut{chainedTxOut}) + chainedTx := appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{chainedTxIn}, []*appmessage.TxOut{chainedTxOut}) - block2, err := mining.PrepareBlockForTest(dag, []*daghash.Hash{block1.BlockHash()}, []*domainmessage.MsgTx{tx}, false) + block2, err := mining.PrepareBlockForTest(dag, []*daghash.Hash{block1.BlockHash()}, []*appmessage.MsgTx{tx}, false) if err != nil { t.Fatalf("PrepareBlockForTest: %v", err) } @@ -315,18 +315,18 @@ func TestChainedTransactions(t *testing.T) { t.Errorf("ProcessBlock: block2 got unexpectedly orphaned") } - nonChainedTxIn := &domainmessage.TxIn{ - PreviousOutpoint: domainmessage.Outpoint{TxID: *cbTx.TxID(), Index: 0}, + nonChainedTxIn := &appmessage.TxIn{ + PreviousOutpoint: appmessage.Outpoint{TxID: *cbTx.TxID(), Index: 0}, SignatureScript: signatureScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, } - nonChainedTxOut := &domainmessage.TxOut{ + nonChainedTxOut := &appmessage.TxOut{ ScriptPubKey: scriptPubKey, Value: uint64(1), } - nonChainedTx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{nonChainedTxIn}, []*domainmessage.TxOut{nonChainedTxOut}) + nonChainedTx := appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{nonChainedTxIn}, []*appmessage.TxOut{nonChainedTxOut}) - block3, err := mining.PrepareBlockForTest(dag, []*daghash.Hash{block1.BlockHash()}, []*domainmessage.MsgTx{nonChainedTx}, false) + block3, err := mining.PrepareBlockForTest(dag, []*daghash.Hash{block1.BlockHash()}, []*appmessage.MsgTx{nonChainedTx}, false) if err != nil { t.Fatalf("PrepareBlockForTest: %v", err) } @@ -363,23 +363,23 @@ func TestOrderInDiffFromAcceptanceData(t *testing.T) { createBlock := func(previousBlock *util.Block) *util.Block { // Prepare a transaction that spends the previous block's coinbase transaction - var txs []*domainmessage.MsgTx + var txs []*appmessage.MsgTx if !previousBlock.IsGenesis() { previousCoinbaseTx := previousBlock.MsgBlock().Transactions[0] signatureScript, err := txscript.PayToScriptHashSignatureScript(blockdag.OpTrueScript, nil) if err != nil { t.Fatalf("TestOrderInDiffFromAcceptanceData: Failed to build signature script: %s", err) } - txIn := &domainmessage.TxIn{ - PreviousOutpoint: domainmessage.Outpoint{TxID: *previousCoinbaseTx.TxID(), Index: 0}, + txIn := &appmessage.TxIn{ + PreviousOutpoint: appmessage.Outpoint{TxID: *previousCoinbaseTx.TxID(), Index: 0}, SignatureScript: signatureScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, } - txOut := &domainmessage.TxOut{ + txOut := &appmessage.TxOut{ ScriptPubKey: blockdag.OpTrueScript, Value: uint64(1), } - txs = append(txs, domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn}, []*domainmessage.TxOut{txOut})) + txs = append(txs, appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn}, []*appmessage.TxOut{txOut})) } // Create the block @@ -438,7 +438,7 @@ func TestGasLimit(t *testing.T) { t.Fatalf("could not register network: %s", err) } - cbTxs := []*domainmessage.MsgTx{} + cbTxs := []*appmessage.MsgTx{} for i := 0; i < 4; i++ { fundsBlock, err := mining.PrepareBlockForTest(dag, dag.TipHashes(), nil, false) if err != nil { @@ -469,30 +469,30 @@ func TestGasLimit(t *testing.T) { t.Fatalf("Failed to build public key script: %s", err) } - tx1In := &domainmessage.TxIn{ - PreviousOutpoint: *domainmessage.NewOutpoint(cbTxs[0].TxID(), 0), - Sequence: domainmessage.MaxTxInSequenceNum, + tx1In := &appmessage.TxIn{ + PreviousOutpoint: *appmessage.NewOutpoint(cbTxs[0].TxID(), 0), + Sequence: appmessage.MaxTxInSequenceNum, SignatureScript: signatureScript, } - tx1Out := &domainmessage.TxOut{ + tx1Out := &appmessage.TxOut{ Value: cbTxs[0].TxOut[0].Value, ScriptPubKey: scriptPubKey, } - tx1 := domainmessage.NewSubnetworkMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{tx1In}, []*domainmessage.TxOut{tx1Out}, subnetworkID, 10000, []byte{}) + tx1 := appmessage.NewSubnetworkMsgTx(appmessage.TxVersion, []*appmessage.TxIn{tx1In}, []*appmessage.TxOut{tx1Out}, subnetworkID, 10000, []byte{}) - tx2In := &domainmessage.TxIn{ - PreviousOutpoint: *domainmessage.NewOutpoint(cbTxs[1].TxID(), 0), - Sequence: domainmessage.MaxTxInSequenceNum, + tx2In := &appmessage.TxIn{ + PreviousOutpoint: *appmessage.NewOutpoint(cbTxs[1].TxID(), 0), + Sequence: appmessage.MaxTxInSequenceNum, SignatureScript: signatureScript, } - tx2Out := &domainmessage.TxOut{ + tx2Out := &appmessage.TxOut{ Value: cbTxs[1].TxOut[0].Value, ScriptPubKey: scriptPubKey, } - tx2 := domainmessage.NewSubnetworkMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{tx2In}, []*domainmessage.TxOut{tx2Out}, subnetworkID, 10000, []byte{}) + tx2 := appmessage.NewSubnetworkMsgTx(appmessage.TxVersion, []*appmessage.TxIn{tx2In}, []*appmessage.TxOut{tx2Out}, subnetworkID, 10000, []byte{}) // Here we check that we can't process a block that has transactions that exceed the gas limit - overLimitBlock, err := mining.PrepareBlockForTest(dag, dag.TipHashes(), []*domainmessage.MsgTx{tx1, tx2}, true) + overLimitBlock, err := mining.PrepareBlockForTest(dag, dag.TipHashes(), []*appmessage.MsgTx{tx1, tx2}, true) if err != nil { t.Fatalf("PrepareBlockForTest: %v", err) } @@ -514,20 +514,20 @@ func TestGasLimit(t *testing.T) { t.Fatalf("ProcessBlock: overLimitBlock got unexpectedly orphan") } - overflowGasTxIn := &domainmessage.TxIn{ - PreviousOutpoint: *domainmessage.NewOutpoint(cbTxs[2].TxID(), 0), - Sequence: domainmessage.MaxTxInSequenceNum, + overflowGasTxIn := &appmessage.TxIn{ + PreviousOutpoint: *appmessage.NewOutpoint(cbTxs[2].TxID(), 0), + Sequence: appmessage.MaxTxInSequenceNum, SignatureScript: signatureScript, } - overflowGasTxOut := &domainmessage.TxOut{ + overflowGasTxOut := &appmessage.TxOut{ Value: cbTxs[2].TxOut[0].Value, ScriptPubKey: scriptPubKey, } - overflowGasTx := domainmessage.NewSubnetworkMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{overflowGasTxIn}, []*domainmessage.TxOut{overflowGasTxOut}, + overflowGasTx := appmessage.NewSubnetworkMsgTx(appmessage.TxVersion, []*appmessage.TxIn{overflowGasTxIn}, []*appmessage.TxOut{overflowGasTxOut}, subnetworkID, math.MaxUint64, []byte{}) // Here we check that we can't process a block that its transactions' gas overflows uint64 - overflowGasBlock, err := mining.PrepareBlockForTest(dag, dag.TipHashes(), []*domainmessage.MsgTx{tx1, overflowGasTx}, true) + overflowGasBlock, err := mining.PrepareBlockForTest(dag, dag.TipHashes(), []*appmessage.MsgTx{tx1, overflowGasTx}, true) if err != nil { t.Fatalf("PrepareBlockForTest: %v", err) } @@ -549,19 +549,19 @@ func TestGasLimit(t *testing.T) { } nonExistentSubnetwork := &subnetworkid.SubnetworkID{123} - nonExistentSubnetworkTxIn := &domainmessage.TxIn{ - PreviousOutpoint: *domainmessage.NewOutpoint(cbTxs[3].TxID(), 0), - Sequence: domainmessage.MaxTxInSequenceNum, + nonExistentSubnetworkTxIn := &appmessage.TxIn{ + PreviousOutpoint: *appmessage.NewOutpoint(cbTxs[3].TxID(), 0), + Sequence: appmessage.MaxTxInSequenceNum, SignatureScript: signatureScript, } - nonExistentSubnetworkTxOut := &domainmessage.TxOut{ + nonExistentSubnetworkTxOut := &appmessage.TxOut{ Value: cbTxs[3].TxOut[0].Value, ScriptPubKey: scriptPubKey, } - nonExistentSubnetworkTx := domainmessage.NewSubnetworkMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{nonExistentSubnetworkTxIn}, - []*domainmessage.TxOut{nonExistentSubnetworkTxOut}, nonExistentSubnetwork, 1, []byte{}) + nonExistentSubnetworkTx := appmessage.NewSubnetworkMsgTx(appmessage.TxVersion, []*appmessage.TxIn{nonExistentSubnetworkTxIn}, + []*appmessage.TxOut{nonExistentSubnetworkTxOut}, nonExistentSubnetwork, 1, []byte{}) - nonExistentSubnetworkBlock, err := mining.PrepareBlockForTest(dag, dag.TipHashes(), []*domainmessage.MsgTx{nonExistentSubnetworkTx, overflowGasTx}, true) + nonExistentSubnetworkBlock, err := mining.PrepareBlockForTest(dag, dag.TipHashes(), []*appmessage.MsgTx{nonExistentSubnetworkTx, overflowGasTx}, true) if err != nil { t.Fatalf("PrepareBlockForTest: %v", err) } @@ -582,7 +582,7 @@ func TestGasLimit(t *testing.T) { } // Here we check that we can process a block with a transaction that doesn't exceed the gas limit - validBlock, err := mining.PrepareBlockForTest(dag, dag.TipHashes(), []*domainmessage.MsgTx{tx1}, true) + validBlock, err := mining.PrepareBlockForTest(dag, dag.TipHashes(), []*appmessage.MsgTx{tx1}, true) if err != nil { t.Fatalf("PrepareBlockForTest: %v", err) } diff --git a/domain/blockdag/ghostdag_test.go b/domain/blockdag/ghostdag_test.go index 228c56f9c..8126e5193 100644 --- a/domain/blockdag/ghostdag_test.go +++ b/domain/blockdag/ghostdag_test.go @@ -8,7 +8,7 @@ import ( "testing" "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/domain/blockdag/index_manager.go b/domain/blockdag/index_manager.go index a55ecc1a4..510c59d80 100644 --- a/domain/blockdag/index_manager.go +++ b/domain/blockdag/index_manager.go @@ -1,7 +1,7 @@ package blockdag import ( - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/domain/blockdag/indexers/acceptanceindex.go b/domain/blockdag/indexers/acceptanceindex.go index 7a47ae372..3bbd106ff 100644 --- a/domain/blockdag/indexers/acceptanceindex.go +++ b/domain/blockdag/indexers/acceptanceindex.go @@ -4,9 +4,9 @@ import ( "bytes" "encoding/gob" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -113,7 +113,7 @@ func (idx *AcceptanceIndex) TxsAcceptanceData(blockHash *daghash.Hash) (blockdag } type serializableTxAcceptanceData struct { - MsgTx domainmessage.MsgTx + MsgTx appmessage.MsgTx IsAccepted bool } diff --git a/domain/blockdag/indexers/acceptanceindex_test.go b/domain/blockdag/indexers/acceptanceindex_test.go index c83b60444..913a0d53b 100644 --- a/domain/blockdag/indexers/acceptanceindex_test.go +++ b/domain/blockdag/indexers/acceptanceindex_test.go @@ -9,10 +9,10 @@ import ( "syscall" "testing" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" @@ -21,19 +21,19 @@ import ( func TestAcceptanceIndexSerializationAndDeserialization(t *testing.T) { // Create test data hash, _ := daghash.NewHashFromStr("1111111111111111111111111111111111111111111111111111111111111111") - txIn1 := &domainmessage.TxIn{SignatureScript: []byte{1}, PreviousOutpoint: domainmessage.Outpoint{Index: 1}, Sequence: 0} - txIn2 := &domainmessage.TxIn{SignatureScript: []byte{2}, PreviousOutpoint: domainmessage.Outpoint{Index: 2}, Sequence: 0} - txOut1 := &domainmessage.TxOut{ScriptPubKey: []byte{1}, Value: 10} - txOut2 := &domainmessage.TxOut{ScriptPubKey: []byte{2}, Value: 20} + txIn1 := &appmessage.TxIn{SignatureScript: []byte{1}, PreviousOutpoint: appmessage.Outpoint{Index: 1}, Sequence: 0} + txIn2 := &appmessage.TxIn{SignatureScript: []byte{2}, PreviousOutpoint: appmessage.Outpoint{Index: 2}, Sequence: 0} + txOut1 := &appmessage.TxOut{ScriptPubKey: []byte{1}, Value: 10} + txOut2 := &appmessage.TxOut{ScriptPubKey: []byte{2}, Value: 20} blockTxsAcceptanceData := blockdag.BlockTxsAcceptanceData{ BlockHash: *hash, TxAcceptanceData: []blockdag.TxAcceptanceData{ { - Tx: util.NewTx(domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn1}, []*domainmessage.TxOut{txOut1})), + Tx: util.NewTx(appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn1}, []*appmessage.TxOut{txOut1})), IsAccepted: true, }, { - Tx: util.NewTx(domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn2}, []*domainmessage.TxOut{txOut2})), + Tx: util.NewTx(appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn2}, []*appmessage.TxOut{txOut2})), IsAccepted: false, }, }, diff --git a/domain/blockdag/indexers/indexer.go b/domain/blockdag/indexers/indexer.go index 5dac985f9..fd9651b57 100644 --- a/domain/blockdag/indexers/indexer.go +++ b/domain/blockdag/indexers/indexer.go @@ -9,7 +9,7 @@ package indexers import ( "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/domain/blockdag/indexers/manager.go b/domain/blockdag/indexers/manager.go index c29e61f65..e00b5d556 100644 --- a/domain/blockdag/indexers/manager.go +++ b/domain/blockdag/indexers/manager.go @@ -6,7 +6,7 @@ package indexers import ( "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/domain/blockdag/mining.go b/domain/blockdag/mining.go index 8ae479d9a..d43eccd67 100644 --- a/domain/blockdag/mining.go +++ b/domain/blockdag/mining.go @@ -7,8 +7,8 @@ import ( "time" "github.com/kaspanet/go-secp256k1" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/mstime" @@ -22,7 +22,7 @@ const blockVersion = 0x10000000 // all aspects except proof of work. // // This function MUST be called with the DAG state lock held (for reads). -func (dag *BlockDAG) BlockForMining(transactions []*util.Tx) (*domainmessage.MsgBlock, error) { +func (dag *BlockDAG) BlockForMining(transactions []*util.Tx) (*appmessage.MsgBlock, error) { blockTimestamp := dag.NextBlockTime() requiredDifficulty := dag.NextRequiredDifficulty(blockTimestamp) @@ -32,7 +32,7 @@ func (dag *BlockDAG) BlockForMining(transactions []*util.Tx) (*domainmessage.Msg if err != nil { return nil, err } - var msgBlock domainmessage.MsgBlock + var msgBlock appmessage.MsgBlock for _, tx := range transactions { msgBlock.AddTransaction(tx.MsgTx()) } @@ -42,7 +42,7 @@ func (dag *BlockDAG) BlockForMining(transactions []*util.Tx) (*domainmessage.Msg return nil, err } - msgBlock.Header = domainmessage.BlockHeader{ + msgBlock.Header = appmessage.BlockHeader{ Version: blockVersion, ParentHashes: dag.TipHashes(), HashMerkleRoot: hashMerkleTree.Root(), diff --git a/domain/blockdag/multiset.go b/domain/blockdag/multiset.go index 456b5b1ab..b29f39c54 100644 --- a/domain/blockdag/multiset.go +++ b/domain/blockdag/multiset.go @@ -2,7 +2,7 @@ package blockdag import ( "github.com/kaspanet/go-secp256k1" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/pkg/errors" ) @@ -55,7 +55,7 @@ func (node *blockNode) selectedParentMultiset(dag *BlockDAG) (*secp256k1.MultiSe return ms, nil } -func addTxToMultiset(ms *secp256k1.MultiSet, tx *domainmessage.MsgTx, pastUTXO UTXOSet, blockBlueScore uint64) (*secp256k1.MultiSet, error) { +func addTxToMultiset(ms *secp256k1.MultiSet, tx *appmessage.MsgTx, pastUTXO UTXOSet, blockBlueScore uint64) (*secp256k1.MultiSet, error) { for _, txIn := range tx.TxIn { entry, ok := pastUTXO.Get(txIn.PreviousOutpoint) if !ok { @@ -71,7 +71,7 @@ func addTxToMultiset(ms *secp256k1.MultiSet, tx *domainmessage.MsgTx, pastUTXO U isCoinbase := tx.IsCoinBase() for i, txOut := range tx.TxOut { - outpoint := *domainmessage.NewOutpoint(tx.TxID(), uint32(i)) + outpoint := *appmessage.NewOutpoint(tx.TxID(), uint32(i)) entry := NewUTXOEntry(txOut, isCoinbase, blockBlueScore) var err error diff --git a/domain/blockdag/multisetstore.go b/domain/blockdag/multisetstore.go index 0b2c9b8b9..a5efe6c1f 100644 --- a/domain/blockdag/multisetstore.go +++ b/domain/blockdag/multisetstore.go @@ -3,7 +3,7 @@ package blockdag import ( "bytes" "github.com/kaspanet/go-secp256k1" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/locks" "github.com/pkg/errors" diff --git a/domain/blockdag/process.go b/domain/blockdag/process.go index 896f9da69..d0b401a0e 100644 --- a/domain/blockdag/process.go +++ b/domain/blockdag/process.go @@ -3,7 +3,7 @@ package blockdag import ( "fmt" "github.com/kaspanet/go-secp256k1" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" diff --git a/domain/blockdag/reachability.go b/domain/blockdag/reachability.go index 1a69e1d41..fb090f2d7 100644 --- a/domain/blockdag/reachability.go +++ b/domain/blockdag/reachability.go @@ -2,7 +2,7 @@ package blockdag import ( "fmt" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/pkg/errors" "math" "strings" diff --git a/domain/blockdag/reachabilitystore.go b/domain/blockdag/reachabilitystore.go index 4f609a4eb..5d371bbe0 100644 --- a/domain/blockdag/reachabilitystore.go +++ b/domain/blockdag/reachabilitystore.go @@ -2,9 +2,9 @@ package blockdag import ( "bytes" - "github.com/kaspanet/kaspad/infrastructure/database" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/db/database" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" "io" @@ -225,20 +225,20 @@ func (store *reachabilityStore) serializeTreeNode(w io.Writer, treeNode *reachab if treeNode.parent != nil { parentHash = treeNode.parent.blockNode.hash } - err = domainmessage.WriteElement(w, parentHash) + err = appmessage.WriteElement(w, parentHash) if err != nil { return err } // Serialize the amount of children - err = domainmessage.WriteVarInt(w, uint64(len(treeNode.children))) + err = appmessage.WriteVarInt(w, uint64(len(treeNode.children))) if err != nil { return err } // Serialize the children for _, child := range treeNode.children { - err = domainmessage.WriteElement(w, child.blockNode.hash) + err = appmessage.WriteElement(w, child.blockNode.hash) if err != nil { return err } @@ -249,13 +249,13 @@ func (store *reachabilityStore) serializeTreeNode(w io.Writer, treeNode *reachab func (store *reachabilityStore) serializeReachabilityInterval(w io.Writer, interval *reachabilityInterval) error { // Serialize start - err := domainmessage.WriteElement(w, interval.start) + err := appmessage.WriteElement(w, interval.start) if err != nil { return err } // Serialize end - err = domainmessage.WriteElement(w, interval.end) + err = appmessage.WriteElement(w, interval.end) if err != nil { return err } @@ -265,14 +265,14 @@ func (store *reachabilityStore) serializeReachabilityInterval(w io.Writer, inter func (store *reachabilityStore) serializeFutureCoveringSet(w io.Writer, futureCoveringSet futureCoveringTreeNodeSet) error { // Serialize the set size - err := domainmessage.WriteVarInt(w, uint64(len(futureCoveringSet))) + err := appmessage.WriteVarInt(w, uint64(len(futureCoveringSet))) if err != nil { return err } // Serialize each node in the set for _, node := range futureCoveringSet { - err = domainmessage.WriteElement(w, node.blockNode.hash) + err = appmessage.WriteElement(w, node.blockNode.hash) if err != nil { return err } @@ -312,7 +312,7 @@ func (store *reachabilityStore) deserializeTreeNode(r io.Reader, destination *re // Deserialize the parent // If this is the zero hash, this node is the genesis and as such doesn't have a parent parentHash := &daghash.Hash{} - err = domainmessage.ReadElement(r, parentHash) + err = appmessage.ReadElement(r, parentHash) if err != nil { return err } @@ -325,7 +325,7 @@ func (store *reachabilityStore) deserializeTreeNode(r io.Reader, destination *re } // Deserialize the amount of children - childCount, err := domainmessage.ReadVarInt(r) + childCount, err := appmessage.ReadVarInt(r) if err != nil { return err } @@ -334,7 +334,7 @@ func (store *reachabilityStore) deserializeTreeNode(r io.Reader, destination *re children := make([]*reachabilityTreeNode, childCount) for i := uint64(0); i < childCount; i++ { childHash := &daghash.Hash{} - err = domainmessage.ReadElement(r, childHash) + err = appmessage.ReadElement(r, childHash) if err != nil { return err } @@ -354,7 +354,7 @@ func (store *reachabilityStore) deserializeReachabilityInterval(r io.Reader) (*r // Deserialize start start := uint64(0) - err := domainmessage.ReadElement(r, &start) + err := appmessage.ReadElement(r, &start) if err != nil { return nil, err } @@ -362,7 +362,7 @@ func (store *reachabilityStore) deserializeReachabilityInterval(r io.Reader) (*r // Deserialize end end := uint64(0) - err = domainmessage.ReadElement(r, &end) + err = appmessage.ReadElement(r, &end) if err != nil { return nil, err } @@ -373,7 +373,7 @@ func (store *reachabilityStore) deserializeReachabilityInterval(r io.Reader) (*r func (store *reachabilityStore) deserializeFutureCoveringSet(r io.Reader, destination *reachabilityData) error { // Deserialize the set size - setSize, err := domainmessage.ReadVarInt(r) + setSize, err := appmessage.ReadVarInt(r) if err != nil { return err } @@ -382,7 +382,7 @@ func (store *reachabilityStore) deserializeFutureCoveringSet(r io.Reader, destin futureCoveringSet := make(futureCoveringTreeNodeSet, setSize) for i := uint64(0); i < setSize; i++ { blockHash := &daghash.Hash{} - err = domainmessage.ReadElement(r, blockHash) + err = appmessage.ReadElement(r, blockHash) if err != nil { return err } diff --git a/domain/blockdag/scriptval.go b/domain/blockdag/scriptval.go index f30fb79bc..a0ccfee9d 100644 --- a/domain/blockdag/scriptval.go +++ b/domain/blockdag/scriptval.go @@ -9,15 +9,15 @@ import ( "runtime" "time" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" ) // txValidateItem holds a transaction along with which input to validate. type txValidateItem struct { txInIndex int - txIn *domainmessage.TxIn + txIn *appmessage.TxIn tx *util.Tx } diff --git a/domain/blockdag/sequence_lock.go b/domain/blockdag/sequence_lock.go index d6bb9b812..88797f280 100644 --- a/domain/blockdag/sequence_lock.go +++ b/domain/blockdag/sequence_lock.go @@ -2,7 +2,7 @@ package blockdag import ( "fmt" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util" ) @@ -79,14 +79,14 @@ func (dag *BlockDAG) calcSequenceLock(node *blockNode, utxoSet UTXOSet, tx *util // mask in order to obtain the time lock delta required before // this input can be spent. sequenceNum := txIn.Sequence - relativeLock := int64(sequenceNum & domainmessage.SequenceLockTimeMask) + relativeLock := int64(sequenceNum & appmessage.SequenceLockTimeMask) switch { // Relative time locks are disabled for this input, so we can // skip any further calculation. - case sequenceNum&domainmessage.SequenceLockTimeDisabled == domainmessage.SequenceLockTimeDisabled: + case sequenceNum&appmessage.SequenceLockTimeDisabled == appmessage.SequenceLockTimeDisabled: continue - case sequenceNum&domainmessage.SequenceLockTimeIsSeconds == domainmessage.SequenceLockTimeIsSeconds: + case sequenceNum&appmessage.SequenceLockTimeIsSeconds == appmessage.SequenceLockTimeIsSeconds: // This input requires a relative time lock expressed // in seconds before it can be spent. Therefore, we // need to query for the block prior to the one in @@ -100,11 +100,11 @@ func (dag *BlockDAG) calcSequenceLock(node *blockNode, utxoSet UTXOSet, tx *util medianTime := blockNode.PastMedianTime(dag) // Time based relative time-locks have a time granularity of - // domainmessage.SequenceLockTimeGranularity, so we shift left by this + // appmessage.SequenceLockTimeGranularity, so we shift left by this // amount to convert to the proper relative time-lock. We also // subtract one from the relative lock to maintain the original // lockTime semantics. - timeLockMilliseconds := (relativeLock << domainmessage.SequenceLockTimeGranularity) - 1 + timeLockMilliseconds := (relativeLock << appmessage.SequenceLockTimeGranularity) - 1 timeLock := medianTime.UnixMilliseconds() + timeLockMilliseconds if timeLock > sequenceLock.Milliseconds { sequenceLock.Milliseconds = timeLock @@ -138,6 +138,6 @@ func LockTimeToSequence(isMilliseconds bool, locktime uint64) uint64 { // shift the locktime over by 19 since the time granularity is in // 524288-millisecond intervals (2^19). This results in a max lock-time of // 34,359,214,080 seconds, or 1.1 years. - return domainmessage.SequenceLockTimeIsSeconds | - locktime>>domainmessage.SequenceLockTimeGranularity + return appmessage.SequenceLockTimeIsSeconds | + locktime>>appmessage.SequenceLockTimeGranularity } diff --git a/domain/blockdag/subnetworks.go b/domain/blockdag/subnetworks.go index 1d7f343f8..fa6e83c6b 100644 --- a/domain/blockdag/subnetworks.go +++ b/domain/blockdag/subnetworks.go @@ -5,12 +5,12 @@ import ( "encoding/binary" "fmt" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/pkg/errors" "github.com/kaspanet/kaspad/util" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/subnetworkid" ) @@ -19,7 +19,7 @@ import ( // subnetwork based on it. // This function returns an error if one or more transactions are invalid func registerSubnetworks(dbContext dbaccess.Context, txs []*util.Tx) error { - subnetworkRegistryTxs := make([]*domainmessage.MsgTx, 0) + subnetworkRegistryTxs := make([]*appmessage.MsgTx, 0) for _, tx := range txs { msgTx := tx.MsgTx() @@ -60,7 +60,7 @@ func registerSubnetworks(dbContext dbaccess.Context, txs []*util.Tx) error { // validateSubnetworkRegistryTransaction makes sure that a given subnetwork registry // transaction is valid. Such a transaction is valid iff: // - Its entire payload is a uint64 (8 bytes) -func validateSubnetworkRegistryTransaction(tx *domainmessage.MsgTx) error { +func validateSubnetworkRegistryTransaction(tx *appmessage.MsgTx) error { if len(tx.Payload) != 8 { return ruleError(ErrSubnetworkRegistry, fmt.Sprintf("validation failed: subnetwork registry"+ "tx '%s' has an invalid payload", tx.TxHash())) @@ -70,7 +70,7 @@ func validateSubnetworkRegistryTransaction(tx *domainmessage.MsgTx) error { } // TxToSubnetworkID creates a subnetwork ID from a subnetwork registry transaction -func TxToSubnetworkID(tx *domainmessage.MsgTx) (*subnetworkid.SubnetworkID, error) { +func TxToSubnetworkID(tx *appmessage.MsgTx) (*subnetworkid.SubnetworkID, error) { txHash := tx.TxHash() return subnetworkid.New(util.Hash160(txHash[:])) } @@ -114,14 +114,14 @@ type subnetwork struct { gasLimit uint64 } -func newSubnetwork(tx *domainmessage.MsgTx) *subnetwork { +func newSubnetwork(tx *appmessage.MsgTx) *subnetwork { return &subnetwork{ gasLimit: ExtractGasLimit(tx), } } // ExtractGasLimit extracts the gas limit from the transaction payload -func ExtractGasLimit(tx *domainmessage.MsgTx) uint64 { +func ExtractGasLimit(tx *appmessage.MsgTx) uint64 { return binary.LittleEndian.Uint64(tx.Payload[:8]) } diff --git a/domain/blockdag/test_utils.go b/domain/blockdag/test_utils.go index 5f2c76360..fdb034223 100644 --- a/domain/blockdag/test_utils.go +++ b/domain/blockdag/test_utils.go @@ -14,16 +14,16 @@ import ( "sync" "testing" - "github.com/kaspanet/kaspad/infrastructure/database/ffldb/ldb" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/database/ffldb/ldb" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util" "github.com/pkg/errors" "github.com/syndtr/goleveldb/leveldb/opt" "github.com/kaspanet/kaspad/util/subnetworkid" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -121,30 +121,30 @@ type txSubnetworkData struct { Payload []byte } -func createTxForTest(numInputs uint32, numOutputs uint32, outputValue uint64, subnetworkData *txSubnetworkData) *domainmessage.MsgTx { - txIns := []*domainmessage.TxIn{} - txOuts := []*domainmessage.TxOut{} +func createTxForTest(numInputs uint32, numOutputs uint32, outputValue uint64, subnetworkData *txSubnetworkData) *appmessage.MsgTx { + txIns := []*appmessage.TxIn{} + txOuts := []*appmessage.TxOut{} for i := uint32(0); i < numInputs; i++ { - txIns = append(txIns, &domainmessage.TxIn{ - PreviousOutpoint: *domainmessage.NewOutpoint(&daghash.TxID{}, i), + txIns = append(txIns, &appmessage.TxIn{ + PreviousOutpoint: *appmessage.NewOutpoint(&daghash.TxID{}, i), SignatureScript: []byte{}, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, }) } for i := uint32(0); i < numOutputs; i++ { - txOuts = append(txOuts, &domainmessage.TxOut{ + txOuts = append(txOuts, &appmessage.TxOut{ ScriptPubKey: OpTrueScript, Value: outputValue, }) } if subnetworkData != nil { - return domainmessage.NewSubnetworkMsgTx(domainmessage.TxVersion, txIns, txOuts, subnetworkData.subnetworkID, subnetworkData.Gas, subnetworkData.Payload) + return appmessage.NewSubnetworkMsgTx(appmessage.TxVersion, txIns, txOuts, subnetworkData.subnetworkID, subnetworkData.Gas, subnetworkData.Payload) } - return domainmessage.NewNativeMsgTx(domainmessage.TxVersion, txIns, txOuts) + return appmessage.NewNativeMsgTx(appmessage.TxVersion, txIns, txOuts) } // VirtualForTest is an exported version for virtualBlock, so that it can be returned by exported test_util methods @@ -186,7 +186,7 @@ func GetVirtualFromParentsForTest(dag *BlockDAG, parentHashes []*daghash.Hash) ( // LoadBlocks reads files containing kaspa gzipped block data from disk // and returns them as an array of util.Block. func LoadBlocks(filename string) (blocks []*util.Block, err error) { - var network = domainmessage.Mainnet + var network = appmessage.Mainnet var dr io.Reader var fi io.ReadCloser @@ -244,7 +244,7 @@ func opTrueAddress(prefix util.Bech32Prefix) (util.Address, error) { } // PrepareBlockForTest generates a block with the proper merkle roots, coinbase transaction etc. This function is used for test purposes only -func PrepareBlockForTest(dag *BlockDAG, parentHashes []*daghash.Hash, transactions []*domainmessage.MsgTx) (*domainmessage.MsgBlock, error) { +func PrepareBlockForTest(dag *BlockDAG, parentHashes []*daghash.Hash, transactions []*appmessage.MsgTx) (*appmessage.MsgBlock, error) { parents := newBlockSet() for _, hash := range parentHashes { parent, ok := dag.index.LookupNode(hash) @@ -310,13 +310,13 @@ func PrepareBlockForTest(dag *BlockDAG, parentHashes []*daghash.Hash, transactio // Create a new block ready to be solved. hashMerkleTree := BuildHashMerkleTreeStore(blockTransactions) - var msgBlock domainmessage.MsgBlock + var msgBlock appmessage.MsgBlock for _, tx := range blockTransactions { msgBlock.AddTransaction(tx.MsgTx()) } timestamp := node.parents.bluest().PastMedianTime(dag) - msgBlock.Header = domainmessage.BlockHeader{ + msgBlock.Header = appmessage.BlockHeader{ Version: blockVersion, ParentHashes: parentHashes, HashMerkleRoot: hashMerkleTree.Root(), @@ -331,7 +331,7 @@ func PrepareBlockForTest(dag *BlockDAG, parentHashes []*daghash.Hash, transactio // PrepareAndProcessBlockForTest prepares a block that points to the given parent // hashes and process it. -func PrepareAndProcessBlockForTest(t *testing.T, dag *BlockDAG, parentHashes []*daghash.Hash, transactions []*domainmessage.MsgTx) *domainmessage.MsgBlock { +func PrepareAndProcessBlockForTest(t *testing.T, dag *BlockDAG, parentHashes []*daghash.Hash, transactions []*appmessage.MsgTx) *appmessage.MsgBlock { daghash.Sort(parentHashes) block, err := PrepareBlockForTest(dag, parentHashes, transactions) if err != nil { diff --git a/domain/blockdag/utxo_ecmh.go b/domain/blockdag/utxo_ecmh.go index e94374a3b..7afc34f89 100644 --- a/domain/blockdag/utxo_ecmh.go +++ b/domain/blockdag/utxo_ecmh.go @@ -3,10 +3,10 @@ package blockdag import ( "bytes" "github.com/kaspanet/go-secp256k1" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" ) -func addUTXOToMultiset(ms *secp256k1.MultiSet, entry *UTXOEntry, outpoint *domainmessage.Outpoint) (*secp256k1.MultiSet, error) { +func addUTXOToMultiset(ms *secp256k1.MultiSet, entry *UTXOEntry, outpoint *appmessage.Outpoint) (*secp256k1.MultiSet, error) { w := &bytes.Buffer{} err := serializeUTXO(w, entry, outpoint) if err != nil { @@ -16,7 +16,7 @@ func addUTXOToMultiset(ms *secp256k1.MultiSet, entry *UTXOEntry, outpoint *domai return ms, nil } -func removeUTXOFromMultiset(ms *secp256k1.MultiSet, entry *UTXOEntry, outpoint *domainmessage.Outpoint) (*secp256k1.MultiSet, error) { +func removeUTXOFromMultiset(ms *secp256k1.MultiSet, entry *UTXOEntry, outpoint *appmessage.Outpoint) (*secp256k1.MultiSet, error) { w := &bytes.Buffer{} err := serializeUTXO(w, entry, outpoint) if err != nil { diff --git a/domain/blockdag/utxodiffstore.go b/domain/blockdag/utxodiffstore.go index dd9c5a069..753659954 100644 --- a/domain/blockdag/utxodiffstore.go +++ b/domain/blockdag/utxodiffstore.go @@ -3,7 +3,7 @@ package blockdag import ( "bytes" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/locks" ) diff --git a/domain/blockdag/utxodiffstore_test.go b/domain/blockdag/utxodiffstore_test.go index 07d2cc896..bed35f67e 100644 --- a/domain/blockdag/utxodiffstore_test.go +++ b/domain/blockdag/utxodiffstore_test.go @@ -4,9 +4,9 @@ import ( "reflect" "testing" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/daghash" ) @@ -42,8 +42,8 @@ func TestUTXODiffStore(t *testing.T) { // Add node's diff data to the utxoDiffStore and check if it's checked correctly. node := createNode() diff := NewUTXODiff() - diff.toAdd.add(domainmessage.Outpoint{TxID: daghash.TxID{0x01}, Index: 0}, &UTXOEntry{amount: 1, scriptPubKey: []byte{0x01}}) - diff.toRemove.add(domainmessage.Outpoint{TxID: daghash.TxID{0x02}, Index: 0}, &UTXOEntry{amount: 2, scriptPubKey: []byte{0x02}}) + diff.toAdd.add(appmessage.Outpoint{TxID: daghash.TxID{0x01}, Index: 0}, &UTXOEntry{amount: 1, scriptPubKey: []byte{0x01}}) + diff.toRemove.add(appmessage.Outpoint{TxID: daghash.TxID{0x02}, Index: 0}, &UTXOEntry{amount: 2, scriptPubKey: []byte{0x02}}) if err := dag.utxoDiffStore.setBlockDiff(node, diff); err != nil { t.Fatalf("setBlockDiff: unexpected error: %s", err) } diff --git a/domain/blockdag/utxoio.go b/domain/blockdag/utxoio.go index 3a848eeb3..9ae2069c1 100644 --- a/domain/blockdag/utxoio.go +++ b/domain/blockdag/utxoio.go @@ -2,7 +2,7 @@ package blockdag import ( "bytes" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/binaryserializer" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" @@ -17,12 +17,12 @@ import ( // diff | UTXODiff | The diff data's diff func serializeBlockUTXODiffData(w io.Writer, diffData *blockUTXODiffData) error { hasDiffChild := diffData.diffChild != nil - err := domainmessage.WriteElement(w, hasDiffChild) + err := appmessage.WriteElement(w, hasDiffChild) if err != nil { return err } if hasDiffChild { - err := domainmessage.WriteElement(w, diffData.diffChild.hash) + err := appmessage.WriteElement(w, diffData.diffChild.hash) if err != nil { return err } @@ -41,14 +41,14 @@ func (diffStore *utxoDiffStore) deserializeBlockUTXODiffData(serializedDiffData r := bytes.NewBuffer(serializedDiffData) var hasDiffChild bool - err := domainmessage.ReadElement(r, &hasDiffChild) + err := appmessage.ReadElement(r, &hasDiffChild) if err != nil { return nil, err } if hasDiffChild { hash := &daghash.Hash{} - err := domainmessage.ReadElement(r, hash) + err := appmessage.ReadElement(r, hash) if err != nil { return nil, err } @@ -86,7 +86,7 @@ func deserializeUTXODiff(r io.Reader) (*UTXODiff, error) { } func deserializeUTXOCollection(r io.Reader) (utxoCollection, error) { - count, err := domainmessage.ReadVarInt(r) + count, err := appmessage.ReadVarInt(r) if err != nil { return nil, err } @@ -101,7 +101,7 @@ func deserializeUTXOCollection(r io.Reader) (utxoCollection, error) { return collection, nil } -func deserializeUTXO(r io.Reader) (*UTXOEntry, *domainmessage.Outpoint, error) { +func deserializeUTXO(r io.Reader) (*UTXOEntry, *appmessage.Outpoint, error) { outpoint, err := deserializeOutpoint(r) if err != nil { return nil, nil, err @@ -134,7 +134,7 @@ func serializeUTXODiff(w io.Writer, diff *UTXODiff) error { // the utxo entries and serializing them and their corresponding outpoint // prefixed by a varint that indicates their size. func serializeUTXOCollection(w io.Writer, collection utxoCollection) error { - err := domainmessage.WriteVarInt(w, uint64(len(collection))) + err := appmessage.WriteVarInt(w, uint64(len(collection))) if err != nil { return err } @@ -148,7 +148,7 @@ func serializeUTXOCollection(w io.Writer, collection utxoCollection) error { } // serializeUTXO serializes a utxo entry-outpoint pair -func serializeUTXO(w io.Writer, entry *UTXOEntry, outpoint *domainmessage.Outpoint) error { +func serializeUTXO(w io.Writer, entry *UTXOEntry, outpoint *appmessage.Outpoint) error { err := serializeOutpoint(w, outpoint) if err != nil { return err @@ -163,7 +163,7 @@ func serializeUTXO(w io.Writer, entry *UTXOEntry, outpoint *domainmessage.Outpoi // p2pkhUTXOEntrySerializeSize is the serialized size for a P2PKH UTXO entry. // 8 bytes (header code) + 8 bytes (amount) + varint for script pub key length of 25 (for P2PKH) + 25 bytes for P2PKH script. -var p2pkhUTXOEntrySerializeSize = 8 + 8 + domainmessage.VarIntSerializeSize(25) + 25 +var p2pkhUTXOEntrySerializeSize = 8 + 8 + appmessage.VarIntSerializeSize(25) + 25 // serializeUTXOEntry encodes the entry to the given io.Writer and use compression if useCompression is true. // The compression format is described in detail above. @@ -185,7 +185,7 @@ func serializeUTXOEntry(w io.Writer, entry *UTXOEntry) error { return err } - err = domainmessage.WriteVarInt(w, uint64(len(entry.ScriptPubKey()))) + err = appmessage.WriteVarInt(w, uint64(len(entry.ScriptPubKey()))) if err != nil { return err } @@ -225,7 +225,7 @@ func deserializeUTXOEntry(r io.Reader) (*UTXOEntry, error) { return nil, err } - scriptPubKeyLen, err := domainmessage.ReadVarInt(r) + scriptPubKeyLen, err := appmessage.ReadVarInt(r) if err != nil { return nil, err } diff --git a/domain/blockdag/utxoset.go b/domain/blockdag/utxoset.go index c750929bd..2dae4cff0 100644 --- a/domain/blockdag/utxoset.go +++ b/domain/blockdag/utxoset.go @@ -9,7 +9,7 @@ import ( "github.com/pkg/errors" "github.com/kaspanet/go-secp256k1" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" ) const ( @@ -78,7 +78,7 @@ const ( ) // NewUTXOEntry creates a new utxoEntry representing the given txOut -func NewUTXOEntry(txOut *domainmessage.TxOut, isCoinbase bool, blockBlueScore uint64) *UTXOEntry { +func NewUTXOEntry(txOut *appmessage.TxOut, isCoinbase bool, blockBlueScore uint64) *UTXOEntry { entry := &UTXOEntry{ amount: txOut.Value, scriptPubKey: txOut.ScriptPubKey, @@ -93,7 +93,7 @@ func NewUTXOEntry(txOut *domainmessage.TxOut, isCoinbase bool, blockBlueScore ui } // utxoCollection represents a set of UTXOs indexed by their outpoints -type utxoCollection map[domainmessage.Outpoint]*UTXOEntry +type utxoCollection map[appmessage.Outpoint]*UTXOEntry func (uc utxoCollection) String() string { utxoStrings := make([]string, len(uc)) @@ -112,31 +112,31 @@ func (uc utxoCollection) String() string { } // add adds a new UTXO entry to this collection -func (uc utxoCollection) add(outpoint domainmessage.Outpoint, entry *UTXOEntry) { +func (uc utxoCollection) add(outpoint appmessage.Outpoint, entry *UTXOEntry) { uc[outpoint] = entry } // remove removes a UTXO entry from this collection if it exists -func (uc utxoCollection) remove(outpoint domainmessage.Outpoint) { +func (uc utxoCollection) remove(outpoint appmessage.Outpoint) { delete(uc, outpoint) } // get returns the UTXOEntry represented by provided outpoint, // and a boolean value indicating if said UTXOEntry is in the set or not -func (uc utxoCollection) get(outpoint domainmessage.Outpoint) (*UTXOEntry, bool) { +func (uc utxoCollection) get(outpoint appmessage.Outpoint) (*UTXOEntry, bool) { entry, ok := uc[outpoint] return entry, ok } // contains returns a boolean value indicating whether a UTXO entry is in the set -func (uc utxoCollection) contains(outpoint domainmessage.Outpoint) bool { +func (uc utxoCollection) contains(outpoint appmessage.Outpoint) bool { _, ok := uc[outpoint] return ok } // containsWithBlueScore returns a boolean value indicating whether a UTXOEntry // is in the set and its blue score is equal to the given blue score. -func (uc utxoCollection) containsWithBlueScore(outpoint domainmessage.Outpoint, blueScore uint64) bool { +func (uc utxoCollection) containsWithBlueScore(outpoint appmessage.Outpoint, blueScore uint64) bool { entry, ok := uc.get(outpoint) return ok && entry.blockBlueScore == blueScore } @@ -353,7 +353,7 @@ func (d *UTXODiff) clone() *UTXODiff { // // If d.useMultiset is true, this function MUST be // called with the DAG lock held. -func (d *UTXODiff) AddEntry(outpoint domainmessage.Outpoint, entry *UTXOEntry) error { +func (d *UTXODiff) AddEntry(outpoint appmessage.Outpoint, entry *UTXOEntry) error { if d.toRemove.containsWithBlueScore(outpoint, entry.blockBlueScore) { d.toRemove.remove(outpoint) } else if _, exists := d.toAdd[outpoint]; exists { @@ -368,7 +368,7 @@ func (d *UTXODiff) AddEntry(outpoint domainmessage.Outpoint, entry *UTXOEntry) e // // If d.useMultiset is true, this function MUST be // called with the DAG lock held. -func (d *UTXODiff) RemoveEntry(outpoint domainmessage.Outpoint, entry *UTXOEntry) error { +func (d *UTXODiff) RemoveEntry(outpoint appmessage.Outpoint, entry *UTXOEntry) error { if d.toAdd.containsWithBlueScore(outpoint, entry.blockBlueScore) { d.toAdd.remove(outpoint) } else if _, exists := d.toRemove[outpoint]; exists { @@ -399,9 +399,9 @@ type UTXOSet interface { fmt.Stringer diffFrom(other UTXOSet) (*UTXODiff, error) WithDiff(utxoDiff *UTXODiff) (UTXOSet, error) - AddTx(tx *domainmessage.MsgTx, blockBlueScore uint64) (ok bool, err error) + AddTx(tx *appmessage.MsgTx, blockBlueScore uint64) (ok bool, err error) clone() UTXOSet - Get(outpoint domainmessage.Outpoint) (*UTXOEntry, bool) + Get(outpoint appmessage.Outpoint) (*UTXOEntry, bool) } // FullUTXOSet represents a full list of transaction outputs and their values @@ -456,7 +456,7 @@ func (fus *FullUTXOSet) WithDiff(other *UTXODiff) (UTXOSet, error) { // necessarily means there's an error). // // This function MUST be called with the DAG lock held. -func (fus *FullUTXOSet) AddTx(tx *domainmessage.MsgTx, blueScore uint64) (isAccepted bool, err error) { +func (fus *FullUTXOSet) AddTx(tx *appmessage.MsgTx, blueScore uint64) (isAccepted bool, err error) { if !fus.containsInputs(tx) { return false, nil } @@ -467,7 +467,7 @@ func (fus *FullUTXOSet) AddTx(tx *domainmessage.MsgTx, blueScore uint64) (isAcce isCoinbase := tx.IsCoinBase() for i, txOut := range tx.TxOut { - outpoint := *domainmessage.NewOutpoint(tx.TxID(), uint32(i)) + outpoint := *appmessage.NewOutpoint(tx.TxID(), uint32(i)) entry := NewUTXOEntry(txOut, isCoinbase, blueScore) fus.add(outpoint, entry) } @@ -475,9 +475,9 @@ func (fus *FullUTXOSet) AddTx(tx *domainmessage.MsgTx, blueScore uint64) (isAcce return true, nil } -func (fus *FullUTXOSet) containsInputs(tx *domainmessage.MsgTx) bool { +func (fus *FullUTXOSet) containsInputs(tx *appmessage.MsgTx) bool { for _, txIn := range tx.TxIn { - outpoint := *domainmessage.NewOutpoint(&txIn.PreviousOutpoint.TxID, txIn.PreviousOutpoint.Index) + outpoint := *appmessage.NewOutpoint(&txIn.PreviousOutpoint.TxID, txIn.PreviousOutpoint.Index) if !fus.contains(outpoint) { return false } @@ -492,7 +492,7 @@ func (fus *FullUTXOSet) clone() UTXOSet { } // Get returns the UTXOEntry associated with the given Outpoint, and a boolean indicating if such entry was found -func (fus *FullUTXOSet) Get(outpoint domainmessage.Outpoint) (*UTXOEntry, bool) { +func (fus *FullUTXOSet) Get(outpoint appmessage.Outpoint) (*UTXOEntry, bool) { utxoEntry, ok := fus.utxoCollection[outpoint] return utxoEntry, ok } @@ -540,7 +540,7 @@ func (dus *DiffUTXOSet) WithDiff(other *UTXODiff) (UTXOSet, error) { // // If dus.UTXODiff.useMultiset is true, this function MUST be // called with the DAG lock held. -func (dus *DiffUTXOSet) AddTx(tx *domainmessage.MsgTx, blockBlueScore uint64) (bool, error) { +func (dus *DiffUTXOSet) AddTx(tx *appmessage.MsgTx, blockBlueScore uint64) (bool, error) { if !dus.containsInputs(tx) { return false, nil } @@ -553,7 +553,7 @@ func (dus *DiffUTXOSet) AddTx(tx *domainmessage.MsgTx, blockBlueScore uint64) (b return true, nil } -func (dus *DiffUTXOSet) appendTx(tx *domainmessage.MsgTx, blockBlueScore uint64) error { +func (dus *DiffUTXOSet) appendTx(tx *appmessage.MsgTx, blockBlueScore uint64) error { for _, txIn := range tx.TxIn { entry, ok := dus.Get(txIn.PreviousOutpoint) if !ok { @@ -567,7 +567,7 @@ func (dus *DiffUTXOSet) appendTx(tx *domainmessage.MsgTx, blockBlueScore uint64) isCoinbase := tx.IsCoinBase() for i, txOut := range tx.TxOut { - outpoint := *domainmessage.NewOutpoint(tx.TxID(), uint32(i)) + outpoint := *appmessage.NewOutpoint(tx.TxID(), uint32(i)) entry := NewUTXOEntry(txOut, isCoinbase, blockBlueScore) err := dus.UTXODiff.AddEntry(outpoint, entry) @@ -578,9 +578,9 @@ func (dus *DiffUTXOSet) appendTx(tx *domainmessage.MsgTx, blockBlueScore uint64) return nil } -func (dus *DiffUTXOSet) containsInputs(tx *domainmessage.MsgTx) bool { +func (dus *DiffUTXOSet) containsInputs(tx *appmessage.MsgTx) bool { for _, txIn := range tx.TxIn { - outpoint := *domainmessage.NewOutpoint(&txIn.PreviousOutpoint.TxID, txIn.PreviousOutpoint.Index) + outpoint := *appmessage.NewOutpoint(&txIn.PreviousOutpoint.TxID, txIn.PreviousOutpoint.Index) isInBase := dus.base.contains(outpoint) isInDiffToAdd := dus.UTXODiff.toAdd.contains(outpoint) isInDiffToRemove := dus.UTXODiff.toRemove.contains(outpoint) @@ -626,7 +626,7 @@ func (dus *DiffUTXOSet) cloneWithoutBase() UTXOSet { // Get returns the UTXOEntry associated with provided outpoint in this UTXOSet. // Returns false in second output if this UTXOEntry was not found -func (dus *DiffUTXOSet) Get(outpoint domainmessage.Outpoint) (*UTXOEntry, bool) { +func (dus *DiffUTXOSet) Get(outpoint appmessage.Outpoint) (*UTXOEntry, bool) { if toRemoveEntry, ok := dus.UTXODiff.toRemove.get(outpoint); ok { // An exception is made for entries with unequal blue scores // These are just "updates" to accepted blue score diff --git a/domain/blockdag/utxoset_test.go b/domain/blockdag/utxoset_test.go index 98a2bc360..c290f8f0b 100644 --- a/domain/blockdag/utxoset_test.go +++ b/domain/blockdag/utxoset_test.go @@ -6,7 +6,7 @@ import ( "github.com/kaspanet/kaspad/util/subnetworkid" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -14,10 +14,10 @@ import ( func TestUTXOCollection(t *testing.T) { txID0, _ := daghash.NewTxIDFromStr("0000000000000000000000000000000000000000000000000000000000000000") txID1, _ := daghash.NewTxIDFromStr("1111111111111111111111111111111111111111111111111111111111111111") - outpoint0 := *domainmessage.NewOutpoint(txID0, 0) - outpoint1 := *domainmessage.NewOutpoint(txID1, 0) - utxoEntry0 := NewUTXOEntry(&domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 0) - utxoEntry1 := NewUTXOEntry(&domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 20}, false, 1) + outpoint0 := *appmessage.NewOutpoint(txID0, 0) + outpoint1 := *appmessage.NewOutpoint(txID1, 0) + utxoEntry0 := NewUTXOEntry(&appmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 0) + utxoEntry1 := NewUTXOEntry(&appmessage.TxOut{ScriptPubKey: []byte{}, Value: 20}, false, 1) // For each of the following test cases, we will: // .String() the given collection and compare it to expectedStringWithMultiset @@ -73,10 +73,10 @@ func TestUTXOCollection(t *testing.T) { func TestUTXODiff(t *testing.T) { txID0, _ := daghash.NewTxIDFromStr("0000000000000000000000000000000000000000000000000000000000000000") txID1, _ := daghash.NewTxIDFromStr("1111111111111111111111111111111111111111111111111111111111111111") - outpoint0 := *domainmessage.NewOutpoint(txID0, 0) - outpoint1 := *domainmessage.NewOutpoint(txID1, 0) - utxoEntry0 := NewUTXOEntry(&domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 0) - utxoEntry1 := NewUTXOEntry(&domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 20}, false, 1) + outpoint0 := *appmessage.NewOutpoint(txID0, 0) + outpoint1 := *appmessage.NewOutpoint(txID1, 0) + utxoEntry0 := NewUTXOEntry(&appmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 0) + utxoEntry1 := NewUTXOEntry(&appmessage.TxOut{ScriptPubKey: []byte{}, Value: 20}, false, 1) // Test utxoDiff creation @@ -119,9 +119,9 @@ func TestUTXODiff(t *testing.T) { // Each test case represents a cell in the two tables outlined in the documentation for utxoDiff. func TestUTXODiffRules(t *testing.T) { txID0, _ := daghash.NewTxIDFromStr("0000000000000000000000000000000000000000000000000000000000000000") - outpoint0 := *domainmessage.NewOutpoint(txID0, 0) - utxoEntry1 := NewUTXOEntry(&domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 10) - utxoEntry2 := NewUTXOEntry(&domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 20) + outpoint0 := *appmessage.NewOutpoint(txID0, 0) + utxoEntry1 := NewUTXOEntry(&appmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 10) + utxoEntry2 := NewUTXOEntry(&appmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 20) // For each of the following test cases, we will: // this.diffFrom(other) and compare it to expectedDiffFromResult @@ -630,10 +630,10 @@ func (dus *DiffUTXOSet) equal(other *DiffUTXOSet) bool { func TestFullUTXOSet(t *testing.T) { txID0, _ := daghash.NewTxIDFromStr("0000000000000000000000000000000000000000000000000000000000000000") txID1, _ := daghash.NewTxIDFromStr("1111111111111111111111111111111111111111111111111111111111111111") - outpoint0 := *domainmessage.NewOutpoint(txID0, 0) - outpoint1 := *domainmessage.NewOutpoint(txID1, 0) - txOut0 := &domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 10} - txOut1 := &domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 20} + outpoint0 := *appmessage.NewOutpoint(txID0, 0) + outpoint1 := *appmessage.NewOutpoint(txID1, 0) + txOut0 := &appmessage.TxOut{ScriptPubKey: []byte{}, Value: 10} + txOut1 := &appmessage.TxOut{ScriptPubKey: []byte{}, Value: 20} utxoEntry0 := NewUTXOEntry(txOut0, true, 0) utxoEntry1 := NewUTXOEntry(txOut1, false, 1) diff := &UTXODiff{ @@ -661,8 +661,8 @@ func TestFullUTXOSet(t *testing.T) { } // Test fullUTXOSet addTx - txIn0 := &domainmessage.TxIn{SignatureScript: []byte{}, PreviousOutpoint: domainmessage.Outpoint{TxID: *txID0, Index: 0}, Sequence: 0} - transaction0 := domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{txIn0}, []*domainmessage.TxOut{txOut0}) + txIn0 := &appmessage.TxIn{SignatureScript: []byte{}, PreviousOutpoint: appmessage.Outpoint{TxID: *txID0, Index: 0}, Sequence: 0} + transaction0 := appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{txIn0}, []*appmessage.TxOut{txOut0}) if isAccepted, err := emptySet.AddTx(transaction0, 0); err != nil { t.Errorf("AddTx unexpectedly failed: %s", err) } else if isAccepted { @@ -694,10 +694,10 @@ func TestFullUTXOSet(t *testing.T) { func TestDiffUTXOSet(t *testing.T) { txID0, _ := daghash.NewTxIDFromStr("0000000000000000000000000000000000000000000000000000000000000000") txID1, _ := daghash.NewTxIDFromStr("1111111111111111111111111111111111111111111111111111111111111111") - outpoint0 := *domainmessage.NewOutpoint(txID0, 0) - outpoint1 := *domainmessage.NewOutpoint(txID1, 0) - txOut0 := &domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 10} - txOut1 := &domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 20} + outpoint0 := *appmessage.NewOutpoint(txID0, 0) + outpoint1 := *appmessage.NewOutpoint(txID1, 0) + txOut0 := &appmessage.TxOut{ScriptPubKey: []byte{}, Value: 10} + txOut1 := &appmessage.TxOut{ScriptPubKey: []byte{}, Value: 20} utxoEntry0 := NewUTXOEntry(txOut0, true, 0) utxoEntry1 := NewUTXOEntry(txOut1, false, 1) diff := &UTXODiff{ @@ -946,29 +946,29 @@ func TestUTXOSetDiffRules(t *testing.T) { // TestDiffUTXOSet_addTx makes sure that diffUTXOSet addTx works as expected func TestDiffUTXOSet_addTx(t *testing.T) { - txOut0 := &domainmessage.TxOut{ScriptPubKey: []byte{0}, Value: 10} + txOut0 := &appmessage.TxOut{ScriptPubKey: []byte{0}, Value: 10} utxoEntry0 := NewUTXOEntry(txOut0, true, 0) - coinbaseTX := domainmessage.NewSubnetworkMsgTx(1, []*domainmessage.TxIn{}, []*domainmessage.TxOut{txOut0}, subnetworkid.SubnetworkIDCoinbase, 0, nil) + coinbaseTX := appmessage.NewSubnetworkMsgTx(1, []*appmessage.TxIn{}, []*appmessage.TxOut{txOut0}, subnetworkid.SubnetworkIDCoinbase, 0, nil) // transaction1 spends coinbaseTX id1 := coinbaseTX.TxID() - outpoint1 := *domainmessage.NewOutpoint(id1, 0) - txIn1 := &domainmessage.TxIn{SignatureScript: []byte{}, PreviousOutpoint: outpoint1, Sequence: 0} - txOut1 := &domainmessage.TxOut{ScriptPubKey: []byte{1}, Value: 20} + outpoint1 := *appmessage.NewOutpoint(id1, 0) + txIn1 := &appmessage.TxIn{SignatureScript: []byte{}, PreviousOutpoint: outpoint1, Sequence: 0} + txOut1 := &appmessage.TxOut{ScriptPubKey: []byte{1}, Value: 20} utxoEntry1 := NewUTXOEntry(txOut1, false, 1) - transaction1 := domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{txIn1}, []*domainmessage.TxOut{txOut1}) + transaction1 := appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{txIn1}, []*appmessage.TxOut{txOut1}) // transaction2 spends transaction1 id2 := transaction1.TxID() - outpoint2 := *domainmessage.NewOutpoint(id2, 0) - txIn2 := &domainmessage.TxIn{SignatureScript: []byte{}, PreviousOutpoint: outpoint2, Sequence: 0} - txOut2 := &domainmessage.TxOut{ScriptPubKey: []byte{2}, Value: 30} + outpoint2 := *appmessage.NewOutpoint(id2, 0) + txIn2 := &appmessage.TxIn{SignatureScript: []byte{}, PreviousOutpoint: outpoint2, Sequence: 0} + txOut2 := &appmessage.TxOut{ScriptPubKey: []byte{2}, Value: 30} utxoEntry2 := NewUTXOEntry(txOut2, false, 2) - transaction2 := domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{txIn2}, []*domainmessage.TxOut{txOut2}) + transaction2 := appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{txIn2}, []*appmessage.TxOut{txOut2}) // outpoint3 is the outpoint for transaction2 id3 := transaction2.TxID() - outpoint3 := *domainmessage.NewOutpoint(id3, 0) + outpoint3 := *appmessage.NewOutpoint(id3, 0) // For each of the following test cases, we will: // 1. startSet.addTx() all the transactions in toAdd, in order, with the initial block height startHeight @@ -977,14 +977,14 @@ func TestDiffUTXOSet_addTx(t *testing.T) { name string startSet *DiffUTXOSet startHeight uint64 - toAdd []*domainmessage.MsgTx + toAdd []*appmessage.MsgTx expectedSet *DiffUTXOSet }{ { name: "add coinbase transaction to empty set", startSet: NewDiffUTXOSet(NewFullUTXOSet(), NewUTXODiff()), startHeight: 0, - toAdd: []*domainmessage.MsgTx{coinbaseTX}, + toAdd: []*appmessage.MsgTx{coinbaseTX}, expectedSet: &DiffUTXOSet{ base: &FullUTXOSet{utxoCollection: utxoCollection{}}, UTXODiff: &UTXODiff{ @@ -997,7 +997,7 @@ func TestDiffUTXOSet_addTx(t *testing.T) { name: "add regular transaction to empty set", startSet: NewDiffUTXOSet(NewFullUTXOSet(), NewUTXODiff()), startHeight: 0, - toAdd: []*domainmessage.MsgTx{transaction1}, + toAdd: []*appmessage.MsgTx{transaction1}, expectedSet: &DiffUTXOSet{ base: &FullUTXOSet{utxoCollection: utxoCollection{}}, UTXODiff: &UTXODiff{ @@ -1016,7 +1016,7 @@ func TestDiffUTXOSet_addTx(t *testing.T) { }, }, startHeight: 1, - toAdd: []*domainmessage.MsgTx{transaction1}, + toAdd: []*appmessage.MsgTx{transaction1}, expectedSet: &DiffUTXOSet{ base: &FullUTXOSet{utxoCollection: utxoCollection{outpoint1: utxoEntry0}}, UTXODiff: &UTXODiff{ @@ -1035,7 +1035,7 @@ func TestDiffUTXOSet_addTx(t *testing.T) { }, }, startHeight: 1, - toAdd: []*domainmessage.MsgTx{transaction1}, + toAdd: []*appmessage.MsgTx{transaction1}, expectedSet: &DiffUTXOSet{ base: NewFullUTXOSet(), UTXODiff: &UTXODiff{ @@ -1054,7 +1054,7 @@ func TestDiffUTXOSet_addTx(t *testing.T) { }, }, startHeight: 1, - toAdd: []*domainmessage.MsgTx{transaction1}, + toAdd: []*appmessage.MsgTx{transaction1}, expectedSet: &DiffUTXOSet{ base: NewFullUTXOSet(), UTXODiff: &UTXODiff{ @@ -1073,7 +1073,7 @@ func TestDiffUTXOSet_addTx(t *testing.T) { }, }, startHeight: 1, - toAdd: []*domainmessage.MsgTx{transaction1, transaction2}, + toAdd: []*appmessage.MsgTx{transaction1, transaction2}, expectedSet: &DiffUTXOSet{ base: &FullUTXOSet{utxoCollection: utxoCollection{outpoint1: utxoEntry0}}, UTXODiff: &UTXODiff{ @@ -1125,16 +1125,16 @@ func (dus *DiffUTXOSet) collection() (utxoCollection, error) { func TestUTXOSetAddEntry(t *testing.T) { txID0, _ := daghash.NewTxIDFromStr("0000000000000000000000000000000000000000000000000000000000000000") txID1, _ := daghash.NewTxIDFromStr("1111111111111111111111111111111111111111111111111111111111111111") - outpoint0 := domainmessage.NewOutpoint(txID0, 0) - outpoint1 := domainmessage.NewOutpoint(txID1, 0) - utxoEntry0 := NewUTXOEntry(&domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 0) - utxoEntry1 := NewUTXOEntry(&domainmessage.TxOut{ScriptPubKey: []byte{}, Value: 20}, false, 1) + outpoint0 := appmessage.NewOutpoint(txID0, 0) + outpoint1 := appmessage.NewOutpoint(txID1, 0) + utxoEntry0 := NewUTXOEntry(&appmessage.TxOut{ScriptPubKey: []byte{}, Value: 10}, true, 0) + utxoEntry1 := NewUTXOEntry(&appmessage.TxOut{ScriptPubKey: []byte{}, Value: 20}, false, 1) utxoDiff := NewUTXODiff() tests := []struct { name string - outpointToAdd *domainmessage.Outpoint + outpointToAdd *appmessage.Outpoint utxoEntryToAdd *UTXOEntry expectedUTXODiff *UTXODiff expectedError string diff --git a/domain/blockdag/validate.go b/domain/blockdag/validate.go index 3e060423a..cd1fa2d99 100644 --- a/domain/blockdag/validate.go +++ b/domain/blockdag/validate.go @@ -16,7 +16,7 @@ import ( "github.com/pkg/errors" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/subnetworkid" @@ -47,7 +47,7 @@ const ( // isNullOutpoint determines whether or not a previous transaction outpoint // is set. -func isNullOutpoint(outpoint *domainmessage.Outpoint) bool { +func isNullOutpoint(outpoint *appmessage.Outpoint) bool { if outpoint.Index == math.MaxUint32 && outpoint.TxID == daghash.ZeroTxID { return true } @@ -216,7 +216,7 @@ func checkTransactionAmountRanges(tx *util.Tx) error { } func checkDuplicateTransactionInputs(tx *util.Tx) error { - existingTxOut := make(map[domainmessage.Outpoint]struct{}) + existingTxOut := make(map[appmessage.Outpoint]struct{}) for _, txIn := range tx.MsgTx().TxIn { if _, exists := existingTxOut[txIn.PreviousOutpoint]; exists { return ruleError(ErrDuplicateTxInputs, "transaction "+ @@ -314,7 +314,7 @@ func checkTransactionSubnetwork(tx *util.Tx, subnetworkID *subnetworkid.Subnetwo // The flags modify the behavior of this function as follows: // - BFNoPoWCheck: The check to ensure the block hash is less than the target // difficulty is not performed. -func (dag *BlockDAG) checkProofOfWork(header *domainmessage.BlockHeader, flags BehaviorFlags) error { +func (dag *BlockDAG) checkProofOfWork(header *appmessage.BlockHeader, flags BehaviorFlags) error { // The target difficulty must be larger than zero. target := util.CompactToBig(header.Bits) if target.Sign() <= 0 { @@ -354,9 +354,9 @@ func ValidateTxMass(tx *util.Tx, utxoSet UTXOSet) error { if err != nil { return err } - if txMass > domainmessage.MaxMassPerBlock { + if txMass > appmessage.MaxMassPerBlock { str := fmt.Sprintf("tx %s has mass %d, which is above the "+ - "allowed limit of %d", tx.ID(), txMass, domainmessage.MaxMassPerBlock) + "allowed limit of %d", tx.ID(), txMass, appmessage.MaxMassPerBlock) return ruleError(ErrTxMassTooHigh, str) } return nil @@ -380,9 +380,9 @@ func CalcBlockMass(pastUTXO UTXOSet, transactions []*util.Tx) (uint64, error) { // We could potentially overflow the accumulator so check for // overflow as well. - if totalMass < txMass || totalMass > domainmessage.MaxMassPerBlock { + if totalMass < txMass || totalMass > appmessage.MaxMassPerBlock { str := fmt.Sprintf("block has total mass %d, which is "+ - "above the allowed limit of %d", totalMass, domainmessage.MaxMassPerBlock) + "above the allowed limit of %d", totalMass, appmessage.MaxMassPerBlock) return 0, ruleError(ErrBlockMassTooHigh, str) } } @@ -476,7 +476,7 @@ func (dag *BlockDAG) checkBlockHeaderSanity(block *util.Block, flags BehaviorFla } //checkBlockParentsOrder ensures that the block's parents are ordered by hash -func checkBlockParentsOrder(header *domainmessage.BlockHeader) error { +func checkBlockParentsOrder(header *appmessage.BlockHeader) error { sortedHashes := make([]*daghash.Hash, header.NumParentBlocks()) for i, hash := range header.ParentHashes { sortedHashes[i] = hash @@ -562,9 +562,9 @@ func (dag *BlockDAG) checkBlockContainsLessThanMaxBlockMassTransactions(block *u // else it is certainly over the block mass limit. transactions := block.Transactions() numTx := len(transactions) - if numTx > domainmessage.MaxMassPerBlock { + if numTx > appmessage.MaxMassPerBlock { str := fmt.Sprintf("block contains too many transactions - "+ - "got %d, max %d", numTx, domainmessage.MaxMassPerBlock) + "got %d, max %d", numTx, appmessage.MaxMassPerBlock) return ruleError(ErrBlockMassTooHigh, str) } return nil @@ -658,7 +658,7 @@ func (dag *BlockDAG) checkBlockDuplicateTransactions(block *util.Block) error { } func (dag *BlockDAG) checkBlockDoubleSpends(block *util.Block) error { - usedOutpoints := make(map[domainmessage.Outpoint]*daghash.TxID) + usedOutpoints := make(map[appmessage.Outpoint]*daghash.TxID) transactions := block.Transactions() for _, tx := range transactions { for _, txIn := range tx.MsgTx().TxIn { @@ -681,7 +681,7 @@ func (dag *BlockDAG) checkBlockDoubleSpends(block *util.Block) error { // - BFFastAdd: No checks are performed. // // This function MUST be called with the dag state lock held (for writes). -func (dag *BlockDAG) checkBlockHeaderContext(header *domainmessage.BlockHeader, bluestParent *blockNode, fastAdd bool) error { +func (dag *BlockDAG) checkBlockHeaderContext(header *appmessage.BlockHeader, bluestParent *blockNode, fastAdd bool) error { if !fastAdd { if err := dag.validateDifficulty(header, bluestParent); err != nil { return err @@ -694,7 +694,7 @@ func (dag *BlockDAG) checkBlockHeaderContext(header *domainmessage.BlockHeader, return nil } -func validateMedianTime(dag *BlockDAG, header *domainmessage.BlockHeader, bluestParent *blockNode) error { +func validateMedianTime(dag *BlockDAG, header *appmessage.BlockHeader, bluestParent *blockNode) error { if !header.IsGenesis() { // Ensure the timestamp for the block header is not before the // median time of the last several blocks (medianTimeBlocks). @@ -708,7 +708,7 @@ func validateMedianTime(dag *BlockDAG, header *domainmessage.BlockHeader, bluest return nil } -func (dag *BlockDAG) validateDifficulty(header *domainmessage.BlockHeader, bluestParent *blockNode) error { +func (dag *BlockDAG) validateDifficulty(header *appmessage.BlockHeader, bluestParent *blockNode) error { // Ensure the difficulty specified in the block header matches // the calculated difficulty based on the previous block and // difficulty retarget rules. @@ -724,7 +724,7 @@ func (dag *BlockDAG) validateDifficulty(header *domainmessage.BlockHeader, blues } // validateParents validates that no parent is an ancestor of another parent, and no parent is finalized -func (dag *BlockDAG) validateParents(blockHeader *domainmessage.BlockHeader, parents blockSet) error { +func (dag *BlockDAG) validateParents(blockHeader *appmessage.BlockHeader, parents blockSet) error { for parentA := range parents { // isFinalized might be false-negative because node finality status is // updated in a separate goroutine. This is why later the block is @@ -836,9 +836,9 @@ func (dag *BlockDAG) checkBlockTransactionsFinalized(block *util.Block, node *bl func ensureNoDuplicateTx(utxoSet UTXOSet, transactions []*util.Tx) error { // Fetch utxos for all of the transaction ouputs in this block. // Typically, there will not be any utxos for any of the outputs. - fetchSet := make(map[domainmessage.Outpoint]struct{}) + fetchSet := make(map[appmessage.Outpoint]struct{}) for _, tx := range transactions { - prevOut := domainmessage.Outpoint{TxID: *tx.ID()} + prevOut := appmessage.Outpoint{TxID: *tx.ID()} for txOutIdx := range tx.MsgTx().TxOut { prevOut.Index = uint32(txOutIdx) fetchSet[prevOut] = struct{}{} @@ -945,7 +945,7 @@ func CheckTransactionInputsAndCalulateFee(tx *util.Tx, txBlueScore uint64, utxoS return txFeeInSompi, nil } -func validateCoinbaseMaturity(dagParams *dagconfig.Params, entry *UTXOEntry, txBlueScore uint64, txIn *domainmessage.TxIn) error { +func validateCoinbaseMaturity(dagParams *dagconfig.Params, entry *UTXOEntry, txBlueScore uint64, txIn *appmessage.TxIn) error { // Ensure the transaction is not spending coins which have not // yet reached the required coinbase maturity. if entry.IsCoinbase() { diff --git a/domain/blockdag/validate_test.go b/domain/blockdag/validate_test.go index 9443fd211..d8292d6f3 100644 --- a/domain/blockdag/validate_test.go +++ b/domain/blockdag/validate_test.go @@ -14,8 +14,8 @@ import ( "github.com/pkg/errors" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/subnetworkid" @@ -190,8 +190,8 @@ func TestCheckBlockSanity(t *testing.T) { " %v, err %s", ruleErr.ErrorCode, err) } - var invalidParentsOrderBlock = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ + var invalidParentsOrderBlock = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 0x10000000, ParentHashes: []*daghash.Hash{ { @@ -229,12 +229,12 @@ func TestCheckBlockSanity(t *testing.T) { Bits: 0x207fffff, Nonce: 0x1, }, - Transactions: []*domainmessage.MsgTx{ + Transactions: []*appmessage.MsgTx{ { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{}, Index: 0xffffffff, }, @@ -246,7 +246,7 @@ func TestCheckBlockSanity(t *testing.T) { Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0x12a05f200, // 5000000000 ScriptPubKey: []byte{ @@ -259,9 +259,9 @@ func TestCheckBlockSanity(t *testing.T) { }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0x03, 0x2e, 0x38, 0xe9, 0xc0, 0xa8, 0x4c, 0x60, 0x46, 0xd6, 0x87, 0xd1, 0x05, 0x56, 0xdc, 0xac, @@ -296,7 +296,7 @@ func TestCheckBlockSanity(t *testing.T) { Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0x2123e300, // 556000000 ScriptPubKey: []byte{ @@ -329,9 +329,9 @@ func TestCheckBlockSanity(t *testing.T) { }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0xc3, 0x3e, 0xbf, 0xf2, 0xa7, 0x09, 0xf1, 0x3d, 0x9f, 0x9a, 0x75, 0x69, 0xab, 0x16, 0xa3, 0x27, @@ -365,7 +365,7 @@ func TestCheckBlockSanity(t *testing.T) { Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0xf4240, // 1000000 ScriptPubKey: []byte{ @@ -398,9 +398,9 @@ func TestCheckBlockSanity(t *testing.T) { }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0x0b, 0x60, 0x72, 0xb3, 0x86, 0xd4, 0xa7, 0x73, 0x23, 0x52, 0x37, 0xf6, 0x4c, 0x11, 0x26, 0xac, @@ -435,7 +435,7 @@ func TestCheckBlockSanity(t *testing.T) { Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0xf4240, // 1000000 ScriptPubKey: []byte{ @@ -542,7 +542,7 @@ func TestValidateParents(t *testing.T) { bNode := nodeByMsgBlock(t, dag, b) cNode := nodeByMsgBlock(t, dag, c) - fakeBlockHeader := &domainmessage.BlockHeader{ + fakeBlockHeader := &appmessage.BlockHeader{ HashMerkleRoot: &daghash.ZeroHash, AcceptedIDMerkleRoot: &daghash.ZeroHash, UTXOCommitment: &daghash.ZeroHash, @@ -575,7 +575,7 @@ func TestCheckTransactionSanity(t *testing.T) { outputValue uint64 nodeSubnetworkID subnetworkid.SubnetworkID txSubnetworkData *txSubnetworkData - extraModificationsFunc func(*domainmessage.MsgTx) + extraModificationsFunc func(*appmessage.MsgTx) expectedErr error }{ {"good one", 1, 1, 1, *subnetworkid.SubnetworkIDNative, nil, nil, nil}, @@ -594,7 +594,7 @@ func TestCheckTransactionSanity(t *testing.T) { {"duplicate inputs", 2, 1, 1, *subnetworkid.SubnetworkIDNative, nil, - func(tx *domainmessage.MsgTx) { tx.TxIn[1].PreviousOutpoint.Index = 0 }, + func(tx *appmessage.MsgTx) { tx.TxIn[1].PreviousOutpoint.Index = 0 }, ruleError(ErrDuplicateTxInputs, "")}, {"1 input coinbase", 1, @@ -648,14 +648,14 @@ func TestCheckTransactionSanity(t *testing.T) { {"invalid payload hash", 1, 1, 0, subnetworkid.SubnetworkID{123}, &txSubnetworkData{&subnetworkid.SubnetworkID{123}, 0, []byte{1}}, - func(tx *domainmessage.MsgTx) { + func(tx *appmessage.MsgTx) { tx.PayloadHash = &daghash.Hash{} }, ruleError(ErrInvalidPayloadHash, "")}, {"invalid payload hash in native subnetwork", 1, 1, 0, *subnetworkid.SubnetworkIDNative, nil, - func(tx *domainmessage.MsgTx) { + func(tx *appmessage.MsgTx) { tx.PayloadHash = daghash.DoubleHashP(tx.Payload) }, ruleError(ErrInvalidPayloadHash, "")}, @@ -678,8 +678,8 @@ func TestCheckTransactionSanity(t *testing.T) { // Block100000 defines block 100,000 of the block DAG. It is used to // test Block operations. -var Block100000 = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ +var Block100000 = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 0x10000000, ParentHashes: []*daghash.Hash{ { @@ -712,12 +712,12 @@ var Block100000 = domainmessage.MsgBlock{ Bits: 0x207fffff, Nonce: 1, }, - Transactions: []*domainmessage.MsgTx{ + Transactions: []*appmessage.MsgTx{ { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{ 0x9b, 0x22, 0x59, 0x44, 0x66, 0xf0, 0xbe, 0x50, 0x7c, 0x1c, 0x8a, 0xf6, 0x06, 0x27, 0xe6, 0x33, @@ -730,7 +730,7 @@ var Block100000 = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0x12a05f200, // 5000000000 ScriptPubKey: []byte{ @@ -752,9 +752,9 @@ var Block100000 = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{ 0x16, 0x5e, 0x38, 0xe8, 0xb3, 0x91, 0x45, 0x95, 0xd9, 0xc6, 0x41, 0xf3, 0xb8, 0xee, 0xc2, 0xf3, @@ -766,7 +766,7 @@ var Block100000 = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{ 0x4b, 0xb0, 0x75, 0x35, 0xdf, 0xd5, 0x8e, 0x0b, 0x3c, 0xd6, 0x4f, 0xd7, 0x15, 0x52, 0x80, 0x87, @@ -782,9 +782,9 @@ var Block100000 = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0x03, 0x2e, 0x38, 0xe9, 0xc0, 0xa8, 0x4c, 0x60, 0x46, 0xd6, 0x87, 0xd1, 0x05, 0x56, 0xdc, 0xac, @@ -819,7 +819,7 @@ var Block100000 = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0x2123e300, // 556000000 ScriptPubKey: []byte{ @@ -852,9 +852,9 @@ var Block100000 = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0xc3, 0x3e, 0xbf, 0xf2, 0xa7, 0x09, 0xf1, 0x3d, 0x9f, 0x9a, 0x75, 0x69, 0xab, 0x16, 0xa3, 0x27, @@ -888,7 +888,7 @@ var Block100000 = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0xf4240, // 1000000 ScriptPubKey: []byte{ @@ -921,9 +921,9 @@ var Block100000 = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0x0b, 0x60, 0x72, 0xb3, 0x86, 0xd4, 0xa7, 0x73, 0x23, 0x52, 0x37, 0xf6, 0x4c, 0x11, 0x26, 0xac, @@ -958,7 +958,7 @@ var Block100000 = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0xf4240, // 1000000 ScriptPubKey: []byte{ @@ -980,8 +980,8 @@ var Block100000 = domainmessage.MsgBlock{ } // BlockWithWrongTxOrder defines invalid block 100,000 of the block DAG. -var BlockWithWrongTxOrder = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ +var BlockWithWrongTxOrder = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 1, ParentHashes: []*daghash.Hash{ { @@ -1019,12 +1019,12 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ Bits: 0x207fffff, Nonce: 1, }, - Transactions: []*domainmessage.MsgTx{ + Transactions: []*appmessage.MsgTx{ { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{ 0x9b, 0x22, 0x59, 0x44, 0x66, 0xf0, 0xbe, 0x50, 0x7c, 0x1c, 0x8a, 0xf6, 0x06, 0x27, 0xe6, 0x33, @@ -1037,7 +1037,7 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0x12a05f200, // 5000000000 ScriptPubKey: []byte{ @@ -1059,9 +1059,9 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{ 0x16, 0x5e, 0x38, 0xe8, 0xb3, 0x91, 0x45, 0x95, 0xd9, 0xc6, 0x41, 0xf3, 0xb8, 0xee, 0xc2, 0xf3, @@ -1073,7 +1073,7 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{ 0x4b, 0xb0, 0x75, 0x35, 0xdf, 0xd5, 0x8e, 0x0b, 0x3c, 0xd6, 0x4f, 0xd7, 0x15, 0x52, 0x80, 0x87, @@ -1089,9 +1089,9 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0x03, 0x2e, 0x38, 0xe9, 0xc0, 0xa8, 0x4c, 0x60, 0x46, 0xd6, 0x87, 0xd1, 0x05, 0x56, 0xdc, 0xac, @@ -1126,7 +1126,7 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0x2123e300, // 556000000 ScriptPubKey: []byte{ @@ -1161,9 +1161,9 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0xc3, 0x3e, 0xbf, 0xf2, 0xa7, 0x09, 0xf1, 0x3d, 0x9f, 0x9a, 0x75, 0x69, 0xab, 0x16, 0xa3, 0x27, @@ -1197,7 +1197,7 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0xf4240, // 1000000 ScriptPubKey: []byte{ @@ -1230,9 +1230,9 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0x0b, 0x60, 0x72, 0xb3, 0x86, 0xd4, 0xa7, 0x73, 0x23, 0x52, 0x37, 0xf6, 0x4c, 0x11, 0x26, 0xac, @@ -1267,7 +1267,7 @@ var BlockWithWrongTxOrder = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0xf4240, // 1000000 ScriptPubKey: []byte{ diff --git a/domain/dagconfig/genesis.go b/domain/dagconfig/genesis.go index 23cf7b40d..f3aa82812 100644 --- a/domain/dagconfig/genesis.go +++ b/domain/dagconfig/genesis.go @@ -5,13 +5,13 @@ package dagconfig import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/mstime" "github.com/kaspanet/kaspad/util/subnetworkid" ) -var genesisTxOuts = []*domainmessage.TxOut{} +var genesisTxOuts = []*appmessage.TxOut{} var genesisTxPayload = []byte{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Blue score @@ -23,7 +23,7 @@ var genesisTxPayload = []byte{ // genesisCoinbaseTx is the coinbase transaction for the genesis blocks for // the main network. -var genesisCoinbaseTx = domainmessage.NewSubnetworkMsgTx(1, []*domainmessage.TxIn{}, genesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, genesisTxPayload) +var genesisCoinbaseTx = appmessage.NewSubnetworkMsgTx(1, []*appmessage.TxIn{}, genesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, genesisTxPayload) // genesisHash is the hash of the first block in the block DAG for the main // network (genesis block). @@ -45,8 +45,8 @@ var genesisMerkleRoot = daghash.Hash{ // genesisBlock defines the genesis block of the block DAG which serves as the // public transaction ledger for the main network. -var genesisBlock = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ +var genesisBlock = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 0x10000000, ParentHashes: []*daghash.Hash{}, HashMerkleRoot: &genesisMerkleRoot, @@ -56,10 +56,10 @@ var genesisBlock = domainmessage.MsgBlock{ Bits: 0x207fffff, Nonce: 0x1, }, - Transactions: []*domainmessage.MsgTx{genesisCoinbaseTx}, + Transactions: []*appmessage.MsgTx{genesisCoinbaseTx}, } -var devnetGenesisTxOuts = []*domainmessage.TxOut{} +var devnetGenesisTxOuts = []*appmessage.TxOut{} var devnetGenesisTxPayload = []byte{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Blue score @@ -72,7 +72,7 @@ var devnetGenesisTxPayload = []byte{ // devnetGenesisCoinbaseTx is the coinbase transaction for the genesis blocks for // the development network. -var devnetGenesisCoinbaseTx = domainmessage.NewSubnetworkMsgTx(1, []*domainmessage.TxIn{}, devnetGenesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, devnetGenesisTxPayload) +var devnetGenesisCoinbaseTx = appmessage.NewSubnetworkMsgTx(1, []*appmessage.TxIn{}, devnetGenesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, devnetGenesisTxPayload) // devGenesisHash is the hash of the first block in the block DAG for the development // network (genesis block). @@ -94,8 +94,8 @@ var devnetGenesisMerkleRoot = daghash.Hash{ // devnetGenesisBlock defines the genesis block of the block DAG which serves as the // public transaction ledger for the development network. -var devnetGenesisBlock = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ +var devnetGenesisBlock = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 0x10000000, ParentHashes: []*daghash.Hash{}, HashMerkleRoot: &devnetGenesisMerkleRoot, @@ -105,10 +105,10 @@ var devnetGenesisBlock = domainmessage.MsgBlock{ Bits: 0x1e7fffff, Nonce: 0x10bb, }, - Transactions: []*domainmessage.MsgTx{devnetGenesisCoinbaseTx}, + Transactions: []*appmessage.MsgTx{devnetGenesisCoinbaseTx}, } -var regtestGenesisTxOuts = []*domainmessage.TxOut{} +var regtestGenesisTxOuts = []*appmessage.TxOut{} var regtestGenesisTxPayload = []byte{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Blue score @@ -121,7 +121,7 @@ var regtestGenesisTxPayload = []byte{ // regtestGenesisCoinbaseTx is the coinbase transaction for // the genesis blocks for the regtest network. -var regtestGenesisCoinbaseTx = domainmessage.NewSubnetworkMsgTx(1, []*domainmessage.TxIn{}, regtestGenesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, regtestGenesisTxPayload) +var regtestGenesisCoinbaseTx = appmessage.NewSubnetworkMsgTx(1, []*appmessage.TxIn{}, regtestGenesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, regtestGenesisTxPayload) // devGenesisHash is the hash of the first block in the block DAG for the development // network (genesis block). @@ -143,8 +143,8 @@ var regtestGenesisMerkleRoot = daghash.Hash{ // regtestGenesisBlock defines the genesis block of the block DAG which serves as the // public transaction ledger for the development network. -var regtestGenesisBlock = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ +var regtestGenesisBlock = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 0x10000000, ParentHashes: []*daghash.Hash{}, HashMerkleRoot: ®testGenesisMerkleRoot, @@ -154,10 +154,10 @@ var regtestGenesisBlock = domainmessage.MsgBlock{ Bits: 0x207fffff, Nonce: 0x0, }, - Transactions: []*domainmessage.MsgTx{regtestGenesisCoinbaseTx}, + Transactions: []*appmessage.MsgTx{regtestGenesisCoinbaseTx}, } -var simnetGenesisTxOuts = []*domainmessage.TxOut{} +var simnetGenesisTxOuts = []*appmessage.TxOut{} var simnetGenesisTxPayload = []byte{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Blue score @@ -169,7 +169,7 @@ var simnetGenesisTxPayload = []byte{ } // simnetGenesisCoinbaseTx is the coinbase transaction for the simnet genesis block. -var simnetGenesisCoinbaseTx = domainmessage.NewSubnetworkMsgTx(1, []*domainmessage.TxIn{}, simnetGenesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, simnetGenesisTxPayload) +var simnetGenesisCoinbaseTx = appmessage.NewSubnetworkMsgTx(1, []*appmessage.TxIn{}, simnetGenesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, simnetGenesisTxPayload) // simnetGenesisHash is the hash of the first block in the block DAG for // the simnet (genesis block). @@ -191,8 +191,8 @@ var simnetGenesisMerkleRoot = daghash.Hash{ // simnetGenesisBlock defines the genesis block of the block DAG which serves as the // public transaction ledger for the development network. -var simnetGenesisBlock = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ +var simnetGenesisBlock = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 0x10000000, ParentHashes: []*daghash.Hash{}, HashMerkleRoot: &simnetGenesisMerkleRoot, @@ -202,10 +202,10 @@ var simnetGenesisBlock = domainmessage.MsgBlock{ Bits: 0x207fffff, Nonce: 0x0, }, - Transactions: []*domainmessage.MsgTx{simnetGenesisCoinbaseTx}, + Transactions: []*appmessage.MsgTx{simnetGenesisCoinbaseTx}, } -var testnetGenesisTxOuts = []*domainmessage.TxOut{} +var testnetGenesisTxOuts = []*appmessage.TxOut{} var testnetGenesisTxPayload = []byte{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Blue score @@ -215,7 +215,7 @@ var testnetGenesisTxPayload = []byte{ } // testnetGenesisCoinbaseTx is the coinbase transaction for the testnet genesis block. -var testnetGenesisCoinbaseTx = domainmessage.NewSubnetworkMsgTx(1, []*domainmessage.TxIn{}, testnetGenesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, testnetGenesisTxPayload) +var testnetGenesisCoinbaseTx = appmessage.NewSubnetworkMsgTx(1, []*appmessage.TxIn{}, testnetGenesisTxOuts, subnetworkid.SubnetworkIDCoinbase, 0, testnetGenesisTxPayload) // testnetGenesisHash is the hash of the first block in the block DAG for the test // network (genesis block). @@ -237,8 +237,8 @@ var testnetGenesisMerkleRoot = daghash.Hash{ // testnetGenesisBlock defines the genesis block of the block DAG which serves as the // public transaction ledger for testnet. -var testnetGenesisBlock = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ +var testnetGenesisBlock = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 0x10000000, ParentHashes: []*daghash.Hash{}, HashMerkleRoot: &testnetGenesisMerkleRoot, @@ -248,5 +248,5 @@ var testnetGenesisBlock = domainmessage.MsgBlock{ Bits: 0x1e7fffff, Nonce: 0x162ca, }, - Transactions: []*domainmessage.MsgTx{testnetGenesisCoinbaseTx}, + Transactions: []*appmessage.MsgTx{testnetGenesisCoinbaseTx}, } diff --git a/domain/dagconfig/params.go b/domain/dagconfig/params.go index 250e3fccc..efc4862a4 100644 --- a/domain/dagconfig/params.go +++ b/domain/dagconfig/params.go @@ -5,7 +5,7 @@ package dagconfig import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/network" "math/big" "time" @@ -99,7 +99,7 @@ type Params struct { Name string // Net defines the magic bytes used to identify the network. - Net domainmessage.KaspaNet + Net appmessage.KaspaNet // RPCPort defines the rpc server port RPCPort string @@ -112,7 +112,7 @@ type Params struct { DNSSeeds []string // GenesisBlock defines the first block of the DAG. - GenesisBlock *domainmessage.MsgBlock + GenesisBlock *appmessage.MsgBlock // GenesisHash is the starting block hash. GenesisHash *daghash.Hash @@ -190,7 +190,7 @@ func (p *Params) NormalizeRPCServerAddress(addr string) (string, error) { var MainnetParams = Params{ K: ghostdagK, Name: "kaspa-mainnet", - Net: domainmessage.Mainnet, + Net: appmessage.Mainnet, RPCPort: "16110", DefaultPort: "16111", DNSSeeds: []string{"dnsseed.kas.pa"}, @@ -238,7 +238,7 @@ var MainnetParams = Params{ var RegressionNetParams = Params{ K: ghostdagK, Name: "kaspa-regtest", - Net: domainmessage.Regtest, + Net: appmessage.Regtest, RPCPort: "16210", DefaultPort: "16211", DNSSeeds: []string{}, @@ -284,7 +284,7 @@ var RegressionNetParams = Params{ var TestnetParams = Params{ K: ghostdagK, Name: "kaspa-testnet", - Net: domainmessage.Testnet, + Net: appmessage.Testnet, RPCPort: "16210", DefaultPort: "16211", DNSSeeds: []string{"testnet-dnsseed.kas.pa"}, @@ -336,7 +336,7 @@ var TestnetParams = Params{ var SimnetParams = Params{ K: ghostdagK, Name: "kaspa-simnet", - Net: domainmessage.Simnet, + Net: appmessage.Simnet, RPCPort: "16510", DefaultPort: "16511", DNSSeeds: []string{}, // NOTE: There must NOT be any seeds. @@ -380,7 +380,7 @@ var SimnetParams = Params{ var DevnetParams = Params{ K: ghostdagK, Name: "kaspa-devnet", - Net: domainmessage.Devnet, + Net: appmessage.Devnet, RPCPort: "16610", DefaultPort: "16611", DNSSeeds: []string{}, // NOTE: There must NOT be any seeds. @@ -430,7 +430,7 @@ var ( ) var ( - registeredNets = make(map[domainmessage.KaspaNet]struct{}) + registeredNets = make(map[appmessage.KaspaNet]struct{}) ) // Register registers the network parameters for a Kaspa network. This may diff --git a/domain/mempool/error.go b/domain/mempool/error.go index 3dc947846..ba4cdbb10 100644 --- a/domain/mempool/error.go +++ b/domain/mempool/error.go @@ -150,7 +150,7 @@ func extractRejectCode(err error) (RejectCode, bool) { } // ErrToRejectErr examines the underlying type of the error and returns a reject -// code and string appropriate to be sent in a domainmessage.MsgReject message. +// code and string appropriate to be sent in a appmessage.MsgReject message. func ErrToRejectErr(err error) (RejectCode, string) { // Return the reject code along with the error text if it can be // extracted from the error. diff --git a/domain/mempool/mempool.go b/domain/mempool/mempool.go index 3bb3fe0f8..68a098bb8 100644 --- a/domain/mempool/mempool.go +++ b/domain/mempool/mempool.go @@ -14,11 +14,11 @@ import ( "github.com/kaspanet/kaspad/util/mstime" "github.com/pkg/errors" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/mining" "github.com/kaspanet/kaspad/domain/txscript" "github.com/kaspanet/kaspad/infrastructure/logger" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/subnetworkid" @@ -117,10 +117,10 @@ type TxPool struct { cfg Config pool map[daghash.TxID]*TxDesc depends map[daghash.TxID]*TxDesc - dependsByPrev map[domainmessage.Outpoint]map[daghash.TxID]*TxDesc + dependsByPrev map[appmessage.Outpoint]map[daghash.TxID]*TxDesc orphans map[daghash.TxID]*orphanTx - orphansByPrev map[domainmessage.Outpoint]map[daghash.TxID]*util.Tx - outpoints map[domainmessage.Outpoint]*util.Tx + orphansByPrev map[appmessage.Outpoint]map[daghash.TxID]*util.Tx + outpoints map[appmessage.Outpoint]*util.Tx // nextExpireScan is the time after which the orphan pool will be // scanned in order to evict orphans. This is NOT a hard deadline as @@ -162,7 +162,7 @@ func (mp *TxPool) removeOrphan(tx *util.Tx, removeRedeemers bool) { // Remove any orphans that redeem outputs from this one if requested. if removeRedeemers { - prevOut := domainmessage.Outpoint{TxID: *txID} + prevOut := appmessage.Outpoint{TxID: *txID} for txOutIdx := range tx.MsgTx().TxOut { prevOut.Index = uint32(txOutIdx) for _, orphan := range mp.orphansByPrev[prevOut] { @@ -449,7 +449,7 @@ func (mp *TxPool) removeTransaction(tx *util.Tx, removeDependants bool, restoreI if removeDependants { // Remove any transactions which rely on this one. for i := uint32(0); i < uint32(len(tx.MsgTx().TxOut)); i++ { - prevOut := domainmessage.Outpoint{TxID: *txID, Index: i} + prevOut := appmessage.Outpoint{TxID: *txID, Index: i} if txRedeemer, exists := mp.outpoints[prevOut]; exists { err := mp.removeTransaction(txRedeemer, true, false) if err != nil { @@ -511,7 +511,7 @@ func (mp *TxPool) removeTransactionWithDiff(tx *util.Tx, diff *blockdag.UTXODiff // removeTransactionUTXOEntriesFromDiff removes tx's UTXOEntries from the diff func (mp *TxPool) removeTransactionUTXOEntriesFromDiff(tx *util.Tx, diff *blockdag.UTXODiff) error { for idx := range tx.MsgTx().TxOut { - outpoint := *domainmessage.NewOutpoint(tx.ID(), uint32(idx)) + outpoint := *appmessage.NewOutpoint(tx.ID(), uint32(idx)) entry, exists := mp.mpUTXOSet.Get(outpoint) if exists { err := diff.RemoveEntry(outpoint, entry) @@ -553,7 +553,7 @@ func (mp *TxPool) markTransactionOutputsUnspent(tx *util.Tx, diff *blockdag.UTXO // processRemovedTransactionDependencies processes the dependencies of a // transaction tx that was just now removed from the mempool func (mp *TxPool) processRemovedTransactionDependencies(tx *util.Tx) { - prevOut := domainmessage.Outpoint{TxID: *tx.ID()} + prevOut := appmessage.Outpoint{TxID: *tx.ID()} for txOutIdx := range tx.MsgTx().TxOut { // Skip to the next available output if there are none. prevOut.Index = uint32(txOutIdx) @@ -634,7 +634,7 @@ func (mp *TxPool) removeDoubleSpends(tx *util.Tx) error { // helper for maybeAcceptTransaction. // // This function MUST be called with the mempool lock held (for writes). -func (mp *TxPool) addTransaction(tx *util.Tx, fee uint64, parentsInPool []*domainmessage.Outpoint) (*TxDesc, error) { +func (mp *TxPool) addTransaction(tx *util.Tx, fee uint64, parentsInPool []*appmessage.Outpoint) (*TxDesc, error) { // Add the transaction to the pool and mark the referenced outpoints // as spent by the pool. mass, err := blockdag.CalcTxMassFromUTXOSet(tx, mp.mpUTXOSet) @@ -698,7 +698,7 @@ func (mp *TxPool) checkPoolDoubleSpend(tx *util.Tx) error { // CheckSpend checks whether the passed outpoint is already spent by a // transaction in the mempool. If that's the case the spending transaction will // be returned, if not nil will be returned. -func (mp *TxPool) CheckSpend(op domainmessage.Outpoint) *util.Tx { +func (mp *TxPool) CheckSpend(op appmessage.Outpoint) *util.Tx { mp.mtx.RLock() defer mp.mtx.RUnlock() txR := mp.outpoints[op] @@ -753,9 +753,9 @@ func (mp *TxPool) FetchTransaction(txID *daghash.TxID) (*util.Tx, bool) { // checkTransactionMassSanity checks that a transaction must not exceed the maximum allowed block mass when serialized. func checkTransactionMassSanity(tx *util.Tx) error { serializedTxSize := tx.MsgTx().SerializeSize() - if serializedTxSize*blockdag.MassPerTxByte > domainmessage.MaxMassPerTx { + if serializedTxSize*blockdag.MassPerTxByte > appmessage.MaxMassPerTx { str := fmt.Sprintf("serialized transaction is too big - got "+ - "%d, max %d", serializedTxSize, domainmessage.MaxMassPerBlock) + "%d, max %d", serializedTxSize, appmessage.MaxMassPerBlock) return txRuleError(RejectInvalid, str) } return nil @@ -882,7 +882,7 @@ func (mp *TxPool) maybeAcceptTransaction(tx *util.Tx, rejectDupOrphans bool) ([] // Don't allow the transaction if it exists in the DAG and is // not already fully spent. - prevOut := domainmessage.Outpoint{TxID: *txID} + prevOut := appmessage.Outpoint{TxID: *txID} for txOutIdx := range tx.MsgTx().TxOut { prevOut.Index = uint32(txOutIdx) _, ok := mp.mpUTXOSet.Get(prevOut) @@ -897,7 +897,7 @@ func (mp *TxPool) maybeAcceptTransaction(tx *util.Tx, rejectDupOrphans bool) ([] // is not handled by this function, and the caller should use // maybeAddOrphan if this behavior is desired. var missingParents []*daghash.TxID - var parentsInPool []*domainmessage.Outpoint + var parentsInPool []*appmessage.Outpoint for _, txIn := range tx.MsgTx().TxIn { if _, ok := mp.mpUTXOSet.Get(txIn.PreviousOutpoint); !ok { // Must make a copy of the hash here since the iterator @@ -1045,7 +1045,7 @@ func (mp *TxPool) processOrphans(acceptedTx *util.Tx) []*TxDesc { firstElement := processList.Remove(processList.Front()) processItem := firstElement.(*util.Tx) - prevOut := domainmessage.Outpoint{TxID: *processItem.ID()} + prevOut := appmessage.Outpoint{TxID: *processItem.ID()} for txOutIdx := range processItem.MsgTx().TxOut { // Look up all orphans that redeem the output that is // now available. This will typically only be one, but @@ -1330,11 +1330,11 @@ func New(cfg *Config) *TxPool { cfg: *cfg, pool: make(map[daghash.TxID]*TxDesc), depends: make(map[daghash.TxID]*TxDesc), - dependsByPrev: make(map[domainmessage.Outpoint]map[daghash.TxID]*TxDesc), + dependsByPrev: make(map[appmessage.Outpoint]map[daghash.TxID]*TxDesc), orphans: make(map[daghash.TxID]*orphanTx), - orphansByPrev: make(map[domainmessage.Outpoint]map[daghash.TxID]*util.Tx), + orphansByPrev: make(map[appmessage.Outpoint]map[daghash.TxID]*util.Tx), nextExpireScan: mstime.Now().Add(orphanExpireScanInterval), - outpoints: make(map[domainmessage.Outpoint]*util.Tx), + outpoints: make(map[appmessage.Outpoint]*util.Tx), mpUTXOSet: mpUTXO, } } diff --git a/domain/mempool/mempool_test.go b/domain/mempool/mempool_test.go index e6c7baa0d..ced02cd9d 100644 --- a/domain/mempool/mempool_test.go +++ b/domain/mempool/mempool_test.go @@ -20,11 +20,11 @@ import ( "github.com/kaspanet/kaspad/util/subnetworkid" "github.com/kaspanet/kaspad/util/testtools" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/dagconfig" "github.com/kaspanet/kaspad/domain/mining" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -82,7 +82,7 @@ func calcSequenceLock(tx *util.Tx, // spendableOutpoint is a convenience type that houses a particular utxo and the // amount associated with it. type spendableOutpoint struct { - outpoint domainmessage.Outpoint + outpoint appmessage.Outpoint amount util.Amount } @@ -91,7 +91,7 @@ type spendableOutpoint struct { // transactions. func txOutToSpendableOutpoint(tx *util.Tx, outputNum uint32) spendableOutpoint { return spendableOutpoint{ - outpoint: domainmessage.Outpoint{TxID: *tx.ID(), Index: outputNum}, + outpoint: appmessage.Outpoint{TxID: *tx.ID(), Index: outputNum}, amount: util.Amount(tx.MsgTx().TxOut[outputNum].Value), } } @@ -125,16 +125,16 @@ func (p *poolHarness) CreateCoinbaseTx(blueScore uint64, numOutputs uint32) (*ut return nil, err } - txIns := []*domainmessage.TxIn{{ + txIns := []*appmessage.TxIn{{ // Coinbase transactions have no inputs, so previous outpoint is // zero hash and max index. - PreviousOutpoint: *domainmessage.NewOutpoint(&daghash.TxID{}, - domainmessage.MaxPrevOutIndex), + PreviousOutpoint: *appmessage.NewOutpoint(&daghash.TxID{}, + appmessage.MaxPrevOutIndex), SignatureScript: coinbaseScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, }} - txOuts := []*domainmessage.TxOut{} + txOuts := []*appmessage.TxOut{} totalInput := blockdag.CalcBlockSubsidy(blueScore, p.dagParams) amountPerOutput := totalInput / uint64(numOutputs) remainder := totalInput - amountPerOutput*uint64(numOutputs) @@ -145,13 +145,13 @@ func (p *poolHarness) CreateCoinbaseTx(blueScore uint64, numOutputs uint32) (*ut if i == numOutputs-1 { amount = amountPerOutput + remainder } - txOuts = append(txOuts, &domainmessage.TxOut{ + txOuts = append(txOuts, &appmessage.TxOut{ ScriptPubKey: p.payScript, Value: amount, }) } - return util.NewTx(domainmessage.NewNativeMsgTx(domainmessage.TxVersion, txIns, txOuts)), nil + return util.NewTx(appmessage.NewNativeMsgTx(appmessage.TxVersion, txIns, txOuts)), nil } // CreateSignedTxForSubnetwork creates a new signed transaction that consumes the provided @@ -169,16 +169,16 @@ func (p *poolHarness) CreateSignedTxForSubnetwork(inputs []spendableOutpoint, nu amountPerOutput := uint64(totalInput) / uint64(numOutputs) remainder := uint64(totalInput) - amountPerOutput*uint64(numOutputs) - var txIns []*domainmessage.TxIn + var txIns []*appmessage.TxIn for _, input := range inputs { - txIns = append(txIns, &domainmessage.TxIn{ + txIns = append(txIns, &appmessage.TxIn{ PreviousOutpoint: input.outpoint, SignatureScript: p.signatureScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, }) } - var txOuts []*domainmessage.TxOut + var txOuts []*appmessage.TxOut for i := uint32(0); i < numOutputs; i++ { // Ensure the final output accounts for any remainder that might // be left from splitting the input amount. @@ -186,14 +186,14 @@ func (p *poolHarness) CreateSignedTxForSubnetwork(inputs []spendableOutpoint, nu if i == numOutputs-1 { amount = amountPerOutput + remainder } - txOuts = append(txOuts, &domainmessage.TxOut{ + txOuts = append(txOuts, &appmessage.TxOut{ ScriptPubKey: p.payScript, Value: amount, }) } // Payload must be nil because it might be the native subnetwork - tx := domainmessage.NewSubnetworkMsgTx(domainmessage.TxVersion, txIns, txOuts, subnetworkID, gas, nil) + tx := appmessage.NewSubnetworkMsgTx(appmessage.TxVersion, txIns, txOuts, subnetworkID, gas, nil) // Sign the new transaction. for i := range tx.TxIn { @@ -225,21 +225,21 @@ func (p *poolHarness) CreateTxChain(firstOutput spendableOutpoint, numTxns uint3 // associated with the harness. spendableAmount = spendableAmount - txRelayFeeForTest - txIn := &domainmessage.TxIn{ + txIn := &appmessage.TxIn{ PreviousOutpoint: prevOutpoint, SignatureScript: p.signatureScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, } - txOut := &domainmessage.TxOut{ + txOut := &appmessage.TxOut{ ScriptPubKey: p.payScript, Value: uint64(spendableAmount), } - tx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn}, []*domainmessage.TxOut{txOut}) + tx := appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn}, []*appmessage.TxOut{txOut}) txChain = append(txChain, util.NewTx(tx)) // Next transaction uses outputs from this one. - prevOutpoint = domainmessage.Outpoint{TxID: *tx.TxID(), Index: 0} + prevOutpoint = appmessage.Outpoint{TxID: *tx.TxID(), Index: 0} } return txChain, nil @@ -247,12 +247,12 @@ func (p *poolHarness) CreateTxChain(firstOutput spendableOutpoint, numTxns uint3 func (tc *testContext) mineTransactions(transactions []*util.Tx, numberOfBlocks uint64) []spendableOutpoint { var outpoints []spendableOutpoint - msgTxs := make([]*domainmessage.MsgTx, len(transactions)) + msgTxs := make([]*appmessage.MsgTx, len(transactions)) for i, tx := range transactions { msgTxs[i] = tx.MsgTx() } for i := uint64(0); i < numberOfBlocks; i++ { - var blockTxs []*domainmessage.MsgTx + var blockTxs []*appmessage.MsgTx if i == 0 { blockTxs = msgTxs } @@ -283,7 +283,7 @@ func (tc *testContext) mineTransactions(transactions []*util.Tx, numberOfBlocks for i, txOut := range coinbaseTx.TxOut { outpoints = append(outpoints, spendableOutpoint{ - outpoint: *domainmessage.NewOutpoint(coinbaseTx.TxID(), uint32(i)), + outpoint: *appmessage.NewOutpoint(coinbaseTx.TxID(), uint32(i)), amount: util.Amount(txOut.Value), }) } @@ -446,21 +446,21 @@ func testPoolMembership(tc *testContext, tx *util.Tx, inOrphanPool, inTxPool boo } func (p *poolHarness) createTx(outpoint spendableOutpoint, fee uint64, numOutputs int64) (*util.Tx, error) { - txIns := []*domainmessage.TxIn{{ + txIns := []*appmessage.TxIn{{ PreviousOutpoint: outpoint.outpoint, SignatureScript: nil, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, }} - var txOuts []*domainmessage.TxOut + var txOuts []*appmessage.TxOut amountPerOutput := (uint64(outpoint.amount) - fee) / uint64(numOutputs) for i := int64(0); i < numOutputs; i++ { - txOuts = append(txOuts, &domainmessage.TxOut{ + txOuts = append(txOuts, &appmessage.TxOut{ ScriptPubKey: p.payScript, Value: amountPerOutput, }) } - tx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, txIns, txOuts) + tx := appmessage.NewNativeMsgTx(appmessage.TxVersion, txIns, txOuts) // Sign the new transaction. tx.TxIn[0].SignatureScript = p.signatureScript @@ -497,7 +497,7 @@ func TestProcessTransaction(t *testing.T) { orphanedTx, err := harness.CreateSignedTx([]spendableOutpoint{{ amount: util.Amount(5000000000), - outpoint: domainmessage.Outpoint{TxID: daghash.TxID{}, Index: 1}, + outpoint: appmessage.Outpoint{TxID: daghash.TxID{}, Index: 1}, }}, 1) if err != nil { t.Fatalf("unable to create signed tx: %v", err) @@ -565,7 +565,7 @@ func TestProcessTransaction(t *testing.T) { if err != nil { t.Fatalf("Unexpected error from harness.createTx: %s", err) } - nonStdTx.MsgTx().Version = domainmessage.TxVersion + 1 + nonStdTx.MsgTx().Version = appmessage.TxVersion + 1 _, err = harness.txPool.ProcessTransaction(nonStdTx, true) if err == nil { t.Errorf("ProcessTransaction: expected an error, not nil") @@ -632,7 +632,7 @@ func TestProcessTransaction(t *testing.T) { if err != nil { t.Fatalf("NewShaHashFromStr: unexpected error: %v", err) } - dummyPrevOut := domainmessage.Outpoint{TxID: *dummyPrevOutTxID, Index: 1} + dummyPrevOut := appmessage.Outpoint{TxID: *dummyPrevOutTxID, Index: 1} dummySigScript := bytes.Repeat([]byte{0x00}, 65) addrHash := [20]byte{0x01} @@ -645,23 +645,23 @@ func TestProcessTransaction(t *testing.T) { if err != nil { t.Fatalf("PayToAddrScript: unexpected error: %v", err) } - p2shTx := util.NewTx(domainmessage.NewNativeMsgTx(1, nil, []*domainmessage.TxOut{{Value: 5000000000, ScriptPubKey: p2shScriptPubKey}})) + p2shTx := util.NewTx(appmessage.NewNativeMsgTx(1, nil, []*appmessage.TxOut{{Value: 5000000000, ScriptPubKey: p2shScriptPubKey}})) if isAccepted, err := harness.txPool.mpUTXOSet.AddTx(p2shTx.MsgTx(), currentBlueScore+1); err != nil { t.Fatalf("AddTx unexpectedly failed. Error: %s", err) } else if !isAccepted { t.Fatalf("AddTx unexpectedly didn't add tx %s", p2shTx.ID()) } - txIns := []*domainmessage.TxIn{{ - PreviousOutpoint: domainmessage.Outpoint{TxID: *p2shTx.ID(), Index: 0}, + txIns := []*appmessage.TxIn{{ + PreviousOutpoint: appmessage.Outpoint{TxID: *p2shTx.ID(), Index: 0}, SignatureScript: wrappedP2SHNonStdSigScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, }} - txOuts := []*domainmessage.TxOut{{ + txOuts := []*appmessage.TxOut{{ Value: 5000000000, ScriptPubKey: dummyScriptPubKey, }} - nonStdSigScriptTx := util.NewTx(domainmessage.NewNativeMsgTx(1, txIns, txOuts)) + nonStdSigScriptTx := util.NewTx(appmessage.NewNativeMsgTx(1, txIns, txOuts)) _, err = harness.txPool.ProcessTransaction(nonStdSigScriptTx, true) if err == nil { t.Errorf("ProcessTransaction: expected an error, not nil") @@ -679,10 +679,10 @@ func TestProcessTransaction(t *testing.T) { } // Checks that a transaction with no outputs will not get rejected - noOutsTx := util.NewTx(domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{ + noOutsTx := util.NewTx(appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{ PreviousOutpoint: dummyPrevOut, SignatureScript: dummySigScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, }}, nil)) _, err = harness.txPool.ProcessTransaction(noOutsTx, true) @@ -729,16 +729,16 @@ func TestProcessTransaction(t *testing.T) { t.Errorf("Unexpected error code. Expected %v but got %v", RejectInsufficientFee, code) } - txIns = []*domainmessage.TxIn{{ + txIns = []*appmessage.TxIn{{ PreviousOutpoint: spendableOuts[5].outpoint, SignatureScript: []byte{02, 01}, // Unparsable script - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, }} - txOuts = []*domainmessage.TxOut{{ + txOuts = []*appmessage.TxOut{{ Value: 1, ScriptPubKey: dummyScriptPubKey, }} - tx = util.NewTx(domainmessage.NewNativeMsgTx(1, txIns, txOuts)) + tx = util.NewTx(appmessage.NewNativeMsgTx(1, txIns, txOuts)) _, err = harness.txPool.ProcessTransaction(tx, true) fmt.Println(err) if err == nil { @@ -817,7 +817,7 @@ func TestDoubleSpendsFromDAG(t *testing.T) { } dag := harness.txPool.cfg.DAG - blockdag.PrepareAndProcessBlockForTest(t, dag, dag.TipHashes(), []*domainmessage.MsgTx{tx.MsgTx()}) + blockdag.PrepareAndProcessBlockForTest(t, dag, dag.TipHashes(), []*appmessage.MsgTx{tx.MsgTx()}) // Check that a transaction that double spends the DAG UTXO set is orphaned. doubleSpendTx, err := harness.createTx(spendableOuts[0], uint64(txRelayFeeForTest), 2) @@ -866,7 +866,7 @@ func TestFetchTransaction(t *testing.T) { orphanedTx, err := harness.CreateSignedTx([]spendableOutpoint{{ amount: util.Amount(5000000000), - outpoint: domainmessage.Outpoint{TxID: daghash.TxID{1}, Index: 1}, + outpoint: appmessage.Outpoint{TxID: daghash.TxID{1}, Index: 1}, }}, 1) if err != nil { t.Fatalf("unable to create signed tx: %v", err) @@ -1025,7 +1025,7 @@ func TestOrphanExpiration(t *testing.T) { expiredTx, err := harness.CreateSignedTx([]spendableOutpoint{{ amount: util.Amount(5000000000), - outpoint: domainmessage.Outpoint{TxID: daghash.TxID{}, Index: 0}, + outpoint: appmessage.Outpoint{TxID: daghash.TxID{}, Index: 0}, }}, 1) if err != nil { t.Fatalf("Unexpected error on harness.CreateSignedTx: %s", err) @@ -1039,7 +1039,7 @@ func TestOrphanExpiration(t *testing.T) { tx1, err := harness.CreateSignedTx([]spendableOutpoint{{ amount: util.Amount(5000000000), - outpoint: domainmessage.Outpoint{TxID: daghash.TxID{1}, Index: 0}, + outpoint: appmessage.Outpoint{TxID: daghash.TxID{1}, Index: 0}, }}, 1) if err != nil { t.Fatalf("Unexpected error on harness.CreateSignedTx: %s", err) @@ -1059,7 +1059,7 @@ func TestOrphanExpiration(t *testing.T) { tx2, err := harness.CreateSignedTx([]spendableOutpoint{{ amount: util.Amount(5000000000), - outpoint: domainmessage.Outpoint{TxID: daghash.TxID{2}, Index: 0}, + outpoint: appmessage.Outpoint{TxID: daghash.TxID{2}, Index: 0}, }}, 1) if err != nil { t.Fatalf("Unexpected error on harness.CreateSignedTx: %s", err) @@ -1088,7 +1088,7 @@ func TestMaxOrphanTxSize(t *testing.T) { tx, err := harness.CreateSignedTx([]spendableOutpoint{{ amount: util.Amount(5000000000), - outpoint: domainmessage.Outpoint{TxID: daghash.TxID{}, Index: 0}, + outpoint: appmessage.Outpoint{TxID: daghash.TxID{}, Index: 0}, }}, 1) if err != nil { t.Fatalf("unable to create signed tx: %v", err) @@ -1250,7 +1250,7 @@ func TestBasicOrphanRemoval(t *testing.T) { // and ensure the state of all other orphans are unaffected. nonChainedOrphanTx, err := harness.CreateSignedTx([]spendableOutpoint{{ amount: util.Amount(5000000000), - outpoint: domainmessage.Outpoint{TxID: daghash.TxID{}, Index: 0}, + outpoint: appmessage.Outpoint{TxID: daghash.TxID{}, Index: 0}, }}, 1) if err != nil { t.Fatalf("unable to create signed tx: %v", err) @@ -1474,7 +1474,7 @@ func TestCheckSpend(t *testing.T) { // Now all but the last tx should be spent by the next. for i := 0; i < len(chainedTxns)-1; i++ { - op = domainmessage.Outpoint{ + op = appmessage.Outpoint{ TxID: *chainedTxns[i].ID(), Index: 0, } @@ -1487,7 +1487,7 @@ func TestCheckSpend(t *testing.T) { } // The last tx should have no spend. - op = domainmessage.Outpoint{ + op = appmessage.Outpoint{ TxID: *chainedTxns[txChainLength-1].ID(), Index: 0, } @@ -1619,7 +1619,7 @@ func TestHandleNewBlock(t *testing.T) { orphanTx, err := harness.CreateSignedTx([]spendableOutpoint{{ amount: util.Amount(2500000000 - txRelayFeeForTest), - outpoint: domainmessage.Outpoint{TxID: *txID, Index: 0}, + outpoint: appmessage.Outpoint{TxID: *txID, Index: 0}, }}, 1) if err != nil { t.Fatalf("unable to create signed tx: %v", err) @@ -1656,8 +1656,8 @@ func TestHandleNewBlock(t *testing.T) { } // dummyBlock defines a block on the block DAG. It is used to test block operations. -var dummyBlock = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ +var dummyBlock = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 1, ParentHashes: []*daghash.Hash{ { @@ -1682,11 +1682,11 @@ var dummyBlock = domainmessage.MsgBlock{ Bits: 0x1e00ffff, // 503382015 Nonce: 0x000ae53f, // 714047 }, - Transactions: []*domainmessage.MsgTx{ + Transactions: []*appmessage.MsgTx{ { Version: 1, - TxIn: []*domainmessage.TxIn{}, - TxOut: []*domainmessage.TxOut{ + TxIn: []*appmessage.TxIn{}, + TxOut: []*appmessage.TxOut{ { Value: 0x12a05f200, // 5000000000 ScriptPubKey: []byte{ diff --git a/domain/mempool/policy.go b/domain/mempool/policy.go index d90a31276..710396c95 100644 --- a/domain/mempool/policy.go +++ b/domain/mempool/policy.go @@ -8,9 +8,9 @@ import ( "fmt" "github.com/kaspanet/kaspad/util/mstime" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" ) @@ -118,7 +118,7 @@ func checkInputsStandard(tx *util.Tx, utxoSet blockdag.UTXOSet) error { // Dust is defined in terms of the minimum transaction relay fee. In // particular, if the cost to the network to spend coins is more than 1/3 of the // minimum transaction relay fee, it is considered dust. -func isDust(txOut *domainmessage.TxOut, minRelayTxFee util.Amount) bool { +func isDust(txOut *appmessage.TxOut, minRelayTxFee util.Amount) bool { // Unspendable outputs are considered dust. if txscript.IsUnspendable(txOut.ScriptPubKey) { return true diff --git a/domain/mempool/policy_test.go b/domain/mempool/policy_test.go index 6e430d02f..f98491b13 100644 --- a/domain/mempool/policy_test.go +++ b/domain/mempool/policy_test.go @@ -6,8 +6,8 @@ package mempool import ( "bytes" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/mstime" @@ -102,47 +102,47 @@ func TestDust(t *testing.T) { tests := []struct { name string // test description - txOut domainmessage.TxOut + txOut appmessage.TxOut relayFee util.Amount // minimum relay transaction fee. isDust bool }{ { // Any value is allowed with a zero relay fee. "zero value with zero relay fee", - domainmessage.TxOut{Value: 0, ScriptPubKey: scriptPubKey}, + appmessage.TxOut{Value: 0, ScriptPubKey: scriptPubKey}, 0, false, }, { // Zero value is dust with any relay fee" "zero value with very small tx fee", - domainmessage.TxOut{Value: 0, ScriptPubKey: scriptPubKey}, + appmessage.TxOut{Value: 0, ScriptPubKey: scriptPubKey}, 1, true, }, { "38 byte public key script with value 584", - domainmessage.TxOut{Value: 584, ScriptPubKey: scriptPubKey}, + appmessage.TxOut{Value: 584, ScriptPubKey: scriptPubKey}, 1000, true, }, { "38 byte public key script with value 585", - domainmessage.TxOut{Value: 585, ScriptPubKey: scriptPubKey}, + appmessage.TxOut{Value: 585, ScriptPubKey: scriptPubKey}, 1000, false, }, { // Maximum allowed value is never dust. "max sompi amount is never dust", - domainmessage.TxOut{Value: util.MaxSompi, ScriptPubKey: scriptPubKey}, + appmessage.TxOut{Value: util.MaxSompi, ScriptPubKey: scriptPubKey}, util.MaxSompi, false, }, { // Maximum int64 value causes overflow. "maximum int64 value", - domainmessage.TxOut{Value: 1<<63 - 1, ScriptPubKey: scriptPubKey}, + appmessage.TxOut{Value: 1<<63 - 1, ScriptPubKey: scriptPubKey}, 1<<63 - 1, true, }, @@ -150,7 +150,7 @@ func TestDust(t *testing.T) { // Unspendable scriptPubKey due to an invalid public key // script. "unspendable scriptPubKey", - domainmessage.TxOut{Value: 5000, ScriptPubKey: []byte{0x01}}, + appmessage.TxOut{Value: 5000, ScriptPubKey: []byte{0x01}}, 0, // no relay fee true, }, @@ -172,12 +172,12 @@ func TestCheckTransactionStandard(t *testing.T) { if err != nil { t.Fatalf("NewShaHashFromStr: unexpected error: %v", err) } - dummyPrevOut := domainmessage.Outpoint{TxID: *prevOutTxID, Index: 1} + dummyPrevOut := appmessage.Outpoint{TxID: *prevOutTxID, Index: 1} dummySigScript := bytes.Repeat([]byte{0x00}, 65) - dummyTxIn := domainmessage.TxIn{ + dummyTxIn := appmessage.TxIn{ PreviousOutpoint: dummyPrevOut, SignatureScript: dummySigScript, - Sequence: domainmessage.MaxTxInSequenceNum, + Sequence: appmessage.MaxTxInSequenceNum, } addrHash := [20]byte{0x01} addr, err := util.NewAddressPubKeyHash(addrHash[:], util.Bech32PrefixKaspaTest) @@ -188,45 +188,45 @@ func TestCheckTransactionStandard(t *testing.T) { if err != nil { t.Fatalf("PayToAddrScript: unexpected error: %v", err) } - dummyTxOut := domainmessage.TxOut{ + dummyTxOut := appmessage.TxOut{ Value: 100000000, // 1 KAS ScriptPubKey: dummyScriptPubKey, } tests := []struct { name string - tx *domainmessage.MsgTx + tx *appmessage.MsgTx height uint64 isStandard bool code RejectCode }{ { name: "Typical pay-to-pubkey-hash transaction", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{&dummyTxIn}, []*domainmessage.TxOut{&dummyTxOut}), + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{&dummyTxIn}, []*appmessage.TxOut{&dummyTxOut}), height: 300000, isStandard: true, }, { name: "Transaction version too high", - tx: domainmessage.NewNativeMsgTx(domainmessage.TxVersion+1, []*domainmessage.TxIn{&dummyTxIn}, []*domainmessage.TxOut{&dummyTxOut}), + tx: appmessage.NewNativeMsgTx(appmessage.TxVersion+1, []*appmessage.TxIn{&dummyTxIn}, []*appmessage.TxOut{&dummyTxOut}), height: 300000, isStandard: false, code: RejectNonstandard, }, { name: "Transaction is not finalized", - tx: domainmessage.NewNativeMsgTxWithLocktime(1, []*domainmessage.TxIn{{ + tx: appmessage.NewNativeMsgTxWithLocktime(1, []*appmessage.TxIn{{ PreviousOutpoint: dummyPrevOut, SignatureScript: dummySigScript, Sequence: 0, - }}, []*domainmessage.TxOut{&dummyTxOut}, 300001), + }}, []*appmessage.TxOut{&dummyTxOut}, 300001), height: 300000, isStandard: false, code: RejectNonstandard, }, { name: "Transaction size is too large", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{&dummyTxIn}, []*domainmessage.TxOut{{ + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{&dummyTxIn}, []*appmessage.TxOut{{ Value: 0, ScriptPubKey: bytes.Repeat([]byte{0x00}, MaxStandardTxSize+1), @@ -237,31 +237,31 @@ func TestCheckTransactionStandard(t *testing.T) { }, { name: "Signature script size is too large", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{ + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{ PreviousOutpoint: dummyPrevOut, SignatureScript: bytes.Repeat([]byte{0x00}, maxStandardSigScriptSize+1), - Sequence: domainmessage.MaxTxInSequenceNum, - }}, []*domainmessage.TxOut{&dummyTxOut}), + Sequence: appmessage.MaxTxInSequenceNum, + }}, []*appmessage.TxOut{&dummyTxOut}), height: 300000, isStandard: false, code: RejectNonstandard, }, { name: "Signature script that does more than push data", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{{ + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{{ PreviousOutpoint: dummyPrevOut, SignatureScript: []byte{ txscript.OpCheckSigVerify}, - Sequence: domainmessage.MaxTxInSequenceNum, - }}, []*domainmessage.TxOut{&dummyTxOut}), + Sequence: appmessage.MaxTxInSequenceNum, + }}, []*appmessage.TxOut{&dummyTxOut}), height: 300000, isStandard: false, code: RejectNonstandard, }, { name: "Valid but non standard public key script", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{&dummyTxIn}, []*domainmessage.TxOut{{ + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{&dummyTxIn}, []*appmessage.TxOut{{ Value: 100000000, ScriptPubKey: []byte{txscript.OpTrue}, }}), @@ -271,7 +271,7 @@ func TestCheckTransactionStandard(t *testing.T) { }, { name: "Dust output", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{&dummyTxIn}, []*domainmessage.TxOut{{ + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{&dummyTxIn}, []*appmessage.TxOut{{ Value: 0, ScriptPubKey: dummyScriptPubKey, }}), @@ -281,7 +281,7 @@ func TestCheckTransactionStandard(t *testing.T) { }, { name: "Nulldata transaction", - tx: domainmessage.NewNativeMsgTx(1, []*domainmessage.TxIn{&dummyTxIn}, []*domainmessage.TxOut{{ + tx: appmessage.NewNativeMsgTx(1, []*appmessage.TxIn{&dummyTxIn}, []*appmessage.TxOut{{ Value: 0, ScriptPubKey: []byte{txscript.OpReturn}, }}), diff --git a/domain/mining/mining.go b/domain/mining/mining.go index 617dc35e9..0eb6c76a7 100644 --- a/domain/mining/mining.go +++ b/domain/mining/mining.go @@ -9,9 +9,9 @@ import ( "github.com/pkg/errors" "time" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -65,7 +65,7 @@ type BlockTemplate struct { // Block is a block that is ready to be solved by miners. Thus, it is // completely valid with the exception of satisfying the proof-of-work // requirement. - Block *domainmessage.MsgBlock + Block *appmessage.MsgBlock // TxMasses contains the mass of each transaction in the generated // template performs. @@ -213,7 +213,7 @@ func (g *BlkTmplGenerator) NewBlockTemplate(payToAddress util.Address, extraNonc // consensus rules. Finally, it will update the target difficulty if needed // based on the new time for the test networks since their target difficulty can // change based upon time. -func (g *BlkTmplGenerator) UpdateBlockTime(msgBlock *domainmessage.MsgBlock) error { +func (g *BlkTmplGenerator) UpdateBlockTime(msgBlock *appmessage.MsgBlock) error { // The new timestamp is potentially adjusted to ensure it comes after // the median time of the last several blocks per the DAG consensus // rules. diff --git a/domain/mining/test_utils.go b/domain/mining/test_utils.go index 95e1fb674..0dcffb55f 100644 --- a/domain/mining/test_utils.go +++ b/domain/mining/test_utils.go @@ -6,9 +6,9 @@ import ( "github.com/kaspanet/kaspad/util/mstime" "github.com/pkg/errors" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -36,8 +36,8 @@ func (txs *fakeTxSource) HaveTransaction(txID *daghash.TxID) bool { } // PrepareBlockForTest generates a block with the proper merkle roots, coinbase transaction etc. This function is used for test purposes only -func PrepareBlockForTest(dag *blockdag.BlockDAG, parentHashes []*daghash.Hash, transactions []*domainmessage.MsgTx, forceTransactions bool, -) (*domainmessage.MsgBlock, error) { +func PrepareBlockForTest(dag *blockdag.BlockDAG, parentHashes []*daghash.Hash, transactions []*appmessage.MsgTx, forceTransactions bool, +) (*appmessage.MsgBlock, error) { newVirtual, err := blockdag.GetVirtualFromParentsForTest(dag, parentHashes) if err != nil { @@ -76,7 +76,7 @@ func PrepareBlockForTest(dag *blockdag.BlockDAG, parentHashes []*daghash.Hash, t return nil, err } - txsToAdd := make([]*domainmessage.MsgTx, 0) + txsToAdd := make([]*appmessage.MsgTx, 0) for _, tx := range transactions { found := false for _, blockTx := range template.Block.Transactions { diff --git a/domain/txscript/engine.go b/domain/txscript/engine.go index db84e23ca..dacc4dac3 100644 --- a/domain/txscript/engine.go +++ b/domain/txscript/engine.go @@ -6,8 +6,8 @@ package txscript import ( "fmt" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/infrastructure/logger" - "github.com/kaspanet/kaspad/network/domainmessage" ) // ScriptFlags is a bitmask defining additional operations or tests that will be @@ -43,7 +43,7 @@ type Engine struct { scriptOff int dstack stack // data stack astack stack // alt stack - tx domainmessage.MsgTx + tx appmessage.MsgTx txIdx int condStack []int numOps int @@ -434,7 +434,7 @@ func (vm *Engine) SetAltStack(data [][]byte) { // NewEngine returns a new script engine for the provided public key script, // transaction, and input index. The flags modify the behavior of the script // engine according to the description provided by each flag. -func NewEngine(scriptPubKey []byte, tx *domainmessage.MsgTx, txIdx int, flags ScriptFlags, +func NewEngine(scriptPubKey []byte, tx *appmessage.MsgTx, txIdx int, flags ScriptFlags, sigCache *SigCache) (*Engine, error) { // The provided transaction input index must refer to a valid input. diff --git a/domain/txscript/engine_test.go b/domain/txscript/engine_test.go index d3279f553..6efd60e89 100644 --- a/domain/txscript/engine_test.go +++ b/domain/txscript/engine_test.go @@ -7,7 +7,7 @@ package txscript import ( "testing" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -24,9 +24,9 @@ func TestBadPC(t *testing.T) { } // tx with almost empty scripts. - txIns := []*domainmessage.TxIn{ + txIns := []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0xc9, 0x97, 0xa5, 0xe5, 0x6e, 0x10, 0x41, 0x02, @@ -43,11 +43,11 @@ func TestBadPC(t *testing.T) { Sequence: 4294967295, }, } - txOuts := []*domainmessage.TxOut{{ + txOuts := []*appmessage.TxOut{{ Value: 1000000000, ScriptPubKey: nil, }} - tx := domainmessage.NewNativeMsgTx(1, txIns, txOuts) + tx := appmessage.NewNativeMsgTx(1, txIns, txOuts) scriptPubKey := mustParseShortForm("NOP") for _, test := range tests { @@ -90,8 +90,8 @@ func TestCheckErrorCondition(t *testing.T) { for i, test := range tests { func() { - txIns := []*domainmessage.TxIn{{ - PreviousOutpoint: domainmessage.Outpoint{ + txIns := []*appmessage.TxIn{{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0xc9, 0x97, 0xa5, 0xe5, 0x6e, 0x10, 0x41, 0x02, @@ -107,11 +107,11 @@ func TestCheckErrorCondition(t *testing.T) { SignatureScript: nil, Sequence: 4294967295, }} - txOuts := []*domainmessage.TxOut{{ + txOuts := []*appmessage.TxOut{{ Value: 1000000000, ScriptPubKey: nil, }} - tx := domainmessage.NewNativeMsgTx(1, txIns, txOuts) + tx := appmessage.NewNativeMsgTx(1, txIns, txOuts) scriptPubKey := mustParseShortForm(test.script) @@ -209,8 +209,8 @@ func TestDisasmPC(t *testing.T) { t.Parallel() // tx with almost empty scripts. - txIns := []*domainmessage.TxIn{{ - PreviousOutpoint: domainmessage.Outpoint{ + txIns := []*appmessage.TxIn{{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0xc9, 0x97, 0xa5, 0xe5, 0x6e, 0x10, 0x41, 0x02, @@ -226,11 +226,11 @@ func TestDisasmPC(t *testing.T) { SignatureScript: mustParseShortForm("OP_2"), Sequence: 4294967295, }} - txOuts := []*domainmessage.TxOut{{ + txOuts := []*appmessage.TxOut{{ Value: 1000000000, ScriptPubKey: nil, }} - tx := domainmessage.NewNativeMsgTx(1, txIns, txOuts) + tx := appmessage.NewNativeMsgTx(1, txIns, txOuts) scriptPubKey := mustParseShortForm("OP_DROP NOP TRUE") @@ -269,8 +269,8 @@ func TestDisasmScript(t *testing.T) { t.Parallel() // tx with almost empty scripts. - txIns := []*domainmessage.TxIn{{ - PreviousOutpoint: domainmessage.Outpoint{ + txIns := []*appmessage.TxIn{{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0xc9, 0x97, 0xa5, 0xe5, 0x6e, 0x10, 0x41, 0x02, @@ -286,11 +286,11 @@ func TestDisasmScript(t *testing.T) { SignatureScript: mustParseShortForm("OP_2"), Sequence: 4294967295, }} - txOuts := []*domainmessage.TxOut{{ + txOuts := []*appmessage.TxOut{{ Value: 1000000000, ScriptPubKey: nil, }} - tx := domainmessage.NewNativeMsgTx(1, txIns, txOuts) + tx := appmessage.NewNativeMsgTx(1, txIns, txOuts) scriptPubKey := mustParseShortForm("OP_DROP NOP TRUE") vm, err := NewEngine(scriptPubKey, tx, 0, 0, nil) diff --git a/domain/txscript/main_test.go b/domain/txscript/main_test.go index 674e9d2b4..d68b2aef9 100644 --- a/domain/txscript/main_test.go +++ b/domain/txscript/main_test.go @@ -1,15 +1,14 @@ package txscript import ( + "github.com/kaspanet/kaspad/infrastructure/logger" "os" "testing" - - "github.com/kaspanet/kaspad/infrastructure/logs" ) func TestMain(m *testing.M) { // set log level to trace, so that logClosures passed to log.Tracef are covered - log.SetLevel(logs.LevelTrace) + log.SetLevel(logger.LevelTrace) os.Exit(m.Run()) } diff --git a/domain/txscript/opcode.go b/domain/txscript/opcode.go index 1d3064f74..e69647947 100644 --- a/domain/txscript/opcode.go +++ b/domain/txscript/opcode.go @@ -15,7 +15,7 @@ import ( "golang.org/x/crypto/ripemd160" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -1148,7 +1148,7 @@ func opcodeCheckLockTimeVerify(op *parsedOpcode, vm *Engine) error { // The lock time feature can also be disabled, thereby bypassing // OP_CHECKLOCKTIMEVERIFY, if every transaction input has been finalized by - // setting its sequence to the maximum value (domainmessage.MaxTxInSequenceNum). This + // setting its sequence to the maximum value (appmessage.MaxTxInSequenceNum). This // condition would result in the transaction being allowed into the blockDAG // making the opcode ineffective. // @@ -1160,7 +1160,7 @@ func opcodeCheckLockTimeVerify(op *parsedOpcode, vm *Engine) error { // NOTE: This implies that even if the transaction is not finalized due to // another input being unlocked, the opcode execution will still fail when the // input being used by the opcode is locked. - if vm.tx.TxIn[vm.txIdx].Sequence == domainmessage.MaxTxInSequenceNum { + if vm.tx.TxIn[vm.txIdx].Sequence == appmessage.MaxTxInSequenceNum { return scriptError(ErrUnsatisfiedLockTime, "transaction input is finalized") } @@ -1204,7 +1204,7 @@ func opcodeCheckSequenceVerify(op *parsedOpcode, vm *Engine) error { // To provide for future soft-fork extensibility, if the // operand has the disabled lock-time flag set, // CHECKSEQUENCEVERIFY behaves as a NOP. - if sequence&uint64(domainmessage.SequenceLockTimeDisabled) != 0 { + if sequence&uint64(appmessage.SequenceLockTimeDisabled) != 0 { return nil } @@ -1213,17 +1213,17 @@ func opcodeCheckSequenceVerify(op *parsedOpcode, vm *Engine) error { // number does not have this bit set prevents using this property // to get around a CHECKSEQUENCEVERIFY check. txSequence := vm.tx.TxIn[vm.txIdx].Sequence - if txSequence&domainmessage.SequenceLockTimeDisabled != 0 { + if txSequence&appmessage.SequenceLockTimeDisabled != 0 { str := fmt.Sprintf("transaction sequence has sequence "+ "locktime disabled bit set: 0x%x", txSequence) return scriptError(ErrUnsatisfiedLockTime, str) } // Mask off non-consensus bits before doing comparisons. - lockTimeMask := uint64(domainmessage.SequenceLockTimeIsSeconds | - domainmessage.SequenceLockTimeMask) + lockTimeMask := uint64(appmessage.SequenceLockTimeIsSeconds | + appmessage.SequenceLockTimeMask) return verifyLockTime(txSequence&lockTimeMask, - domainmessage.SequenceLockTimeIsSeconds, sequence&lockTimeMask) + appmessage.SequenceLockTimeIsSeconds, sequence&lockTimeMask) } // opcodeToAltStack removes the top item from the main data stack and pushes it diff --git a/domain/txscript/reference_test.go b/domain/txscript/reference_test.go index 85f701a60..af51cf269 100644 --- a/domain/txscript/reference_test.go +++ b/domain/txscript/reference_test.go @@ -8,14 +8,14 @@ import ( "encoding/hex" "encoding/json" "fmt" - "github.com/kaspanet/kaspad/infrastructure/logs" + "github.com/kaspanet/kaspad/infrastructure/logger" "github.com/pkg/errors" "io/ioutil" "strconv" "strings" "testing" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -210,17 +210,17 @@ func parseExpectedResult(expected string) ([]ErrorCode, error) { // createSpendTx generates a basic spending transaction given the passed // signature and public key scripts. -func createSpendingTx(sigScript, scriptPubKey []byte) *domainmessage.MsgTx { +func createSpendingTx(sigScript, scriptPubKey []byte) *appmessage.MsgTx { - outpoint := domainmessage.NewOutpoint(&daghash.TxID{}, ^uint32(0)) - txIn := domainmessage.NewTxIn(outpoint, []byte{Op0, Op0}) - txOut := domainmessage.NewTxOut(0, scriptPubKey) - coinbaseTx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn}, []*domainmessage.TxOut{txOut}) + outpoint := appmessage.NewOutpoint(&daghash.TxID{}, ^uint32(0)) + txIn := appmessage.NewTxIn(outpoint, []byte{Op0, Op0}) + txOut := appmessage.NewTxOut(0, scriptPubKey) + coinbaseTx := appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn}, []*appmessage.TxOut{txOut}) - outpoint = domainmessage.NewOutpoint(coinbaseTx.TxID(), 0) - txIn = domainmessage.NewTxIn(outpoint, sigScript) - txOut = domainmessage.NewTxOut(0, nil) - spendingTx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, []*domainmessage.TxIn{txIn}, []*domainmessage.TxOut{txOut}) + outpoint = appmessage.NewOutpoint(coinbaseTx.TxID(), 0) + txIn = appmessage.NewTxIn(outpoint, sigScript) + txOut = appmessage.NewTxOut(0, nil) + spendingTx := appmessage.NewNativeMsgTx(appmessage.TxVersion, []*appmessage.TxIn{txIn}, []*appmessage.TxOut{txOut}) return spendingTx } @@ -364,7 +364,7 @@ func TestScripts(t *testing.T) { // Disable non-test logs logLevel := log.Level() - log.SetLevel(logs.LevelOff) + log.SetLevel(logger.LevelOff) defer log.SetLevel(logLevel) // Run all script tests with and without the signature cache. diff --git a/domain/txscript/script.go b/domain/txscript/script.go index 01647f7cc..2bfd910f8 100644 --- a/domain/txscript/script.go +++ b/domain/txscript/script.go @@ -10,7 +10,7 @@ import ( "fmt" "github.com/pkg/errors" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -252,29 +252,29 @@ func canonicalPush(pop parsedOpcode) bool { // calculating the signature hash. It is used over the Copy method on the // transaction itself since that is a deep copy and therefore does more work and // allocates much more space than needed. -func shallowCopyTx(tx *domainmessage.MsgTx) domainmessage.MsgTx { +func shallowCopyTx(tx *appmessage.MsgTx) appmessage.MsgTx { // As an additional memory optimization, use contiguous backing arrays // for the copied inputs and outputs and point the final slice of // pointers into the contiguous arrays. This avoids a lot of small // allocations. - // Specifically avoid using domainmessage.NewMsgTx() to prevent correcting errors by + // Specifically avoid using appmessage.NewMsgTx() to prevent correcting errors by // auto-generating various fields. - txCopy := domainmessage.MsgTx{ + txCopy := appmessage.MsgTx{ Version: tx.Version, - TxIn: make([]*domainmessage.TxIn, len(tx.TxIn)), - TxOut: make([]*domainmessage.TxOut, len(tx.TxOut)), + TxIn: make([]*appmessage.TxIn, len(tx.TxIn)), + TxOut: make([]*appmessage.TxOut, len(tx.TxOut)), LockTime: tx.LockTime, SubnetworkID: tx.SubnetworkID, Gas: tx.Gas, PayloadHash: tx.PayloadHash, Payload: tx.Payload, } - txIns := make([]domainmessage.TxIn, len(tx.TxIn)) + txIns := make([]appmessage.TxIn, len(tx.TxIn)) for i, oldTxIn := range tx.TxIn { txIns[i] = *oldTxIn txCopy.TxIn[i] = &txIns[i] } - txOuts := make([]domainmessage.TxOut, len(tx.TxOut)) + txOuts := make([]appmessage.TxOut, len(tx.TxOut)) for i, oldTxOut := range tx.TxOut { txOuts[i] = *oldTxOut txCopy.TxOut[i] = &txOuts[i] @@ -285,7 +285,7 @@ func shallowCopyTx(tx *domainmessage.MsgTx) domainmessage.MsgTx { // CalcSignatureHash will, given a script and hash type for the current script // engine instance, calculate the signature hash to be used for signing and // verification. -func CalcSignatureHash(script []byte, hashType SigHashType, tx *domainmessage.MsgTx, idx int) (*daghash.Hash, error) { +func CalcSignatureHash(script []byte, hashType SigHashType, tx *appmessage.MsgTx, idx int) (*daghash.Hash, error) { parsedScript, err := parseScript(script) if err != nil { return nil, errors.Errorf("cannot parse output script: %s", err) @@ -296,7 +296,7 @@ func CalcSignatureHash(script []byte, hashType SigHashType, tx *domainmessage.Ms // calcSignatureHash will, given a script and hash type for the current script // engine instance, calculate the signature hash to be used for signing and // verification. -func calcSignatureHash(script []parsedOpcode, hashType SigHashType, tx *domainmessage.MsgTx, idx int) (*daghash.Hash, error) { +func calcSignatureHash(script []parsedOpcode, hashType SigHashType, tx *appmessage.MsgTx, idx int) (*daghash.Hash, error) { // The SigHashSingle signature type signs only the corresponding input // and output (the output with the same index number as the input). // diff --git a/domain/txscript/sign.go b/domain/txscript/sign.go index 11750cc97..e48a79a49 100644 --- a/domain/txscript/sign.go +++ b/domain/txscript/sign.go @@ -8,14 +8,14 @@ import ( "github.com/kaspanet/go-secp256k1" "github.com/pkg/errors" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" ) // RawTxInSignature returns the serialized Schnorr signature for the input idx of // the given transaction, with hashType appended to it. -func RawTxInSignature(tx *domainmessage.MsgTx, idx int, script []byte, +func RawTxInSignature(tx *appmessage.MsgTx, idx int, script []byte, hashType SigHashType, key *secp256k1.PrivateKey) ([]byte, error) { hash, err := CalcSignatureHash(script, hashType, tx, idx) @@ -39,7 +39,7 @@ func RawTxInSignature(tx *domainmessage.MsgTx, idx int, script []byte, // as the idx'th input. privKey is serialized in either a compressed or // uncompressed format based on compress. This format must match the same format // used to generate the payment address, or the script validation will fail. -func SignatureScript(tx *domainmessage.MsgTx, idx int, script []byte, hashType SigHashType, privKey *secp256k1.PrivateKey, compress bool) ([]byte, error) { +func SignatureScript(tx *appmessage.MsgTx, idx int, script []byte, hashType SigHashType, privKey *secp256k1.PrivateKey, compress bool) ([]byte, error) { sig, err := RawTxInSignature(tx, idx, script, hashType, privKey) if err != nil { return nil, err @@ -62,7 +62,7 @@ func SignatureScript(tx *domainmessage.MsgTx, idx int, script []byte, hashType S return NewScriptBuilder().AddData(sig).AddData(pkData).Script() } -func sign(dagParams *dagconfig.Params, tx *domainmessage.MsgTx, idx int, +func sign(dagParams *dagconfig.Params, tx *appmessage.MsgTx, idx int, script []byte, hashType SigHashType, kdb KeyDB, sdb ScriptDB) ([]byte, ScriptClass, util.Address, error) { @@ -105,7 +105,7 @@ func sign(dagParams *dagconfig.Params, tx *domainmessage.MsgTx, idx int, // The return value is the best effort merging of the two scripts. Calling this // function with addresses, class and nrequired that do not match scriptPubKey is // an error and results in undefined behaviour. -func mergeScripts(dagParams *dagconfig.Params, tx *domainmessage.MsgTx, idx int, +func mergeScripts(dagParams *dagconfig.Params, tx *appmessage.MsgTx, idx int, class ScriptClass, sigScript, prevScript []byte) ([]byte, error) { // TODO: the scripthash and multisig paths here are overly @@ -199,7 +199,7 @@ func (sc ScriptClosure) GetScript(address util.Address) ([]byte, error) { // getScript. If previousScript is provided then the results in previousScript // will be merged in a type-dependent manner with the newly generated. // signature script. -func SignTxOutput(dagParams *dagconfig.Params, tx *domainmessage.MsgTx, idx int, +func SignTxOutput(dagParams *dagconfig.Params, tx *appmessage.MsgTx, idx int, scriptPubKey []byte, hashType SigHashType, kdb KeyDB, sdb ScriptDB, previousScript []byte) ([]byte, error) { diff --git a/domain/txscript/sign_test.go b/domain/txscript/sign_test.go index abc913181..f4cca70ae 100644 --- a/domain/txscript/sign_test.go +++ b/domain/txscript/sign_test.go @@ -10,8 +10,8 @@ import ( "github.com/pkg/errors" "testing" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/dagconfig" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -53,7 +53,7 @@ func mkGetScript(scripts map[string][]byte) ScriptDB { }) } -func checkScripts(msg string, tx *domainmessage.MsgTx, idx int, sigScript, scriptPubKey []byte) error { +func checkScripts(msg string, tx *appmessage.MsgTx, idx int, sigScript, scriptPubKey []byte) error { tx.TxIn[idx].SignatureScript = sigScript var flags ScriptFlags vm, err := NewEngine(scriptPubKey, tx, idx, @@ -72,7 +72,7 @@ func checkScripts(msg string, tx *domainmessage.MsgTx, idx int, sigScript, scrip return nil } -func signAndCheck(msg string, tx *domainmessage.MsgTx, idx int, scriptPubKey []byte, +func signAndCheck(msg string, tx *appmessage.MsgTx, idx int, scriptPubKey []byte, hashType SigHashType, kdb KeyDB, sdb ScriptDB, previousScript []byte) error { @@ -99,30 +99,30 @@ func TestSignTxOutput(t *testing.T) { SigHashNone | SigHashAnyOneCanPay, SigHashSingle | SigHashAnyOneCanPay, } - txIns := []*domainmessage.TxIn{ + txIns := []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{}, Index: 0, }, Sequence: 4294967295, }, { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{}, Index: 1, }, Sequence: 4294967295, }, { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{}, Index: 2, }, Sequence: 4294967295, }, } - txOuts := []*domainmessage.TxOut{ + txOuts := []*appmessage.TxOut{ { Value: 1, }, @@ -133,7 +133,7 @@ func TestSignTxOutput(t *testing.T) { Value: 3, }, } - tx := domainmessage.NewNativeMsgTx(1, txIns, txOuts) + tx := appmessage.NewNativeMsgTx(1, txIns, txOuts) // Pay to Pubkey Hash (uncompressed) for _, hashType := range hashTypes { @@ -703,7 +703,7 @@ func TestSignTxOutput(t *testing.T) { } type tstInput struct { - txout *domainmessage.TxOut + txout *appmessage.TxOut sigscriptGenerates bool inputValidates bool indexOutOfRange bool @@ -717,7 +717,7 @@ type tstSigScript struct { scriptAtWrongIndex bool } -var coinbaseOutpoint = &domainmessage.Outpoint{ +var coinbaseOutpoint = &appmessage.Outpoint{ Index: (1 << 32) - 1, } @@ -748,7 +748,7 @@ var sigScriptTests = []tstSigScript{ name: "one input uncompressed", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, @@ -762,13 +762,13 @@ var sigScriptTests = []tstSigScript{ name: "two inputs uncompressed", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, }, { - txout: domainmessage.NewTxOut(coinbaseVal+fee, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal+fee, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, @@ -782,7 +782,7 @@ var sigScriptTests = []tstSigScript{ name: "one input compressed", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, compressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, compressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, @@ -796,13 +796,13 @@ var sigScriptTests = []tstSigScript{ name: "two inputs compressed", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, compressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, compressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, }, { - txout: domainmessage.NewTxOut(coinbaseVal+fee, compressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal+fee, compressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, @@ -816,7 +816,7 @@ var sigScriptTests = []tstSigScript{ name: "hashType SigHashNone", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, @@ -830,7 +830,7 @@ var sigScriptTests = []tstSigScript{ name: "hashType SigHashSingle", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, @@ -844,7 +844,7 @@ var sigScriptTests = []tstSigScript{ name: "hashType SigHashAll | SigHashAnyoneCanPay", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, @@ -858,7 +858,7 @@ var sigScriptTests = []tstSigScript{ name: "hashType SigHashAnyoneCanPay", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: false, indexOutOfRange: false, @@ -872,7 +872,7 @@ var sigScriptTests = []tstSigScript{ name: "hashType non-exist", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: false, indexOutOfRange: false, @@ -886,7 +886,7 @@ var sigScriptTests = []tstSigScript{ name: "invalid compression", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: false, indexOutOfRange: false, @@ -900,7 +900,7 @@ var sigScriptTests = []tstSigScript{ name: "short ScriptPubKey", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, shortScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, shortScriptPubKey), sigscriptGenerates: false, indexOutOfRange: false, }, @@ -913,13 +913,13 @@ var sigScriptTests = []tstSigScript{ name: "valid script at wrong index", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, }, { - txout: domainmessage.NewTxOut(coinbaseVal+fee, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal+fee, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, @@ -933,13 +933,13 @@ var sigScriptTests = []tstSigScript{ name: "index out of range", inputs: []tstInput{ { - txout: domainmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, }, { - txout: domainmessage.NewTxOut(coinbaseVal+fee, uncompressedScriptPubKey), + txout: appmessage.NewTxOut(coinbaseVal+fee, uncompressedScriptPubKey), sigscriptGenerates: true, inputValidates: true, indexOutOfRange: false, @@ -963,13 +963,13 @@ func TestSignatureScript(t *testing.T) { nexttest: for i := range sigScriptTests { - txOuts := []*domainmessage.TxOut{domainmessage.NewTxOut(500, []byte{OpReturn})} + txOuts := []*appmessage.TxOut{appmessage.NewTxOut(500, []byte{OpReturn})} - txIns := []*domainmessage.TxIn{} + txIns := []*appmessage.TxIn{} for range sigScriptTests[i].inputs { - txIns = append(txIns, domainmessage.NewTxIn(coinbaseOutpoint, nil)) + txIns = append(txIns, appmessage.NewTxIn(coinbaseOutpoint, nil)) } - tx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, txIns, txOuts) + tx := appmessage.NewNativeMsgTx(appmessage.TxVersion, txIns, txOuts) var script []byte var err error diff --git a/cmd/addblock/addblock.go b/executables/addblock/addblock.go similarity index 92% rename from cmd/addblock/addblock.go rename to executables/addblock/addblock.go index 8edf42f93..7fd0d9552 100644 --- a/cmd/addblock/addblock.go +++ b/executables/addblock/addblock.go @@ -5,11 +5,11 @@ package main import ( + "github.com/kaspanet/kaspad/infrastructure/logger" "os" "runtime" - "github.com/kaspanet/kaspad/infrastructure/limits" - "github.com/kaspanet/kaspad/infrastructure/logs" + "github.com/kaspanet/kaspad/infrastructure/os/limits" "github.com/kaspanet/kaspad/util/panics" ) @@ -20,7 +20,7 @@ const ( var ( cfg *ConfigFlags - log *logs.Logger + log *logger.Logger spawn func(string, func()) ) @@ -35,7 +35,7 @@ func realMain() error { cfg = tcfg // Setup logging. - backendLogger := logs.NewBackend() + backendLogger := logger.NewBackend() defer os.Stdout.Sync() log = backendLogger.Logger("MAIN") spawn = panics.GoroutineWrapperFunc(log) diff --git a/cmd/addblock/config.go b/executables/addblock/config.go similarity index 100% rename from cmd/addblock/config.go rename to executables/addblock/config.go diff --git a/cmd/addblock/import.go b/executables/addblock/import.go similarity index 98% rename from cmd/addblock/import.go rename to executables/addblock/import.go index 9d2897551..12ae20f81 100644 --- a/cmd/addblock/import.go +++ b/executables/addblock/import.go @@ -13,8 +13,8 @@ import ( "sync" "time" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" ) @@ -68,10 +68,10 @@ func (bi *blockImporter) readBlock() ([]byte, error) { if err := binary.Read(bi.r, binary.LittleEndian, &blockLen); err != nil { return nil, err } - if blockLen > domainmessage.MaxMessagePayload { + if blockLen > appmessage.MaxMessagePayload { return nil, errors.Errorf("block payload of %d bytes is larger "+ "than the max allowed %d bytes", blockLen, - domainmessage.MaxMessagePayload) + appmessage.MaxMessagePayload) } serializedBlock := make([]byte, blockLen) diff --git a/cmd/gencerts/gencerts.go b/executables/gencerts/gencerts.go similarity index 100% rename from cmd/gencerts/gencerts.go rename to executables/gencerts/gencerts.go diff --git a/cmd/kaspactl/config.go b/executables/kaspactl/config.go similarity index 99% rename from cmd/kaspactl/config.go rename to executables/kaspactl/config.go index 65f4b10eb..01b3612d4 100644 --- a/cmd/kaspactl/config.go +++ b/executables/kaspactl/config.go @@ -16,7 +16,7 @@ import ( "strings" "github.com/jessevdk/go-flags" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" ) diff --git a/cmd/kaspactl/httpclient.go b/executables/kaspactl/httpclient.go similarity index 98% rename from cmd/kaspactl/httpclient.go rename to executables/kaspactl/httpclient.go index 844a6bb91..36e01c447 100644 --- a/cmd/kaspactl/httpclient.go +++ b/executables/kaspactl/httpclient.go @@ -11,7 +11,7 @@ import ( "net/http" "github.com/btcsuite/go-socks/socks" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // newHTTPClient returns a new HTTP client that is configured according to the diff --git a/cmd/kaspactl/kaspactl.go b/executables/kaspactl/kaspactl.go similarity index 98% rename from cmd/kaspactl/kaspactl.go rename to executables/kaspactl/kaspactl.go index 18082d7e9..fea52189d 100644 --- a/cmd/kaspactl/kaspactl.go +++ b/executables/kaspactl/kaspactl.go @@ -11,7 +11,7 @@ import ( "path/filepath" "strings" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) const ( diff --git a/cmd/kaspaminer/client.go b/executables/kaspaminer/client.go similarity index 90% rename from cmd/kaspaminer/client.go rename to executables/kaspaminer/client.go index 76b8b588d..1349c0973 100644 --- a/cmd/kaspaminer/client.go +++ b/executables/kaspaminer/client.go @@ -1,8 +1,8 @@ package main import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/client" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/client" "github.com/kaspanet/kaspad/util" "github.com/pkg/errors" "io/ioutil" @@ -19,7 +19,7 @@ func newMinerClient(connCfg *client.ConnConfig) (*minerClient, error) { onBlockAdded: make(chan struct{}, 1), } notificationHandlers := &client.NotificationHandlers{ - OnFilteredBlockAdded: func(_ uint64, header *domainmessage.BlockHeader, + OnFilteredBlockAdded: func(_ uint64, header *appmessage.BlockHeader, txs []*util.Tx) { minerClient.onBlockAdded <- struct{}{} }, diff --git a/cmd/kaspaminer/config.go b/executables/kaspaminer/config.go similarity index 100% rename from cmd/kaspaminer/config.go rename to executables/kaspaminer/config.go diff --git a/cmd/kaspaminer/docker/Dockerfile b/executables/kaspaminer/docker/Dockerfile similarity index 100% rename from cmd/kaspaminer/docker/Dockerfile rename to executables/kaspaminer/docker/Dockerfile diff --git a/cmd/kaspaminer/log.go b/executables/kaspaminer/log.go similarity index 51% rename from cmd/kaspaminer/log.go rename to executables/kaspaminer/log.go index 978590230..6b8fba38a 100644 --- a/cmd/kaspaminer/log.go +++ b/executables/kaspaminer/log.go @@ -2,31 +2,31 @@ package main import ( "fmt" - "github.com/kaspanet/kaspad/infrastructure/logs" - "github.com/kaspanet/kaspad/network/rpc/client" + "github.com/kaspanet/kaspad/infrastructure/logger" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/client" "github.com/kaspanet/kaspad/util/panics" "os" ) var ( - backendLog = logs.NewBackend() + backendLog = logger.NewBackend() log = backendLog.Logger("KSMN") spawn = panics.GoroutineWrapperFunc(log) ) func initLog(logFile, errLogFile string) { - err := backendLog.AddLogFile(logFile, logs.LevelTrace) + err := backendLog.AddLogFile(logFile, logger.LevelTrace) if err != nil { - fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", logFile, logs.LevelTrace, err) + fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", logFile, logger.LevelTrace, err) os.Exit(1) } - err = backendLog.AddLogFile(errLogFile, logs.LevelWarn) + err = backendLog.AddLogFile(errLogFile, logger.LevelWarn) if err != nil { - fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", errLogFile, logs.LevelWarn, err) + fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", errLogFile, logger.LevelWarn, err) os.Exit(1) } } func enableRPCLogging() { - client.UseLogger(backendLog, logs.LevelTrace) + client.UseLogger(backendLog, logger.LevelTrace) } diff --git a/cmd/kaspaminer/main.go b/executables/kaspaminer/main.go similarity index 96% rename from cmd/kaspaminer/main.go rename to executables/kaspaminer/main.go index a0bf7099f..72168d695 100644 --- a/cmd/kaspaminer/main.go +++ b/executables/kaspaminer/main.go @@ -11,7 +11,7 @@ import ( _ "net/http/pprof" - "github.com/kaspanet/kaspad/infrastructure/signal" + "github.com/kaspanet/kaspad/infrastructure/os/signal" "github.com/kaspanet/kaspad/util/panics" "github.com/kaspanet/kaspad/util/profiling" ) diff --git a/cmd/kaspaminer/mineloop.go b/executables/kaspaminer/mineloop.go similarity index 97% rename from cmd/kaspaminer/mineloop.go rename to executables/kaspaminer/mineloop.go index 6755ecc81..ce1f7c4ac 100644 --- a/cmd/kaspaminer/mineloop.go +++ b/executables/kaspaminer/mineloop.go @@ -7,8 +7,8 @@ import ( "sync/atomic" "time" - clientpkg "github.com/kaspanet/kaspad/network/rpc/client" - "github.com/kaspanet/kaspad/network/rpc/model" + clientpkg "github.com/kaspanet/kaspad/infrastructure/network/rpc/client" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" diff --git a/cmd/txsigner/config.go b/executables/txsigner/config.go similarity index 100% rename from cmd/txsigner/config.go rename to executables/txsigner/config.go diff --git a/cmd/txsigner/txsigner.go b/executables/txsigner/txsigner.go similarity index 88% rename from cmd/txsigner/txsigner.go rename to executables/txsigner/txsigner.go index 53b8c0bc7..8b1f9f2e4 100644 --- a/cmd/txsigner/txsigner.go +++ b/executables/txsigner/txsigner.go @@ -5,8 +5,8 @@ import ( "encoding/hex" "fmt" "github.com/kaspanet/go-secp256k1" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/pkg/errors" "os" @@ -58,12 +58,12 @@ func parsePrivateKey(privateKeyHex string) (*secp256k1.PrivateKey, error) { return secp256k1.DeserializePrivateKeyFromSlice(privateKeyBytes) } -func parseTransaction(transactionHex string) (*domainmessage.MsgTx, error) { +func parseTransaction(transactionHex string) (*appmessage.MsgTx, error) { serializedTx, err := hex.DecodeString(transactionHex) if err != nil { return nil, errors.Wrap(err, "couldn't decode transaction hex") } - var transaction domainmessage.MsgTx + var transaction appmessage.MsgTx err = transaction.Deserialize(bytes.NewReader(serializedTx)) return &transaction, err } @@ -81,7 +81,7 @@ func createScriptPubKey(publicKey *secp256k1.SchnorrPublicKey) ([]byte, error) { return scriptPubKey, err } -func signTransaction(transaction *domainmessage.MsgTx, privateKey *secp256k1.PrivateKey, scriptPubKey []byte) error { +func signTransaction(transaction *appmessage.MsgTx, privateKey *secp256k1.PrivateKey, scriptPubKey []byte) error { for i, transactionInput := range transaction.TxIn { signatureScript, err := txscript.SignatureScript(transaction, i, scriptPubKey, txscript.SigHashAll, privateKey, true) if err != nil { @@ -92,7 +92,7 @@ func signTransaction(transaction *domainmessage.MsgTx, privateKey *secp256k1.Pri return nil } -func serializeTransaction(transaction *domainmessage.MsgTx) (string, error) { +func serializeTransaction(transaction *appmessage.MsgTx) (string, error) { buf := bytes.NewBuffer(make([]byte, 0, transaction.SerializeSize())) err := transaction.Serialize(buf) serializedTransaction := hex.EncodeToString(buf.Bytes()) diff --git a/infrastructure/database/README.md b/infrastructure/db/database/README.md similarity index 100% rename from infrastructure/database/README.md rename to infrastructure/db/database/README.md diff --git a/infrastructure/database/common_test.go b/infrastructure/db/database/common_test.go similarity index 95% rename from infrastructure/database/common_test.go rename to infrastructure/db/database/common_test.go index 5b9bb781d..3d349dfb0 100644 --- a/infrastructure/database/common_test.go +++ b/infrastructure/db/database/common_test.go @@ -2,8 +2,8 @@ package database_test import ( "fmt" - "github.com/kaspanet/kaspad/infrastructure/database" - "github.com/kaspanet/kaspad/infrastructure/database/ffldb" + "github.com/kaspanet/kaspad/infrastructure/db/database" + "github.com/kaspanet/kaspad/infrastructure/db/database/ffldb" "io/ioutil" "testing" ) diff --git a/infrastructure/database/cursor.go b/infrastructure/db/database/cursor.go similarity index 100% rename from infrastructure/database/cursor.go rename to infrastructure/db/database/cursor.go diff --git a/infrastructure/database/cursor_test.go b/infrastructure/db/database/cursor_test.go similarity index 99% rename from infrastructure/database/cursor_test.go rename to infrastructure/db/database/cursor_test.go index 893888fa4..c0082d94b 100644 --- a/infrastructure/database/cursor_test.go +++ b/infrastructure/db/database/cursor_test.go @@ -8,7 +8,7 @@ package database_test import ( "bytes" "fmt" - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "reflect" "strings" "testing" diff --git a/infrastructure/database/dataaccessor.go b/infrastructure/db/database/dataaccessor.go similarity index 100% rename from infrastructure/database/dataaccessor.go rename to infrastructure/db/database/dataaccessor.go diff --git a/infrastructure/database/database.go b/infrastructure/db/database/database.go similarity index 100% rename from infrastructure/database/database.go rename to infrastructure/db/database/database.go diff --git a/infrastructure/database/database_test.go b/infrastructure/db/database/database_test.go similarity index 99% rename from infrastructure/database/database_test.go rename to infrastructure/db/database/database_test.go index 507c98fcd..2fc55fdee 100644 --- a/infrastructure/database/database_test.go +++ b/infrastructure/db/database/database_test.go @@ -7,7 +7,7 @@ package database_test import ( "bytes" - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "testing" ) diff --git a/infrastructure/database/doc.go b/infrastructure/db/database/doc.go similarity index 100% rename from infrastructure/database/doc.go rename to infrastructure/db/database/doc.go diff --git a/infrastructure/database/errors.go b/infrastructure/db/database/errors.go similarity index 100% rename from infrastructure/database/errors.go rename to infrastructure/db/database/errors.go diff --git a/infrastructure/database/ffldb/ff/flatfile.go b/infrastructure/db/database/ffldb/ff/flatfile.go similarity index 100% rename from infrastructure/database/ffldb/ff/flatfile.go rename to infrastructure/db/database/ffldb/ff/flatfile.go diff --git a/infrastructure/database/ffldb/ff/flatfile_test.go b/infrastructure/db/database/ffldb/ff/flatfile_test.go similarity index 98% rename from infrastructure/database/ffldb/ff/flatfile_test.go rename to infrastructure/db/database/ffldb/ff/flatfile_test.go index 53b7d7dfd..8c1b96053 100644 --- a/infrastructure/database/ffldb/ff/flatfile_test.go +++ b/infrastructure/db/database/ffldb/ff/flatfile_test.go @@ -2,7 +2,7 @@ package ff import ( "bytes" - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "io/ioutil" "os" "reflect" diff --git a/infrastructure/database/ffldb/ff/flatfiledb.go b/infrastructure/db/database/ffldb/ff/flatfiledb.go similarity index 100% rename from infrastructure/database/ffldb/ff/flatfiledb.go rename to infrastructure/db/database/ffldb/ff/flatfiledb.go diff --git a/infrastructure/database/ffldb/ff/location.go b/infrastructure/db/database/ffldb/ff/location.go similarity index 100% rename from infrastructure/database/ffldb/ff/location.go rename to infrastructure/db/database/ffldb/ff/location.go diff --git a/infrastructure/database/ffldb/ff/location_test.go b/infrastructure/db/database/ffldb/ff/location_test.go similarity index 100% rename from infrastructure/database/ffldb/ff/location_test.go rename to infrastructure/db/database/ffldb/ff/location_test.go diff --git a/infrastructure/database/ffldb/ff/lockablefile.go b/infrastructure/db/database/ffldb/ff/lockablefile.go similarity index 100% rename from infrastructure/database/ffldb/ff/lockablefile.go rename to infrastructure/db/database/ffldb/ff/lockablefile.go diff --git a/infrastructure/database/ffldb/ff/log.go b/infrastructure/db/database/ffldb/ff/log.go similarity index 100% rename from infrastructure/database/ffldb/ff/log.go rename to infrastructure/db/database/ffldb/ff/log.go diff --git a/infrastructure/database/ffldb/ff/read.go b/infrastructure/db/database/ffldb/ff/read.go similarity index 98% rename from infrastructure/database/ffldb/ff/read.go rename to infrastructure/db/database/ffldb/ff/read.go index e3807f159..c58266fde 100644 --- a/infrastructure/database/ffldb/ff/read.go +++ b/infrastructure/db/database/ffldb/ff/read.go @@ -1,7 +1,7 @@ package ff import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/pkg/errors" "hash/crc32" "os" diff --git a/infrastructure/database/ffldb/ff/rollback.go b/infrastructure/db/database/ffldb/ff/rollback.go similarity index 100% rename from infrastructure/database/ffldb/ff/rollback.go rename to infrastructure/db/database/ffldb/ff/rollback.go diff --git a/infrastructure/database/ffldb/ff/write.go b/infrastructure/db/database/ffldb/ff/write.go similarity index 100% rename from infrastructure/database/ffldb/ff/write.go rename to infrastructure/db/database/ffldb/ff/write.go diff --git a/infrastructure/database/ffldb/ffldb.go b/infrastructure/db/database/ffldb/ffldb.go similarity index 96% rename from infrastructure/database/ffldb/ffldb.go rename to infrastructure/db/database/ffldb/ffldb.go index 7b7d2be8a..5883d53a7 100644 --- a/infrastructure/database/ffldb/ffldb.go +++ b/infrastructure/db/database/ffldb/ffldb.go @@ -1,9 +1,9 @@ package ffldb import ( - "github.com/kaspanet/kaspad/infrastructure/database" - "github.com/kaspanet/kaspad/infrastructure/database/ffldb/ff" - "github.com/kaspanet/kaspad/infrastructure/database/ffldb/ldb" + "github.com/kaspanet/kaspad/infrastructure/db/database" + "github.com/kaspanet/kaspad/infrastructure/db/database/ffldb/ff" + "github.com/kaspanet/kaspad/infrastructure/db/database/ffldb/ldb" "github.com/pkg/errors" ) diff --git a/infrastructure/database/ffldb/ffldb_test.go b/infrastructure/db/database/ffldb/ffldb_test.go similarity index 98% rename from infrastructure/database/ffldb/ffldb_test.go rename to infrastructure/db/database/ffldb/ffldb_test.go index 393e7bfc7..2b27b1d9b 100644 --- a/infrastructure/database/ffldb/ffldb_test.go +++ b/infrastructure/db/database/ffldb/ffldb_test.go @@ -1,7 +1,7 @@ package ffldb import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "io/ioutil" "reflect" "testing" diff --git a/infrastructure/database/ffldb/initialize.go b/infrastructure/db/database/ffldb/initialize.go similarity index 100% rename from infrastructure/database/ffldb/initialize.go rename to infrastructure/db/database/ffldb/initialize.go diff --git a/infrastructure/database/ffldb/ldb/cursor.go b/infrastructure/db/database/ffldb/ldb/cursor.go similarity index 98% rename from infrastructure/database/ffldb/ldb/cursor.go rename to infrastructure/db/database/ffldb/ldb/cursor.go index 54f3feb0b..22c5f5463 100644 --- a/infrastructure/database/ffldb/ldb/cursor.go +++ b/infrastructure/db/database/ffldb/ldb/cursor.go @@ -3,7 +3,7 @@ package ldb import ( "bytes" - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/pkg/errors" "github.com/syndtr/goleveldb/leveldb/iterator" "github.com/syndtr/goleveldb/leveldb/util" diff --git a/infrastructure/database/ffldb/ldb/cursor_test.go b/infrastructure/db/database/ffldb/ldb/cursor_test.go similarity index 99% rename from infrastructure/database/ffldb/ldb/cursor_test.go rename to infrastructure/db/database/ffldb/ldb/cursor_test.go index 4187abbae..434c2be93 100644 --- a/infrastructure/database/ffldb/ldb/cursor_test.go +++ b/infrastructure/db/database/ffldb/ldb/cursor_test.go @@ -3,7 +3,7 @@ package ldb import ( "bytes" "fmt" - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "reflect" "strings" "testing" diff --git a/infrastructure/database/ffldb/ldb/leveldb.go b/infrastructure/db/database/ffldb/ldb/leveldb.go similarity index 97% rename from infrastructure/database/ffldb/ldb/leveldb.go rename to infrastructure/db/database/ffldb/ldb/leveldb.go index b82a981b6..109c2511b 100644 --- a/infrastructure/database/ffldb/ldb/leveldb.go +++ b/infrastructure/db/database/ffldb/ldb/leveldb.go @@ -1,7 +1,7 @@ package ldb import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/pkg/errors" "github.com/syndtr/goleveldb/leveldb" ldbErrors "github.com/syndtr/goleveldb/leveldb/errors" diff --git a/infrastructure/database/ffldb/ldb/leveldb_test.go b/infrastructure/db/database/ffldb/ldb/leveldb_test.go similarity index 98% rename from infrastructure/database/ffldb/ldb/leveldb_test.go rename to infrastructure/db/database/ffldb/ldb/leveldb_test.go index 5d9e46af0..8b9eca91f 100644 --- a/infrastructure/database/ffldb/ldb/leveldb_test.go +++ b/infrastructure/db/database/ffldb/ldb/leveldb_test.go @@ -1,7 +1,7 @@ package ldb import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "io/ioutil" "reflect" "testing" diff --git a/infrastructure/database/ffldb/ldb/log.go b/infrastructure/db/database/ffldb/ldb/log.go similarity index 100% rename from infrastructure/database/ffldb/ldb/log.go rename to infrastructure/db/database/ffldb/ldb/log.go diff --git a/infrastructure/database/ffldb/ldb/options.go b/infrastructure/db/database/ffldb/ldb/options.go similarity index 100% rename from infrastructure/database/ffldb/ldb/options.go rename to infrastructure/db/database/ffldb/ldb/options.go diff --git a/infrastructure/database/ffldb/ldb/transaction.go b/infrastructure/db/database/ffldb/ldb/transaction.go similarity index 98% rename from infrastructure/database/ffldb/ldb/transaction.go rename to infrastructure/db/database/ffldb/ldb/transaction.go index 6106b1fa6..fdba80195 100644 --- a/infrastructure/database/ffldb/ldb/transaction.go +++ b/infrastructure/db/database/ffldb/ldb/transaction.go @@ -1,7 +1,7 @@ package ldb import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/pkg/errors" "github.com/syndtr/goleveldb/leveldb" ) diff --git a/infrastructure/database/ffldb/ldb/transaction_test.go b/infrastructure/db/database/ffldb/ldb/transaction_test.go similarity index 98% rename from infrastructure/database/ffldb/ldb/transaction_test.go rename to infrastructure/db/database/ffldb/ldb/transaction_test.go index 804bcd98c..c2e6f5889 100644 --- a/infrastructure/database/ffldb/ldb/transaction_test.go +++ b/infrastructure/db/database/ffldb/ldb/transaction_test.go @@ -1,7 +1,7 @@ package ldb import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "strings" "testing" ) diff --git a/infrastructure/database/ffldb/log.go b/infrastructure/db/database/ffldb/log.go similarity index 100% rename from infrastructure/database/ffldb/log.go rename to infrastructure/db/database/ffldb/log.go diff --git a/infrastructure/database/ffldb/transaction.go b/infrastructure/db/database/ffldb/transaction.go similarity index 95% rename from infrastructure/database/ffldb/transaction.go rename to infrastructure/db/database/ffldb/transaction.go index d4e2bf105..a73fd97f7 100644 --- a/infrastructure/database/ffldb/transaction.go +++ b/infrastructure/db/database/ffldb/transaction.go @@ -1,9 +1,9 @@ package ffldb import ( - "github.com/kaspanet/kaspad/infrastructure/database" - "github.com/kaspanet/kaspad/infrastructure/database/ffldb/ff" - "github.com/kaspanet/kaspad/infrastructure/database/ffldb/ldb" + "github.com/kaspanet/kaspad/infrastructure/db/database" + "github.com/kaspanet/kaspad/infrastructure/db/database/ffldb/ff" + "github.com/kaspanet/kaspad/infrastructure/db/database/ffldb/ldb" "github.com/pkg/errors" ) diff --git a/infrastructure/database/ffldb/transaction_test.go b/infrastructure/db/database/ffldb/transaction_test.go similarity index 99% rename from infrastructure/database/ffldb/transaction_test.go rename to infrastructure/db/database/ffldb/transaction_test.go index 1547b302b..e14ca0e65 100644 --- a/infrastructure/database/ffldb/transaction_test.go +++ b/infrastructure/db/database/ffldb/transaction_test.go @@ -2,7 +2,7 @@ package ffldb import ( "bytes" - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "strings" "testing" ) diff --git a/infrastructure/database/keys.go b/infrastructure/db/database/keys.go similarity index 100% rename from infrastructure/database/keys.go rename to infrastructure/db/database/keys.go diff --git a/infrastructure/database/keys_test.go b/infrastructure/db/database/keys_test.go similarity index 100% rename from infrastructure/database/keys_test.go rename to infrastructure/db/database/keys_test.go diff --git a/infrastructure/database/transaction.go b/infrastructure/db/database/transaction.go similarity index 100% rename from infrastructure/database/transaction.go rename to infrastructure/db/database/transaction.go diff --git a/infrastructure/database/transaction_test.go b/infrastructure/db/database/transaction_test.go similarity index 99% rename from infrastructure/database/transaction_test.go rename to infrastructure/db/database/transaction_test.go index e4c21574b..c156424ad 100644 --- a/infrastructure/database/transaction_test.go +++ b/infrastructure/db/database/transaction_test.go @@ -7,7 +7,7 @@ package database_test import ( "bytes" - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "strings" "testing" ) diff --git a/infrastructure/dbaccess/acceptanceindex.go b/infrastructure/db/dbaccess/acceptanceindex.go similarity index 96% rename from infrastructure/dbaccess/acceptanceindex.go rename to infrastructure/db/dbaccess/acceptanceindex.go index e2e13b463..ad64e588c 100644 --- a/infrastructure/dbaccess/acceptanceindex.go +++ b/infrastructure/db/dbaccess/acceptanceindex.go @@ -1,7 +1,7 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" ) diff --git a/infrastructure/dbaccess/block.go b/infrastructure/db/dbaccess/block.go similarity index 97% rename from infrastructure/dbaccess/block.go rename to infrastructure/db/dbaccess/block.go index 062ff53aa..6d7c68e7a 100644 --- a/infrastructure/dbaccess/block.go +++ b/infrastructure/db/dbaccess/block.go @@ -1,7 +1,7 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" ) diff --git a/infrastructure/dbaccess/block_test.go b/infrastructure/db/dbaccess/block_test.go similarity index 100% rename from infrastructure/dbaccess/block_test.go rename to infrastructure/db/dbaccess/block_test.go diff --git a/infrastructure/dbaccess/blockindex.go b/infrastructure/db/dbaccess/blockindex.go similarity index 96% rename from infrastructure/dbaccess/blockindex.go rename to infrastructure/db/dbaccess/blockindex.go index e359b46b9..5ea1c182c 100644 --- a/infrastructure/dbaccess/blockindex.go +++ b/infrastructure/db/dbaccess/blockindex.go @@ -2,7 +2,7 @@ package dbaccess import ( "encoding/hex" - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/pkg/errors" ) diff --git a/infrastructure/dbaccess/common.go b/infrastructure/db/dbaccess/common.go similarity index 91% rename from infrastructure/dbaccess/common.go rename to infrastructure/db/dbaccess/common.go index 5f19100d5..44dec594d 100644 --- a/infrastructure/dbaccess/common.go +++ b/infrastructure/db/dbaccess/common.go @@ -1,6 +1,6 @@ package dbaccess -import "github.com/kaspanet/kaspad/infrastructure/database" +import "github.com/kaspanet/kaspad/infrastructure/db/database" func clearBucket(dbTx *TxContext, bucket *database.Bucket) error { accessor, err := dbTx.accessor() diff --git a/infrastructure/dbaccess/context.go b/infrastructure/db/dbaccess/context.go similarity index 96% rename from infrastructure/dbaccess/context.go rename to infrastructure/db/dbaccess/context.go index 6fb50a8e2..20bed7ba3 100644 --- a/infrastructure/dbaccess/context.go +++ b/infrastructure/db/dbaccess/context.go @@ -1,7 +1,7 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" ) // Context is an interface type representing the context in which queries run, currently relating to the diff --git a/infrastructure/dbaccess/dagstate.go b/infrastructure/db/dbaccess/dagstate.go similarity index 90% rename from infrastructure/dbaccess/dagstate.go rename to infrastructure/db/dbaccess/dagstate.go index 225e67b36..64b1e7be6 100644 --- a/infrastructure/dbaccess/dagstate.go +++ b/infrastructure/db/dbaccess/dagstate.go @@ -1,6 +1,6 @@ package dbaccess -import "github.com/kaspanet/kaspad/infrastructure/database" +import "github.com/kaspanet/kaspad/infrastructure/db/database" var ( dagStateKey = database.MakeBucket().Key([]byte("dag-state")) diff --git a/infrastructure/dbaccess/db.go b/infrastructure/db/dbaccess/db.go similarity index 84% rename from infrastructure/dbaccess/db.go rename to infrastructure/db/dbaccess/db.go index 40ece1e96..52e37420c 100644 --- a/infrastructure/dbaccess/db.go +++ b/infrastructure/db/dbaccess/db.go @@ -1,8 +1,8 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" - "github.com/kaspanet/kaspad/infrastructure/database/ffldb" + "github.com/kaspanet/kaspad/infrastructure/db/database" + "github.com/kaspanet/kaspad/infrastructure/db/database/ffldb" ) // DatabaseContext represents a context in which all database queries run diff --git a/infrastructure/dbaccess/errors.go b/infrastructure/db/dbaccess/errors.go similarity index 71% rename from infrastructure/dbaccess/errors.go rename to infrastructure/db/dbaccess/errors.go index 2df0a16be..d7756563a 100644 --- a/infrastructure/dbaccess/errors.go +++ b/infrastructure/db/dbaccess/errors.go @@ -1,6 +1,6 @@ package dbaccess -import "github.com/kaspanet/kaspad/infrastructure/database" +import "github.com/kaspanet/kaspad/infrastructure/db/database" // IsNotFoundError checks whether an error is an ErrNotFound. func IsNotFoundError(err error) bool { diff --git a/infrastructure/dbaccess/fee_data.go b/infrastructure/db/dbaccess/fee_data.go similarity index 94% rename from infrastructure/dbaccess/fee_data.go rename to infrastructure/db/dbaccess/fee_data.go index c08007594..c6c45a3b5 100644 --- a/infrastructure/dbaccess/fee_data.go +++ b/infrastructure/db/dbaccess/fee_data.go @@ -1,7 +1,7 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" ) diff --git a/infrastructure/dbaccess/multiset.go b/infrastructure/db/dbaccess/multiset.go similarity index 94% rename from infrastructure/dbaccess/multiset.go rename to infrastructure/db/dbaccess/multiset.go index eb40e4a04..a5cd45032 100644 --- a/infrastructure/dbaccess/multiset.go +++ b/infrastructure/db/dbaccess/multiset.go @@ -1,7 +1,7 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/infrastructure/dbaccess/peers.go b/infrastructure/db/dbaccess/peers.go similarity index 90% rename from infrastructure/dbaccess/peers.go rename to infrastructure/db/dbaccess/peers.go index 1ab50ab70..fe063c55c 100644 --- a/infrastructure/dbaccess/peers.go +++ b/infrastructure/db/dbaccess/peers.go @@ -1,6 +1,6 @@ package dbaccess -import "github.com/kaspanet/kaspad/infrastructure/database" +import "github.com/kaspanet/kaspad/infrastructure/db/database" var ( peersKey = database.MakeBucket().Key([]byte("peers")) diff --git a/infrastructure/dbaccess/reachability.go b/infrastructure/db/dbaccess/reachability.go similarity index 97% rename from infrastructure/dbaccess/reachability.go rename to infrastructure/db/dbaccess/reachability.go index d041bb831..abf1087e5 100644 --- a/infrastructure/dbaccess/reachability.go +++ b/infrastructure/db/dbaccess/reachability.go @@ -1,7 +1,7 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/infrastructure/dbaccess/subnetwork.go b/infrastructure/db/dbaccess/subnetwork.go similarity index 95% rename from infrastructure/dbaccess/subnetwork.go rename to infrastructure/db/dbaccess/subnetwork.go index be8cd0327..9cbdcf4d6 100644 --- a/infrastructure/dbaccess/subnetwork.go +++ b/infrastructure/db/dbaccess/subnetwork.go @@ -1,7 +1,7 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/kaspanet/kaspad/util/subnetworkid" ) diff --git a/infrastructure/dbaccess/utxo.go b/infrastructure/db/dbaccess/utxo.go similarity index 94% rename from infrastructure/dbaccess/utxo.go rename to infrastructure/db/dbaccess/utxo.go index 4c4488c88..3b945c278 100644 --- a/infrastructure/dbaccess/utxo.go +++ b/infrastructure/db/dbaccess/utxo.go @@ -1,7 +1,7 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" ) var ( diff --git a/infrastructure/dbaccess/utxodiff.go b/infrastructure/db/dbaccess/utxodiff.go similarity index 95% rename from infrastructure/dbaccess/utxodiff.go rename to infrastructure/db/dbaccess/utxodiff.go index cffb8dcdc..55b7061df 100644 --- a/infrastructure/dbaccess/utxodiff.go +++ b/infrastructure/db/dbaccess/utxodiff.go @@ -1,7 +1,7 @@ package dbaccess import ( - "github.com/kaspanet/kaspad/infrastructure/database" + "github.com/kaspanet/kaspad/infrastructure/db/database" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" ) diff --git a/infrastructure/logs/doc.go b/infrastructure/logger/doc.go similarity index 89% rename from infrastructure/logs/doc.go rename to infrastructure/logger/doc.go index 8d600aefa..1c15c8a2b 100644 --- a/infrastructure/logs/doc.go +++ b/infrastructure/logger/doc.go @@ -1,5 +1,5 @@ /* -Package logs defines an interface and default implementation for subsystem +Package logger defines an interface and default implementation for subsystem logging. Log level verbosity may be modified at runtime for each individual subsystem @@ -20,4 +20,4 @@ are recognized: shortfile: Include the filename and line number in all log messages. Overrides longfile. */ -package logs +package logger diff --git a/infrastructure/logger/logger.go b/infrastructure/logger/logger.go index b01a94ff8..fe6d141fb 100644 --- a/infrastructure/logger/logger.go +++ b/infrastructure/logger/logger.go @@ -12,8 +12,6 @@ import ( "strings" "github.com/pkg/errors" - - "github.com/kaspanet/kaspad/infrastructure/logs" ) // Loggers per subsystem. A single backend logger is created and all subsytem @@ -26,7 +24,7 @@ import ( // InitLog. var ( // BackendLog is the logging backend used to create all subsystem loggers. - BackendLog = logs.NewBackend() + BackendLog = NewBackend() adxrLog = BackendLog.Logger("ADXR") amgrLog = BackendLog.Logger("AMGR") @@ -114,7 +112,7 @@ var SubsystemTags = struct { } // subsystemLoggers maps each subsystem identifier to its associated logger. -var subsystemLoggers = map[string]*logs.Logger{ +var subsystemLoggers = map[string]*Logger{ SubsystemTags.ADXR: adxrLog, SubsystemTags.AMGR: amgrLog, SubsystemTags.CMGR: cmgrLog, @@ -145,14 +143,14 @@ var subsystemLoggers = map[string]*logs.Logger{ // InitLog attaches log file and error log file to the backend log. func InitLog(logFile, errLogFile string) { - err := BackendLog.AddLogFileWithCustomRotator(logFile, logs.LevelTrace, 100*1024, 4) + err := BackendLog.AddLogFileWithCustomRotator(logFile, LevelTrace, 100*1024, 4) if err != nil { - fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", logFile, logs.LevelTrace, err) + fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", logFile, LevelTrace, err) os.Exit(1) } - err = BackendLog.AddLogFile(errLogFile, logs.LevelWarn) + err = BackendLog.AddLogFile(errLogFile, LevelWarn) if err != nil { - fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", errLogFile, logs.LevelWarn, err) + fmt.Fprintf(os.Stderr, "Error adding log file %s as log rotator for level %s: %s", errLogFile, LevelWarn, err) os.Exit(1) } } @@ -168,7 +166,7 @@ func SetLogLevel(subsystemID string, logLevel string) { } // Defaults to info if the log level is invalid. - level, _ := logs.LevelFromString(logLevel) + level, _ := LevelFromString(logLevel) logger.SetLevel(level) } @@ -216,7 +214,7 @@ func SupportedSubsystems() []string { } // Get returns a logger of a specific sub system -func Get(tag string) (logger *logs.Logger, ok bool) { +func Get(tag string) (logger *Logger, ok bool) { logger, ok = subsystemLoggers[tag] return } diff --git a/infrastructure/logs/logs.go b/infrastructure/logger/logs.go similarity index 99% rename from infrastructure/logs/logs.go rename to infrastructure/logger/logs.go index a62d6ab96..c7bf92706 100644 --- a/infrastructure/logs/logs.go +++ b/infrastructure/logger/logs.go @@ -30,7 +30,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -package logs +package logger import ( "bytes" diff --git a/network/addressmanager/addressmanager.go b/infrastructure/network/addressmanager/addressmanager.go similarity index 94% rename from network/addressmanager/addressmanager.go rename to infrastructure/network/addressmanager/addressmanager.go index 7cea6e058..bbcd60338 100644 --- a/network/addressmanager/addressmanager.go +++ b/infrastructure/network/addressmanager/addressmanager.go @@ -9,9 +9,9 @@ import ( crand "crypto/rand" // for seeding "encoding/binary" "encoding/gob" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/mstime" "github.com/pkg/errors" "io" @@ -92,7 +92,7 @@ type PeersStateForSerialization struct { } type localAddress struct { - netAddress *domainmessage.NetAddress + netAddress *appmessage.NetAddress score AddressPriority } @@ -208,7 +208,7 @@ func New(cfg *config.Config, databaseContext *dbaccess.DatabaseContext) *Address // updateAddress is a helper function to either update an address already known // to the address manager, or to add the address if not already known. -func (am *AddressManager) updateAddress(netAddress, sourceAddress *domainmessage.NetAddress, subnetworkID *subnetworkid.SubnetworkID) { +func (am *AddressManager) updateAddress(netAddress, sourceAddress *appmessage.NetAddress, subnetworkID *subnetworkid.SubnetworkID) { // Filter out non-routable addresses. Note that non-routable // also includes invalid and local addresses. if !am.IsRoutable(netAddress) { @@ -371,7 +371,7 @@ func (am *AddressManager) pickTried(subnetworkID *subnetworkid.SubnetworkID, buc return oldest, oldestIndex } -func (am *AddressManager) newAddressBucketIndex(netAddress, srcAddress *domainmessage.NetAddress) int { +func (am *AddressManager) newAddressBucketIndex(netAddress, srcAddress *appmessage.NetAddress) int { // doublesha256(key + sourcegroup + int64(doublesha256(key + group + sourcegroup))%bucket_per_source_group) % num_new_buckets data1 := []byte{} @@ -392,7 +392,7 @@ func (am *AddressManager) newAddressBucketIndex(netAddress, srcAddress *domainme return int(binary.LittleEndian.Uint64(hash2) % NewBucketCount) } -func (am *AddressManager) triedAddressBucketIndex(netAddress *domainmessage.NetAddress) int { +func (am *AddressManager) triedAddressBucketIndex(netAddress *appmessage.NetAddress) int { // doublesha256(key + group + truncate_to_64bits(doublesha256(key)) % buckets_per_group) % num_buckets data1 := []byte{} data1 = append(data1, am.key[:]...) @@ -705,8 +705,8 @@ func (am *AddressManager) deserializePeersState(serializedPeerState []byte) erro return nil } -// DeserializeNetAddress converts a given address string to a *domainmessage.NetAddress -func (am *AddressManager) DeserializeNetAddress(addressKey AddressKey) (*domainmessage.NetAddress, error) { +// DeserializeNetAddress converts a given address string to a *appmessage.NetAddress +func (am *AddressManager) DeserializeNetAddress(addressKey AddressKey) (*appmessage.NetAddress, error) { host, portString, err := net.SplitHostPort(string(addressKey)) if err != nil { return nil, err @@ -716,7 +716,7 @@ func (am *AddressManager) DeserializeNetAddress(addressKey AddressKey) (*domainm return nil, err } - return am.HostToNetAddress(host, uint16(port), domainmessage.SFNodeNetwork) + return am.HostToNetAddress(host, uint16(port), appmessage.SFNodeNetwork) } // Start begins the core address handler which manages a pool of known @@ -758,7 +758,7 @@ func (am *AddressManager) Stop() error { // AddAddresses adds new addresses to the address manager. It enforces a max // number of addresses and silently ignores duplicate addresses. It is // safe for concurrent access. -func (am *AddressManager) AddAddresses(addresses []*domainmessage.NetAddress, sourceAddress *domainmessage.NetAddress, subnetworkID *subnetworkid.SubnetworkID) { +func (am *AddressManager) AddAddresses(addresses []*appmessage.NetAddress, sourceAddress *appmessage.NetAddress, subnetworkID *subnetworkid.SubnetworkID) { am.mutex.Lock() defer am.mutex.Unlock() @@ -770,7 +770,7 @@ func (am *AddressManager) AddAddresses(addresses []*domainmessage.NetAddress, so // AddAddress adds a new address to the address manager. It enforces a max // number of addresses and silently ignores duplicate addresses. It is // safe for concurrent access. -func (am *AddressManager) AddAddress(address, sourceAddress *domainmessage.NetAddress, subnetworkID *subnetworkid.SubnetworkID) { +func (am *AddressManager) AddAddress(address, sourceAddress *appmessage.NetAddress, subnetworkID *subnetworkid.SubnetworkID) { am.mutex.Lock() defer am.mutex.Unlock() @@ -778,14 +778,14 @@ func (am *AddressManager) AddAddress(address, sourceAddress *domainmessage.NetAd } // AddAddressByIP adds an address where we are given an ip:port and not a -// domainmessage.NetAddress. +// appmessage.NetAddress. func (am *AddressManager) AddAddressByIP(addressIP string, subnetworkID *subnetworkid.SubnetworkID) error { // Split IP and port ipString, portString, err := net.SplitHostPort(addressIP) if err != nil { return err } - // Put it in domainmessage.Netaddress + // Put it in appmessage.Netaddress ip := net.ParseIP(ipString) if ip == nil { return errors.Errorf("invalid ip %s", ipString) @@ -794,7 +794,7 @@ func (am *AddressManager) AddAddressByIP(addressIP string, subnetworkID *subnetw if err != nil { return errors.Errorf("invalid port %s: %s", portString, err) } - netAddress := domainmessage.NewNetAddressIPPort(ip, uint16(port), 0) + netAddress := appmessage.NewNetAddressIPPort(ip, uint16(port), 0) am.AddAddress(netAddress, netAddress, subnetworkID) // XXX use correct src address return nil } @@ -843,7 +843,7 @@ func (am *AddressManager) NeedMoreAddresses() bool { // AddressCache returns the current address cache. It must be treated as // read-only (but since it is a copy now, this is not as dangerous). -func (am *AddressManager) AddressCache(includeAllSubnetworks bool, subnetworkID *subnetworkid.SubnetworkID) []*domainmessage.NetAddress { +func (am *AddressManager) AddressCache(includeAllSubnetworks bool, subnetworkID *subnetworkid.SubnetworkID) []*appmessage.NetAddress { am.mutex.Lock() defer am.mutex.Unlock() @@ -851,7 +851,7 @@ func (am *AddressManager) AddressCache(includeAllSubnetworks bool, subnetworkID return nil } - allAddresses := []*domainmessage.NetAddress{} + allAddresses := []*appmessage.NetAddress{} // Iteration order is undefined here, but we randomise it anyway. for _, v := range am.addressIndex { if includeAllSubnetworks || v.SubnetworkID().IsEqual(subnetworkID) { @@ -907,7 +907,7 @@ func (am *AddressManager) reset() { // HostToNetAddress returns a netaddress given a host address. If // the host is not an IP address it will be resolved. -func (am *AddressManager) HostToNetAddress(host string, port uint16, services domainmessage.ServiceFlag) (*domainmessage.NetAddress, error) { +func (am *AddressManager) HostToNetAddress(host string, port uint16, services appmessage.ServiceFlag) (*appmessage.NetAddress, error) { ip := net.ParseIP(host) if ip == nil { ips, err := am.lookupFunc(host) @@ -920,12 +920,12 @@ func (am *AddressManager) HostToNetAddress(host string, port uint16, services do ip = ips[0] } - return domainmessage.NewNetAddressIPPort(ip, port, services), nil + return appmessage.NewNetAddressIPPort(ip, port, services), nil } // NetAddressKey returns a key in the form of ip:port for IPv4 addresses // or [ip]:port for IPv6 addresses for use as keys in maps. -func NetAddressKey(netAddress *domainmessage.NetAddress) AddressKey { +func NetAddressKey(netAddress *appmessage.NetAddress) AddressKey { port := strconv.FormatUint(uint64(netAddress.Port), 10) return AddressKey(net.JoinHostPort(netAddress.IP.String(), port)) @@ -1031,13 +1031,13 @@ func (tb *triedAddressBucketArray) name() string { return "tried" } -func (am *AddressManager) knownAddress(address *domainmessage.NetAddress) *KnownAddress { +func (am *AddressManager) knownAddress(address *appmessage.NetAddress) *KnownAddress { return am.addressIndex[NetAddressKey(address)] } // Attempt increases the given address' attempt counter and updates // the last attempt time. -func (am *AddressManager) Attempt(address *domainmessage.NetAddress) { +func (am *AddressManager) Attempt(address *appmessage.NetAddress) { am.mutex.Lock() defer am.mutex.Unlock() @@ -1055,7 +1055,7 @@ func (am *AddressManager) Attempt(address *domainmessage.NetAddress) { // Connected Marks the given address as currently connected and working at the // current time. The address must already be known to AddressManager else it will // be ignored. -func (am *AddressManager) Connected(address *domainmessage.NetAddress) { +func (am *AddressManager) Connected(address *appmessage.NetAddress) { am.mutex.Lock() defer am.mutex.Unlock() @@ -1078,7 +1078,7 @@ func (am *AddressManager) Connected(address *domainmessage.NetAddress) { // Good marks the given address as good. To be called after a successful // connection and version exchange. If the address is unknown to the address // manager it will be ignored. -func (am *AddressManager) Good(address *domainmessage.NetAddress, subnetworkID *subnetworkid.SubnetworkID) { +func (am *AddressManager) Good(address *appmessage.NetAddress, subnetworkID *subnetworkid.SubnetworkID) { am.mutex.Lock() defer am.mutex.Unlock() @@ -1254,7 +1254,7 @@ func (am *AddressManager) incrementTriedAddressCount(subnetworkID *subnetworkid. // AddLocalAddress adds netAddress to the list of known local addresses to advertise // with the given priority. -func (am *AddressManager) AddLocalAddress(netAddress *domainmessage.NetAddress, priority AddressPriority) error { +func (am *AddressManager) AddLocalAddress(netAddress *appmessage.NetAddress, priority AddressPriority) error { if !am.IsRoutable(netAddress) { return errors.Errorf("address %s is not routable", netAddress.IP) } @@ -1279,7 +1279,7 @@ func (am *AddressManager) AddLocalAddress(netAddress *domainmessage.NetAddress, // getReachabilityFrom returns the relative reachability of the provided local // address to the provided remote address. -func (am *AddressManager) getReachabilityFrom(localAddress, remoteAddress *domainmessage.NetAddress) int { +func (am *AddressManager) getReachabilityFrom(localAddress, remoteAddress *appmessage.NetAddress) int { const ( Unreachable = 0 Default = iota @@ -1346,13 +1346,13 @@ func (am *AddressManager) getReachabilityFrom(localAddress, remoteAddress *domai // GetBestLocalAddress returns the most appropriate local address to use // for the given remote address. -func (am *AddressManager) GetBestLocalAddress(remoteAddress *domainmessage.NetAddress) *domainmessage.NetAddress { +func (am *AddressManager) GetBestLocalAddress(remoteAddress *appmessage.NetAddress) *appmessage.NetAddress { am.localAddressesLock.Lock() defer am.localAddressesLock.Unlock() bestReach := 0 var bestScore AddressPriority - var bestAddress *domainmessage.NetAddress + var bestAddress *appmessage.NetAddress for _, localAddress := range am.localAddresses { reach := am.getReachabilityFrom(localAddress.netAddress, remoteAddress) if reach > bestReach || @@ -1376,24 +1376,24 @@ func (am *AddressManager) GetBestLocalAddress(remoteAddress *domainmessage.NetAd } else { ip = net.IPv4zero } - services := domainmessage.SFNodeNetwork | domainmessage.SFNodeBloom - bestAddress = domainmessage.NewNetAddressIPPort(ip, 0, services) + services := appmessage.SFNodeNetwork | appmessage.SFNodeBloom + bestAddress = appmessage.NewNetAddressIPPort(ip, 0, services) } return bestAddress } // Ban marks the given address as banned -func (am *AddressManager) Ban(address *domainmessage.NetAddress) error { +func (am *AddressManager) Ban(address *appmessage.NetAddress) error { return am.setBanned(address, true, mstime.Now()) } // Unban marks the given address as not banned -func (am *AddressManager) Unban(address *domainmessage.NetAddress) error { +func (am *AddressManager) Unban(address *appmessage.NetAddress) error { return am.setBanned(address, false, mstime.Time{}) } -func (am *AddressManager) setBanned(address *domainmessage.NetAddress, isBanned bool, bannedTime mstime.Time) error { +func (am *AddressManager) setBanned(address *appmessage.NetAddress, isBanned bool, bannedTime mstime.Time) error { am.localAddressesLock.Lock() defer am.localAddressesLock.Unlock() @@ -1408,7 +1408,7 @@ func (am *AddressManager) setBanned(address *domainmessage.NetAddress, isBanned } // IsBanned returns whether the given address is banned -func (am *AddressManager) IsBanned(address *domainmessage.NetAddress) (bool, error) { +func (am *AddressManager) IsBanned(address *appmessage.NetAddress) (bool, error) { am.localAddressesLock.Lock() defer am.localAddressesLock.Unlock() diff --git a/network/addressmanager/addressmanager_test.go b/infrastructure/network/addressmanager/addressmanager_test.go similarity index 86% rename from network/addressmanager/addressmanager_test.go rename to infrastructure/network/addressmanager/addressmanager_test.go index 59cd3f1ed..97a3b9e82 100644 --- a/network/addressmanager/addressmanager_test.go +++ b/infrastructure/network/addressmanager/addressmanager_test.go @@ -6,7 +6,7 @@ package addressmanager import ( "fmt" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "io/ioutil" "net" "reflect" @@ -14,7 +14,7 @@ import ( "time" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/util/mstime" "github.com/kaspanet/kaspad/util/subnetworkid" @@ -24,7 +24,7 @@ import ( // naTest is used to describe a test to be performed against the NetAddressKey // method. type naTest struct { - in domainmessage.NetAddress + in appmessage.NetAddress want AddressKey } @@ -98,7 +98,7 @@ func addNaTests() { func addNaTest(ip string, port uint16, want AddressKey) { nip := net.ParseIP(ip) - na := *domainmessage.NewNetAddressIPPort(nip, port, domainmessage.SFNodeNetwork) + na := *appmessage.NewNetAddressIPPort(nip, port, appmessage.SFNodeNetwork) test := naTest{na, want} naTests = append(naTests, test) } @@ -193,37 +193,37 @@ func TestAddAddressByIP(t *testing.T) { func TestAddLocalAddress(t *testing.T) { var tests = []struct { - address domainmessage.NetAddress + address appmessage.NetAddress priority AddressPriority valid bool }{ { - domainmessage.NetAddress{IP: net.ParseIP("192.168.0.100")}, + appmessage.NetAddress{IP: net.ParseIP("192.168.0.100")}, InterfacePrio, false, }, { - domainmessage.NetAddress{IP: net.ParseIP("204.124.1.1")}, + appmessage.NetAddress{IP: net.ParseIP("204.124.1.1")}, InterfacePrio, true, }, { - domainmessage.NetAddress{IP: net.ParseIP("204.124.1.1")}, + appmessage.NetAddress{IP: net.ParseIP("204.124.1.1")}, BoundPrio, true, }, { - domainmessage.NetAddress{IP: net.ParseIP("::1")}, + appmessage.NetAddress{IP: net.ParseIP("::1")}, InterfacePrio, false, }, { - domainmessage.NetAddress{IP: net.ParseIP("fe80::1")}, + appmessage.NetAddress{IP: net.ParseIP("fe80::1")}, InterfacePrio, false, }, { - domainmessage.NetAddress{IP: net.ParseIP("2620:100::1")}, + appmessage.NetAddress{IP: net.ParseIP("2620:100::1")}, InterfacePrio, true, }, @@ -297,7 +297,7 @@ func TestNeedMoreAddresses(t *testing.T) { if !b { t.Errorf("Expected that we need more addresses") } - addrs := make([]*domainmessage.NetAddress, addrsToAdd) + addrs := make([]*appmessage.NetAddress, addrsToAdd) var err error for i := 0; i < addrsToAdd; i++ { @@ -308,7 +308,7 @@ func TestNeedMoreAddresses(t *testing.T) { } } - srcAddr := domainmessage.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0) + srcAddr := appmessage.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0) amgr.AddAddresses(addrs, srcAddr, nil) numAddrs := amgr.TotalNumAddresses() @@ -326,7 +326,7 @@ func TestGood(t *testing.T) { amgr, teardown := newAddrManagerForTest(t, "TestGood", nil) defer teardown() addrsToAdd := 64 * 64 - addrs := make([]*domainmessage.NetAddress, addrsToAdd) + addrs := make([]*appmessage.NetAddress, addrsToAdd) subnetworkCount := 32 subnetworkIDs := make([]*subnetworkid.SubnetworkID, subnetworkCount) @@ -343,7 +343,7 @@ func TestGood(t *testing.T) { subnetworkIDs[i] = &subnetworkid.SubnetworkID{0xff - byte(i)} } - srcAddr := domainmessage.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0) + srcAddr := appmessage.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0) amgr.AddAddresses(addrs, srcAddr, nil) for i, addr := range addrs { @@ -373,9 +373,9 @@ func TestGood(t *testing.T) { func TestGoodChangeSubnetworkID(t *testing.T) { amgr, teardown := newAddrManagerForTest(t, "TestGoodChangeSubnetworkID", nil) defer teardown() - addr := domainmessage.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0) + addr := appmessage.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0) addrKey := NetAddressKey(addr) - srcAddr := domainmessage.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0) + srcAddr := appmessage.NewNetAddressIPPort(net.IPv4(173, 144, 173, 111), 8333, 0) oldSubnetwork := subnetworkid.SubnetworkIDNative amgr.AddAddress(addr, srcAddr, oldSubnetwork) @@ -514,7 +514,7 @@ func TestGetAddress(t *testing.T) { } func TestGetBestLocalAddress(t *testing.T) { - localAddrs := []domainmessage.NetAddress{ + localAddrs := []appmessage.NetAddress{ {IP: net.ParseIP("192.168.0.100")}, {IP: net.ParseIP("::1")}, {IP: net.ParseIP("fe80::1")}, @@ -522,43 +522,43 @@ func TestGetBestLocalAddress(t *testing.T) { } var tests = []struct { - remoteAddr domainmessage.NetAddress - want0 domainmessage.NetAddress - want1 domainmessage.NetAddress - want2 domainmessage.NetAddress - want3 domainmessage.NetAddress + remoteAddr appmessage.NetAddress + want0 appmessage.NetAddress + want1 appmessage.NetAddress + want2 appmessage.NetAddress + want3 appmessage.NetAddress }{ { // Remote connection from public IPv4 - domainmessage.NetAddress{IP: net.ParseIP("204.124.8.1")}, - domainmessage.NetAddress{IP: net.IPv4zero}, - domainmessage.NetAddress{IP: net.IPv4zero}, - domainmessage.NetAddress{IP: net.ParseIP("204.124.8.100")}, - domainmessage.NetAddress{IP: net.ParseIP("fd87:d87e:eb43:25::1")}, + appmessage.NetAddress{IP: net.ParseIP("204.124.8.1")}, + appmessage.NetAddress{IP: net.IPv4zero}, + appmessage.NetAddress{IP: net.IPv4zero}, + appmessage.NetAddress{IP: net.ParseIP("204.124.8.100")}, + appmessage.NetAddress{IP: net.ParseIP("fd87:d87e:eb43:25::1")}, }, { // Remote connection from private IPv4 - domainmessage.NetAddress{IP: net.ParseIP("172.16.0.254")}, - domainmessage.NetAddress{IP: net.IPv4zero}, - domainmessage.NetAddress{IP: net.IPv4zero}, - domainmessage.NetAddress{IP: net.IPv4zero}, - domainmessage.NetAddress{IP: net.IPv4zero}, + appmessage.NetAddress{IP: net.ParseIP("172.16.0.254")}, + appmessage.NetAddress{IP: net.IPv4zero}, + appmessage.NetAddress{IP: net.IPv4zero}, + appmessage.NetAddress{IP: net.IPv4zero}, + appmessage.NetAddress{IP: net.IPv4zero}, }, { // Remote connection from public IPv6 - domainmessage.NetAddress{IP: net.ParseIP("2602:100:abcd::102")}, - domainmessage.NetAddress{IP: net.IPv6zero}, - domainmessage.NetAddress{IP: net.ParseIP("2001:470::1")}, - domainmessage.NetAddress{IP: net.ParseIP("2001:470::1")}, - domainmessage.NetAddress{IP: net.ParseIP("2001:470::1")}, + appmessage.NetAddress{IP: net.ParseIP("2602:100:abcd::102")}, + appmessage.NetAddress{IP: net.IPv6zero}, + appmessage.NetAddress{IP: net.ParseIP("2001:470::1")}, + appmessage.NetAddress{IP: net.ParseIP("2001:470::1")}, + appmessage.NetAddress{IP: net.ParseIP("2001:470::1")}, }, /* XXX { // Remote connection from Tor - domainmessage.NetAddress{IP: net.ParseIP("fd87:d87e:eb43::100")}, - domainmessage.NetAddress{IP: net.IPv4zero}, - domainmessage.NetAddress{IP: net.ParseIP("204.124.8.100")}, - domainmessage.NetAddress{IP: net.ParseIP("fd87:d87e:eb43:25::1")}, + appmessage.NetAddress{IP: net.ParseIP("fd87:d87e:eb43::100")}, + appmessage.NetAddress{IP: net.IPv4zero}, + appmessage.NetAddress{IP: net.ParseIP("204.124.8.100")}, + appmessage.NetAddress{IP: net.ParseIP("fd87:d87e:eb43:25::1")}, }, */ } @@ -591,7 +591,7 @@ func TestGetBestLocalAddress(t *testing.T) { } // Add a public IP to the list of local addresses. - localAddr := domainmessage.NetAddress{IP: net.ParseIP("204.124.8.100")} + localAddr := appmessage.NetAddress{IP: net.ParseIP("204.124.8.100")} amgr.AddLocalAddress(&localAddr, InterfacePrio) // Test against want2 @@ -605,7 +605,7 @@ func TestGetBestLocalAddress(t *testing.T) { } /* // Add a Tor generated IP address - localAddr = domainmessage.NetAddress{IP: net.ParseIP("fd87:d87e:eb43:25::1")} + localAddr = appmessage.NetAddress{IP: net.ParseIP("fd87:d87e:eb43:25::1")} amgr.AddLocalAddress(&localAddr, ManualPrio) // Test against want3 for x, test := range tests { diff --git a/network/addressmanager/doc.go b/infrastructure/network/addressmanager/doc.go similarity index 100% rename from network/addressmanager/doc.go rename to infrastructure/network/addressmanager/doc.go diff --git a/network/addressmanager/internal_test.go b/infrastructure/network/addressmanager/internal_test.go similarity index 83% rename from network/addressmanager/internal_test.go rename to infrastructure/network/addressmanager/internal_test.go index 29e304959..51500f26f 100644 --- a/network/addressmanager/internal_test.go +++ b/infrastructure/network/addressmanager/internal_test.go @@ -5,7 +5,7 @@ package addressmanager import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/mstime" ) @@ -17,7 +17,7 @@ func TstKnownAddressChance(ka *KnownAddress) float64 { return ka.chance() } -func TstNewKnownAddress(na *domainmessage.NetAddress, attempts int, +func TstNewKnownAddress(na *appmessage.NetAddress, attempts int, lastattempt, lastsuccess mstime.Time, tried bool, refs int) *KnownAddress { return &KnownAddress{netAddress: na, attempts: attempts, lastAttempt: lastattempt, lastSuccess: lastsuccess, tried: tried, referenceCount: refs} diff --git a/network/addressmanager/knownaddress.go b/infrastructure/network/addressmanager/knownaddress.go similarity index 90% rename from network/addressmanager/knownaddress.go rename to infrastructure/network/addressmanager/knownaddress.go index 6ca6c6690..9e83e2801 100644 --- a/network/addressmanager/knownaddress.go +++ b/infrastructure/network/addressmanager/knownaddress.go @@ -5,7 +5,7 @@ package addressmanager import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/mstime" "time" @@ -15,8 +15,8 @@ import ( // KnownAddress tracks information about a known network address that is used // to determine how viable an address is. type KnownAddress struct { - netAddress *domainmessage.NetAddress - sourceAddress *domainmessage.NetAddress + netAddress *appmessage.NetAddress + sourceAddress *appmessage.NetAddress attempts int lastAttempt mstime.Time lastSuccess mstime.Time @@ -27,9 +27,9 @@ type KnownAddress struct { bannedTime mstime.Time } -// NetAddress returns the underlying domainmessage.NetAddress associated with the +// NetAddress returns the underlying appmessage.NetAddress associated with the // known address. -func (ka *KnownAddress) NetAddress() *domainmessage.NetAddress { +func (ka *KnownAddress) NetAddress() *appmessage.NetAddress { return ka.netAddress } diff --git a/network/addressmanager/knownaddress_test.go b/infrastructure/network/addressmanager/knownaddress_test.go similarity index 81% rename from network/addressmanager/knownaddress_test.go rename to infrastructure/network/addressmanager/knownaddress_test.go index bf2a6096d..5a439d5a4 100644 --- a/network/addressmanager/knownaddress_test.go +++ b/infrastructure/network/addressmanager/knownaddress_test.go @@ -5,13 +5,13 @@ package addressmanager_test import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/mstime" "math" "testing" "time" - "github.com/kaspanet/kaspad/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" ) func TestChance(t *testing.T) { @@ -22,27 +22,27 @@ func TestChance(t *testing.T) { }{ { //Test normal case - addressmanager.TstNewKnownAddress(&domainmessage.NetAddress{Timestamp: now.Add(-35 * time.Second)}, + addressmanager.TstNewKnownAddress(&appmessage.NetAddress{Timestamp: now.Add(-35 * time.Second)}, 0, mstime.Now().Add(-30*time.Minute), mstime.Now(), false, 0), 1.0, }, { //Test case in which lastseen < 0 - addressmanager.TstNewKnownAddress(&domainmessage.NetAddress{Timestamp: now.Add(20 * time.Second)}, + addressmanager.TstNewKnownAddress(&appmessage.NetAddress{Timestamp: now.Add(20 * time.Second)}, 0, mstime.Now().Add(-30*time.Minute), mstime.Now(), false, 0), 1.0, }, { //Test case in which lastAttempt < 0 - addressmanager.TstNewKnownAddress(&domainmessage.NetAddress{Timestamp: now.Add(-35 * time.Second)}, + addressmanager.TstNewKnownAddress(&appmessage.NetAddress{Timestamp: now.Add(-35 * time.Second)}, 0, mstime.Now().Add(30*time.Minute), mstime.Now(), false, 0), 1.0 * .01, }, { //Test case in which lastAttempt < ten minutes - addressmanager.TstNewKnownAddress(&domainmessage.NetAddress{Timestamp: now.Add(-35 * time.Second)}, + addressmanager.TstNewKnownAddress(&appmessage.NetAddress{Timestamp: now.Add(-35 * time.Second)}, 0, mstime.Now().Add(-5*time.Minute), mstime.Now(), false, 0), 1.0 * .01, }, { //Test case with several failed attempts. - addressmanager.TstNewKnownAddress(&domainmessage.NetAddress{Timestamp: now.Add(-35 * time.Second)}, + addressmanager.TstNewKnownAddress(&appmessage.NetAddress{Timestamp: now.Add(-35 * time.Second)}, 2, mstime.Now().Add(-30*time.Minute), mstime.Now(), false, 0), 1 / 1.5 / 1.5, }, @@ -66,10 +66,10 @@ func TestIsBad(t *testing.T) { hoursOld := now.Add(-5 * time.Hour) zeroTime := mstime.Time{} - futureNa := &domainmessage.NetAddress{Timestamp: future} - minutesOldNa := &domainmessage.NetAddress{Timestamp: minutesOld} - monthOldNa := &domainmessage.NetAddress{Timestamp: monthOld} - currentNa := &domainmessage.NetAddress{Timestamp: secondsOld} + futureNa := &appmessage.NetAddress{Timestamp: future} + minutesOldNa := &appmessage.NetAddress{Timestamp: minutesOld} + monthOldNa := &appmessage.NetAddress{Timestamp: monthOld} + currentNa := &appmessage.NetAddress{Timestamp: secondsOld} //Test addresses that have been tried in the last minute. if addressmanager.TstKnownAddressIsBad(addressmanager.TstNewKnownAddress(futureNa, 3, secondsOld, zeroTime, false, 0)) { diff --git a/network/addressmanager/log.go b/infrastructure/network/addressmanager/log.go similarity index 100% rename from network/addressmanager/log.go rename to infrastructure/network/addressmanager/log.go diff --git a/network/addressmanager/network.go b/infrastructure/network/addressmanager/network.go similarity index 88% rename from network/addressmanager/network.go rename to infrastructure/network/addressmanager/network.go index 918a096bb..262409354 100644 --- a/network/addressmanager/network.go +++ b/infrastructure/network/addressmanager/network.go @@ -5,7 +5,7 @@ package addressmanager import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "net" ) @@ -85,19 +85,19 @@ func ipNet(ip string, ones, bits int) net.IPNet { } // IsIPv4 returns whether or not the given address is an IPv4 address. -func IsIPv4(na *domainmessage.NetAddress) bool { +func IsIPv4(na *appmessage.NetAddress) bool { return na.IP.To4() != nil } // IsLocal returns whether or not the given address is a local address. -func IsLocal(na *domainmessage.NetAddress) bool { +func IsLocal(na *appmessage.NetAddress) bool { return na.IP.IsLoopback() || zero4Net.Contains(na.IP) } // IsRFC1918 returns whether or not the passed address is part of the IPv4 // private network address space as defined by RFC1918 (10.0.0.0/8, // 172.16.0.0/12, or 192.168.0.0/16). -func IsRFC1918(na *domainmessage.NetAddress) bool { +func IsRFC1918(na *appmessage.NetAddress) bool { for _, rfc := range rfc1918Nets { if rfc.Contains(na.IP) { return true @@ -108,56 +108,56 @@ func IsRFC1918(na *domainmessage.NetAddress) bool { // IsRFC2544 returns whether or not the passed address is part of the IPv4 // address space as defined by RFC2544 (198.18.0.0/15) -func IsRFC2544(na *domainmessage.NetAddress) bool { +func IsRFC2544(na *appmessage.NetAddress) bool { return rfc2544Net.Contains(na.IP) } // IsRFC3849 returns whether or not the passed address is part of the IPv6 // documentation range as defined by RFC3849 (2001:DB8::/32). -func IsRFC3849(na *domainmessage.NetAddress) bool { +func IsRFC3849(na *appmessage.NetAddress) bool { return rfc3849Net.Contains(na.IP) } // IsRFC3927 returns whether or not the passed address is part of the IPv4 // autoconfiguration range as defined by RFC3927 (169.254.0.0/16). -func IsRFC3927(na *domainmessage.NetAddress) bool { +func IsRFC3927(na *appmessage.NetAddress) bool { return rfc3927Net.Contains(na.IP) } // IsRFC3964 returns whether or not the passed address is part of the IPv6 to // IPv4 encapsulation range as defined by RFC3964 (2002::/16). -func IsRFC3964(na *domainmessage.NetAddress) bool { +func IsRFC3964(na *appmessage.NetAddress) bool { return rfc3964Net.Contains(na.IP) } // IsRFC4193 returns whether or not the passed address is part of the IPv6 // unique local range as defined by RFC4193 (FC00::/7). -func IsRFC4193(na *domainmessage.NetAddress) bool { +func IsRFC4193(na *appmessage.NetAddress) bool { return rfc4193Net.Contains(na.IP) } // IsRFC4380 returns whether or not the passed address is part of the IPv6 // teredo tunneling over UDP range as defined by RFC4380 (2001::/32). -func IsRFC4380(na *domainmessage.NetAddress) bool { +func IsRFC4380(na *appmessage.NetAddress) bool { return rfc4380Net.Contains(na.IP) } // IsRFC4843 returns whether or not the passed address is part of the IPv6 // ORCHID range as defined by RFC4843 (2001:10::/28). -func IsRFC4843(na *domainmessage.NetAddress) bool { +func IsRFC4843(na *appmessage.NetAddress) bool { return rfc4843Net.Contains(na.IP) } // IsRFC4862 returns whether or not the passed address is part of the IPv6 // stateless address autoconfiguration range as defined by RFC4862 (FE80::/64). -func IsRFC4862(na *domainmessage.NetAddress) bool { +func IsRFC4862(na *appmessage.NetAddress) bool { return rfc4862Net.Contains(na.IP) } // IsRFC5737 returns whether or not the passed address is part of the IPv4 // documentation address space as defined by RFC5737 (192.0.2.0/24, // 198.51.100.0/24, 203.0.113.0/24) -func IsRFC5737(na *domainmessage.NetAddress) bool { +func IsRFC5737(na *appmessage.NetAddress) bool { for _, rfc := range rfc5737Net { if rfc.Contains(na.IP) { return true @@ -169,19 +169,19 @@ func IsRFC5737(na *domainmessage.NetAddress) bool { // IsRFC6052 returns whether or not the passed address is part of the IPv6 // well-known prefix range as defined by RFC6052 (64:FF9B::/96). -func IsRFC6052(na *domainmessage.NetAddress) bool { +func IsRFC6052(na *appmessage.NetAddress) bool { return rfc6052Net.Contains(na.IP) } // IsRFC6145 returns whether or not the passed address is part of the IPv6 to // IPv4 translated address range as defined by RFC6145 (::FFFF:0:0:0/96). -func IsRFC6145(na *domainmessage.NetAddress) bool { +func IsRFC6145(na *appmessage.NetAddress) bool { return rfc6145Net.Contains(na.IP) } // IsRFC6598 returns whether or not the passed address is part of the IPv4 // shared address space specified by RFC6598 (100.64.0.0/10) -func IsRFC6598(na *domainmessage.NetAddress) bool { +func IsRFC6598(na *appmessage.NetAddress) bool { return rfc6598Net.Contains(na.IP) } @@ -189,7 +189,7 @@ func IsRFC6598(na *domainmessage.NetAddress) bool { // considered invalid under the following circumstances: // IPv4: It is either a zero or all bits set address. // IPv6: It is either a zero or RFC3849 documentation address. -func IsValid(na *domainmessage.NetAddress) bool { +func IsValid(na *appmessage.NetAddress) bool { // IsUnspecified returns if address is 0, so only all bits set, and // RFC3849 need to be explicitly checked. return na.IP != nil && !(na.IP.IsUnspecified() || @@ -199,7 +199,7 @@ func IsValid(na *domainmessage.NetAddress) bool { // IsRoutable returns whether or not the passed address is routable over // the public internet. This is true as long as the address is valid and is not // in any reserved ranges. -func (am *AddressManager) IsRoutable(na *domainmessage.NetAddress) bool { +func (am *AddressManager) IsRoutable(na *appmessage.NetAddress) bool { if am.cfg.NetParams().AcceptUnroutable { return !IsLocal(na) } @@ -214,7 +214,7 @@ func (am *AddressManager) IsRoutable(na *domainmessage.NetAddress) bool { // of. This is the /16 for IPv4, the /32 (/36 for he.net) for IPv6, the string // "local" for a local address, and the string "unroutable" for an unroutable // address. -func (am *AddressManager) GroupKey(na *domainmessage.NetAddress) string { +func (am *AddressManager) GroupKey(na *appmessage.NetAddress) string { if IsLocal(na) { return "local" } diff --git a/network/addressmanager/network_test.go b/infrastructure/network/addressmanager/network_test.go similarity index 97% rename from network/addressmanager/network_test.go rename to infrastructure/network/addressmanager/network_test.go index 059b3baa0..e66c7750a 100644 --- a/network/addressmanager/network_test.go +++ b/infrastructure/network/addressmanager/network_test.go @@ -5,7 +5,7 @@ package addressmanager import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "net" "testing" ) @@ -16,7 +16,7 @@ func TestIPTypes(t *testing.T) { amgr, teardown := newAddrManagerForTest(t, "TestAddAddressByIP", nil) defer teardown() type ipTest struct { - in domainmessage.NetAddress + in appmessage.NetAddress rfc1918 bool rfc2544 bool rfc3849 bool @@ -39,7 +39,7 @@ func TestIPTypes(t *testing.T) { rfc4193, rfc4380, rfc4843, rfc4862, rfc5737, rfc6052, rfc6145, rfc6598, local, valid, routable bool) ipTest { nip := net.ParseIP(ip) - na := *domainmessage.NewNetAddressIPPort(nip, 16111, domainmessage.SFNodeNetwork) + na := *appmessage.NewNetAddressIPPort(nip, 16111, appmessage.SFNodeNetwork) test := ipTest{na, rfc1918, rfc2544, rfc3849, rfc3927, rfc3964, rfc4193, rfc4380, rfc4843, rfc4862, rfc5737, rfc6052, rfc6145, rfc6598, local, valid, routable} return test @@ -195,7 +195,7 @@ func TestGroupKey(t *testing.T) { for i, test := range tests { nip := net.ParseIP(test.ip) - na := *domainmessage.NewNetAddressIPPort(nip, 8333, domainmessage.SFNodeNetwork) + na := *appmessage.NewNetAddressIPPort(nip, 8333, appmessage.SFNodeNetwork) if key := amgr.GroupKey(&na); key != test.expected { t.Errorf("TestGroupKey #%d (%s): unexpected group key "+ "- got '%s', want '%s'", i, test.name, diff --git a/network/connmanager/connection_requests.go b/infrastructure/network/connmanager/connection_requests.go similarity index 100% rename from network/connmanager/connection_requests.go rename to infrastructure/network/connmanager/connection_requests.go diff --git a/network/connmanager/connection_set.go b/infrastructure/network/connmanager/connection_set.go similarity index 91% rename from network/connmanager/connection_set.go rename to infrastructure/network/connmanager/connection_set.go index 4096ffac1..4ecd73a7c 100644 --- a/network/connmanager/connection_set.go +++ b/infrastructure/network/connmanager/connection_set.go @@ -1,7 +1,7 @@ package connmanager import ( - "github.com/kaspanet/kaspad/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" ) type connectionSet map[string]*netadapter.NetConnection diff --git a/network/connmanager/connmanager.go b/infrastructure/network/connmanager/connmanager.go similarity index 96% rename from network/connmanager/connmanager.go rename to infrastructure/network/connmanager/connmanager.go index 0b2e97382..8930219c0 100644 --- a/network/connmanager/connmanager.go +++ b/infrastructure/network/connmanager/connmanager.go @@ -5,9 +5,9 @@ import ( "sync/atomic" "time" - "github.com/kaspanet/kaspad/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" - "github.com/kaspanet/kaspad/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" "github.com/kaspanet/kaspad/infrastructure/config" ) diff --git a/network/connmanager/incoming_connections.go b/infrastructure/network/connmanager/incoming_connections.go similarity index 100% rename from network/connmanager/incoming_connections.go rename to infrastructure/network/connmanager/incoming_connections.go diff --git a/network/connmanager/log.go b/infrastructure/network/connmanager/log.go similarity index 100% rename from network/connmanager/log.go rename to infrastructure/network/connmanager/log.go diff --git a/network/connmanager/outgoing_connections.go b/infrastructure/network/connmanager/outgoing_connections.go similarity index 100% rename from network/connmanager/outgoing_connections.go rename to infrastructure/network/connmanager/outgoing_connections.go diff --git a/network/dnsseed/log.go b/infrastructure/network/dnsseed/log.go similarity index 100% rename from network/dnsseed/log.go rename to infrastructure/network/dnsseed/log.go diff --git a/network/dnsseed/seed.go b/infrastructure/network/dnsseed/seed.go similarity index 87% rename from network/dnsseed/seed.go rename to infrastructure/network/dnsseed/seed.go index 149c54888..d28c9a317 100644 --- a/network/dnsseed/seed.go +++ b/infrastructure/network/dnsseed/seed.go @@ -6,7 +6,7 @@ package dnsseed import ( "fmt" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "math/rand" "net" "strconv" @@ -34,13 +34,13 @@ const ( // OnSeed is the signature of the callback function which is invoked when DNS // seeding is successful. -type OnSeed func(addrs []*domainmessage.NetAddress) +type OnSeed func(addrs []*appmessage.NetAddress) // LookupFunc is the signature of the DNS lookup function. type LookupFunc func(string) ([]net.IP, error) // SeedFromDNS uses DNS seeding to populate the address manager with peers. -func SeedFromDNS(dagParams *dagconfig.Params, customSeed string, reqServices domainmessage.ServiceFlag, includeAllSubnetworks bool, +func SeedFromDNS(dagParams *dagconfig.Params, customSeed string, reqServices appmessage.ServiceFlag, includeAllSubnetworks bool, subnetworkID *subnetworkid.SubnetworkID, lookupFn LookupFunc, seedFn OnSeed) { var dnsSeeds []string @@ -52,7 +52,7 @@ func SeedFromDNS(dagParams *dagconfig.Params, customSeed string, reqServices dom for _, dnsseed := range dnsSeeds { var host string - if reqServices == domainmessage.SFNodeNetwork { + if reqServices == appmessage.SFNodeNetwork { host = dnsseed } else { host = fmt.Sprintf("%c%x.%s", ServiceFlagPrefixChar, uint64(reqServices), dnsseed) @@ -81,11 +81,11 @@ func SeedFromDNS(dagParams *dagconfig.Params, customSeed string, reqServices dom if numPeers == 0 { return } - addresses := make([]*domainmessage.NetAddress, len(seedPeers)) + addresses := make([]*appmessage.NetAddress, len(seedPeers)) // if this errors then we have *real* problems intPort, _ := strconv.Atoi(dagParams.DefaultPort) for i, peer := range seedPeers { - addresses[i] = domainmessage.NewNetAddressTimestamp( + addresses[i] = appmessage.NewNetAddressTimestamp( // seed with addresses from a time randomly selected // between 3 and 7 days ago. mstime.Now().Add(-1*time.Second*time.Duration(secondsIn3Days+ diff --git a/network/netadapter/id/id.go b/infrastructure/network/netadapter/id/id.go similarity index 100% rename from network/netadapter/id/id.go rename to infrastructure/network/netadapter/id/id.go diff --git a/network/netadapter/log.go b/infrastructure/network/netadapter/log.go similarity index 100% rename from network/netadapter/log.go rename to infrastructure/network/netadapter/log.go diff --git a/network/netadapter/netadapter.go b/infrastructure/network/netadapter/netadapter.go similarity index 88% rename from network/netadapter/netadapter.go rename to infrastructure/network/netadapter/netadapter.go index 71688cf43..11f5bd6a4 100644 --- a/network/netadapter/netadapter.go +++ b/infrastructure/network/netadapter/netadapter.go @@ -6,12 +6,12 @@ import ( "sync" "sync/atomic" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/id" - routerpkg "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/netadapter/server" - "github.com/kaspanet/kaspad/network/netadapter/server/grpcserver" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" + routerpkg "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server/grpcserver" "github.com/pkg/errors" ) @@ -143,7 +143,7 @@ func (na *NetAdapter) ID() *id.ID { // Broadcast sends the given `message` to every peer corresponding // to each NetConnection in the given netConnections -func (na *NetAdapter) Broadcast(netConnections []*NetConnection, message domainmessage.Message) error { +func (na *NetAdapter) Broadcast(netConnections []*NetConnection, message appmessage.Message) error { na.connectionsLock.RLock() defer na.connectionsLock.RUnlock() @@ -162,7 +162,7 @@ func (na *NetAdapter) Broadcast(netConnections []*NetConnection, message domainm // GetBestLocalAddress returns the most appropriate local address to use // for the given remote address. -func (na *NetAdapter) GetBestLocalAddress() (*domainmessage.NetAddress, error) { +func (na *NetAdapter) GetBestLocalAddress() (*appmessage.NetAddress, error) { if len(na.cfg.ExternalIPs) > 0 { host, portString, err := net.SplitHostPort(na.cfg.ExternalIPs[0]) if err != nil { @@ -184,7 +184,7 @@ func (na *NetAdapter) GetBestLocalAddress() (*domainmessage.NetAddress, error) { return nil, errors.Errorf("Cannot resolve IP address for host '%s'", host) } } - return domainmessage.NewNetAddressIPPort(ip, uint16(portInt), domainmessage.SFNodeNetwork), nil + return appmessage.NewNetAddressIPPort(ip, uint16(portInt), appmessage.SFNodeNetwork), nil } listenAddress := na.cfg.Listeners[0] @@ -209,7 +209,7 @@ func (na *NetAdapter) GetBestLocalAddress() (*domainmessage.NetAddress, error) { continue } - return domainmessage.NewNetAddressIPPort(ip, uint16(portInt), domainmessage.SFNodeNetwork), nil + return appmessage.NewNetAddressIPPort(ip, uint16(portInt), appmessage.SFNodeNetwork), nil } return nil, errors.New("no address was found") } diff --git a/network/netadapter/netadapter_test.go b/infrastructure/network/netadapter/netadapter_test.go similarity index 86% rename from network/netadapter/netadapter_test.go rename to infrastructure/network/netadapter/netadapter_test.go index 134aa92dc..a04254494 100644 --- a/network/netadapter/netadapter_test.go +++ b/infrastructure/network/netadapter/netadapter_test.go @@ -6,10 +6,10 @@ import ( "testing" "time" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" ) // routerInitializerForTest returns new RouterInitializer which simply sets @@ -17,7 +17,7 @@ import ( func routerInitializerForTest(t *testing.T, routes *sync.Map, routeName string, wg *sync.WaitGroup) func(*router.Router, *NetConnection) { return func(router *router.Router, connection *NetConnection) { - route, err := router.AddIncomingRoute([]domainmessage.MessageCommand{domainmessage.CmdPing}) + route, err := router.AddIncomingRoute([]appmessage.MessageCommand{appmessage.CmdPing}) if err != nil { t.Fatalf("TestNetAdapter: AddIncomingRoute failed: %+v", err) } @@ -102,7 +102,7 @@ func TestNetAdapter(t *testing.T) { // Ensure all connected peers have received broadcasted message connections := adapterA.Connections() - err = adapterA.Broadcast(connections, domainmessage.NewMsgPing(1)) + err = adapterA.Broadcast(connections, appmessage.NewMsgPing(1)) if err != nil { t.Fatalf("TestNetAdapter: broadcast failed: %+v", err) } @@ -120,10 +120,10 @@ func TestNetAdapter(t *testing.T) { t.Fatalf("TestNetAdapter: dequeuing message failed: %+v", err) } - if command := msg.Command(); command != domainmessage.CmdPing { + if command := msg.Command(); command != appmessage.CmdPing { t.Fatalf("TestNetAdapter: expected '%s' message to be received but got '%s'", - domainmessage.MessageCommandToString[domainmessage.CmdPing], - domainmessage.MessageCommandToString[command]) + appmessage.MessageCommandToString[appmessage.CmdPing], + appmessage.MessageCommandToString[command]) } if number := msg.MessageNumber(); number != nonce { @@ -140,10 +140,10 @@ func TestNetAdapter(t *testing.T) { t.Fatalf("TestNetAdapter: dequeuing message failed: %+v", err) } - if command := msg.Command(); command != domainmessage.CmdPing { + if command := msg.Command(); command != appmessage.CmdPing { t.Fatalf("TestNetAdapter: expected '%s' message to be received but got '%s'", - domainmessage.MessageCommandToString[domainmessage.CmdPing], - domainmessage.MessageCommandToString[command]) + appmessage.MessageCommandToString[appmessage.CmdPing], + appmessage.MessageCommandToString[command]) } if number := msg.MessageNumber(); number != nonce { diff --git a/network/netadapter/netconnection.go b/infrastructure/network/netadapter/netconnection.go similarity index 86% rename from network/netadapter/netconnection.go rename to infrastructure/network/netadapter/netconnection.go index db1212e41..aa45def53 100644 --- a/network/netadapter/netconnection.go +++ b/infrastructure/network/netadapter/netconnection.go @@ -2,12 +2,12 @@ package netadapter import ( "fmt" - "github.com/kaspanet/kaspad/network/domainmessage" - routerpkg "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/app/appmessage" + routerpkg "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/pkg/errors" - "github.com/kaspanet/kaspad/network/netadapter/id" - "github.com/kaspanet/kaspad/network/netadapter/server" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server" ) // NetConnection is a wrapper to a server connection for use by services external to NetAdapter @@ -81,8 +81,8 @@ func (c *NetConnection) IsOutbound() bool { } // NetAddress returns the NetAddress associated with this connection -func (c *NetConnection) NetAddress() *domainmessage.NetAddress { - return domainmessage.NewNetAddress(c.connection.Address(), 0) +func (c *NetConnection) NetAddress() *appmessage.NetAddress { + return appmessage.NewNetAddress(c.connection.Address(), 0) } func (c *NetConnection) setOnDisconnectedHandler(onDisconnectedHandler server.OnDisconnectedHandler) { diff --git a/network/netadapter/router/route.go b/infrastructure/network/netadapter/router/route.go similarity index 84% rename from network/netadapter/router/route.go rename to infrastructure/network/netadapter/router/route.go index de248e9aa..6a04cab93 100644 --- a/network/netadapter/router/route.go +++ b/infrastructure/network/netadapter/router/route.go @@ -4,9 +4,9 @@ import ( "sync" "time" - "github.com/kaspanet/kaspad/network/protocol/protocolerrors" + "github.com/kaspanet/kaspad/app/protocol/protocolerrors" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/pkg/errors" ) @@ -29,7 +29,7 @@ type onCapacityReachedHandler func() // Route represents an incoming or outgoing Router route type Route struct { - channel chan domainmessage.Message + channel chan appmessage.Message // closed and closeLock are used to protect us from writing to a closed channel // reads use the channel's built-in mechanism to check if the channel is closed closed bool @@ -45,13 +45,13 @@ func NewRoute() *Route { func newRouteWithCapacity(capacity int) *Route { return &Route{ - channel: make(chan domainmessage.Message, capacity), + channel: make(chan appmessage.Message, capacity), closed: false, } } // Enqueue enqueues a message to the Route -func (r *Route) Enqueue(message domainmessage.Message) error { +func (r *Route) Enqueue(message appmessage.Message) error { r.closeLock.Lock() defer r.closeLock.Unlock() @@ -66,7 +66,7 @@ func (r *Route) Enqueue(message domainmessage.Message) error { } // Dequeue dequeues a message from the Route -func (r *Route) Dequeue() (domainmessage.Message, error) { +func (r *Route) Dequeue() (appmessage.Message, error) { message, isOpen := <-r.channel if !isOpen { return nil, errors.WithStack(ErrRouteClosed) @@ -76,7 +76,7 @@ func (r *Route) Dequeue() (domainmessage.Message, error) { // DequeueWithTimeout attempts to dequeue a message from the Route // and returns an error if the given timeout expires first. -func (r *Route) DequeueWithTimeout(timeout time.Duration) (domainmessage.Message, error) { +func (r *Route) DequeueWithTimeout(timeout time.Duration) (appmessage.Message, error) { select { case <-time.After(timeout): return nil, errors.Wrapf(ErrTimeout, "got timeout after %s", timeout) diff --git a/network/netadapter/router/router.go b/infrastructure/network/netadapter/router/router.go similarity index 77% rename from network/netadapter/router/router.go rename to infrastructure/network/netadapter/router/router.go index 6e1ae3073..8461341ff 100644 --- a/network/netadapter/router/router.go +++ b/infrastructure/network/netadapter/router/router.go @@ -3,11 +3,11 @@ package router import ( "sync" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/pkg/errors" ) -const outgoingRouteMaxMessages = domainmessage.MaxInvPerMsg + DefaultMaxMessages +const outgoingRouteMaxMessages = appmessage.MaxInvPerMsg + DefaultMaxMessages // OnRouteCapacityReachedHandler is a function that is to // be called when one of the routes reaches capacity. @@ -16,7 +16,7 @@ type OnRouteCapacityReachedHandler func() // Router routes messages by type to their respective // input channels type Router struct { - incomingRoutes map[domainmessage.MessageCommand]*Route + incomingRoutes map[appmessage.MessageCommand]*Route incomingRoutesLock sync.RWMutex outgoingRoute *Route @@ -27,7 +27,7 @@ type Router struct { // NewRouter creates a new empty router func NewRouter() *Router { router := Router{ - incomingRoutes: make(map[domainmessage.MessageCommand]*Route), + incomingRoutes: make(map[appmessage.MessageCommand]*Route), outgoingRoute: newRouteWithCapacity(outgoingRouteMaxMessages), } router.outgoingRoute.setOnCapacityReachedHandler(func() { @@ -44,7 +44,7 @@ func (r *Router) SetOnRouteCapacityReachedHandler(onRouteCapacityReachedHandler // AddIncomingRoute registers the messages of types `messageTypes` to // be routed to the given `route` -func (r *Router) AddIncomingRoute(messageTypes []domainmessage.MessageCommand) (*Route, error) { +func (r *Router) AddIncomingRoute(messageTypes []appmessage.MessageCommand) (*Route, error) { route := NewRoute() for _, messageType := range messageTypes { if r.doesIncomingRouteExist(messageType) { @@ -60,7 +60,7 @@ func (r *Router) AddIncomingRoute(messageTypes []domainmessage.MessageCommand) ( // RemoveRoute unregisters the messages of types `messageTypes` from // the router -func (r *Router) RemoveRoute(messageTypes []domainmessage.MessageCommand) error { +func (r *Router) RemoveRoute(messageTypes []appmessage.MessageCommand) error { for _, messageType := range messageTypes { if !r.doesIncomingRouteExist(messageType) { return errors.Errorf("a route for '%s' does not exist", messageType) @@ -72,7 +72,7 @@ func (r *Router) RemoveRoute(messageTypes []domainmessage.MessageCommand) error // EnqueueIncomingMessage enqueues the given message to the // appropriate route -func (r *Router) EnqueueIncomingMessage(message domainmessage.Message) error { +func (r *Router) EnqueueIncomingMessage(message appmessage.Message) error { route, ok := r.incomingRoute(message.Command()) if !ok { return errors.Errorf("a route for '%s' does not exist", message.Command()) @@ -101,7 +101,7 @@ func (r *Router) Close() { r.outgoingRoute.Close() } -func (r *Router) incomingRoute(messageType domainmessage.MessageCommand) (*Route, bool) { +func (r *Router) incomingRoute(messageType appmessage.MessageCommand) (*Route, bool) { r.incomingRoutesLock.RLock() defer r.incomingRoutesLock.RUnlock() @@ -109,7 +109,7 @@ func (r *Router) incomingRoute(messageType domainmessage.MessageCommand) (*Route return route, ok } -func (r *Router) doesIncomingRouteExist(messageType domainmessage.MessageCommand) bool { +func (r *Router) doesIncomingRouteExist(messageType appmessage.MessageCommand) bool { r.incomingRoutesLock.RLock() defer r.incomingRoutesLock.RUnlock() @@ -117,14 +117,14 @@ func (r *Router) doesIncomingRouteExist(messageType domainmessage.MessageCommand return ok } -func (r *Router) setIncomingRoute(messageType domainmessage.MessageCommand, route *Route) { +func (r *Router) setIncomingRoute(messageType appmessage.MessageCommand, route *Route) { r.incomingRoutesLock.Lock() defer r.incomingRoutesLock.Unlock() r.incomingRoutes[messageType] = route } -func (r *Router) deleteIncomingRoute(messageType domainmessage.MessageCommand) { +func (r *Router) deleteIncomingRoute(messageType appmessage.MessageCommand) { r.incomingRoutesLock.Lock() defer r.incomingRoutesLock.Unlock() diff --git a/network/netadapter/server/grpcserver/connection_loops.go b/infrastructure/network/netadapter/server/grpcserver/connection_loops.go similarity index 89% rename from network/netadapter/server/grpcserver/connection_loops.go rename to infrastructure/network/netadapter/server/grpcserver/connection_loops.go index d0272b493..a6b3905e3 100644 --- a/network/netadapter/server/grpcserver/connection_loops.go +++ b/infrastructure/network/netadapter/server/grpcserver/connection_loops.go @@ -4,13 +4,13 @@ import ( "io" "time" - routerpkg "github.com/kaspanet/kaspad/network/netadapter/router" + routerpkg "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/pkg/errors" "github.com/davecgh/go-spew/spew" "github.com/kaspanet/kaspad/infrastructure/logger" - "github.com/kaspanet/kaspad/network/netadapter/server/grpcserver/protowire" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server/grpcserver/protowire" ) type grpcStream interface { @@ -48,7 +48,7 @@ func (c *gRPCConnection) sendLoop() error { return spew.Sdump(message) })) - messageProto, err := protowire.FromDomainMessage(message) + messageProto, err := protowire.FromAppMessage(message) if err != nil { return err } @@ -72,7 +72,7 @@ func (c *gRPCConnection) receiveLoop() error { } return err } - message, err := protoMessage.ToDomainMessage() + message, err := protoMessage.ToAppMessage() if err != nil { c.onInvalidMessageHandler(err) return err diff --git a/network/netadapter/server/grpcserver/grpc_connection.go b/infrastructure/network/netadapter/server/grpcserver/grpc_connection.go similarity index 92% rename from network/netadapter/server/grpcserver/grpc_connection.go rename to infrastructure/network/netadapter/server/grpcserver/grpc_connection.go index 01378e813..ba8144066 100644 --- a/network/netadapter/server/grpcserver/grpc_connection.go +++ b/infrastructure/network/netadapter/server/grpcserver/grpc_connection.go @@ -6,10 +6,10 @@ import ( "sync/atomic" "time" - "github.com/kaspanet/kaspad/network/netadapter/router" - "github.com/kaspanet/kaspad/network/netadapter/server/grpcserver/protowire" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server/grpcserver/protowire" - "github.com/kaspanet/kaspad/network/netadapter/server" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server" "google.golang.org/grpc" ) diff --git a/network/netadapter/server/grpcserver/grpc_server.go b/infrastructure/network/netadapter/server/grpcserver/grpc_server.go similarity index 95% rename from network/netadapter/server/grpcserver/grpc_server.go rename to infrastructure/network/netadapter/server/grpcserver/grpc_server.go index 28df1e232..7a74d5cc6 100644 --- a/network/netadapter/server/grpcserver/grpc_server.go +++ b/infrastructure/network/netadapter/server/grpcserver/grpc_server.go @@ -9,8 +9,8 @@ import ( "google.golang.org/grpc/peer" - "github.com/kaspanet/kaspad/network/netadapter/server" - "github.com/kaspanet/kaspad/network/netadapter/server/grpcserver/protowire" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server/grpcserver/protowire" "github.com/kaspanet/kaspad/util/panics" "github.com/pkg/errors" "google.golang.org/grpc" diff --git a/network/netadapter/server/grpcserver/log.go b/infrastructure/network/netadapter/server/grpcserver/log.go similarity index 100% rename from network/netadapter/server/grpcserver/log.go rename to infrastructure/network/netadapter/server/grpcserver/log.go diff --git a/network/netadapter/server/grpcserver/p2pserver.go b/infrastructure/network/netadapter/server/grpcserver/p2pserver.go similarity index 91% rename from network/netadapter/server/grpcserver/p2pserver.go rename to infrastructure/network/netadapter/server/grpcserver/p2pserver.go index f32d75ff1..d0cea621a 100644 --- a/network/netadapter/server/grpcserver/p2pserver.go +++ b/infrastructure/network/netadapter/server/grpcserver/p2pserver.go @@ -1,7 +1,7 @@ package grpcserver import ( - "github.com/kaspanet/kaspad/network/netadapter/server/grpcserver/protowire" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/server/grpcserver/protowire" "github.com/kaspanet/kaspad/util/panics" "github.com/pkg/errors" "google.golang.org/grpc/peer" diff --git a/netadapter/server/grpcserver/protowire/README.md b/infrastructure/network/netadapter/server/grpcserver/protowire/README.md similarity index 100% rename from netadapter/server/grpcserver/protowire/README.md rename to infrastructure/network/netadapter/server/grpcserver/protowire/README.md diff --git a/network/netadapter/server/grpcserver/protowire/common.go b/infrastructure/network/netadapter/server/grpcserver/protowire/common.go similarity index 88% rename from network/netadapter/server/grpcserver/protowire/common.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/common.go index 627a61e9a..25bd6f699 100644 --- a/network/netadapter/server/grpcserver/protowire/common.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/common.go @@ -3,7 +3,7 @@ package protowire import ( "math" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/mstime" "github.com/kaspanet/kaspad/util/subnetworkid" @@ -86,19 +86,19 @@ func wireSubnetworkIDToProto(id *subnetworkid.SubnetworkID) *SubnetworkID { } } -func (x *NetAddress) toWire() (*domainmessage.NetAddress, error) { +func (x *NetAddress) toWire() (*appmessage.NetAddress, error) { if x.Port > math.MaxUint16 { return nil, errors.Errorf("port number is larger than %d", math.MaxUint16) } - return &domainmessage.NetAddress{ + return &appmessage.NetAddress{ Timestamp: mstime.UnixMilliseconds(x.Timestamp), - Services: domainmessage.ServiceFlag(x.Services), + Services: appmessage.ServiceFlag(x.Services), IP: x.Ip, Port: uint16(x.Port), }, nil } -func wireNetAddressToProto(address *domainmessage.NetAddress) *NetAddress { +func wireNetAddressToProto(address *appmessage.NetAddress) *NetAddress { return &NetAddress{ Timestamp: address.Timestamp.UnixMilliseconds(), Services: uint64(address.Services), diff --git a/network/netadapter/server/grpcserver/protowire/generate.go b/infrastructure/network/netadapter/server/grpcserver/protowire/generate.go similarity index 100% rename from network/netadapter/server/grpcserver/protowire/generate.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/generate.go diff --git a/network/netadapter/server/grpcserver/protowire/message_addresses.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_addresses.go similarity index 59% rename from network/netadapter/server/grpcserver/protowire/message_addresses.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/message_addresses.go index 21646eca0..44ca9e653 100644 --- a/network/netadapter/server/grpcserver/protowire/message_addresses.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_addresses.go @@ -1,15 +1,15 @@ package protowire import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/pkg/errors" ) -func (x *KaspadMessage_Addresses) toDomainMessage() (domainmessage.Message, error) { +func (x *KaspadMessage_Addresses) toAppMessage() (appmessage.Message, error) { protoAddresses := x.Addresses - if len(x.Addresses.AddressList) > domainmessage.MaxAddressesPerMsg { + if len(x.Addresses.AddressList) > appmessage.MaxAddressesPerMsg { return nil, errors.Errorf("too many addresses for message "+ - "[count %d, max %d]", len(x.Addresses.AddressList), domainmessage.MaxAddressesPerMsg) + "[count %d, max %d]", len(x.Addresses.AddressList), appmessage.MaxAddressesPerMsg) } subnetworkID, err := protoAddresses.SubnetworkID.toWire() @@ -17,24 +17,24 @@ func (x *KaspadMessage_Addresses) toDomainMessage() (domainmessage.Message, erro return nil, err } - addressList := make([]*domainmessage.NetAddress, len(protoAddresses.AddressList)) + addressList := make([]*appmessage.NetAddress, len(protoAddresses.AddressList)) for i, address := range protoAddresses.AddressList { addressList[i], err = address.toWire() if err != nil { return nil, err } } - return &domainmessage.MsgAddresses{ + return &appmessage.MsgAddresses{ IncludeAllSubnetworks: protoAddresses.IncludeAllSubnetworks, SubnetworkID: subnetworkID, AddrList: addressList, }, nil } -func (x *KaspadMessage_Addresses) fromDomainMessage(msgAddresses *domainmessage.MsgAddresses) error { - if len(msgAddresses.AddrList) > domainmessage.MaxAddressesPerMsg { +func (x *KaspadMessage_Addresses) fromAppMessage(msgAddresses *appmessage.MsgAddresses) error { + if len(msgAddresses.AddrList) > appmessage.MaxAddressesPerMsg { return errors.Errorf("too many addresses for message "+ - "[count %d, max %d]", len(msgAddresses.AddrList), domainmessage.MaxAddressesPerMsg) + "[count %d, max %d]", len(msgAddresses.AddrList), appmessage.MaxAddressesPerMsg) } addressList := make([]*NetAddress, len(msgAddresses.AddrList)) diff --git a/network/netadapter/server/grpcserver/protowire/message_block.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_block.go similarity index 68% rename from network/netadapter/server/grpcserver/protowire/message_block.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/message_block.go index 0bb469cb0..38ba7039e 100644 --- a/network/netadapter/server/grpcserver/protowire/message_block.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_block.go @@ -1,24 +1,24 @@ package protowire import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/mstime" "github.com/pkg/errors" ) -func (x *KaspadMessage_Block) toDomainMessage() (domainmessage.Message, error) { - return x.Block.toDomainMessage() +func (x *KaspadMessage_Block) toAppMessage() (appmessage.Message, error) { + return x.Block.toAppMessage() } -func (x *KaspadMessage_Block) fromDomainMessage(msgBlock *domainmessage.MsgBlock) error { +func (x *KaspadMessage_Block) fromAppMessage(msgBlock *appmessage.MsgBlock) error { x.Block = new(BlockMessage) - return x.Block.fromDomainMessage(msgBlock) + return x.Block.fromAppMessage(msgBlock) } -func (x *BlockMessage) toDomainMessage() (domainmessage.Message, error) { - if len(x.Transactions) > domainmessage.MaxTxPerBlock { +func (x *BlockMessage) toAppMessage() (appmessage.Message, error) { + if len(x.Transactions) > appmessage.MaxTxPerBlock { return nil, errors.Errorf("too many transactions to fit into a block "+ - "[count %d, max %d]", len(x.Transactions), domainmessage.MaxTxPerBlock) + "[count %d, max %d]", len(x.Transactions), appmessage.MaxTxPerBlock) } protoBlockHeader := x.Header @@ -46,7 +46,7 @@ func (x *BlockMessage) toDomainMessage() (domainmessage.Message, error) { return nil, err } - header := domainmessage.BlockHeader{ + header := appmessage.BlockHeader{ Version: protoBlockHeader.Version, ParentHashes: parentHashes, HashMerkleRoot: hashMerkleRoot, @@ -57,25 +57,25 @@ func (x *BlockMessage) toDomainMessage() (domainmessage.Message, error) { Nonce: protoBlockHeader.Nonce, } - transactions := make([]*domainmessage.MsgTx, len(x.Transactions)) + transactions := make([]*appmessage.MsgTx, len(x.Transactions)) for i, protoTx := range x.Transactions { - msgTx, err := protoTx.toDomainMessage() + msgTx, err := protoTx.toAppMessage() if err != nil { return nil, err } - transactions[i] = msgTx.(*domainmessage.MsgTx) + transactions[i] = msgTx.(*appmessage.MsgTx) } - return &domainmessage.MsgBlock{ + return &appmessage.MsgBlock{ Header: header, Transactions: transactions, }, nil } -func (x *BlockMessage) fromDomainMessage(msgBlock *domainmessage.MsgBlock) error { - if len(msgBlock.Transactions) > domainmessage.MaxTxPerBlock { +func (x *BlockMessage) fromAppMessage(msgBlock *appmessage.MsgBlock) error { + if len(msgBlock.Transactions) > appmessage.MaxTxPerBlock { return errors.Errorf("too many transactions to fit into a block "+ - "[count %d, max %d]", len(msgBlock.Transactions), domainmessage.MaxTxPerBlock) + "[count %d, max %d]", len(msgBlock.Transactions), appmessage.MaxTxPerBlock) } header := msgBlock.Header @@ -92,7 +92,7 @@ func (x *BlockMessage) fromDomainMessage(msgBlock *domainmessage.MsgBlock) error protoTransactions := make([]*TransactionMessage, len(msgBlock.Transactions)) for i, tx := range msgBlock.Transactions { protoTx := new(TransactionMessage) - protoTx.fromDomainMessage(tx) + protoTx.fromAppMessage(tx) protoTransactions[i] = protoTx } *x = BlockMessage{ diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_block_locator.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_block_locator.go new file mode 100644 index 000000000..b130c6be3 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_block_locator.go @@ -0,0 +1,29 @@ +package protowire + +import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/pkg/errors" +) + +func (x *KaspadMessage_BlockLocator) toAppMessage() (appmessage.Message, error) { + if len(x.BlockLocator.Hashes) > appmessage.MaxBlockLocatorsPerMsg { + return nil, errors.Errorf("too many block locator hashes for message "+ + "[count %d, max %d]", len(x.BlockLocator.Hashes), appmessage.MaxBlockLocatorsPerMsg) + } + hashes, err := protoHashesToWire(x.BlockLocator.Hashes) + if err != nil { + return nil, err + } + return &appmessage.MsgBlockLocator{BlockLocatorHashes: hashes}, nil +} + +func (x *KaspadMessage_BlockLocator) fromAppMessage(msgBlockLocator *appmessage.MsgBlockLocator) error { + if len(msgBlockLocator.BlockLocatorHashes) > appmessage.MaxBlockLocatorsPerMsg { + return errors.Errorf("too many block locator hashes for message "+ + "[count %d, max %d]", len(msgBlockLocator.BlockLocatorHashes), appmessage.MaxBlockLocatorsPerMsg) + } + x.BlockLocator = &BlockLocatorMessage{ + Hashes: wireHashesToProto(msgBlockLocator.BlockLocatorHashes), + } + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_done_ibd_blocks.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_done_ibd_blocks.go new file mode 100644 index 000000000..5c12ba77f --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_done_ibd_blocks.go @@ -0,0 +1,11 @@ +package protowire + +import "github.com/kaspanet/kaspad/app/appmessage" + +func (x *KaspadMessage_DoneIBDBlocks) toAppMessage() (appmessage.Message, error) { + return &appmessage.MsgDoneIBDBlocks{}, nil +} + +func (x *KaspadMessage_DoneIBDBlocks) fromAppMessage(_ *appmessage.MsgDoneIBDBlocks) error { + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_ibd_block.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_ibd_block.go new file mode 100644 index 000000000..1841a9c9f --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_ibd_block.go @@ -0,0 +1,16 @@ +package protowire + +import "github.com/kaspanet/kaspad/app/appmessage" + +func (x *KaspadMessage_IbdBlock) toAppMessage() (appmessage.Message, error) { + msgBlock, err := x.IbdBlock.toAppMessage() + if err != nil { + return nil, err + } + return &appmessage.MsgIBDBlock{MsgBlock: msgBlock.(*appmessage.MsgBlock)}, nil +} + +func (x *KaspadMessage_IbdBlock) fromAppMessage(msgIBDBlock *appmessage.MsgIBDBlock) error { + x.IbdBlock = new(BlockMessage) + return x.IbdBlock.fromAppMessage(msgIBDBlock.MsgBlock) +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_inv_relay_block.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_inv_relay_block.go new file mode 100644 index 000000000..88d851fe2 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_inv_relay_block.go @@ -0,0 +1,19 @@ +package protowire + +import "github.com/kaspanet/kaspad/app/appmessage" + +func (x *KaspadMessage_InvRelayBlock) toAppMessage() (appmessage.Message, error) { + hash, err := x.InvRelayBlock.Hash.toWire() + if err != nil { + return nil, err + } + + return &appmessage.MsgInvRelayBlock{Hash: hash}, nil +} + +func (x *KaspadMessage_InvRelayBlock) fromAppMessage(msgInvRelayBlock *appmessage.MsgInvRelayBlock) error { + x.InvRelayBlock = &InvRelayBlockMessage{ + Hash: wireHashToProto(msgInvRelayBlock.Hash), + } + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_inv_transactions.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_inv_transactions.go new file mode 100644 index 000000000..792aac290 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_inv_transactions.go @@ -0,0 +1,31 @@ +package protowire + +import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/pkg/errors" +) + +func (x *KaspadMessage_InvTransactions) toAppMessage() (appmessage.Message, error) { + if len(x.InvTransactions.Ids) > appmessage.MaxInvPerTxInvMsg { + return nil, errors.Errorf("too many hashes for message "+ + "[count %d, max %d]", len(x.InvTransactions.Ids), appmessage.MaxInvPerTxInvMsg) + } + + ids, err := protoTransactionIDsToWire(x.InvTransactions.Ids) + if err != nil { + return nil, err + } + return &appmessage.MsgInvTransaction{TxIDs: ids}, nil +} + +func (x *KaspadMessage_InvTransactions) fromAppMessage(msgInvTransaction *appmessage.MsgInvTransaction) error { + if len(msgInvTransaction.TxIDs) > appmessage.MaxInvPerTxInvMsg { + return errors.Errorf("too many hashes for message "+ + "[count %d, max %d]", len(msgInvTransaction.TxIDs), appmessage.MaxInvPerTxInvMsg) + } + + x.InvTransactions = &InvTransactionsMessage{ + Ids: wireTransactionIDsToProto(msgInvTransaction.TxIDs), + } + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_ping.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_ping.go new file mode 100644 index 000000000..8f1484071 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_ping.go @@ -0,0 +1,18 @@ +package protowire + +import ( + "github.com/kaspanet/kaspad/app/appmessage" +) + +func (x *KaspadMessage_Ping) toAppMessage() (appmessage.Message, error) { + return &appmessage.MsgPing{ + Nonce: x.Ping.Nonce, + }, nil +} + +func (x *KaspadMessage_Ping) fromAppMessage(msgPing *appmessage.MsgPing) error { + x.Ping = &PingMessage{ + Nonce: msgPing.Nonce, + } + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_pong.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_pong.go new file mode 100644 index 000000000..344d4ae94 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_pong.go @@ -0,0 +1,18 @@ +package protowire + +import ( + "github.com/kaspanet/kaspad/app/appmessage" +) + +func (x *KaspadMessage_Pong) toAppMessage() (appmessage.Message, error) { + return &appmessage.MsgPong{ + Nonce: x.Pong.Nonce, + }, nil +} + +func (x *KaspadMessage_Pong) fromAppMessage(msgPong *appmessage.MsgPong) error { + x.Pong = &PongMessage{ + Nonce: msgPong.Nonce, + } + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_reject.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_reject.go new file mode 100644 index 000000000..de801a6fc --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_reject.go @@ -0,0 +1,18 @@ +package protowire + +import ( + "github.com/kaspanet/kaspad/app/appmessage" +) + +func (x *KaspadMessage_Reject) toWireMessage() (appmessage.Message, error) { + return &appmessage.MsgReject{ + Reason: x.Reject.Reason, + }, nil +} + +func (x *KaspadMessage_Reject) fromWireMessage(msgReject *appmessage.MsgReject) error { + x.Reject = &RejectMessage{ + Reason: msgReject.Reason, + } + return nil +} diff --git a/network/netadapter/server/grpcserver/protowire/message_request_addresses.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_addresses.go similarity index 61% rename from network/netadapter/server/grpcserver/protowire/message_request_addresses.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/message_request_addresses.go index a43ae7e2a..7eb015687 100644 --- a/network/netadapter/server/grpcserver/protowire/message_request_addresses.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_addresses.go @@ -1,23 +1,23 @@ package protowire import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" ) -func (x *KaspadMessage_RequestAddresses) toDomainMessage() (domainmessage.Message, error) { +func (x *KaspadMessage_RequestAddresses) toAppMessage() (appmessage.Message, error) { protoGetAddresses := x.RequestAddresses subnetworkID, err := protoGetAddresses.SubnetworkID.toWire() if err != nil { return nil, err } - return &domainmessage.MsgRequestAddresses{ + return &appmessage.MsgRequestAddresses{ IncludeAllSubnetworks: protoGetAddresses.IncludeAllSubnetworks, SubnetworkID: subnetworkID, }, nil } -func (x *KaspadMessage_RequestAddresses) fromDomainMessage(msgGetAddresses *domainmessage.MsgRequestAddresses) error { +func (x *KaspadMessage_RequestAddresses) fromAppMessage(msgGetAddresses *appmessage.MsgRequestAddresses) error { x.RequestAddresses = &RequestAddressesMessage{ IncludeAllSubnetworks: msgGetAddresses.IncludeAllSubnetworks, SubnetworkID: wireSubnetworkIDToProto(msgGetAddresses.SubnetworkID), diff --git a/network/netadapter/server/grpcserver/protowire/message_request_block_locator.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_block_locator.go similarity index 57% rename from network/netadapter/server/grpcserver/protowire/message_request_block_locator.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/message_request_block_locator.go index 8d3af96bc..85a4a5007 100644 --- a/network/netadapter/server/grpcserver/protowire/message_request_block_locator.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_block_locator.go @@ -1,8 +1,8 @@ package protowire -import "github.com/kaspanet/kaspad/network/domainmessage" +import "github.com/kaspanet/kaspad/app/appmessage" -func (x *KaspadMessage_RequestBlockLocator) toDomainMessage() (domainmessage.Message, error) { +func (x *KaspadMessage_RequestBlockLocator) toAppMessage() (appmessage.Message, error) { lowHash, err := x.RequestBlockLocator.LowHash.toWire() if err != nil { return nil, err @@ -13,13 +13,13 @@ func (x *KaspadMessage_RequestBlockLocator) toDomainMessage() (domainmessage.Mes return nil, err } - return &domainmessage.MsgRequestBlockLocator{ + return &appmessage.MsgRequestBlockLocator{ LowHash: lowHash, HighHash: highHash, }, nil } -func (x *KaspadMessage_RequestBlockLocator) fromDomainMessage(msgGetBlockLocator *domainmessage.MsgRequestBlockLocator) error { +func (x *KaspadMessage_RequestBlockLocator) fromAppMessage(msgGetBlockLocator *appmessage.MsgRequestBlockLocator) error { x.RequestBlockLocator = &RequestBlockLocatorMessage{ LowHash: wireHashToProto(msgGetBlockLocator.LowHash), HighHash: wireHashToProto(msgGetBlockLocator.HighHash), diff --git a/network/netadapter/server/grpcserver/protowire/message_request_ibd_blocks.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_ibd_blocks.go similarity index 57% rename from network/netadapter/server/grpcserver/protowire/message_request_ibd_blocks.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/message_request_ibd_blocks.go index c2477dd52..c465ef2f2 100644 --- a/network/netadapter/server/grpcserver/protowire/message_request_ibd_blocks.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_ibd_blocks.go @@ -1,8 +1,8 @@ package protowire -import "github.com/kaspanet/kaspad/network/domainmessage" +import "github.com/kaspanet/kaspad/app/appmessage" -func (x *KaspadMessage_RequestIBDBlocks) toDomainMessage() (domainmessage.Message, error) { +func (x *KaspadMessage_RequestIBDBlocks) toAppMessage() (appmessage.Message, error) { lowHash, err := x.RequestIBDBlocks.LowHash.toWire() if err != nil { return nil, err @@ -13,13 +13,13 @@ func (x *KaspadMessage_RequestIBDBlocks) toDomainMessage() (domainmessage.Messag return nil, err } - return &domainmessage.MsgRequestIBDBlocks{ + return &appmessage.MsgRequestIBDBlocks{ LowHash: lowHash, HighHash: highHash, }, nil } -func (x *KaspadMessage_RequestIBDBlocks) fromDomainMessage(msgGetBlocks *domainmessage.MsgRequestIBDBlocks) error { +func (x *KaspadMessage_RequestIBDBlocks) fromAppMessage(msgGetBlocks *appmessage.MsgRequestIBDBlocks) error { x.RequestIBDBlocks = &RequestIBDBlocksMessage{ LowHash: wireHashToProto(msgGetBlocks.LowHash), HighHash: wireHashToProto(msgGetBlocks.HighHash), diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_next_ibd_blocks.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_next_ibd_blocks.go new file mode 100644 index 000000000..4ef579ed3 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_next_ibd_blocks.go @@ -0,0 +1,11 @@ +package protowire + +import "github.com/kaspanet/kaspad/app/appmessage" + +func (x *KaspadMessage_RequestNextIBDBlocks) toAppMessage() (appmessage.Message, error) { + return &appmessage.MsgRequestNextIBDBlocks{}, nil +} + +func (x *KaspadMessage_RequestNextIBDBlocks) fromAppMessage(_ *appmessage.MsgRequestNextIBDBlocks) error { + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_relay_blocks.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_relay_blocks.go new file mode 100644 index 000000000..d4e9f7f34 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_relay_blocks.go @@ -0,0 +1,30 @@ +package protowire + +import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/pkg/errors" +) + +func (x *KaspadMessage_RequestRelayBlocks) toAppMessage() (appmessage.Message, error) { + if len(x.RequestRelayBlocks.Hashes) > appmessage.MsgRequestRelayBlocksHashes { + return nil, errors.Errorf("too many hashes for message "+ + "[count %d, max %d]", len(x.RequestRelayBlocks.Hashes), appmessage.MsgRequestRelayBlocksHashes) + } + hashes, err := protoHashesToWire(x.RequestRelayBlocks.Hashes) + if err != nil { + return nil, err + } + return &appmessage.MsgRequestRelayBlocks{Hashes: hashes}, nil +} + +func (x *KaspadMessage_RequestRelayBlocks) fromAppMessage(msgGetRelayBlocks *appmessage.MsgRequestRelayBlocks) error { + if len(msgGetRelayBlocks.Hashes) > appmessage.MsgRequestRelayBlocksHashes { + return errors.Errorf("too many hashes for message "+ + "[count %d, max %d]", len(msgGetRelayBlocks.Hashes), appmessage.MsgRequestRelayBlocksHashes) + } + + x.RequestRelayBlocks = &RequestRelayBlocksMessage{ + Hashes: wireHashesToProto(msgGetRelayBlocks.Hashes), + } + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_selected_tip.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_selected_tip.go new file mode 100644 index 000000000..0e99ae70e --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_selected_tip.go @@ -0,0 +1,11 @@ +package protowire + +import "github.com/kaspanet/kaspad/app/appmessage" + +func (x *KaspadMessage_RequestSelectedTip) toAppMessage() (appmessage.Message, error) { + return &appmessage.MsgRequestSelectedTip{}, nil +} + +func (x *KaspadMessage_RequestSelectedTip) fromAppMessage(_ *appmessage.MsgRequestSelectedTip) error { + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_transactions.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_transactions.go new file mode 100644 index 000000000..9e9a973d8 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_request_transactions.go @@ -0,0 +1,31 @@ +package protowire + +import ( + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/pkg/errors" +) + +func (x *KaspadMessage_RequestTransactions) toAppMessage() (appmessage.Message, error) { + if len(x.RequestTransactions.Ids) > appmessage.MaxInvPerRequestTransactionsMsg { + return nil, errors.Errorf("too many hashes for message "+ + "[count %d, max %d]", len(x.RequestTransactions.Ids), appmessage.MaxInvPerRequestTransactionsMsg) + } + + ids, err := protoTransactionIDsToWire(x.RequestTransactions.Ids) + if err != nil { + return nil, err + } + return &appmessage.MsgRequestTransactions{IDs: ids}, nil +} + +func (x *KaspadMessage_RequestTransactions) fromAppMessage(msgGetTransactions *appmessage.MsgRequestTransactions) error { + if len(msgGetTransactions.IDs) > appmessage.MaxInvPerRequestTransactionsMsg { + return errors.Errorf("too many hashes for message "+ + "[count %d, max %d]", len(x.RequestTransactions.Ids), appmessage.MaxInvPerRequestTransactionsMsg) + } + + x.RequestTransactions = &RequestTransactionsMessage{ + Ids: wireTransactionIDsToProto(msgGetTransactions.IDs), + } + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_selected_tip.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_selected_tip.go new file mode 100644 index 000000000..01b9e7ccb --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_selected_tip.go @@ -0,0 +1,19 @@ +package protowire + +import "github.com/kaspanet/kaspad/app/appmessage" + +func (x *KaspadMessage_SelectedTip) toAppMessage() (appmessage.Message, error) { + hash, err := x.SelectedTip.SelectedTipHash.toWire() + if err != nil { + return nil, err + } + + return &appmessage.MsgSelectedTip{SelectedTipHash: hash}, nil +} + +func (x *KaspadMessage_SelectedTip) fromAppMessage(msgSelectedTip *appmessage.MsgSelectedTip) error { + x.SelectedTip = &SelectedTipMessage{ + SelectedTipHash: wireHashToProto(msgSelectedTip.SelectedTipHash), + } + return nil +} diff --git a/network/netadapter/server/grpcserver/protowire/message_transaction.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_transaction.go similarity index 71% rename from network/netadapter/server/grpcserver/protowire/message_transaction.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/message_transaction.go index fa7bc7ccd..c0562dc09 100644 --- a/network/netadapter/server/grpcserver/protowire/message_transaction.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_transaction.go @@ -1,36 +1,36 @@ package protowire import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" ) -func (x *KaspadMessage_Transaction) toDomainMessage() (domainmessage.Message, error) { - return x.Transaction.toDomainMessage() +func (x *KaspadMessage_Transaction) toAppMessage() (appmessage.Message, error) { + return x.Transaction.toAppMessage() } -func (x *KaspadMessage_Transaction) fromDomainMessage(msgTx *domainmessage.MsgTx) error { +func (x *KaspadMessage_Transaction) fromAppMessage(msgTx *appmessage.MsgTx) error { x.Transaction = new(TransactionMessage) - x.Transaction.fromDomainMessage(msgTx) + x.Transaction.fromAppMessage(msgTx) return nil } -func (x *TransactionMessage) toDomainMessage() (domainmessage.Message, error) { - inputs := make([]*domainmessage.TxIn, len(x.Inputs)) +func (x *TransactionMessage) toAppMessage() (appmessage.Message, error) { + inputs := make([]*appmessage.TxIn, len(x.Inputs)) for i, protoInput := range x.Inputs { prevTxID, err := protoInput.PreviousOutpoint.TransactionID.toWire() if err != nil { return nil, err } - outpoint := domainmessage.NewOutpoint(prevTxID, protoInput.PreviousOutpoint.Index) - inputs[i] = domainmessage.NewTxIn(outpoint, protoInput.SignatureScript) + outpoint := appmessage.NewOutpoint(prevTxID, protoInput.PreviousOutpoint.Index) + inputs[i] = appmessage.NewTxIn(outpoint, protoInput.SignatureScript) } - outputs := make([]*domainmessage.TxOut, len(x.Outputs)) + outputs := make([]*appmessage.TxOut, len(x.Outputs)) for i, protoOutput := range x.Outputs { - outputs[i] = &domainmessage.TxOut{ + outputs[i] = &appmessage.TxOut{ Value: protoOutput.Value, ScriptPubKey: protoOutput.ScriptPubKey, } @@ -53,7 +53,7 @@ func (x *TransactionMessage) toDomainMessage() (domainmessage.Message, error) { } } - return &domainmessage.MsgTx{ + return &appmessage.MsgTx{ Version: x.Version, TxIn: inputs, TxOut: outputs, @@ -65,7 +65,7 @@ func (x *TransactionMessage) toDomainMessage() (domainmessage.Message, error) { }, nil } -func (x *TransactionMessage) fromDomainMessage(msgTx *domainmessage.MsgTx) { +func (x *TransactionMessage) fromAppMessage(msgTx *appmessage.MsgTx) { protoInputs := make([]*TransactionInput, len(msgTx.TxIn)) for i, input := range msgTx.TxIn { protoInputs[i] = &TransactionInput{ diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_transaction_not_found.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_transaction_not_found.go new file mode 100644 index 000000000..7afeba303 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_transaction_not_found.go @@ -0,0 +1,20 @@ +package protowire + +import ( + "github.com/kaspanet/kaspad/app/appmessage" +) + +func (x *KaspadMessage_TransactionNotFound) toAppMessage() (appmessage.Message, error) { + id, err := x.TransactionNotFound.Id.toWire() + if err != nil { + return nil, err + } + return appmessage.NewMsgTransactionNotFound(id), nil +} + +func (x *KaspadMessage_TransactionNotFound) fromAppMessage(msgTransactionsNotFound *appmessage.MsgTransactionNotFound) error { + x.TransactionNotFound = &TransactionNotFoundMessage{ + Id: wireTransactionIDToProto(msgTransactionsNotFound.ID), + } + return nil +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/message_verack.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_verack.go new file mode 100644 index 000000000..489d53914 --- /dev/null +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_verack.go @@ -0,0 +1,11 @@ +package protowire + +import "github.com/kaspanet/kaspad/app/appmessage" + +func (x *KaspadMessage_Verack) toAppMessage() (appmessage.Message, error) { + return &appmessage.MsgVerAck{}, nil +} + +func (x *KaspadMessage_Verack) fromAppMessage(_ *appmessage.MsgVerAck) error { + return nil +} diff --git a/network/netadapter/server/grpcserver/protowire/message_version.go b/infrastructure/network/netadapter/server/grpcserver/protowire/message_version.go similarity index 75% rename from network/netadapter/server/grpcserver/protowire/message_version.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/message_version.go index f038784c2..2614a326f 100644 --- a/network/netadapter/server/grpcserver/protowire/message_version.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/message_version.go @@ -1,14 +1,14 @@ package protowire import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/id" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" "github.com/kaspanet/kaspad/util/mstime" ) -func (x *KaspadMessage_Version) toDomainMessage() (domainmessage.Message, error) { +func (x *KaspadMessage_Version) toAppMessage() (appmessage.Message, error) { // Address is optional for non-listening nodes - var address *domainmessage.NetAddress + var address *appmessage.NetAddress if x.Version.Address != nil { var err error address, err = x.Version.Address.toWire() @@ -27,15 +27,15 @@ func (x *KaspadMessage_Version) toDomainMessage() (domainmessage.Message, error) return nil, err } - err = domainmessage.ValidateUserAgent(x.Version.UserAgent) + err = appmessage.ValidateUserAgent(x.Version.UserAgent) if err != nil { return nil, err } - return &domainmessage.MsgVersion{ + return &appmessage.MsgVersion{ ProtocolVersion: x.Version.ProtocolVersion, Network: x.Version.Network, - Services: domainmessage.ServiceFlag(x.Version.Services), + Services: appmessage.ServiceFlag(x.Version.Services), Timestamp: mstime.UnixMilliseconds(x.Version.Timestamp), Address: address, ID: id.FromBytes(x.Version.Id), @@ -46,8 +46,8 @@ func (x *KaspadMessage_Version) toDomainMessage() (domainmessage.Message, error) }, nil } -func (x *KaspadMessage_Version) fromDomainMessage(msgVersion *domainmessage.MsgVersion) error { - err := domainmessage.ValidateUserAgent(msgVersion.UserAgent) +func (x *KaspadMessage_Version) fromAppMessage(msgVersion *appmessage.MsgVersion) error { + err := appmessage.ValidateUserAgent(msgVersion.UserAgent) if err != nil { return err } diff --git a/network/netadapter/server/grpcserver/protowire/messages.pb.go b/infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go similarity index 100% rename from network/netadapter/server/grpcserver/protowire/messages.pb.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/messages.pb.go diff --git a/network/netadapter/server/grpcserver/protowire/messages.proto b/infrastructure/network/netadapter/server/grpcserver/protowire/messages.proto similarity index 100% rename from network/netadapter/server/grpcserver/protowire/messages.proto rename to infrastructure/network/netadapter/server/grpcserver/protowire/messages.proto diff --git a/network/netadapter/server/grpcserver/protowire/messages_grpc.pb.go b/infrastructure/network/netadapter/server/grpcserver/protowire/messages_grpc.pb.go similarity index 100% rename from network/netadapter/server/grpcserver/protowire/messages_grpc.pb.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/messages_grpc.pb.go diff --git a/network/netadapter/server/grpcserver/protowire/wire.go b/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go similarity index 53% rename from network/netadapter/server/grpcserver/protowire/wire.go rename to infrastructure/network/netadapter/server/grpcserver/protowire/wire.go index 2c0291699..a73bc0a1d 100644 --- a/network/netadapter/server/grpcserver/protowire/wire.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/wire.go @@ -1,21 +1,21 @@ package protowire import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/pkg/errors" ) type converter interface { - toDomainMessage() (domainmessage.Message, error) + toAppMessage() (appmessage.Message, error) } -// ToDomainMessage converts a KaspadMessage to its domainmessage.Message representation -func (x *KaspadMessage) ToDomainMessage() (domainmessage.Message, error) { - return x.Payload.(converter).toDomainMessage() +// ToAppMessage converts a KaspadMessage to its appmessage.Message representation +func (x *KaspadMessage) ToAppMessage() (appmessage.Message, error) { + return x.Payload.(converter).toAppMessage() } -// FromDomainMessage creates a KaspadMessage from a domainmessage.Message -func FromDomainMessage(message domainmessage.Message) (*KaspadMessage, error) { +// FromAppMessage creates a KaspadMessage from a appmessage.Message +func FromAppMessage(message appmessage.Message) (*KaspadMessage, error) { payload, err := toPayload(message) if err != nil { return nil, err @@ -25,151 +25,151 @@ func FromDomainMessage(message domainmessage.Message) (*KaspadMessage, error) { }, nil } -func toPayload(message domainmessage.Message) (isKaspadMessage_Payload, error) { +func toPayload(message appmessage.Message) (isKaspadMessage_Payload, error) { switch message := message.(type) { - case *domainmessage.MsgAddresses: + case *appmessage.MsgAddresses: payload := new(KaspadMessage_Addresses) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgBlock: + case *appmessage.MsgBlock: payload := new(KaspadMessage_Block) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgRequestBlockLocator: + case *appmessage.MsgRequestBlockLocator: payload := new(KaspadMessage_RequestBlockLocator) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgBlockLocator: + case *appmessage.MsgBlockLocator: payload := new(KaspadMessage_BlockLocator) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgRequestAddresses: + case *appmessage.MsgRequestAddresses: payload := new(KaspadMessage_RequestAddresses) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgRequestIBDBlocks: + case *appmessage.MsgRequestIBDBlocks: payload := new(KaspadMessage_RequestIBDBlocks) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgRequestNextIBDBlocks: + case *appmessage.MsgRequestNextIBDBlocks: payload := new(KaspadMessage_RequestNextIBDBlocks) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgDoneIBDBlocks: + case *appmessage.MsgDoneIBDBlocks: payload := new(KaspadMessage_DoneIBDBlocks) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgRequestRelayBlocks: + case *appmessage.MsgRequestRelayBlocks: payload := new(KaspadMessage_RequestRelayBlocks) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgRequestSelectedTip: + case *appmessage.MsgRequestSelectedTip: payload := new(KaspadMessage_RequestSelectedTip) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgRequestTransactions: + case *appmessage.MsgRequestTransactions: payload := new(KaspadMessage_RequestTransactions) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgTransactionNotFound: + case *appmessage.MsgTransactionNotFound: payload := new(KaspadMessage_TransactionNotFound) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgIBDBlock: + case *appmessage.MsgIBDBlock: payload := new(KaspadMessage_IbdBlock) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgInvRelayBlock: + case *appmessage.MsgInvRelayBlock: payload := new(KaspadMessage_InvRelayBlock) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgInvTransaction: + case *appmessage.MsgInvTransaction: payload := new(KaspadMessage_InvTransactions) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgPing: + case *appmessage.MsgPing: payload := new(KaspadMessage_Ping) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgPong: + case *appmessage.MsgPong: payload := new(KaspadMessage_Pong) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgSelectedTip: + case *appmessage.MsgSelectedTip: payload := new(KaspadMessage_SelectedTip) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgTx: + case *appmessage.MsgTx: payload := new(KaspadMessage_Transaction) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgVerAck: + case *appmessage.MsgVerAck: payload := new(KaspadMessage_Verack) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } return payload, nil - case *domainmessage.MsgVersion: + case *appmessage.MsgVersion: payload := new(KaspadMessage_Version) - err := payload.fromDomainMessage(message) + err := payload.fromAppMessage(message) if err != nil { return nil, err } diff --git a/network/netadapter/server/server.go b/infrastructure/network/netadapter/server/server.go similarity index 94% rename from network/netadapter/server/server.go rename to infrastructure/network/netadapter/server/server.go index 706cac4cc..527df26bf 100644 --- a/network/netadapter/server/server.go +++ b/infrastructure/network/netadapter/server/server.go @@ -6,7 +6,7 @@ import ( "github.com/pkg/errors" - "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" ) // OnConnectedHandler is a function that is to be called diff --git a/network/netadapter/standalone/log.go b/infrastructure/network/netadapter/standalone/log.go similarity index 100% rename from network/netadapter/standalone/log.go rename to infrastructure/network/netadapter/standalone/log.go diff --git a/network/netadapter/standalone/minimal_net_adapter.go b/infrastructure/network/netadapter/standalone/minimal_net_adapter.go similarity index 77% rename from network/netadapter/standalone/minimal_net_adapter.go rename to infrastructure/network/netadapter/standalone/minimal_net_adapter.go index 70b9f94f5..fad5f9d43 100644 --- a/network/netadapter/standalone/minimal_net_adapter.go +++ b/infrastructure/network/netadapter/standalone/minimal_net_adapter.go @@ -4,14 +4,14 @@ import ( "github.com/kaspanet/kaspad/util/mstime" "sync" - "github.com/kaspanet/kaspad/network/netadapter/id" - "github.com/kaspanet/kaspad/network/protocol/common" + "github.com/kaspanet/kaspad/app/protocol/common" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/id" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" "github.com/pkg/errors" ) @@ -90,9 +90,9 @@ func (*MinimalNetAdapter) handlePingPong(routes *Routes) error { return err } - pingMessage := message.(*domainmessage.MsgPing) + pingMessage := message.(*appmessage.MsgPing) - err = routes.OutgoingRoute.Enqueue(&domainmessage.MsgPong{Nonce: pingMessage.Nonce}) + err = routes.OutgoingRoute.Enqueue(&appmessage.MsgPong{Nonce: pingMessage.Nonce}) if err != nil { return err } @@ -105,12 +105,12 @@ func (mna *MinimalNetAdapter) handleHandshake(routes *Routes, ourID *id.ID) erro return err } - versionMessage, ok := msg.(*domainmessage.MsgVersion) + versionMessage, ok := msg.(*appmessage.MsgVersion) if !ok { - return errors.Errorf("expected first message to be of type %s, but got %s", domainmessage.CmdVersion, msg.Command()) + return errors.Errorf("expected first message to be of type %s, but got %s", appmessage.CmdVersion, msg.Command()) } - err = routes.OutgoingRoute.Enqueue(&domainmessage.MsgVersion{ + err = routes.OutgoingRoute.Enqueue(&appmessage.MsgVersion{ ProtocolVersion: versionMessage.ProtocolVersion, Network: mna.cfg.ActiveNetParams.Name, Services: versionMessage.Services, @@ -131,12 +131,12 @@ func (mna *MinimalNetAdapter) handleHandshake(routes *Routes, ourID *id.ID) erro return err } - _, ok = msg.(*domainmessage.MsgVerAck) + _, ok = msg.(*appmessage.MsgVerAck) if !ok { - return errors.Errorf("expected second message to be of type %s, but got %s", domainmessage.CmdVerAck, msg.Command()) + return errors.Errorf("expected second message to be of type %s, but got %s", appmessage.CmdVerAck, msg.Command()) } - err = routes.OutgoingRoute.Enqueue(&domainmessage.MsgVerAck{}) + err = routes.OutgoingRoute.Enqueue(&appmessage.MsgVerAck{}) if err != nil { return err } @@ -145,11 +145,11 @@ func (mna *MinimalNetAdapter) handleHandshake(routes *Routes, ourID *id.ID) erro } func generateRouteInitializer() (netadapter.RouterInitializer, <-chan *Routes) { - cmdsWithBuiltInRoutes := []domainmessage.MessageCommand{domainmessage.CmdVerAck, domainmessage.CmdVersion, domainmessage.CmdPing} + cmdsWithBuiltInRoutes := []appmessage.MessageCommand{appmessage.CmdVerAck, appmessage.CmdVersion, appmessage.CmdPing} - everythingElse := make([]domainmessage.MessageCommand, 0, len(domainmessage.MessageCommandToString)-len(cmdsWithBuiltInRoutes)) + everythingElse := make([]appmessage.MessageCommand, 0, len(appmessage.MessageCommandToString)-len(cmdsWithBuiltInRoutes)) outerLoop: - for command := range domainmessage.MessageCommandToString { + for command := range appmessage.MessageCommandToString { for _, cmdWithBuiltInRoute := range cmdsWithBuiltInRoutes { if command == cmdWithBuiltInRoute { continue outerLoop @@ -162,11 +162,11 @@ outerLoop: routesChan := make(chan *Routes) routeInitializer := func(router *router.Router, netConnection *netadapter.NetConnection) { - handshakeRoute, err := router.AddIncomingRoute([]domainmessage.MessageCommand{domainmessage.CmdVersion, domainmessage.CmdVerAck}) + handshakeRoute, err := router.AddIncomingRoute([]appmessage.MessageCommand{appmessage.CmdVersion, appmessage.CmdVerAck}) if err != nil { panic(errors.Wrap(err, "error registering handshake route")) } - pingRoute, err := router.AddIncomingRoute([]domainmessage.MessageCommand{domainmessage.CmdPing}) + pingRoute, err := router.AddIncomingRoute([]appmessage.MessageCommand{appmessage.CmdPing}) if err != nil { panic(errors.Wrap(err, "error registering ping route")) } diff --git a/network/netadapter/standalone/routes.go b/infrastructure/network/netadapter/standalone/routes.go similarity index 82% rename from network/netadapter/standalone/routes.go rename to infrastructure/network/netadapter/standalone/routes.go index e66dffec5..28d48aa5b 100644 --- a/network/netadapter/standalone/routes.go +++ b/infrastructure/network/netadapter/standalone/routes.go @@ -3,12 +3,12 @@ package standalone import ( "time" - "github.com/kaspanet/kaspad/network/netadapter" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter" "github.com/pkg/errors" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/netadapter/router" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/netadapter/router" ) // Routes holds the incoming and outgoing routes of a connection created by MinimalNetAdapter @@ -21,7 +21,7 @@ type Routes struct { // WaitForMessageOfType waits for a message of requested type up to `timeout`, skipping all messages of any other type // received while waiting -func (r *Routes) WaitForMessageOfType(command domainmessage.MessageCommand, timeout time.Duration) (domainmessage.Message, error) { +func (r *Routes) WaitForMessageOfType(command appmessage.MessageCommand, timeout time.Duration) (appmessage.Message, error) { timeoutTime := time.Now().Add(timeout) for { message, err := r.IncomingRoute.DequeueWithTimeout(timeoutTime.Sub(time.Now())) diff --git a/network/rpc/client/CONTRIBUTORS b/infrastructure/network/rpc/client/CONTRIBUTORS similarity index 100% rename from network/rpc/client/CONTRIBUTORS rename to infrastructure/network/rpc/client/CONTRIBUTORS diff --git a/network/rpc/client/README.md b/infrastructure/network/rpc/client/README.md similarity index 100% rename from network/rpc/client/README.md rename to infrastructure/network/rpc/client/README.md diff --git a/network/rpc/client/dag.go b/infrastructure/network/rpc/client/dag.go similarity index 98% rename from network/rpc/client/dag.go rename to infrastructure/network/rpc/client/dag.go index 064e29af4..9e6efb127 100644 --- a/network/rpc/client/dag.go +++ b/infrastructure/network/rpc/client/dag.go @@ -13,8 +13,8 @@ import ( "github.com/pkg/errors" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" ) @@ -61,7 +61,7 @@ type FutureGetBlockResult chan *response // Receive waits for the response promised by the future and returns the raw // block requested from the server given its hash. -func (r FutureGetBlockResult) Receive() (*domainmessage.MsgBlock, error) { +func (r FutureGetBlockResult) Receive() (*appmessage.MsgBlock, error) { res, err := receiveFuture(r) if err != nil { return nil, err @@ -81,7 +81,7 @@ func (r FutureGetBlockResult) Receive() (*domainmessage.MsgBlock, error) { } // Deserialize the block and return it. - var msgBlock domainmessage.MsgBlock + var msgBlock appmessage.MsgBlock err = msgBlock.Deserialize(bytes.NewReader(serializedBlock)) if err != nil { return nil, err @@ -108,7 +108,7 @@ func (c *Client) GetBlockAsync(blockHash *daghash.Hash, subnetworkID *string) Fu // // See GetBlockVerbose to retrieve a data structure with information about the // block instead. -func (c *Client) GetBlock(blockHash *daghash.Hash, subnetworkID *string) (*domainmessage.MsgBlock, error) { +func (c *Client) GetBlock(blockHash *daghash.Hash, subnetworkID *string) (*appmessage.MsgBlock, error) { return c.GetBlockAsync(blockHash, subnetworkID).Receive() } @@ -391,7 +391,7 @@ type FutureGetBlockHeaderResult chan *response // Receive waits for the response promised by the future and returns the // blockheader requested from the server given its hash. -func (r FutureGetBlockHeaderResult) Receive() (*domainmessage.BlockHeader, error) { +func (r FutureGetBlockHeaderResult) Receive() (*appmessage.BlockHeader, error) { res, err := receiveFuture(r) if err != nil { return nil, err @@ -410,7 +410,7 @@ func (r FutureGetBlockHeaderResult) Receive() (*domainmessage.BlockHeader, error } // Deserialize the blockheader and return it. - var bh domainmessage.BlockHeader + var bh appmessage.BlockHeader err = bh.Deserialize(bytes.NewReader(serializedBH)) if err != nil { return nil, err @@ -438,7 +438,7 @@ func (c *Client) GetBlockHeaderAsync(blockHash *daghash.Hash) FutureGetBlockHead // // See GetBlockHeaderVerbose to retrieve a data structure with information about the // block instead. -func (c *Client) GetBlockHeader(blockHash *daghash.Hash) (*domainmessage.BlockHeader, error) { +func (c *Client) GetBlockHeader(blockHash *daghash.Hash) (*appmessage.BlockHeader, error) { return c.GetBlockHeaderAsync(blockHash).Receive() } diff --git a/network/rpc/client/doc.go b/infrastructure/network/rpc/client/doc.go similarity index 100% rename from network/rpc/client/doc.go rename to infrastructure/network/rpc/client/doc.go diff --git a/network/rpc/client/examples/httppost/README.md b/infrastructure/network/rpc/client/examples/httppost/README.md similarity index 100% rename from network/rpc/client/examples/httppost/README.md rename to infrastructure/network/rpc/client/examples/httppost/README.md diff --git a/network/rpc/client/examples/httppost/main.go b/infrastructure/network/rpc/client/examples/httppost/main.go similarity index 92% rename from network/rpc/client/examples/httppost/main.go rename to infrastructure/network/rpc/client/examples/httppost/main.go index c1d92e327..a9c373a8b 100644 --- a/network/rpc/client/examples/httppost/main.go +++ b/infrastructure/network/rpc/client/examples/httppost/main.go @@ -7,7 +7,7 @@ package main import ( "log" - "github.com/kaspanet/kaspad/network/rpc/client" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/client" ) func main() { diff --git a/network/rpc/client/examples/websockets/README.md b/infrastructure/network/rpc/client/examples/websockets/README.md similarity index 100% rename from network/rpc/client/examples/websockets/README.md rename to infrastructure/network/rpc/client/examples/websockets/README.md diff --git a/network/rpc/client/examples/websockets/main.go b/infrastructure/network/rpc/client/examples/websockets/main.go similarity index 90% rename from network/rpc/client/examples/websockets/main.go rename to infrastructure/network/rpc/client/examples/websockets/main.go index a927ac163..a2caebd07 100644 --- a/network/rpc/client/examples/websockets/main.go +++ b/infrastructure/network/rpc/client/examples/websockets/main.go @@ -10,8 +10,8 @@ import ( "path/filepath" "time" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/client" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/client" "github.com/kaspanet/kaspad/util" ) @@ -21,7 +21,7 @@ func main() { // for notifications. See the documentation of the rpcclient // NotificationHandlers type for more details about each handler. ntfnHandlers := client.NotificationHandlers{ - OnFilteredBlockAdded: func(blueScore uint64, header *domainmessage.BlockHeader, txns []*util.Tx) { + OnFilteredBlockAdded: func(blueScore uint64, header *appmessage.BlockHeader, txns []*util.Tx) { log.Printf("Block added: %s (%d) %s", header.BlockHash(), blueScore, header.Timestamp) }, diff --git a/network/rpc/client/infrastructure.go b/infrastructure/network/rpc/client/infrastructure.go similarity index 99% rename from network/rpc/client/infrastructure.go rename to infrastructure/network/rpc/client/infrastructure.go index 0d1078f1a..c257bd587 100644 --- a/network/rpc/client/infrastructure.go +++ b/infrastructure/network/rpc/client/infrastructure.go @@ -26,7 +26,7 @@ import ( "github.com/btcsuite/go-socks/socks" "github.com/btcsuite/websocket" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) var ( @@ -1086,7 +1086,7 @@ type ConnConfig struct { // DisableTLS specifies whether transport layer security should be // disabled. It is recommended to always use TLS if the RPC server // supports it as otherwise your username and password is sent across - // the domainmessage in cleartext. + // the appmessage in cleartext. DisableTLS bool // Certificates are the bytes for a PEM-encoded certificate chain used diff --git a/network/rpc/client/log.go b/infrastructure/network/rpc/client/log.go similarity index 81% rename from network/rpc/client/log.go rename to infrastructure/network/rpc/client/log.go index 4687aa260..3a1ed0a28 100644 --- a/network/rpc/client/log.go +++ b/infrastructure/network/rpc/client/log.go @@ -5,14 +5,14 @@ package client import ( - "github.com/kaspanet/kaspad/infrastructure/logs" + "github.com/kaspanet/kaspad/infrastructure/logger" "github.com/kaspanet/kaspad/util/panics" ) // log is a logger that is initialized with no output filters. This // means the package will not perform any logging by default until the caller // requests it. -var log *logs.Logger +var log *logger.Logger var spawn func(name string, f func()) const logSubsytem = "RPCC" @@ -25,14 +25,14 @@ func init() { // DisableLog disables all library log output. Logging output is disabled // by default until UseLogger is called. func DisableLog() { - backend := logs.NewBackend() + backend := logger.NewBackend() log = backend.Logger(logSubsytem) - log.SetLevel(logs.LevelOff) + log.SetLevel(logger.LevelOff) spawn = panics.GoroutineWrapperFunc(log) } // UseLogger uses a specified Logger to output package logging info. -func UseLogger(backend *logs.Backend, level logs.Level) { +func UseLogger(backend *logger.Backend, level logger.Level) { log = backend.Logger(logSubsytem) log.SetLevel(level) spawn = panics.GoroutineWrapperFunc(log) diff --git a/network/rpc/client/mining.go b/infrastructure/network/rpc/client/mining.go similarity index 95% rename from network/rpc/client/mining.go rename to infrastructure/network/rpc/client/mining.go index 7d3f5cf7e..e489d50ac 100644 --- a/network/rpc/client/mining.go +++ b/infrastructure/network/rpc/client/mining.go @@ -10,8 +10,8 @@ import ( "strconv" "strings" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" @@ -141,13 +141,13 @@ func ConvertGetBlockTemplateResultToBlock(template *model.GetBlockTemplateResult return nil, errors.Wrapf(err, "error parsing utxoCommitment '%s'", template.UTXOCommitment) } // parse rest of block - msgBlock := domainmessage.NewMsgBlock( - domainmessage.NewBlockHeader(template.Version, parentHashes, hashMerkleRoot, + msgBlock := appmessage.NewMsgBlock( + appmessage.NewBlockHeader(template.Version, parentHashes, hashMerkleRoot, acceptedIDMerkleRoot, utxoCommitment, bits, 0)) for i, txResult := range template.Transactions { reader := hex.NewDecoder(strings.NewReader(txResult.Data)) - tx := &domainmessage.MsgTx{} + tx := &appmessage.MsgTx{} if err := tx.KaspaDecode(reader, 0); err != nil { return nil, errors.Wrapf(err, "error decoding tx #%d", i) } diff --git a/network/rpc/client/net.go b/infrastructure/network/rpc/client/net.go similarity index 95% rename from network/rpc/client/net.go rename to infrastructure/network/rpc/client/net.go index 173edf22a..e0fc41f2f 100644 --- a/network/rpc/client/net.go +++ b/infrastructure/network/rpc/client/net.go @@ -9,11 +9,11 @@ import ( "encoding/hex" "encoding/json" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/pointers" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // FutureAddNodeResult is a future promise to deliver the result of an @@ -273,7 +273,7 @@ type FutureGetSelectedTipResult chan *response // Receive waits for the response promised by the future and returns the // selected tip block. -func (r FutureGetSelectedTipResult) Receive() (*domainmessage.MsgBlock, error) { +func (r FutureGetSelectedTipResult) Receive() (*appmessage.MsgBlock, error) { res, err := receiveFuture(r) if err != nil { return nil, err @@ -293,7 +293,7 @@ func (r FutureGetSelectedTipResult) Receive() (*domainmessage.MsgBlock, error) { } // Deserialize the block and return it. - var msgBlock domainmessage.MsgBlock + var msgBlock appmessage.MsgBlock err = msgBlock.Deserialize(bytes.NewReader(serializedBlock)) if err != nil { return nil, err @@ -353,7 +353,7 @@ type FutureGetCurrentNetResult chan *response // Receive waits for the response promised by the future and returns the network // the server is running on. -func (r FutureGetCurrentNetResult) Receive() (domainmessage.KaspaNet, error) { +func (r FutureGetCurrentNetResult) Receive() (appmessage.KaspaNet, error) { res, err := receiveFuture(r) if err != nil { return 0, err @@ -366,7 +366,7 @@ func (r FutureGetCurrentNetResult) Receive() (domainmessage.KaspaNet, error) { return 0, err } - return domainmessage.KaspaNet(net), nil + return appmessage.KaspaNet(net), nil } // GetCurrentNetAsync returns an instance of a type that can be used to get the @@ -380,7 +380,7 @@ func (c *Client) GetCurrentNetAsync() FutureGetCurrentNetResult { } // GetCurrentNet returns the network the server is running on. -func (c *Client) GetCurrentNet() (domainmessage.KaspaNet, error) { +func (c *Client) GetCurrentNet() (appmessage.KaspaNet, error) { return c.GetCurrentNetAsync().Receive() } @@ -390,7 +390,7 @@ type FutureGetHeadersResult chan *response // Receive waits for the response promised by the future and returns the // getheaders result. -func (r FutureGetHeadersResult) Receive() ([]domainmessage.BlockHeader, error) { +func (r FutureGetHeadersResult) Receive() ([]appmessage.BlockHeader, error) { res, err := receiveFuture(r) if err != nil { return nil, err @@ -403,8 +403,8 @@ func (r FutureGetHeadersResult) Receive() ([]domainmessage.BlockHeader, error) { return nil, err } - // Deserialize the []string into []domainmessage.BlockHeader. - headers := make([]domainmessage.BlockHeader, len(result)) + // Deserialize the []string into []appmessage.BlockHeader. + headers := make([]appmessage.BlockHeader, len(result)) for i, headerHex := range result { serialized, err := hex.DecodeString(headerHex) if err != nil { @@ -432,7 +432,7 @@ func (c *Client) GetTopHeadersAsync(highHash *daghash.Hash) FutureGetHeadersResu } // GetTopHeaders sends a getTopHeaders rpc command to the server. -func (c *Client) GetTopHeaders(highHash *daghash.Hash) ([]domainmessage.BlockHeader, error) { +func (c *Client) GetTopHeaders(highHash *daghash.Hash) ([]appmessage.BlockHeader, error) { return c.GetTopHeadersAsync(highHash).Receive() } @@ -453,10 +453,10 @@ func (c *Client) GetHeadersAsync(lowHash, highHash *daghash.Hash) FutureGetHeade return c.sendCmd(cmd) } -// GetHeaders mimics the domainmessage protocol getheaders and headers messages by +// GetHeaders mimics the appmessage protocol getheaders and headers messages by // returning all headers in the DAG after the first known block in the // locators, up until a block hash matches highHash. -func (c *Client) GetHeaders(lowHash, highHash *daghash.Hash) ([]domainmessage.BlockHeader, error) { +func (c *Client) GetHeaders(lowHash, highHash *daghash.Hash) ([]appmessage.BlockHeader, error) { return c.GetHeadersAsync(lowHash, highHash).Receive() } diff --git a/network/rpc/client/notify.go b/infrastructure/network/rpc/client/notify.go similarity index 98% rename from network/rpc/client/notify.go rename to infrastructure/network/rpc/client/notify.go index ba86e4d78..7d1d075db 100644 --- a/network/rpc/client/notify.go +++ b/infrastructure/network/rpc/client/notify.go @@ -13,8 +13,8 @@ import ( "github.com/kaspanet/kaspad/util/mstime" "github.com/pkg/errors" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -88,7 +88,7 @@ type NotificationHandlers struct { // NotifyBlocks has been made to register for the notification and the // function is non-nil. Its parameters differ from OnBlockAdded: it // receives the block's blueScore, header, and relevant transactions. - OnFilteredBlockAdded func(blueScore uint64, header *domainmessage.BlockHeader, + OnFilteredBlockAdded func(blueScore uint64, header *appmessage.BlockHeader, txs []*util.Tx) // OnChainChanged is invoked when the selected parent chain of the @@ -316,7 +316,7 @@ func parseChainChangedParams(params []json.RawMessage) (removedChainBlockHashes // parseFilteredBlockAddedParams parses out the parameters included in a // filteredblockadded notification. func parseFilteredBlockAddedParams(params []json.RawMessage) (uint64, - *domainmessage.BlockHeader, []*util.Tx, error) { + *appmessage.BlockHeader, []*util.Tx, error) { if len(params) < 3 { return 0, nil, nil, wrongNumParams(len(params)) @@ -336,7 +336,7 @@ func parseFilteredBlockAddedParams(params []json.RawMessage) (uint64, } // Deserialize block header from slice of bytes. - var blockHeader domainmessage.BlockHeader + var blockHeader appmessage.BlockHeader err = blockHeader.Deserialize(bytes.NewReader(blockHeaderBytes)) if err != nil { return 0, nil, nil, err @@ -593,7 +593,7 @@ func (r FutureLoadTxFilterResult) Receive() error { // // See LoadTxFilter for the blocking version and more details. func (c *Client) LoadTxFilterAsync(reload bool, addresses []util.Address, - outpoints []domainmessage.Outpoint) FutureLoadTxFilterResult { + outpoints []appmessage.Outpoint) FutureLoadTxFilterResult { addrStrs := make([]string, len(addresses)) for i, a := range addresses { @@ -614,6 +614,6 @@ func (c *Client) LoadTxFilterAsync(reload bool, addresses []util.Address, // LoadTxFilter loads, reloads, or adds data to a websocket client's transaction // filter. The filter is consistently updated based on inspected transactions // during mempool acceptance, block acceptance, and for all rescanned blocks. -func (c *Client) LoadTxFilter(reload bool, addresses []util.Address, outpoints []domainmessage.Outpoint) error { +func (c *Client) LoadTxFilter(reload bool, addresses []util.Address, outpoints []appmessage.Outpoint) error { return c.LoadTxFilterAsync(reload, addresses, outpoints).Receive() } diff --git a/network/rpc/client/rawrequest.go b/infrastructure/network/rpc/client/rawrequest.go similarity index 97% rename from network/rpc/client/rawrequest.go rename to infrastructure/network/rpc/client/rawrequest.go index 47ccff9cb..f18021abc 100644 --- a/network/rpc/client/rawrequest.go +++ b/infrastructure/network/rpc/client/rawrequest.go @@ -6,7 +6,7 @@ package client import ( "encoding/json" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/pkg/errors" ) diff --git a/network/rpc/client/rawtransactions.go b/infrastructure/network/rpc/client/rawtransactions.go similarity index 84% rename from network/rpc/client/rawtransactions.go rename to infrastructure/network/rpc/client/rawtransactions.go index 86286cda4..779efff7b 100644 --- a/network/rpc/client/rawtransactions.go +++ b/infrastructure/network/rpc/client/rawtransactions.go @@ -8,8 +8,8 @@ import ( "bytes" "encoding/hex" "encoding/json" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" ) @@ -41,7 +41,7 @@ func (r FutureSendRawTransactionResult) Receive() (*daghash.TxID, error) { // the returned instance. // // See SendRawTransaction for the blocking version and more details. -func (c *Client) SendRawTransactionAsync(tx *domainmessage.MsgTx, allowHighFees bool) FutureSendRawTransactionResult { +func (c *Client) SendRawTransactionAsync(tx *appmessage.MsgTx, allowHighFees bool) FutureSendRawTransactionResult { txHex := "" if tx != nil { // Serialize the transaction and convert to hex string. @@ -58,6 +58,6 @@ func (c *Client) SendRawTransactionAsync(tx *domainmessage.MsgTx, allowHighFees // SendRawTransaction submits the encoded transaction to the server which will // then relay it to the network. -func (c *Client) SendRawTransaction(tx *domainmessage.MsgTx, allowHighFees bool) (*daghash.TxID, error) { +func (c *Client) SendRawTransaction(tx *appmessage.MsgTx, allowHighFees bool) (*daghash.TxID, error) { return c.SendRawTransactionAsync(tx, allowHighFees).Receive() } diff --git a/network/rpc/common.go b/infrastructure/network/rpc/common.go similarity index 95% rename from network/rpc/common.go rename to infrastructure/network/rpc/common.go index b0726b369..6489a9c8f 100644 --- a/network/rpc/common.go +++ b/infrastructure/network/rpc/common.go @@ -4,10 +4,10 @@ import ( "bytes" "encoding/hex" "fmt" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/dagconfig" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/pointers" @@ -57,7 +57,7 @@ func rpcNoTxInfoError(txID *daghash.TxID) *model.RPCError { // msgTxToHex serializes a transaction using the latest protocol version and // returns a hex-encoded string of the result. -func msgTxToHex(msgTx *domainmessage.MsgTx) (string, error) { +func msgTxToHex(msgTx *appmessage.MsgTx) (string, error) { var buf bytes.Buffer if err := msgTx.KaspaEncode(&buf, maxProtocolVersion); err != nil { context := fmt.Sprintf("Failed to encode msg of type %T", msgTx) @@ -69,7 +69,7 @@ func msgTxToHex(msgTx *domainmessage.MsgTx) (string, error) { // createVinList returns a slice of JSON objects for the inputs of the passed // transaction. -func createVinList(mtx *domainmessage.MsgTx) []model.Vin { +func createVinList(mtx *appmessage.MsgTx) []model.Vin { vinList := make([]model.Vin, len(mtx.TxIn)) for i, txIn := range mtx.TxIn { // The disassembled string will contain [error] inline @@ -92,7 +92,7 @@ func createVinList(mtx *domainmessage.MsgTx) []model.Vin { // createVoutList returns a slice of JSON objects for the outputs of the passed // transaction. -func createVoutList(mtx *domainmessage.MsgTx, dagParams *dagconfig.Params, filterAddrMap map[string]struct{}) []model.Vout { +func createVoutList(mtx *appmessage.MsgTx, dagParams *dagconfig.Params, filterAddrMap map[string]struct{}) []model.Vout { voutList := make([]model.Vout, 0, len(mtx.TxOut)) for i, v := range mtx.TxOut { // The disassembled string will contain [error] inline if the @@ -139,8 +139,8 @@ func createVoutList(mtx *domainmessage.MsgTx, dagParams *dagconfig.Params, filte // createTxRawResult converts the passed transaction and associated parameters // to a raw transaction JSON object. -func createTxRawResult(dagParams *dagconfig.Params, mtx *domainmessage.MsgTx, - txID string, blkHeader *domainmessage.BlockHeader, blkHash string, +func createTxRawResult(dagParams *dagconfig.Params, mtx *appmessage.MsgTx, + txID string, blkHeader *appmessage.BlockHeader, blkHash string, acceptingBlock *daghash.Hash, isInMempool bool) (*model.TxRawResult, error) { mtxHex, err := msgTxToHex(mtx) diff --git a/network/rpc/handle_connect.go b/infrastructure/network/rpc/handle_connect.go similarity index 90% rename from network/rpc/handle_connect.go rename to infrastructure/network/rpc/handle_connect.go index 6ec55f9d3..50b1b27b3 100644 --- a/network/rpc/handle_connect.go +++ b/infrastructure/network/rpc/handle_connect.go @@ -1,7 +1,7 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/network" ) diff --git a/network/rpc/handle_debug_level.go b/infrastructure/network/rpc/handle_debug_level.go similarity index 91% rename from network/rpc/handle_debug_level.go rename to infrastructure/network/rpc/handle_debug_level.go index e9f421d24..52e41c751 100644 --- a/network/rpc/handle_debug_level.go +++ b/infrastructure/network/rpc/handle_debug_level.go @@ -3,7 +3,7 @@ package rpc import ( "fmt" "github.com/kaspanet/kaspad/infrastructure/logger" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // handleDebugLevel handles debugLevel commands. diff --git a/network/rpc/handle_disconnect.go b/infrastructure/network/rpc/handle_disconnect.go similarity index 89% rename from network/rpc/handle_disconnect.go rename to infrastructure/network/rpc/handle_disconnect.go index d3c390c11..f6dfe8fe0 100644 --- a/network/rpc/handle_disconnect.go +++ b/infrastructure/network/rpc/handle_disconnect.go @@ -1,7 +1,7 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/network" ) diff --git a/network/rpc/handle_get_block.go b/infrastructure/network/rpc/handle_get_block.go similarity index 97% rename from network/rpc/handle_get_block.go rename to infrastructure/network/rpc/handle_get_block.go index fb9e82df5..475c27167 100644 --- a/network/rpc/handle_get_block.go +++ b/infrastructure/network/rpc/handle_get_block.go @@ -5,7 +5,7 @@ import ( "bytes" "encoding/hex" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/subnetworkid" diff --git a/network/rpc/handle_get_block_count.go b/infrastructure/network/rpc/handle_get_block_count.go similarity index 100% rename from network/rpc/handle_get_block_count.go rename to infrastructure/network/rpc/handle_get_block_count.go diff --git a/network/rpc/handle_get_block_dag_info.go b/infrastructure/network/rpc/handle_get_block_dag_info.go similarity index 93% rename from network/rpc/handle_get_block_dag_info.go rename to infrastructure/network/rpc/handle_get_block_dag_info.go index ac8b138d5..855a036e8 100644 --- a/network/rpc/handle_get_block_dag_info.go +++ b/infrastructure/network/rpc/handle_get_block_dag_info.go @@ -1,7 +1,7 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/network/rpc/handle_get_block_header.go b/infrastructure/network/rpc/handle_get_block_header.go similarity index 97% rename from network/rpc/handle_get_block_header.go rename to infrastructure/network/rpc/handle_get_block_header.go index fefc8d32e..2eaf1362a 100644 --- a/network/rpc/handle_get_block_header.go +++ b/infrastructure/network/rpc/handle_get_block_header.go @@ -4,7 +4,7 @@ import ( "bytes" "encoding/hex" "fmt" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" "strconv" ) diff --git a/network/rpc/handle_get_block_template.go b/infrastructure/network/rpc/handle_get_block_template.go similarity index 99% rename from network/rpc/handle_get_block_template.go rename to infrastructure/network/rpc/handle_get_block_template.go index f3036189b..3e04b921f 100644 --- a/network/rpc/handle_get_block_template.go +++ b/infrastructure/network/rpc/handle_get_block_template.go @@ -11,10 +11,10 @@ import ( "github.com/kaspanet/kaspad/util/mstime" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/blockdag" "github.com/kaspanet/kaspad/domain/mining" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/random" @@ -272,7 +272,7 @@ func handleGetBlockTemplateProposal(s *Server, request *model.TemplateRequest) ( "hexadecimal string (not %q)", hexData), } } - var msgBlock domainmessage.MsgBlock + var msgBlock appmessage.MsgBlock if err := msgBlock.Deserialize(bytes.NewReader(dataBytes)); err != nil { return nil, &model.RPCError{ Code: model.ErrRPCDeserialization, @@ -521,7 +521,7 @@ func (state *gbtWorkState) updateBlockTemplate(s *Server, payAddr util.Address) // changed or the transactions in the memory pool have been updated and // it has been at least gbtRegenerateSecond since the last template was // generated. - var msgBlock *domainmessage.MsgBlock + var msgBlock *appmessage.MsgBlock var targetDifficulty string tipHashes := s.dag.TipHashes() template := state.template @@ -698,7 +698,7 @@ func (state *gbtWorkState) blockTemplateResult(s *Server) (*model.GetBlockTempla CurTime: header.Timestamp.UnixMilliseconds(), Height: template.Height, ParentHashes: daghash.Strings(header.ParentHashes), - MassLimit: domainmessage.MaxMassPerBlock, + MassLimit: appmessage.MaxMassPerBlock, Transactions: transactions, HashMerkleRoot: header.HashMerkleRoot.String(), AcceptedIDMerkleRoot: header.AcceptedIDMerkleRoot.String(), diff --git a/network/rpc/handle_get_blocks.go b/infrastructure/network/rpc/handle_get_blocks.go similarity index 97% rename from network/rpc/handle_get_blocks.go rename to infrastructure/network/rpc/handle_get_blocks.go index 3a244c82a..10eb8c575 100644 --- a/network/rpc/handle_get_blocks.go +++ b/infrastructure/network/rpc/handle_get_blocks.go @@ -2,7 +2,7 @@ package rpc import ( "encoding/hex" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/network/rpc/handle_get_chain_from_block.go b/infrastructure/network/rpc/handle_get_chain_from_block.go similarity index 97% rename from network/rpc/handle_get_chain_from_block.go rename to infrastructure/network/rpc/handle_get_chain_from_block.go index ed5e1d618..e7b55c3b2 100644 --- a/network/rpc/handle_get_chain_from_block.go +++ b/infrastructure/network/rpc/handle_get_chain_from_block.go @@ -2,7 +2,7 @@ package rpc import ( "fmt" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/network/rpc/handle_get_connected_peer_info.go b/infrastructure/network/rpc/handle_get_connected_peer_info.go similarity index 94% rename from network/rpc/handle_get_connected_peer_info.go rename to infrastructure/network/rpc/handle_get_connected_peer_info.go index e9bd4b2f6..021b75ebc 100644 --- a/network/rpc/handle_get_connected_peer_info.go +++ b/infrastructure/network/rpc/handle_get_connected_peer_info.go @@ -1,7 +1,7 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // handleGetConnectedPeerInfo implements the getConnectedPeerInfo command. diff --git a/network/rpc/handle_get_connection_count.go b/infrastructure/network/rpc/handle_get_connection_count.go similarity index 100% rename from network/rpc/handle_get_connection_count.go rename to infrastructure/network/rpc/handle_get_connection_count.go diff --git a/network/rpc/handle_get_current_net.go b/infrastructure/network/rpc/handle_get_current_net.go similarity index 100% rename from network/rpc/handle_get_current_net.go rename to infrastructure/network/rpc/handle_get_current_net.go diff --git a/network/rpc/handle_get_difficulty.go b/infrastructure/network/rpc/handle_get_difficulty.go similarity index 100% rename from network/rpc/handle_get_difficulty.go rename to infrastructure/network/rpc/handle_get_difficulty.go diff --git a/network/rpc/handle_get_headers.go b/infrastructure/network/rpc/handle_get_headers.go similarity index 95% rename from network/rpc/handle_get_headers.go rename to infrastructure/network/rpc/handle_get_headers.go index d69877ad2..f0d3ceb98 100644 --- a/network/rpc/handle_get_headers.go +++ b/infrastructure/network/rpc/handle_get_headers.go @@ -3,7 +3,7 @@ package rpc import ( "bytes" "encoding/hex" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/network/rpc/handle_get_info.go b/infrastructure/network/rpc/handle_get_info.go similarity index 92% rename from network/rpc/handle_get_info.go rename to infrastructure/network/rpc/handle_get_info.go index acf54d7cf..b7ef71ac9 100644 --- a/network/rpc/handle_get_info.go +++ b/infrastructure/network/rpc/handle_get_info.go @@ -1,7 +1,7 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/version" ) diff --git a/network/rpc/handle_get_mempool_entry.go b/infrastructure/network/rpc/handle_get_mempool_entry.go similarity index 91% rename from network/rpc/handle_get_mempool_entry.go rename to infrastructure/network/rpc/handle_get_mempool_entry.go index 94beb5dce..cf1169f1a 100644 --- a/network/rpc/handle_get_mempool_entry.go +++ b/infrastructure/network/rpc/handle_get_mempool_entry.go @@ -1,7 +1,7 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" "github.com/pkg/errors" ) diff --git a/network/rpc/handle_get_mempool_info.go b/infrastructure/network/rpc/handle_get_mempool_info.go similarity index 86% rename from network/rpc/handle_get_mempool_info.go rename to infrastructure/network/rpc/handle_get_mempool_info.go index 7f5f3de77..9906d88cf 100644 --- a/network/rpc/handle_get_mempool_info.go +++ b/infrastructure/network/rpc/handle_get_mempool_info.go @@ -1,6 +1,6 @@ package rpc -import "github.com/kaspanet/kaspad/network/rpc/model" +import "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" // handleGetMempoolInfo implements the getMempoolInfo command. func handleGetMempoolInfo(s *Server, cmd interface{}, closeChan <-chan struct{}) (interface{}, error) { diff --git a/network/rpc/handle_get_peer_addresses.go b/infrastructure/network/rpc/handle_get_peer_addresses.go similarity index 94% rename from network/rpc/handle_get_peer_addresses.go rename to infrastructure/network/rpc/handle_get_peer_addresses.go index f0a33639c..f87a471f3 100644 --- a/network/rpc/handle_get_peer_addresses.go +++ b/infrastructure/network/rpc/handle_get_peer_addresses.go @@ -1,8 +1,8 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/addressmanager" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // handleGetPeerAddresses handles getPeerAddresses commands. diff --git a/network/rpc/handle_get_raw_mempool.go b/infrastructure/network/rpc/handle_get_raw_mempool.go similarity index 96% rename from network/rpc/handle_get_raw_mempool.go rename to infrastructure/network/rpc/handle_get_raw_mempool.go index 81dc39845..5c06f3e46 100644 --- a/network/rpc/handle_get_raw_mempool.go +++ b/infrastructure/network/rpc/handle_get_raw_mempool.go @@ -1,7 +1,7 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" ) diff --git a/network/rpc/handle_get_selected_tip.go b/infrastructure/network/rpc/handle_get_selected_tip.go similarity index 94% rename from network/rpc/handle_get_selected_tip.go rename to infrastructure/network/rpc/handle_get_selected_tip.go index dc61f685e..dd8d5022b 100644 --- a/network/rpc/handle_get_selected_tip.go +++ b/infrastructure/network/rpc/handle_get_selected_tip.go @@ -2,7 +2,7 @@ package rpc import ( "encoding/hex" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // handleGetSelectedTip implements the getSelectedTip command. diff --git a/network/rpc/handle_get_selected_tip_hash.go b/infrastructure/network/rpc/handle_get_selected_tip_hash.go similarity index 100% rename from network/rpc/handle_get_selected_tip_hash.go rename to infrastructure/network/rpc/handle_get_selected_tip_hash.go diff --git a/network/rpc/handle_get_subnetwork.go b/infrastructure/network/rpc/handle_get_subnetwork.go similarity index 92% rename from network/rpc/handle_get_subnetwork.go rename to infrastructure/network/rpc/handle_get_subnetwork.go index dc8d88ffc..26bb90e35 100644 --- a/network/rpc/handle_get_subnetwork.go +++ b/infrastructure/network/rpc/handle_get_subnetwork.go @@ -1,7 +1,7 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/subnetworkid" ) diff --git a/network/rpc/handle_get_top_headers.go b/infrastructure/network/rpc/handle_get_top_headers.go similarity index 94% rename from network/rpc/handle_get_top_headers.go rename to infrastructure/network/rpc/handle_get_top_headers.go index 3a8f2774a..097b561a7 100644 --- a/network/rpc/handle_get_top_headers.go +++ b/infrastructure/network/rpc/handle_get_top_headers.go @@ -3,7 +3,7 @@ package rpc import ( "bytes" "encoding/hex" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/network/rpc/handle_get_tx_out.go b/infrastructure/network/rpc/handle_get_tx_out.go similarity index 95% rename from network/rpc/handle_get_tx_out.go rename to infrastructure/network/rpc/handle_get_tx_out.go index 1b98410ff..c5216dbc4 100644 --- a/network/rpc/handle_get_tx_out.go +++ b/infrastructure/network/rpc/handle_get_tx_out.go @@ -4,9 +4,9 @@ import ( "encoding/hex" "fmt" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/pointers" @@ -64,7 +64,7 @@ func handleGetTxOut(s *Server, cmd interface{}, closeChan <-chan struct{}) (inte isCoinbase = mtx.IsCoinBase() isInMempool = true } else { - out := domainmessage.Outpoint{TxID: *txID, Index: c.Vout} + out := appmessage.Outpoint{TxID: *txID, Index: c.Vout} entry, ok := s.dag.GetUTXOEntry(out) if !ok { return nil, rpcNoTxInfoError(txID) diff --git a/network/rpc/handle_help.go b/infrastructure/network/rpc/handle_help.go similarity index 94% rename from network/rpc/handle_help.go rename to infrastructure/network/rpc/handle_help.go index c244b6a47..55b0e73dc 100644 --- a/network/rpc/handle_help.go +++ b/infrastructure/network/rpc/handle_help.go @@ -1,6 +1,6 @@ package rpc -import "github.com/kaspanet/kaspad/network/rpc/model" +import "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" // handleHelp implements the help command. func handleHelp(s *Server, cmd interface{}, closeChan <-chan struct{}) (interface{}, error) { diff --git a/network/rpc/handle_load_tx_filter.go b/infrastructure/network/rpc/handle_load_tx_filter.go similarity index 85% rename from network/rpc/handle_load_tx_filter.go rename to infrastructure/network/rpc/handle_load_tx_filter.go index 7e793a851..16013ee23 100644 --- a/network/rpc/handle_load_tx_filter.go +++ b/infrastructure/network/rpc/handle_load_tx_filter.go @@ -1,8 +1,8 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" ) @@ -13,7 +13,7 @@ import ( func handleLoadTxFilter(wsc *wsClient, icmd interface{}) (interface{}, error) { cmd := icmd.(*model.LoadTxFilterCmd) - outpoints := make([]domainmessage.Outpoint, len(cmd.Outpoints)) + outpoints := make([]appmessage.Outpoint, len(cmd.Outpoints)) for i := range cmd.Outpoints { txID, err := daghash.NewTxIDFromStr(cmd.Outpoints[i].TxID) if err != nil { @@ -22,7 +22,7 @@ func handleLoadTxFilter(wsc *wsClient, icmd interface{}) (interface{}, error) { Message: err.Error(), } } - outpoints[i] = domainmessage.Outpoint{ + outpoints[i] = appmessage.Outpoint{ TxID: *txID, Index: cmd.Outpoints[i].Index, } diff --git a/network/rpc/handle_notify_blocks.go b/infrastructure/network/rpc/handle_notify_blocks.go similarity index 100% rename from network/rpc/handle_notify_blocks.go rename to infrastructure/network/rpc/handle_notify_blocks.go diff --git a/network/rpc/handle_notify_chain_changes.go b/infrastructure/network/rpc/handle_notify_chain_changes.go similarity index 88% rename from network/rpc/handle_notify_chain_changes.go rename to infrastructure/network/rpc/handle_notify_chain_changes.go index 78838603b..c5fef233e 100644 --- a/network/rpc/handle_notify_chain_changes.go +++ b/infrastructure/network/rpc/handle_notify_chain_changes.go @@ -1,6 +1,6 @@ package rpc -import "github.com/kaspanet/kaspad/network/rpc/model" +import "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" // handleNotifyChainChanges implements the notifyChainChanges command extension for // websocket connections. diff --git a/network/rpc/handle_notify_new_transactions.go b/infrastructure/network/rpc/handle_notify_new_transactions.go similarity index 96% rename from network/rpc/handle_notify_new_transactions.go rename to infrastructure/network/rpc/handle_notify_new_transactions.go index 67c015da6..26f58e22b 100644 --- a/network/rpc/handle_notify_new_transactions.go +++ b/infrastructure/network/rpc/handle_notify_new_transactions.go @@ -1,7 +1,7 @@ package rpc import ( - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/subnetworkid" ) diff --git a/network/rpc/handle_rescan_block_filter.go b/infrastructure/network/rpc/handle_rescan_block_filter.go similarity index 94% rename from network/rpc/handle_rescan_block_filter.go rename to infrastructure/network/rpc/handle_rescan_block_filter.go index 6211110ea..8efc7a8a6 100644 --- a/network/rpc/handle_rescan_block_filter.go +++ b/infrastructure/network/rpc/handle_rescan_block_filter.go @@ -1,9 +1,9 @@ package rpc import ( + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/dagconfig" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" ) @@ -51,7 +51,7 @@ func rescanBlockFilter(filter *wsClientFilter, block *util.Block, params *dagcon continue } - op := domainmessage.Outpoint{ + op := appmessage.Outpoint{ TxID: *tx.ID(), Index: uint32(i), } diff --git a/network/rpc/handle_rescan_blocks.go b/infrastructure/network/rpc/handle_rescan_blocks.go similarity index 97% rename from network/rpc/handle_rescan_blocks.go rename to infrastructure/network/rpc/handle_rescan_blocks.go index 3acf845ab..8dfe9b964 100644 --- a/network/rpc/handle_rescan_blocks.go +++ b/infrastructure/network/rpc/handle_rescan_blocks.go @@ -2,7 +2,7 @@ package rpc import ( "fmt" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/network/rpc/handle_send_raw_transaction.go b/infrastructure/network/rpc/handle_send_raw_transaction.go similarity index 88% rename from network/rpc/handle_send_raw_transaction.go rename to infrastructure/network/rpc/handle_send_raw_transaction.go index 19a1778af..923785cfb 100644 --- a/network/rpc/handle_send_raw_transaction.go +++ b/infrastructure/network/rpc/handle_send_raw_transaction.go @@ -3,9 +3,9 @@ package rpc import ( "bytes" "encoding/hex" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/mempool" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/pkg/errors" ) @@ -19,7 +19,7 @@ func handleSendRawTransaction(s *Server, cmd interface{}, closeChan <-chan struc if err != nil { return nil, rpcDecodeHexError(hexStr) } - var msgTx domainmessage.MsgTx + var msgTx appmessage.MsgTx err = msgTx.Deserialize(bytes.NewReader(serializedTx)) if err != nil { return nil, &model.RPCError{ diff --git a/network/rpc/handle_session.go b/infrastructure/network/rpc/handle_session.go similarity index 77% rename from network/rpc/handle_session.go rename to infrastructure/network/rpc/handle_session.go index 57a3280da..bfb5b94d2 100644 --- a/network/rpc/handle_session.go +++ b/infrastructure/network/rpc/handle_session.go @@ -1,6 +1,6 @@ package rpc -import "github.com/kaspanet/kaspad/network/rpc/model" +import "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" // handleSession implements the session command extension for websocket // connections. diff --git a/network/rpc/handle_stop.go b/infrastructure/network/rpc/handle_stop.go similarity index 100% rename from network/rpc/handle_stop.go rename to infrastructure/network/rpc/handle_stop.go diff --git a/network/rpc/handle_stop_notify_blocks.go b/infrastructure/network/rpc/handle_stop_notify_blocks.go similarity index 100% rename from network/rpc/handle_stop_notify_blocks.go rename to infrastructure/network/rpc/handle_stop_notify_blocks.go diff --git a/network/rpc/handle_stop_notify_chain_changes.go b/infrastructure/network/rpc/handle_stop_notify_chain_changes.go similarity index 100% rename from network/rpc/handle_stop_notify_chain_changes.go rename to infrastructure/network/rpc/handle_stop_notify_chain_changes.go diff --git a/network/rpc/handle_stop_notify_new_transactions.go b/infrastructure/network/rpc/handle_stop_notify_new_transactions.go similarity index 100% rename from network/rpc/handle_stop_notify_new_transactions.go rename to infrastructure/network/rpc/handle_stop_notify_new_transactions.go diff --git a/network/rpc/handle_submit_block.go b/infrastructure/network/rpc/handle_submit_block.go similarity index 94% rename from network/rpc/handle_submit_block.go rename to infrastructure/network/rpc/handle_submit_block.go index 2c46ca80b..34ac03455 100644 --- a/network/rpc/handle_submit_block.go +++ b/infrastructure/network/rpc/handle_submit_block.go @@ -4,7 +4,7 @@ import ( "encoding/hex" "fmt" "github.com/kaspanet/kaspad/domain/blockdag" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" ) diff --git a/network/rpc/handle_uptime.go b/infrastructure/network/rpc/handle_uptime.go similarity index 100% rename from network/rpc/handle_uptime.go rename to infrastructure/network/rpc/handle_uptime.go diff --git a/network/rpc/handle_version.go b/infrastructure/network/rpc/handle_version.go similarity index 88% rename from network/rpc/handle_version.go rename to infrastructure/network/rpc/handle_version.go index 3d39b8d33..b149fed64 100644 --- a/network/rpc/handle_version.go +++ b/infrastructure/network/rpc/handle_version.go @@ -1,6 +1,6 @@ package rpc -import "github.com/kaspanet/kaspad/network/rpc/model" +import "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" // API version constants const ( diff --git a/network/rpc/handle_websocket_help.go b/infrastructure/network/rpc/handle_websocket_help.go similarity index 95% rename from network/rpc/handle_websocket_help.go rename to infrastructure/network/rpc/handle_websocket_help.go index de7499fa7..b61a78227 100644 --- a/network/rpc/handle_websocket_help.go +++ b/infrastructure/network/rpc/handle_websocket_help.go @@ -1,6 +1,6 @@ package rpc -import "github.com/kaspanet/kaspad/network/rpc/model" +import "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" // handleWebsocketHelp implements the help command for websocket connections. func handleWebsocketHelp(wsc *wsClient, icmd interface{}) (interface{}, error) { diff --git a/network/rpc/log.go b/infrastructure/network/rpc/log.go similarity index 100% rename from network/rpc/log.go rename to infrastructure/network/rpc/log.go diff --git a/network/rpc/model/CONTRIBUTORS b/infrastructure/network/rpc/model/CONTRIBUTORS similarity index 100% rename from network/rpc/model/CONTRIBUTORS rename to infrastructure/network/rpc/model/CONTRIBUTORS diff --git a/network/rpc/model/README.md b/infrastructure/network/rpc/model/README.md similarity index 100% rename from network/rpc/model/README.md rename to infrastructure/network/rpc/model/README.md diff --git a/network/rpc/model/command_info.go b/infrastructure/network/rpc/model/command_info.go similarity index 100% rename from network/rpc/model/command_info.go rename to infrastructure/network/rpc/model/command_info.go diff --git a/network/rpc/model/command_info_test.go b/infrastructure/network/rpc/model/command_info_test.go similarity index 99% rename from network/rpc/model/command_info_test.go rename to infrastructure/network/rpc/model/command_info_test.go index 0c101b381..752a9c3c4 100644 --- a/network/rpc/model/command_info_test.go +++ b/infrastructure/network/rpc/model/command_info_test.go @@ -9,7 +9,7 @@ import ( "reflect" "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestCommandMethod tests the CommandMethod function to ensure it retunrs the expected diff --git a/network/rpc/model/command_parse.go b/infrastructure/network/rpc/model/command_parse.go similarity index 100% rename from network/rpc/model/command_parse.go rename to infrastructure/network/rpc/model/command_parse.go diff --git a/network/rpc/model/command_parse_test.go b/infrastructure/network/rpc/model/command_parse_test.go similarity index 99% rename from network/rpc/model/command_parse_test.go rename to infrastructure/network/rpc/model/command_parse_test.go index 1b56de49f..b58d17b17 100644 --- a/network/rpc/model/command_parse_test.go +++ b/infrastructure/network/rpc/model/command_parse_test.go @@ -11,7 +11,7 @@ import ( "reflect" "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestAssignField tests the assignField function handles supported combinations diff --git a/network/rpc/model/doc.go b/infrastructure/network/rpc/model/doc.go similarity index 96% rename from network/rpc/model/doc.go rename to infrastructure/network/rpc/model/doc.go index 3408992a4..59761965f 100644 --- a/network/rpc/model/doc.go +++ b/infrastructure/network/rpc/model/doc.go @@ -4,7 +4,7 @@ Package model provides primitives for working with the kaspa JSON-RPC API. Overview When communicating via the JSON-RPC protocol, all of the commands need to be -marshalled to and from the the domainmessage in the appropriate format. This package +marshalled to and from the the appmessage in the appropriate format. This package provides data structures and primitives to ease this process. In addition, it also provides some additional features such as custom command @@ -17,7 +17,7 @@ provide some intuition into what the marshalling and unmarshalling that is discussed below is doing under the hood. As defined by the JSON-RPC spec, there are effectively two forms of messages on -the domainmessage: +the appmessage: - Request Objects {"jsonrpc":"1.0","id":"SOMEID","method":"SOMEMETHOD","params":[SOMEPARAMS]} @@ -51,7 +51,7 @@ package map into the required parts of the protocol To simplify the marshalling of the requests and responses, the MarshalCommand and MarshalResponse functions are provided. They return the raw bytes ready to be -sent across the domainmessage. +sent across the appmessage. Unmarshalling a received Request object is a two step process: 1) Unmarshal the raw bytes into a Request struct instance via json.Unmarshal @@ -119,7 +119,7 @@ There are 2 distinct type of errors supported by this package: - General errors related to marshalling or unmarshalling or improper use of the package (type Error) - - RPC errors which are intended to be returned across the domainmessage as a part of + - RPC errors which are intended to be returned across the appmessage as a part of the JSON-RPC response (type RPCError) The first category of errors (type Error) typically indicates a programmer error diff --git a/network/rpc/model/error.go b/infrastructure/network/rpc/model/error.go similarity index 99% rename from network/rpc/model/error.go rename to infrastructure/network/rpc/model/error.go index 40240cc7c..df4910ba5 100644 --- a/network/rpc/model/error.go +++ b/infrastructure/network/rpc/model/error.go @@ -92,7 +92,7 @@ func (e ErrorCode) String() string { // Error identifies a general error. This differs from an RPCError in that this // error typically is used more by the consumers of the package as opposed to -// RPCErrors which are intended to be returned to the client across the domainmessage via +// RPCErrors which are intended to be returned to the client across the appmessage via // a JSON-RPC Response. The caller can use type assertions to determine the // specific error and access the ErrorCode field. type Error struct { diff --git a/network/rpc/model/error_test.go b/infrastructure/network/rpc/model/error_test.go similarity index 97% rename from network/rpc/model/error_test.go rename to infrastructure/network/rpc/model/error_test.go index de8bf783a..756c99d9c 100644 --- a/network/rpc/model/error_test.go +++ b/infrastructure/network/rpc/model/error_test.go @@ -7,7 +7,7 @@ package model_test import ( "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestErrorCodeStringer tests the stringized output for the ErrorCode type. diff --git a/network/rpc/model/example_test.go b/infrastructure/network/rpc/model/example_test.go similarity index 89% rename from network/rpc/model/example_test.go rename to infrastructure/network/rpc/model/example_test.go index d2b0f4cb8..26175d4ea 100644 --- a/network/rpc/model/example_test.go +++ b/infrastructure/network/rpc/model/example_test.go @@ -9,7 +9,7 @@ import ( "fmt" "github.com/kaspanet/kaspad/util/pointers" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // This example demonstrates how to create and marshal a command into a JSON-RPC @@ -35,7 +35,7 @@ func ExampleMarshalCommand() { } // Display the marshalled command. Ordinarily this would be sent across - // the domainmessage to the RPC server, but for this example, just display it. + // the appmessage to the RPC server, but for this example, just display it. fmt.Printf("%s\n", marshalledBytes) // Output: @@ -45,11 +45,11 @@ func ExampleMarshalCommand() { // This example demonstrates how to unmarshal a JSON-RPC request and then // unmarshal the concrete request into a concrete command. func ExampleUnmarshalCommand() { - // Ordinarily this would be read from the domainmessage, but for this example, + // Ordinarily this would be read from the appmessage, but for this example, // it is hard coded here for clarity. data := []byte(`{"jsonrpc":"1.0","method":"getBlock","params":["000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",false],"id":1}`) - // Unmarshal the raw bytes from the domainmessage into a JSON-RPC request. + // Unmarshal the raw bytes from the appmessage into a JSON-RPC request. var request model.Request if err := json.Unmarshal(data, &request); err != nil { fmt.Println(err) @@ -108,7 +108,7 @@ func ExampleMarshalResponse() { } // Display the marshalled response. Ordinarily this would be sent - // across the domainmessage to the RPC client, but for this example, just display + // across the appmessage to the RPC client, but for this example, just display // it. fmt.Printf("%s\n", marshalledBytes) @@ -119,12 +119,12 @@ func ExampleMarshalResponse() { // This example demonstrates how to unmarshal a JSON-RPC response and then // unmarshal the result field in the response to a concrete type. func Example_unmarshalResponse() { - // Ordinarily this would be read from the domainmessage, but for this example, + // Ordinarily this would be read from the appmessage, but for this example, // it is hard coded here for clarity. This is an example response to a // getblockheight request. data := []byte(`{"result":350001,"error":null,"id":1}`) - // Unmarshal the raw bytes from the domainmessage into a JSON-RPC response. + // Unmarshal the raw bytes from the appmessage into a JSON-RPC response. var response model.Response if err := json.Unmarshal(data, &response); err != nil { fmt.Println("Malformed JSON-RPC response:", err) diff --git a/network/rpc/model/export_test.go b/infrastructure/network/rpc/model/export_test.go similarity index 100% rename from network/rpc/model/export_test.go rename to infrastructure/network/rpc/model/export_test.go diff --git a/network/rpc/model/help.go b/infrastructure/network/rpc/model/help.go similarity index 100% rename from network/rpc/model/help.go rename to infrastructure/network/rpc/model/help.go diff --git a/network/rpc/model/help_test.go b/infrastructure/network/rpc/model/help_test.go similarity index 99% rename from network/rpc/model/help_test.go rename to infrastructure/network/rpc/model/help_test.go index 1a6deb279..928414362 100644 --- a/network/rpc/model/help_test.go +++ b/infrastructure/network/rpc/model/help_test.go @@ -9,7 +9,7 @@ import ( "reflect" "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestHelpReflectInternals ensures the various help functions which deal with diff --git a/network/rpc/model/jsonrpc.go b/infrastructure/network/rpc/model/jsonrpc.go similarity index 98% rename from network/rpc/model/jsonrpc.go rename to infrastructure/network/rpc/model/jsonrpc.go index 07600fd7f..ad4597f74 100644 --- a/network/rpc/model/jsonrpc.go +++ b/infrastructure/network/rpc/model/jsonrpc.go @@ -120,7 +120,7 @@ type Response struct { // caller wants to construct raw responses for some reason. // // Typically callers will instead want to create the fully marshalled JSON-RPC -// response to send over the domainmessage with the MarshalResponse function. +// response to send over the appmessage with the MarshalResponse function. func NewResponse(id interface{}, marshalledResult []byte, rpcErr *RPCError) (*Response, error) { if !IsValidIDType(id) { str := fmt.Sprintf("the id of type '%T' is invalid", id) diff --git a/network/rpc/model/jsonrpc_errors.go b/infrastructure/network/rpc/model/jsonrpc_errors.go similarity index 100% rename from network/rpc/model/jsonrpc_errors.go rename to infrastructure/network/rpc/model/jsonrpc_errors.go diff --git a/network/rpc/model/jsonrpc_test.go b/infrastructure/network/rpc/model/jsonrpc_test.go similarity index 98% rename from network/rpc/model/jsonrpc_test.go rename to infrastructure/network/rpc/model/jsonrpc_test.go index f374d9d71..d58cd184d 100644 --- a/network/rpc/model/jsonrpc_test.go +++ b/infrastructure/network/rpc/model/jsonrpc_test.go @@ -10,7 +10,7 @@ import ( "reflect" "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestIsValidIDType ensures the IsValidIDType function behaves as expected. diff --git a/network/rpc/model/register.go b/infrastructure/network/rpc/model/register.go similarity index 100% rename from network/rpc/model/register.go rename to infrastructure/network/rpc/model/register.go diff --git a/network/rpc/model/register_test.go b/infrastructure/network/rpc/model/register_test.go similarity index 99% rename from network/rpc/model/register_test.go rename to infrastructure/network/rpc/model/register_test.go index 0072f2639..fce484eb2 100644 --- a/network/rpc/model/register_test.go +++ b/infrastructure/network/rpc/model/register_test.go @@ -10,7 +10,7 @@ import ( "sort" "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestUsageFlagStringer tests the stringized output for the UsageFlag type. diff --git a/network/rpc/model/rpc_commands.go b/infrastructure/network/rpc/model/rpc_commands.go similarity index 100% rename from network/rpc/model/rpc_commands.go rename to infrastructure/network/rpc/model/rpc_commands.go diff --git a/network/rpc/model/rpc_commands_test.go b/infrastructure/network/rpc/model/rpc_commands_test.go similarity index 99% rename from network/rpc/model/rpc_commands_test.go rename to infrastructure/network/rpc/model/rpc_commands_test.go index 83b49521c..422baedb7 100644 --- a/network/rpc/model/rpc_commands_test.go +++ b/infrastructure/network/rpc/model/rpc_commands_test.go @@ -13,7 +13,7 @@ import ( "reflect" "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestRPCServerCommands tests all of the kaspa rpc server commands marshal and unmarshal diff --git a/network/rpc/model/rpc_results.go b/infrastructure/network/rpc/model/rpc_results.go similarity index 99% rename from network/rpc/model/rpc_results.go rename to infrastructure/network/rpc/model/rpc_results.go index 4d3d5ccde..b97ae6d64 100644 --- a/network/rpc/model/rpc_results.go +++ b/infrastructure/network/rpc/model/rpc_results.go @@ -6,7 +6,7 @@ package model import ( "encoding/json" - "github.com/kaspanet/kaspad/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" ) // GetBlockHeaderVerboseResult models the data from the getblockheader command when diff --git a/network/rpc/model/rpc_results_test.go b/infrastructure/network/rpc/model/rpc_results_test.go similarity index 97% rename from network/rpc/model/rpc_results_test.go rename to infrastructure/network/rpc/model/rpc_results_test.go index ee18b9f83..c1393c8c7 100644 --- a/network/rpc/model/rpc_results_test.go +++ b/infrastructure/network/rpc/model/rpc_results_test.go @@ -9,7 +9,7 @@ import ( "github.com/kaspanet/kaspad/util/pointers" "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestRPCServerCustomResults ensures any results that have custom marshalling diff --git a/network/rpc/model/rpc_websocket_commands.go b/infrastructure/network/rpc/model/rpc_websocket_commands.go similarity index 100% rename from network/rpc/model/rpc_websocket_commands.go rename to infrastructure/network/rpc/model/rpc_websocket_commands.go diff --git a/network/rpc/model/rpc_websocket_commands_test.go b/infrastructure/network/rpc/model/rpc_websocket_commands_test.go similarity index 99% rename from network/rpc/model/rpc_websocket_commands_test.go rename to infrastructure/network/rpc/model/rpc_websocket_commands_test.go index 17d381db5..456f3c83c 100644 --- a/network/rpc/model/rpc_websocket_commands_test.go +++ b/infrastructure/network/rpc/model/rpc_websocket_commands_test.go @@ -13,7 +13,7 @@ import ( "reflect" "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestRPCServerWebsocketCommands tests all of the kaspa rpc server websocket-specific commands diff --git a/network/rpc/model/rpc_websocket_notifications.go b/infrastructure/network/rpc/model/rpc_websocket_notifications.go similarity index 100% rename from network/rpc/model/rpc_websocket_notifications.go rename to infrastructure/network/rpc/model/rpc_websocket_notifications.go diff --git a/network/rpc/model/rpc_websocket_notifications_test.go b/infrastructure/network/rpc/model/rpc_websocket_notifications_test.go similarity index 99% rename from network/rpc/model/rpc_websocket_notifications_test.go rename to infrastructure/network/rpc/model/rpc_websocket_notifications_test.go index 7e601fd02..43de84ae0 100644 --- a/network/rpc/model/rpc_websocket_notifications_test.go +++ b/infrastructure/network/rpc/model/rpc_websocket_notifications_test.go @@ -14,7 +14,7 @@ import ( "github.com/kaspanet/kaspad/util/subnetworkid" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/daghash" ) diff --git a/network/rpc/model/rpc_websocket_results.go b/infrastructure/network/rpc/model/rpc_websocket_results.go similarity index 100% rename from network/rpc/model/rpc_websocket_results.go rename to infrastructure/network/rpc/model/rpc_websocket_results.go diff --git a/network/rpc/model/rpc_websocket_results_test.go b/infrastructure/network/rpc/model/rpc_websocket_results_test.go similarity index 94% rename from network/rpc/model/rpc_websocket_results_test.go rename to infrastructure/network/rpc/model/rpc_websocket_results_test.go index 99078e469..6ffcc9b5e 100644 --- a/network/rpc/model/rpc_websocket_results_test.go +++ b/infrastructure/network/rpc/model/rpc_websocket_results_test.go @@ -9,7 +9,7 @@ import ( "encoding/json" "testing" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" ) // TestRPCServerWebsocketResults ensures any results that have custom marshalling diff --git a/network/rpc/rpcserver.go b/infrastructure/network/rpc/rpcserver.go similarity index 99% rename from network/rpc/rpcserver.go rename to infrastructure/network/rpc/rpcserver.go index 0a2994323..4a4b56b70 100644 --- a/network/rpc/rpcserver.go +++ b/infrastructure/network/rpc/rpcserver.go @@ -22,9 +22,9 @@ import ( "sync/atomic" "time" - "github.com/kaspanet/kaspad/network/addressmanager" - "github.com/kaspanet/kaspad/network/connmanager" - "github.com/kaspanet/kaspad/network/protocol" + "github.com/kaspanet/kaspad/app/protocol" + "github.com/kaspanet/kaspad/infrastructure/network/addressmanager" + "github.com/kaspanet/kaspad/infrastructure/network/connmanager" "github.com/kaspanet/kaspad/util/mstime" "github.com/pkg/errors" @@ -35,7 +35,7 @@ import ( "github.com/kaspanet/kaspad/domain/mempool" "github.com/kaspanet/kaspad/domain/mining" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util/fs" "github.com/kaspanet/kaspad/util/network" ) diff --git a/network/rpc/rpcserverhelp.go b/infrastructure/network/rpc/rpcserverhelp.go similarity index 99% rename from network/rpc/rpcserverhelp.go rename to infrastructure/network/rpc/rpcserverhelp.go index 4c1a0e870..53f002730 100644 --- a/network/rpc/rpcserverhelp.go +++ b/infrastructure/network/rpc/rpcserverhelp.go @@ -10,7 +10,7 @@ import ( "strings" "sync" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/pkg/errors" ) @@ -330,13 +330,13 @@ var helpDescsEnUS = map[string]string{ // GetTopHeadersCmd help. "getTopHeaders--synopsis": "Returns the top block headers starting with the provided high hash (not inclusive)", "getTopHeaders-highHash": "Block hash to start including block headers from; if not found, it'll start from the virtual.", - "getTopHeaders--result0": "Serialized block headers of all located blocks, limited to some arbitrary maximum number of hashes (currently 2000, which matches the domainmessage protocol headers message, but this is not guaranteed)", + "getTopHeaders--result0": "Serialized block headers of all located blocks, limited to some arbitrary maximum number of hashes (currently 2000, which matches the appmessage protocol headers message, but this is not guaranteed)", // GetHeadersCmd help. "getHeaders--synopsis": "Returns block headers starting with the first known block hash from the request", "getHeaders-lowHash": "Block hash to start including headers from; if not found, it'll start from the genesis block.", "getHeaders-highHash": "Block hash to stop including block headers for; if not found, all headers to the latest known block are returned.", - "getHeaders--result0": "Serialized block headers of all located blocks, limited to some arbitrary maximum number of hashes (currently 2000, which matches the domainmessage protocol headers message, but this is not guaranteed)", + "getHeaders--result0": "Serialized block headers of all located blocks, limited to some arbitrary maximum number of hashes (currently 2000, which matches the appmessage protocol headers message, but this is not guaranteed)", // GetInfoCmd help. "getInfo--synopsis": "Returns a JSON object containing various state info.", diff --git a/network/rpc/rpcserverhelp_test.go b/infrastructure/network/rpc/rpcserverhelp_test.go similarity index 100% rename from network/rpc/rpcserverhelp_test.go rename to infrastructure/network/rpc/rpcserverhelp_test.go diff --git a/network/rpc/rpcwebsocket.go b/infrastructure/network/rpc/rpcwebsocket.go similarity index 98% rename from network/rpc/rpcwebsocket.go rename to infrastructure/network/rpc/rpcwebsocket.go index 770739960..eba187a6a 100644 --- a/network/rpc/rpcwebsocket.go +++ b/infrastructure/network/rpc/rpcwebsocket.go @@ -25,10 +25,10 @@ import ( "golang.org/x/crypto/ripemd160" "github.com/btcsuite/websocket" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/dagconfig" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/kaspanet/kaspad/network/rpc/model" + "github.com/kaspanet/kaspad/infrastructure/network/rpc/model" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) @@ -268,21 +268,21 @@ type wsClientFilter struct { otherAddresses map[string]struct{} // Outpoints of unspent outputs. - unspent map[domainmessage.Outpoint]struct{} + unspent map[appmessage.Outpoint]struct{} } // newWSClientFilter creates a new, empty wsClientFilter struct to be used // for a websocket client. // // NOTE: This extension was ported from github.com/decred/dcrd -func newWSClientFilter(addresses []string, unspentOutpoints []domainmessage.Outpoint, params *dagconfig.Params) *wsClientFilter { +func newWSClientFilter(addresses []string, unspentOutpoints []appmessage.Outpoint, params *dagconfig.Params) *wsClientFilter { filter := &wsClientFilter{ pubKeyHashes: map[[ripemd160.Size]byte]struct{}{}, scriptHashes: map[[ripemd160.Size]byte]struct{}{}, compressedPubKeys: map[[33]byte]struct{}{}, uncompressedPubKeys: map[[65]byte]struct{}{}, otherAddresses: map[string]struct{}{}, - unspent: make(map[domainmessage.Outpoint]struct{}, len(unspentOutpoints)), + unspent: make(map[appmessage.Outpoint]struct{}, len(unspentOutpoints)), } for _, s := range addresses { @@ -348,7 +348,7 @@ func (f *wsClientFilter) existsAddress(a util.Address) bool { // addUnspentOutpoint adds an outpoint to the wsClientFilter. // // NOTE: This extension was ported from github.com/decred/dcrd -func (f *wsClientFilter) addUnspentOutpoint(op *domainmessage.Outpoint) { +func (f *wsClientFilter) addUnspentOutpoint(op *appmessage.Outpoint) { f.unspent[*op] = struct{}{} } @@ -356,12 +356,12 @@ func (f *wsClientFilter) addUnspentOutpoint(op *domainmessage.Outpoint) { // the wsClientFilter. // // NOTE: This extension was ported from github.com/decred/dcrd -func (f *wsClientFilter) existsUnspentOutpointNoLock(op *domainmessage.Outpoint) bool { +func (f *wsClientFilter) existsUnspentOutpointNoLock(op *appmessage.Outpoint) bool { _, ok := f.unspent[*op] return ok } -func (f *wsClientFilter) existsUnspentOutpoint(op *domainmessage.Outpoint) bool { +func (f *wsClientFilter) existsUnspentOutpoint(op *appmessage.Outpoint) bool { f.mu.Lock() defer f.mu.Unlock() return f.existsUnspentOutpointNoLock(op) @@ -602,7 +602,7 @@ func (m *wsNotificationManager) subscribedClients(tx *util.Tx, defer filter.mu.Unlock() if filter.existsAddress(addr) { subscribed[quitChan] = struct{}{} - op := domainmessage.Outpoint{ + op := appmessage.Outpoint{ TxID: *tx.ID(), Index: uint32(i), } @@ -755,7 +755,7 @@ func (m *wsNotificationManager) notifyForNewTx(clients map[chan struct{}]*wsClie } // txHexString returns the serialized transaction encoded in hexadecimal. -func txHexString(tx *domainmessage.MsgTx) string { +func txHexString(tx *appmessage.MsgTx) string { buf := bytes.NewBuffer(make([]byte, 0, tx.SerializeSize())) // Ignore Serialize's error, as writing to a bytes.buffer cannot fail. tx.Serialize(buf) diff --git a/network/rpc/utils.go b/infrastructure/network/rpc/utils.go similarity index 100% rename from network/rpc/utils.go rename to infrastructure/network/rpc/utils.go diff --git a/infrastructure/limits/limits_plan9.go b/infrastructure/os/limits/limits_plan9.go similarity index 100% rename from infrastructure/limits/limits_plan9.go rename to infrastructure/os/limits/limits_plan9.go diff --git a/infrastructure/limits/limits_unix.go b/infrastructure/os/limits/limits_unix.go similarity index 100% rename from infrastructure/limits/limits_unix.go rename to infrastructure/os/limits/limits_unix.go diff --git a/infrastructure/limits/limits_windows.go b/infrastructure/os/limits/limits_windows.go similarity index 100% rename from infrastructure/limits/limits_windows.go rename to infrastructure/os/limits/limits_windows.go diff --git a/infrastructure/signal/log.go b/infrastructure/os/signal/log.go similarity index 100% rename from infrastructure/signal/log.go rename to infrastructure/os/signal/log.go diff --git a/infrastructure/signal/signal.go b/infrastructure/os/signal/signal.go similarity index 100% rename from infrastructure/signal/signal.go rename to infrastructure/os/signal/signal.go diff --git a/infrastructure/signal/signalsigterm.go b/infrastructure/os/signal/signalsigterm.go similarity index 100% rename from infrastructure/signal/signalsigterm.go rename to infrastructure/os/signal/signalsigterm.go diff --git a/main.go b/main.go index bea8b9a0c..d2aeac301 100644 --- a/main.go +++ b/main.go @@ -15,12 +15,12 @@ import ( "github.com/kaspanet/kaspad/app" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" "github.com/kaspanet/kaspad/domain/blockdag/indexers" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/infrastructure/limits" - "github.com/kaspanet/kaspad/infrastructure/signal" + "github.com/kaspanet/kaspad/infrastructure/os/limits" + "github.com/kaspanet/kaspad/infrastructure/os/signal" "github.com/kaspanet/kaspad/util/panics" "github.com/kaspanet/kaspad/util/profiling" "github.com/kaspanet/kaspad/version" @@ -211,3 +211,9 @@ func main() { os.Exit(1) } } + +// doUpgrades performs upgrades to kaspad as new versions require it. +// currently it's a placeholder we got from kaspad upstream, that does nothing +func doUpgrades() error { + return nil +} diff --git a/network/domainmessage/base_message.go b/network/domainmessage/base_message.go deleted file mode 100644 index 7fec1e6f7..000000000 --- a/network/domainmessage/base_message.go +++ /dev/null @@ -1,24 +0,0 @@ -package domainmessage - -import "time" - -type baseMessage struct { - messageNumber uint64 - receivedAt time.Time -} - -func (b *baseMessage) MessageNumber() uint64 { - return b.messageNumber -} - -func (b *baseMessage) SetMessageNumber(messageNumber uint64) { - b.messageNumber = messageNumber -} - -func (b *baseMessage) ReceivedAt() time.Time { - return b.receivedAt -} - -func (b *baseMessage) SetReceivedAt(receivedAt time.Time) { - b.receivedAt = receivedAt -} diff --git a/network/netadapter/server/grpcserver/protowire/README.md b/network/netadapter/server/grpcserver/protowire/README.md deleted file mode 100644 index e48911c74..000000000 --- a/network/netadapter/server/grpcserver/protowire/README.md +++ /dev/null @@ -1,7 +0,0 @@ -protowire -========= - -1. Download and place in your PATH: https://github.com/protocolbuffers/protobuf/releases/download/v3.12.3/protoc-3.12.3-linux-x86_64.zip -2. `go get github.com/golang/protobuf/protoc-gen-go` -3. `go get google.golang.org/grpc/cmd/protoc-gen-go-grpc` -4. In the protowire directory: `go generate .` \ No newline at end of file diff --git a/network/netadapter/server/grpcserver/protowire/message_block_locator.go b/network/netadapter/server/grpcserver/protowire/message_block_locator.go deleted file mode 100644 index 13b0bb6a6..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_block_locator.go +++ /dev/null @@ -1,29 +0,0 @@ -package protowire - -import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/pkg/errors" -) - -func (x *KaspadMessage_BlockLocator) toDomainMessage() (domainmessage.Message, error) { - if len(x.BlockLocator.Hashes) > domainmessage.MaxBlockLocatorsPerMsg { - return nil, errors.Errorf("too many block locator hashes for message "+ - "[count %d, max %d]", len(x.BlockLocator.Hashes), domainmessage.MaxBlockLocatorsPerMsg) - } - hashes, err := protoHashesToWire(x.BlockLocator.Hashes) - if err != nil { - return nil, err - } - return &domainmessage.MsgBlockLocator{BlockLocatorHashes: hashes}, nil -} - -func (x *KaspadMessage_BlockLocator) fromDomainMessage(msgBlockLocator *domainmessage.MsgBlockLocator) error { - if len(msgBlockLocator.BlockLocatorHashes) > domainmessage.MaxBlockLocatorsPerMsg { - return errors.Errorf("too many block locator hashes for message "+ - "[count %d, max %d]", len(msgBlockLocator.BlockLocatorHashes), domainmessage.MaxBlockLocatorsPerMsg) - } - x.BlockLocator = &BlockLocatorMessage{ - Hashes: wireHashesToProto(msgBlockLocator.BlockLocatorHashes), - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_done_ibd_blocks.go b/network/netadapter/server/grpcserver/protowire/message_done_ibd_blocks.go deleted file mode 100644 index e5fb559ac..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_done_ibd_blocks.go +++ /dev/null @@ -1,11 +0,0 @@ -package protowire - -import "github.com/kaspanet/kaspad/network/domainmessage" - -func (x *KaspadMessage_DoneIBDBlocks) toDomainMessage() (domainmessage.Message, error) { - return &domainmessage.MsgDoneIBDBlocks{}, nil -} - -func (x *KaspadMessage_DoneIBDBlocks) fromDomainMessage(_ *domainmessage.MsgDoneIBDBlocks) error { - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_ibd_block.go b/network/netadapter/server/grpcserver/protowire/message_ibd_block.go deleted file mode 100644 index 3f3f5e084..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_ibd_block.go +++ /dev/null @@ -1,16 +0,0 @@ -package protowire - -import "github.com/kaspanet/kaspad/network/domainmessage" - -func (x *KaspadMessage_IbdBlock) toDomainMessage() (domainmessage.Message, error) { - msgBlock, err := x.IbdBlock.toDomainMessage() - if err != nil { - return nil, err - } - return &domainmessage.MsgIBDBlock{MsgBlock: msgBlock.(*domainmessage.MsgBlock)}, nil -} - -func (x *KaspadMessage_IbdBlock) fromDomainMessage(msgIBDBlock *domainmessage.MsgIBDBlock) error { - x.IbdBlock = new(BlockMessage) - return x.IbdBlock.fromDomainMessage(msgIBDBlock.MsgBlock) -} diff --git a/network/netadapter/server/grpcserver/protowire/message_inv_relay_block.go b/network/netadapter/server/grpcserver/protowire/message_inv_relay_block.go deleted file mode 100644 index f854b6d79..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_inv_relay_block.go +++ /dev/null @@ -1,19 +0,0 @@ -package protowire - -import "github.com/kaspanet/kaspad/network/domainmessage" - -func (x *KaspadMessage_InvRelayBlock) toDomainMessage() (domainmessage.Message, error) { - hash, err := x.InvRelayBlock.Hash.toWire() - if err != nil { - return nil, err - } - - return &domainmessage.MsgInvRelayBlock{Hash: hash}, nil -} - -func (x *KaspadMessage_InvRelayBlock) fromDomainMessage(msgInvRelayBlock *domainmessage.MsgInvRelayBlock) error { - x.InvRelayBlock = &InvRelayBlockMessage{ - Hash: wireHashToProto(msgInvRelayBlock.Hash), - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_inv_transactions.go b/network/netadapter/server/grpcserver/protowire/message_inv_transactions.go deleted file mode 100644 index 3160acaa6..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_inv_transactions.go +++ /dev/null @@ -1,31 +0,0 @@ -package protowire - -import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/pkg/errors" -) - -func (x *KaspadMessage_InvTransactions) toDomainMessage() (domainmessage.Message, error) { - if len(x.InvTransactions.Ids) > domainmessage.MaxInvPerTxInvMsg { - return nil, errors.Errorf("too many hashes for message "+ - "[count %d, max %d]", len(x.InvTransactions.Ids), domainmessage.MaxInvPerTxInvMsg) - } - - ids, err := protoTransactionIDsToWire(x.InvTransactions.Ids) - if err != nil { - return nil, err - } - return &domainmessage.MsgInvTransaction{TxIDs: ids}, nil -} - -func (x *KaspadMessage_InvTransactions) fromDomainMessage(msgInvTransaction *domainmessage.MsgInvTransaction) error { - if len(msgInvTransaction.TxIDs) > domainmessage.MaxInvPerTxInvMsg { - return errors.Errorf("too many hashes for message "+ - "[count %d, max %d]", len(msgInvTransaction.TxIDs), domainmessage.MaxInvPerTxInvMsg) - } - - x.InvTransactions = &InvTransactionsMessage{ - Ids: wireTransactionIDsToProto(msgInvTransaction.TxIDs), - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_ping.go b/network/netadapter/server/grpcserver/protowire/message_ping.go deleted file mode 100644 index 620740c53..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_ping.go +++ /dev/null @@ -1,18 +0,0 @@ -package protowire - -import ( - "github.com/kaspanet/kaspad/network/domainmessage" -) - -func (x *KaspadMessage_Ping) toDomainMessage() (domainmessage.Message, error) { - return &domainmessage.MsgPing{ - Nonce: x.Ping.Nonce, - }, nil -} - -func (x *KaspadMessage_Ping) fromDomainMessage(msgPing *domainmessage.MsgPing) error { - x.Ping = &PingMessage{ - Nonce: msgPing.Nonce, - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_pong.go b/network/netadapter/server/grpcserver/protowire/message_pong.go deleted file mode 100644 index 81cd16bcb..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_pong.go +++ /dev/null @@ -1,18 +0,0 @@ -package protowire - -import ( - "github.com/kaspanet/kaspad/network/domainmessage" -) - -func (x *KaspadMessage_Pong) toDomainMessage() (domainmessage.Message, error) { - return &domainmessage.MsgPong{ - Nonce: x.Pong.Nonce, - }, nil -} - -func (x *KaspadMessage_Pong) fromDomainMessage(msgPong *domainmessage.MsgPong) error { - x.Pong = &PongMessage{ - Nonce: msgPong.Nonce, - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_reject.go b/network/netadapter/server/grpcserver/protowire/message_reject.go deleted file mode 100644 index 3bdb427fd..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_reject.go +++ /dev/null @@ -1,18 +0,0 @@ -package protowire - -import ( - "github.com/kaspanet/kaspad/network/domainmessage" -) - -func (x *KaspadMessage_Reject) toWireMessage() (domainmessage.Message, error) { - return &domainmessage.MsgReject{ - Reason: x.Reject.Reason, - }, nil -} - -func (x *KaspadMessage_Reject) fromWireMessage(msgReject *domainmessage.MsgReject) error { - x.Reject = &RejectMessage{ - Reason: msgReject.Reason, - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_request_next_ibd_blocks.go b/network/netadapter/server/grpcserver/protowire/message_request_next_ibd_blocks.go deleted file mode 100644 index 519d4f00c..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_request_next_ibd_blocks.go +++ /dev/null @@ -1,11 +0,0 @@ -package protowire - -import "github.com/kaspanet/kaspad/network/domainmessage" - -func (x *KaspadMessage_RequestNextIBDBlocks) toDomainMessage() (domainmessage.Message, error) { - return &domainmessage.MsgRequestNextIBDBlocks{}, nil -} - -func (x *KaspadMessage_RequestNextIBDBlocks) fromDomainMessage(_ *domainmessage.MsgRequestNextIBDBlocks) error { - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_request_relay_blocks.go b/network/netadapter/server/grpcserver/protowire/message_request_relay_blocks.go deleted file mode 100644 index 49af69521..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_request_relay_blocks.go +++ /dev/null @@ -1,30 +0,0 @@ -package protowire - -import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/pkg/errors" -) - -func (x *KaspadMessage_RequestRelayBlocks) toDomainMessage() (domainmessage.Message, error) { - if len(x.RequestRelayBlocks.Hashes) > domainmessage.MsgRequestRelayBlocksHashes { - return nil, errors.Errorf("too many hashes for message "+ - "[count %d, max %d]", len(x.RequestRelayBlocks.Hashes), domainmessage.MsgRequestRelayBlocksHashes) - } - hashes, err := protoHashesToWire(x.RequestRelayBlocks.Hashes) - if err != nil { - return nil, err - } - return &domainmessage.MsgRequestRelayBlocks{Hashes: hashes}, nil -} - -func (x *KaspadMessage_RequestRelayBlocks) fromDomainMessage(msgGetRelayBlocks *domainmessage.MsgRequestRelayBlocks) error { - if len(msgGetRelayBlocks.Hashes) > domainmessage.MsgRequestRelayBlocksHashes { - return errors.Errorf("too many hashes for message "+ - "[count %d, max %d]", len(msgGetRelayBlocks.Hashes), domainmessage.MsgRequestRelayBlocksHashes) - } - - x.RequestRelayBlocks = &RequestRelayBlocksMessage{ - Hashes: wireHashesToProto(msgGetRelayBlocks.Hashes), - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_request_selected_tip.go b/network/netadapter/server/grpcserver/protowire/message_request_selected_tip.go deleted file mode 100644 index 8392fe172..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_request_selected_tip.go +++ /dev/null @@ -1,11 +0,0 @@ -package protowire - -import "github.com/kaspanet/kaspad/network/domainmessage" - -func (x *KaspadMessage_RequestSelectedTip) toDomainMessage() (domainmessage.Message, error) { - return &domainmessage.MsgRequestSelectedTip{}, nil -} - -func (x *KaspadMessage_RequestSelectedTip) fromDomainMessage(_ *domainmessage.MsgRequestSelectedTip) error { - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_request_transactions.go b/network/netadapter/server/grpcserver/protowire/message_request_transactions.go deleted file mode 100644 index f8a07b404..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_request_transactions.go +++ /dev/null @@ -1,31 +0,0 @@ -package protowire - -import ( - "github.com/kaspanet/kaspad/network/domainmessage" - "github.com/pkg/errors" -) - -func (x *KaspadMessage_RequestTransactions) toDomainMessage() (domainmessage.Message, error) { - if len(x.RequestTransactions.Ids) > domainmessage.MaxInvPerRequestTransactionsMsg { - return nil, errors.Errorf("too many hashes for message "+ - "[count %d, max %d]", len(x.RequestTransactions.Ids), domainmessage.MaxInvPerRequestTransactionsMsg) - } - - ids, err := protoTransactionIDsToWire(x.RequestTransactions.Ids) - if err != nil { - return nil, err - } - return &domainmessage.MsgRequestTransactions{IDs: ids}, nil -} - -func (x *KaspadMessage_RequestTransactions) fromDomainMessage(msgGetTransactions *domainmessage.MsgRequestTransactions) error { - if len(msgGetTransactions.IDs) > domainmessage.MaxInvPerRequestTransactionsMsg { - return errors.Errorf("too many hashes for message "+ - "[count %d, max %d]", len(x.RequestTransactions.Ids), domainmessage.MaxInvPerRequestTransactionsMsg) - } - - x.RequestTransactions = &RequestTransactionsMessage{ - Ids: wireTransactionIDsToProto(msgGetTransactions.IDs), - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_selected_tip.go b/network/netadapter/server/grpcserver/protowire/message_selected_tip.go deleted file mode 100644 index 0ad94db6e..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_selected_tip.go +++ /dev/null @@ -1,19 +0,0 @@ -package protowire - -import "github.com/kaspanet/kaspad/network/domainmessage" - -func (x *KaspadMessage_SelectedTip) toDomainMessage() (domainmessage.Message, error) { - hash, err := x.SelectedTip.SelectedTipHash.toWire() - if err != nil { - return nil, err - } - - return &domainmessage.MsgSelectedTip{SelectedTipHash: hash}, nil -} - -func (x *KaspadMessage_SelectedTip) fromDomainMessage(msgSelectedTip *domainmessage.MsgSelectedTip) error { - x.SelectedTip = &SelectedTipMessage{ - SelectedTipHash: wireHashToProto(msgSelectedTip.SelectedTipHash), - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_transaction_not_found.go b/network/netadapter/server/grpcserver/protowire/message_transaction_not_found.go deleted file mode 100644 index b122b1853..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_transaction_not_found.go +++ /dev/null @@ -1,20 +0,0 @@ -package protowire - -import ( - "github.com/kaspanet/kaspad/network/domainmessage" -) - -func (x *KaspadMessage_TransactionNotFound) toDomainMessage() (domainmessage.Message, error) { - id, err := x.TransactionNotFound.Id.toWire() - if err != nil { - return nil, err - } - return domainmessage.NewMsgTransactionNotFound(id), nil -} - -func (x *KaspadMessage_TransactionNotFound) fromDomainMessage(msgTransactionsNotFound *domainmessage.MsgTransactionNotFound) error { - x.TransactionNotFound = &TransactionNotFoundMessage{ - Id: wireTransactionIDToProto(msgTransactionsNotFound.ID), - } - return nil -} diff --git a/network/netadapter/server/grpcserver/protowire/message_verack.go b/network/netadapter/server/grpcserver/protowire/message_verack.go deleted file mode 100644 index 555c76566..000000000 --- a/network/netadapter/server/grpcserver/protowire/message_verack.go +++ /dev/null @@ -1,11 +0,0 @@ -package protowire - -import "github.com/kaspanet/kaspad/network/domainmessage" - -func (x *KaspadMessage_Verack) toDomainMessage() (domainmessage.Message, error) { - return &domainmessage.MsgVerAck{}, nil -} - -func (x *KaspadMessage_Verack) fromDomainMessage(_ *domainmessage.MsgVerAck) error { - return nil -} diff --git a/service_windows.go b/service_windows.go index dedb686a0..1dcc583ee 100644 --- a/service_windows.go +++ b/service_windows.go @@ -16,7 +16,7 @@ import ( "github.com/btcsuite/winsvc/mgr" "github.com/btcsuite/winsvc/svc" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/infrastructure/signal" + "github.com/kaspanet/kaspad/infrastructure/os/signal" "github.com/kaspanet/kaspad/version" ) diff --git a/test.sh b/test.sh deleted file mode 100755 index dbd9b7ad1..000000000 --- a/test.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -# Test each package separately -# Running tests with -covermode=atomic saves us from race conditions unique to the testing environment -go list ./... | \ - xargs -n1 -I{} sh -c "go test -timeout 60s -covermode=atomic -cover {}" - -retVal=$? -if [ $retVal -ne 0 ] -then - echo " >> tests failed" - exit 1 -else - echo " >> tests completed successfully" - exit 0 -fi diff --git a/testing/integration/64_incoming_connections_test.go b/testing/integration/64_incoming_connections_test.go index d9fa40cab..3952182f0 100644 --- a/testing/integration/64_incoming_connections_test.go +++ b/testing/integration/64_incoming_connections_test.go @@ -8,7 +8,7 @@ import ( "github.com/kaspanet/kaspad/util/locks" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" ) func Test64IncomingConnections(t *testing.T) { @@ -42,7 +42,7 @@ func Test64IncomingConnections(t *testing.T) { } blockAdded := false - bully.rpcClient.onBlockAdded = func(header *domainmessage.BlockHeader) { + bully.rpcClient.onBlockAdded = func(header *appmessage.BlockHeader) { if blockAdded { t.Fatalf("Single bully reported block added twice") } diff --git a/testing/integration/basic_sync_test.go b/testing/integration/basic_sync_test.go index 090be8936..d788d0fe0 100644 --- a/testing/integration/basic_sync_test.go +++ b/testing/integration/basic_sync_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" ) func TestIntegrationBasicSync(t *testing.T) { @@ -16,19 +16,19 @@ func TestIntegrationBasicSync(t *testing.T) { connect(t, appHarness1, appHarness2) connect(t, appHarness2, appHarness3) - app2OnBlockAddedChan := make(chan *domainmessage.BlockHeader) - setOnBlockAddedHandler(t, appHarness2, func(header *domainmessage.BlockHeader) { + app2OnBlockAddedChan := make(chan *appmessage.BlockHeader) + setOnBlockAddedHandler(t, appHarness2, func(header *appmessage.BlockHeader) { app2OnBlockAddedChan <- header }) - app3OnBlockAddedChan := make(chan *domainmessage.BlockHeader) - setOnBlockAddedHandler(t, appHarness3, func(header *domainmessage.BlockHeader) { + app3OnBlockAddedChan := make(chan *appmessage.BlockHeader) + setOnBlockAddedHandler(t, appHarness3, func(header *appmessage.BlockHeader) { app3OnBlockAddedChan <- header }) block := mineNextBlock(t, appHarness1) - var header *domainmessage.BlockHeader + var header *appmessage.BlockHeader select { case header = <-app2OnBlockAddedChan: case <-time.After(defaultTimeout): diff --git a/testing/integration/ibd_test.go b/testing/integration/ibd_test.go index 0284ea324..4b3b8c82e 100644 --- a/testing/integration/ibd_test.go +++ b/testing/integration/ibd_test.go @@ -7,7 +7,7 @@ import ( "github.com/kaspanet/kaspad/util/locks" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" ) func TestIBD(t *testing.T) { @@ -23,7 +23,7 @@ func TestIBD(t *testing.T) { blockAddedWG := sync.WaitGroup{} blockAddedWG.Add(numBlocks) receivedBlocks := 0 - setOnBlockAddedHandler(t, syncee, func(header *domainmessage.BlockHeader) { + setOnBlockAddedHandler(t, syncee, func(header *appmessage.BlockHeader) { receivedBlocks++ blockAddedWG.Done() }) diff --git a/testing/integration/mining_test.go b/testing/integration/mining_test.go index e37e030a1..ec37988e0 100644 --- a/testing/integration/mining_test.go +++ b/testing/integration/mining_test.go @@ -4,14 +4,14 @@ import ( "math/rand" "testing" - clientpkg "github.com/kaspanet/kaspad/network/rpc/client" + clientpkg "github.com/kaspanet/kaspad/infrastructure/network/rpc/client" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" ) -func solveBlock(block *util.Block) *domainmessage.MsgBlock { +func solveBlock(block *util.Block) *appmessage.MsgBlock { msgBlock := block.MsgBlock() targetDifficulty := util.CompactToBig(msgBlock.Header.Bits) initialNonce := rand.Uint64() diff --git a/testing/integration/notifications_test.go b/testing/integration/notifications_test.go index 15eb51f51..03303c7ec 100644 --- a/testing/integration/notifications_test.go +++ b/testing/integration/notifications_test.go @@ -3,10 +3,10 @@ package integration import ( "testing" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" ) -func setOnBlockAddedHandler(t *testing.T, harness *appHarness, handler func(header *domainmessage.BlockHeader)) { +func setOnBlockAddedHandler(t *testing.T, harness *appHarness, handler func(header *appmessage.BlockHeader)) { err := harness.rpcClient.NotifyBlocks() if err != nil { t.Fatalf("Error from NotifyBlocks: %s", err) diff --git a/testing/integration/rpc_test.go b/testing/integration/rpc_test.go index 53d419526..528e39562 100644 --- a/testing/integration/rpc_test.go +++ b/testing/integration/rpc_test.go @@ -1,21 +1,21 @@ package integration import ( - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util" - rpcclient "github.com/kaspanet/kaspad/network/rpc/client" + rpcclient "github.com/kaspanet/kaspad/infrastructure/network/rpc/client" ) type rpcClient struct { *rpcclient.Client - onBlockAdded func(*domainmessage.BlockHeader) + onBlockAdded func(*appmessage.BlockHeader) } func newRPCClient(rpcAddress string) (*rpcClient, error) { client := &rpcClient{} notificationHandlers := &rpcclient.NotificationHandlers{ - OnFilteredBlockAdded: func(height uint64, header *domainmessage.BlockHeader, txs []*util.Tx) { + OnFilteredBlockAdded: func(height uint64, header *appmessage.BlockHeader, txs []*util.Tx) { if client.onBlockAdded != nil { client.onBlockAdded(header) } diff --git a/testing/integration/setup_test.go b/testing/integration/setup_test.go index 9b7b6a1fd..006dbc79d 100644 --- a/testing/integration/setup_test.go +++ b/testing/integration/setup_test.go @@ -6,7 +6,7 @@ import ( "github.com/kaspanet/kaspad/app" "github.com/kaspanet/kaspad/infrastructure/config" - "github.com/kaspanet/kaspad/infrastructure/dbaccess" + "github.com/kaspanet/kaspad/infrastructure/db/dbaccess" ) type appHarness struct { diff --git a/testing/integration/tx_relay_test.go b/testing/integration/tx_relay_test.go index c51c46bdc..a09c3844b 100644 --- a/testing/integration/tx_relay_test.go +++ b/testing/integration/tx_relay_test.go @@ -7,8 +7,8 @@ import ( "time" "github.com/kaspanet/go-secp256k1" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" ) @@ -21,8 +21,8 @@ func TestTxRelay(t *testing.T) { connect(t, payer, mediator) connect(t, mediator, payee) - payeeBlockAddedChan := make(chan *domainmessage.BlockHeader) - setOnBlockAddedHandler(t, payee, func(header *domainmessage.BlockHeader) { + payeeBlockAddedChan := make(chan *appmessage.BlockHeader) + setOnBlockAddedHandler(t, payee, func(header *appmessage.BlockHeader) { payeeBlockAddedChan <- header }) // skip the first block because it's paying to genesis script @@ -70,7 +70,7 @@ func TestTxRelay(t *testing.T) { } } -func waitForPayeeToReceiveBlock(t *testing.T, payeeBlockAddedChan chan *domainmessage.BlockHeader) { +func waitForPayeeToReceiveBlock(t *testing.T, payeeBlockAddedChan chan *appmessage.BlockHeader) { select { case <-payeeBlockAddedChan: case <-time.After(defaultTimeout): @@ -78,9 +78,9 @@ func waitForPayeeToReceiveBlock(t *testing.T, payeeBlockAddedChan chan *domainme } } -func generateTx(t *testing.T, firstBlockCoinbase *domainmessage.MsgTx, payer, payee *appHarness) *domainmessage.MsgTx { - txIns := make([]*domainmessage.TxIn, 1) - txIns[0] = domainmessage.NewTxIn(domainmessage.NewOutpoint(firstBlockCoinbase.TxID(), 0), []byte{}) +func generateTx(t *testing.T, firstBlockCoinbase *appmessage.MsgTx, payer, payee *appHarness) *appmessage.MsgTx { + txIns := make([]*appmessage.TxIn, 1) + txIns[0] = appmessage.NewTxIn(appmessage.NewOutpoint(firstBlockCoinbase.TxID(), 0), []byte{}) payeeAddress, err := util.DecodeAddress(payee.miningAddress, util.Bech32PrefixKaspaSim) if err != nil { @@ -91,11 +91,11 @@ func generateTx(t *testing.T, firstBlockCoinbase *domainmessage.MsgTx, payer, pa t.Fatalf("Error generating script: %+v", err) } - txOuts := []*domainmessage.TxOut{domainmessage.NewTxOut(firstBlockCoinbase.TxOut[0].Value-1, toScript)} + txOuts := []*appmessage.TxOut{appmessage.NewTxOut(firstBlockCoinbase.TxOut[0].Value-1, toScript)} fromScript := firstBlockCoinbase.TxOut[0].ScriptPubKey - tx := domainmessage.NewNativeMsgTx(domainmessage.TxVersion, txIns, txOuts) + tx := appmessage.NewNativeMsgTx(appmessage.TxVersion, txIns, txOuts) privateKeyBytes, err := hex.DecodeString(payer.miningAddressPrivateKey) if err != nil { diff --git a/upgrade.go b/upgrade.go deleted file mode 100644 index 0c8172d55..000000000 --- a/upgrade.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) 2013-2014 The btcsuite developers -// Use of this source code is governed by an ISC -// license that can be found in the LICENSE file. - -package main - -// doUpgrades performs upgrades to kaspad as new versions require it. -// currently it's a placeholder we got from kaspad upstream, that does nothing -func doUpgrades() error { - return nil -} diff --git a/util/block.go b/util/block.go index 82470d6cb..a60210726 100644 --- a/util/block.go +++ b/util/block.go @@ -11,7 +11,7 @@ import ( "github.com/kaspanet/kaspad/util/mstime" "io" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -35,7 +35,7 @@ func (e OutOfRangeError) Error() string { // repeat the relatively expensive hashing operations. type Block struct { // Underlying MsgBlock - msgBlock *domainmessage.MsgBlock + msgBlock *appmessage.MsgBlock // Serialized bytes for the block. This is used only internally, and .Hash() should be used anywhere. serializedBlock []byte @@ -53,14 +53,14 @@ type Block struct { blueScore *uint64 } -// MsgBlock returns the underlying domainmessage.MsgBlock for the Block. -func (b *Block) MsgBlock() *domainmessage.MsgBlock { +// MsgBlock returns the underlying appmessage.MsgBlock for the Block. +func (b *Block) MsgBlock() *appmessage.MsgBlock { // Return the cached block. return b.msgBlock } // Bytes returns the serialized bytes for the Block. This is equivalent to -// calling Serialize on the underlying domainmessage.MsgBlock, however it caches the +// calling Serialize on the underlying appmessage.MsgBlock, however it caches the // result so subsequent calls are more efficient. func (b *Block) Bytes() ([]byte, error) { // Return the cached serialized bytes if it has already been generated. @@ -82,7 +82,7 @@ func (b *Block) Bytes() ([]byte, error) { } // Hash returns the block identifier hash for the Block. This is equivalent to -// calling BlockHash on the underlying domainmessage.MsgBlock, however it caches the +// calling BlockHash on the underlying appmessage.MsgBlock, however it caches the // result so subsequent calls are more efficient. func (b *Block) Hash() *daghash.Hash { // Return the cached block hash if it has already been generated. @@ -99,8 +99,8 @@ func (b *Block) Hash() *daghash.Hash { // Tx returns a wrapped transaction (util.Tx) for the transaction at the // specified index in the Block. The supplied index is 0 based. That is to // say, the first transaction in the block is txNum 0. This is nearly -// equivalent to accessing the raw transaction (domainmessage.MsgTx) from the -// underlying domainmessage.MsgBlock, however the wrapped transaction has some helpful +// equivalent to accessing the raw transaction (appmessage.MsgTx) from the +// underlying appmessage.MsgBlock, however the wrapped transaction has some helpful // properties such as caching the hash so subsequent calls are more efficient. func (b *Block) Tx(txNum int) (*Tx, error) { // Ensure the requested transaction is in range. @@ -130,7 +130,7 @@ func (b *Block) Tx(txNum int) (*Tx, error) { // Transactions returns a slice of wrapped transactions (util.Tx) for all // transactions in the Block. This is nearly equivalent to accessing the raw -// transactions (domainmessage.MsgTx) in the underlying domainmessage.MsgBlock, however it +// transactions (appmessage.MsgTx) in the underlying appmessage.MsgBlock, however it // instead provides easy access to wrapped versions (util.Tx) of them. func (b *Block) Transactions() []*Tx { // Return transactions if they have ALL already been generated. This @@ -162,7 +162,7 @@ func (b *Block) Transactions() []*Tx { // TxHash returns the hash for the requested transaction number in the Block. // The supplied index is 0 based. That is to say, the first transaction in the // block is txNum 0. This is equivalent to calling TxHash on the underlying -// domainmessage.MsgTx, however it caches the result so subsequent calls are more +// appmessage.MsgTx, however it caches the result so subsequent calls are more // efficient. func (b *Block) TxHash(txNum int) (*daghash.Hash, error) { // Attempt to get a wrapped transaction for the specified index. It @@ -181,14 +181,14 @@ func (b *Block) TxHash(txNum int) (*daghash.Hash, error) { // TxLoc returns the offsets and lengths of each transaction in a raw block. // It is used to allow fast indexing into transactions within the raw byte // stream. -func (b *Block) TxLoc() ([]domainmessage.TxLoc, error) { +func (b *Block) TxLoc() ([]appmessage.TxLoc, error) { rawMsg, err := b.Bytes() if err != nil { return nil, err } rbuf := bytes.NewBuffer(rawMsg) - var mblock domainmessage.MsgBlock + var mblock appmessage.MsgBlock txLocs, err := mblock.DeserializeTxLoc(rbuf) if err != nil { return nil, err @@ -224,8 +224,8 @@ func (b *Block) BlueScore() (uint64, error) { } // NewBlock returns a new instance of a kaspa block given an underlying -// domainmessage.MsgBlock. See Block. -func NewBlock(msgBlock *domainmessage.MsgBlock) *Block { +// appmessage.MsgBlock. See Block. +func NewBlock(msgBlock *appmessage.MsgBlock) *Block { return &Block{ msgBlock: msgBlock, } @@ -247,7 +247,7 @@ func NewBlockFromBytes(serializedBlock []byte) (*Block, error) { // Reader to deserialize the block. See Block. func NewBlockFromReader(r io.Reader) (*Block, error) { // Deserialize the bytes into a MsgBlock. - var msgBlock domainmessage.MsgBlock + var msgBlock appmessage.MsgBlock err := msgBlock.Deserialize(r) if err != nil { return nil, err @@ -260,8 +260,8 @@ func NewBlockFromReader(r io.Reader) (*Block, error) { } // NewBlockFromBlockAndBytes returns a new instance of a kaspa block given -// an underlying domainmessage.MsgBlock and the serialized bytes for it. See Block. -func NewBlockFromBlockAndBytes(msgBlock *domainmessage.MsgBlock, serializedBlock []byte) *Block { +// an underlying appmessage.MsgBlock and the serialized bytes for it. See Block. +func NewBlockFromBlockAndBytes(msgBlock *appmessage.MsgBlock, serializedBlock []byte) *Block { return &Block{ msgBlock: msgBlock, serializedBlock: serializedBlock, diff --git a/util/block_test.go b/util/block_test.go index 9cb4d10f9..bcb9c2e58 100644 --- a/util/block_test.go +++ b/util/block_test.go @@ -7,7 +7,7 @@ package util_test import ( "bytes" "github.com/davecgh/go-spew/spew" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/daghash" "github.com/kaspanet/kaspad/util/mstime" @@ -138,7 +138,7 @@ func TestBlock(t *testing.T) { } // Transaction offsets and length for the transaction in Block100000. - wantTxLocs := []domainmessage.TxLoc{ + wantTxLocs := []appmessage.TxLoc{ {TxStart: 186, TxLen: 163}, {TxStart: 349, TxLen: 287}, {TxStart: 636, TxLen: 285}, @@ -296,8 +296,8 @@ func TestBlockErrors(t *testing.T) { // Block100000 defines block 100,000 of the block DAG. It is used to // test Block operations. -var Block100000 = domainmessage.MsgBlock{ - Header: domainmessage.BlockHeader{ +var Block100000 = appmessage.MsgBlock{ + Header: appmessage.BlockHeader{ Version: 1, ParentHashes: []*daghash.Hash{ { @@ -334,12 +334,12 @@ var Block100000 = domainmessage.MsgBlock{ Bits: 0x1e00ffff, // 503382015 Nonce: 0x000ae53f, // 714047 }, - Transactions: []*domainmessage.MsgTx{ + Transactions: []*appmessage.MsgTx{ { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID{}, Index: 0xffffffff, }, @@ -349,7 +349,7 @@ var Block100000 = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0x12a05f200, // 5000000000 ScriptPubKey: []byte{ @@ -372,9 +372,9 @@ var Block100000 = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0x03, 0x2e, 0x38, 0xe9, 0xc0, 0xa8, 0x4c, 0x60, 0x46, 0xd6, 0x87, 0xd1, 0x05, 0x56, 0xdc, 0xac, @@ -409,7 +409,7 @@ var Block100000 = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0x2123e300, // 556000000 ScriptPubKey: []byte{ @@ -442,9 +442,9 @@ var Block100000 = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0xc3, 0x3e, 0xbf, 0xf2, 0xa7, 0x09, 0xf1, 0x3d, 0x9f, 0x9a, 0x75, 0x69, 0xab, 0x16, 0xa3, 0x27, @@ -478,7 +478,7 @@ var Block100000 = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0xf4240, // 1000000 ScriptPubKey: []byte{ @@ -511,9 +511,9 @@ var Block100000 = domainmessage.MsgBlock{ }, { Version: 1, - TxIn: []*domainmessage.TxIn{ + TxIn: []*appmessage.TxIn{ { - PreviousOutpoint: domainmessage.Outpoint{ + PreviousOutpoint: appmessage.Outpoint{ TxID: daghash.TxID([32]byte{ 0x0b, 0x60, 0x72, 0xb3, 0x86, 0xd4, 0xa7, 0x73, 0x23, 0x52, 0x37, 0xf6, 0x4c, 0x11, 0x26, 0xac, @@ -548,7 +548,7 @@ var Block100000 = domainmessage.MsgBlock{ Sequence: math.MaxUint64, }, }, - TxOut: []*domainmessage.TxOut{ + TxOut: []*appmessage.TxOut{ { Value: 0xf4240, // 1000000 ScriptPubKey: []byte{ diff --git a/util/coinbasepayload/coinbasepayload.go b/util/coinbasepayload/coinbasepayload.go index f297075b3..db571ac64 100644 --- a/util/coinbasepayload/coinbasepayload.go +++ b/util/coinbasepayload/coinbasepayload.go @@ -3,7 +3,7 @@ package coinbasepayload import ( "bytes" "encoding/binary" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/binaryserializer" "github.com/pkg/errors" ) @@ -17,7 +17,7 @@ func SerializeCoinbasePayload(blueScore uint64, scriptPubKey []byte, extraData [ if err != nil { return nil, err } - err = domainmessage.WriteVarInt(w, uint64(len(scriptPubKey))) + err = appmessage.WriteVarInt(w, uint64(len(scriptPubKey))) if err != nil { return nil, err } @@ -36,13 +36,13 @@ func SerializeCoinbasePayload(blueScore uint64, scriptPubKey []byte, extraData [ var ErrIncorrectScriptPubKeyLen = errors.New("incorrect script pub key length") // DeserializeCoinbasePayload deserializes the coinbase payload to its component (scriptPubKey and extra data). -func DeserializeCoinbasePayload(tx *domainmessage.MsgTx) (blueScore uint64, scriptPubKey []byte, extraData []byte, err error) { +func DeserializeCoinbasePayload(tx *appmessage.MsgTx) (blueScore uint64, scriptPubKey []byte, extraData []byte, err error) { r := bytes.NewReader(tx.Payload) blueScore, err = binaryserializer.Uint64(r, byteOrder) if err != nil { return 0, nil, nil, err } - scriptPubKeyLen, err := domainmessage.ReadVarInt(r) + scriptPubKeyLen, err := appmessage.ReadVarInt(r) if err != nil { return 0, nil, nil, err } diff --git a/util/panics/panics.go b/util/panics/panics.go index 14d772df2..d24bdcef8 100644 --- a/util/panics/panics.go +++ b/util/panics/panics.go @@ -2,18 +2,17 @@ package panics import ( "fmt" + "github.com/kaspanet/kaspad/infrastructure/logger" "os" "runtime/debug" "sync/atomic" "time" - - "github.com/kaspanet/kaspad/infrastructure/logs" ) const exitHandlerTimeout = 5 * time.Second // HandlePanic recovers panics and then initiates a clean shutdown. -func HandlePanic(log *logs.Logger, goroutineName string, goroutineStackTrace []byte) { +func HandlePanic(log *logger.Logger, goroutineName string, goroutineStackTrace []byte) { err := recover() if err == nil { return @@ -26,7 +25,7 @@ func HandlePanic(log *logs.Logger, goroutineName string, goroutineStackTrace []b var goroutineLastID uint64 // GoroutineWrapperFunc returns a goroutine wrapper function that handles panics and writes them to the log. -func GoroutineWrapperFunc(log *logs.Logger) func(name string, spawnedFunction func()) { +func GoroutineWrapperFunc(log *logger.Logger) func(name string, spawnedFunction func()) { return func(name string, f func()) { stackTrace := debug.Stack() go func() { @@ -36,7 +35,7 @@ func GoroutineWrapperFunc(log *logs.Logger) func(name string, spawnedFunction fu } // AfterFuncWrapperFunc returns a time.AfterFunc wrapper function that handles panics. -func AfterFuncWrapperFunc(log *logs.Logger) func(name string, d time.Duration, f func()) *time.Timer { +func AfterFuncWrapperFunc(log *logger.Logger) func(name string, d time.Duration, f func()) *time.Timer { return func(name string, d time.Duration, f func()) *time.Timer { stackTrace := debug.Stack() return time.AfterFunc(d, func() { @@ -46,13 +45,13 @@ func AfterFuncWrapperFunc(log *logs.Logger) func(name string, d time.Duration, f } // Exit prints the given reason to log and initiates a clean shutdown. -func Exit(log *logs.Logger, reason string) { +func Exit(log *logger.Logger, reason string) { exit(log, reason, nil, nil) } // Exit prints the given reason, prints either of the given stack traces (if not nil), // waits for them to finish writing, and exits. -func exit(log *logs.Logger, reason string, currentThreadStackTrace []byte, goroutineStackTrace []byte) { +func exit(log *logger.Logger, reason string, currentThreadStackTrace []byte, goroutineStackTrace []byte) { exitHandlerDone := make(chan struct{}) go func() { log.Criticalf("Exiting: %s", reason) @@ -76,7 +75,7 @@ func exit(log *logs.Logger, reason string, currentThreadStackTrace []byte, gorou fmt.Print("After os.Exit(1)") } -func handleSpawnedFunction(log *logs.Logger, stackTrace []byte, spawnedFunctionName string, spawnedFunction func()) { +func handleSpawnedFunction(log *logger.Logger, stackTrace []byte, spawnedFunctionName string, spawnedFunction func()) { goroutineID := atomic.AddUint64(&goroutineLastID, 1) goroutineName := fmt.Sprintf("%s %d", spawnedFunctionName, goroutineID) utilLog.Debugf("Started goroutine `%s`", goroutineName) diff --git a/util/profiling/profiling.go b/util/profiling/profiling.go index a44b766ea..11818d05f 100644 --- a/util/profiling/profiling.go +++ b/util/profiling/profiling.go @@ -1,18 +1,18 @@ package profiling import ( + "github.com/kaspanet/kaspad/infrastructure/logger" "net" "net/http" // Required for profiling _ "net/http/pprof" - "github.com/kaspanet/kaspad/infrastructure/logs" "github.com/kaspanet/kaspad/util/panics" ) // Start starts the profiling server -func Start(port string, log *logs.Logger) { +func Start(port string, log *logger.Logger) { spawn := panics.GoroutineWrapperFunc(log) spawn("profiling.Start", func() { listenAddr := net.JoinHostPort("", port) diff --git a/util/testtools/testtools.go b/util/testtools/testtools.go index 9276118c9..4820ca767 100644 --- a/util/testtools/testtools.go +++ b/util/testtools/testtools.go @@ -11,15 +11,15 @@ import ( "github.com/kaspanet/kaspad/domain/blockdag" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/domain/txscript" - "github.com/kaspanet/kaspad/network/domainmessage" "github.com/kaspanet/kaspad/util" "github.com/kaspanet/kaspad/util/subnetworkid" ) // RegisterSubnetworkForTest is used to register network on DAG with specified gas limit func RegisterSubnetworkForTest(dag *blockdag.BlockDAG, params *dagconfig.Params, gasLimit uint64) (*subnetworkid.SubnetworkID, error) { - buildNextBlock := func(parentHashes []*daghash.Hash, txs []*domainmessage.MsgTx) (*util.Block, error) { + buildNextBlock := func(parentHashes []*daghash.Hash, txs []*appmessage.MsgTx) (*util.Block, error) { msgBlock, err := mining.PrepareBlockForTest(dag, parentHashes, txs, false) if err != nil { return nil, err @@ -46,7 +46,7 @@ func RegisterSubnetworkForTest(dag *blockdag.BlockDAG, params *dagconfig.Params, } // Create a block in order to fund later transactions - fundsBlock, err := buildNextBlock(dag.TipHashes(), []*domainmessage.MsgTx{}) + fundsBlock, err := buildNextBlock(dag.TipHashes(), []*appmessage.MsgTx{}) if err != nil { return nil, errors.Errorf("could not build funds block: %s", err) } @@ -63,9 +63,9 @@ func RegisterSubnetworkForTest(dag *blockdag.BlockDAG, params *dagconfig.Params, if err != nil { return nil, errors.Errorf("Failed to build signature script: %s", err) } - txIn := &domainmessage.TxIn{ - PreviousOutpoint: *domainmessage.NewOutpoint(fundsBlockCbTx.TxID(), 0), - Sequence: domainmessage.MaxTxInSequenceNum, + txIn := &appmessage.TxIn{ + PreviousOutpoint: *appmessage.NewOutpoint(fundsBlockCbTx.TxID(), 0), + Sequence: appmessage.MaxTxInSequenceNum, SignatureScript: signatureScript, } @@ -73,14 +73,14 @@ func RegisterSubnetworkForTest(dag *blockdag.BlockDAG, params *dagconfig.Params, if err != nil { return nil, err } - txOut := &domainmessage.TxOut{ + txOut := &appmessage.TxOut{ ScriptPubKey: scriptPubKey, Value: fundsBlockCbTx.TxOut[0].Value, } - registryTx := domainmessage.NewRegistryMsgTx(1, []*domainmessage.TxIn{txIn}, []*domainmessage.TxOut{txOut}, gasLimit) + registryTx := appmessage.NewRegistryMsgTx(1, []*appmessage.TxIn{txIn}, []*appmessage.TxOut{txOut}, gasLimit) // Add it to the DAG - registryBlock, err := buildNextBlock([]*daghash.Hash{fundsBlock.Hash()}, []*domainmessage.MsgTx{registryTx}) + registryBlock, err := buildNextBlock([]*daghash.Hash{fundsBlock.Hash()}, []*appmessage.MsgTx{registryTx}) if err != nil { return nil, errors.Errorf("could not build registry block: %s", err) } diff --git a/util/tx.go b/util/tx.go index 6499e43d6..b7e3dce39 100644 --- a/util/tx.go +++ b/util/tx.go @@ -8,7 +8,7 @@ import ( "bytes" "io" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -22,20 +22,20 @@ const TxIndexUnknown = -1 // transaction on its first access so subsequent accesses don't have to repeat // the relatively expensive hashing operations. type Tx struct { - msgTx *domainmessage.MsgTx // Underlying MsgTx - txHash *daghash.Hash // Cached transaction hash - txID *daghash.TxID // Cached transaction ID - txIndex int // Position within a block or TxIndexUnknown + msgTx *appmessage.MsgTx // Underlying MsgTx + txHash *daghash.Hash // Cached transaction hash + txID *daghash.TxID // Cached transaction ID + txIndex int // Position within a block or TxIndexUnknown } -// MsgTx returns the underlying domainmessage.MsgTx for the transaction. -func (t *Tx) MsgTx() *domainmessage.MsgTx { +// MsgTx returns the underlying appmessage.MsgTx for the transaction. +func (t *Tx) MsgTx() *appmessage.MsgTx { // Return the cached transaction. return t.msgTx } // Hash returns the hash of the transaction. This is equivalent to -// calling TxHash on the underlying domainmessage.MsgTx, however it caches the +// calling TxHash on the underlying appmessage.MsgTx, however it caches the // result so subsequent calls are more efficient. func (t *Tx) Hash() *daghash.Hash { // Return the cached hash if it has already been generated. @@ -50,7 +50,7 @@ func (t *Tx) Hash() *daghash.Hash { } // ID returns the id of the transaction. This is equivalent to -// calling TxID on the underlying domainmessage.MsgTx, however it caches the +// calling TxID on the underlying appmessage.MsgTx, however it caches the // result so subsequent calls are more efficient. func (t *Tx) ID() *daghash.TxID { // Return the cached hash if it has already been generated. @@ -85,8 +85,8 @@ func (t *Tx) IsCoinBase() bool { } // NewTx returns a new instance of a kaspa transaction given an underlying -// domainmessage.MsgTx. See Tx. -func NewTx(msgTx *domainmessage.MsgTx) *Tx { +// appmessage.MsgTx. See Tx. +func NewTx(msgTx *appmessage.MsgTx) *Tx { return &Tx{ msgTx: msgTx, txIndex: TxIndexUnknown, @@ -104,7 +104,7 @@ func NewTxFromBytes(serializedTx []byte) (*Tx, error) { // Reader to deserialize the transaction. See Tx. func NewTxFromReader(r io.Reader) (*Tx, error) { // Deserialize the bytes into a MsgTx. - var msgTx domainmessage.MsgTx + var msgTx appmessage.MsgTx err := msgTx.Deserialize(r) if err != nil { return nil, err diff --git a/util/txsort/txsort.go b/util/txsort/txsort.go index 9874a9b78..99d55d381 100644 --- a/util/txsort/txsort.go +++ b/util/txsort/txsort.go @@ -11,7 +11,7 @@ import ( "bytes" "sort" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/daghash" ) @@ -27,7 +27,7 @@ import ( // The function should only be used if the caller is creating the transaction or // is otherwise 100% positive mutating will not cause adverse affects due to // other dependencies. -func InPlaceSort(tx *domainmessage.MsgTx) { +func InPlaceSort(tx *appmessage.MsgTx) { sort.Sort(sortableInputSlice(tx.TxIn)) sort.Sort(sortableOutputSlice(tx.TxOut)) } @@ -35,7 +35,7 @@ func InPlaceSort(tx *domainmessage.MsgTx) { // Sort returns a new transaction with the inputs and outputs sorted based on // BIP 69. The passed transaction is not modified and the new transaction // might have a different hash if any sorting was done. -func Sort(tx *domainmessage.MsgTx) *domainmessage.MsgTx { +func Sort(tx *appmessage.MsgTx) *appmessage.MsgTx { txCopy := tx.Copy() sort.Sort(sortableInputSlice(txCopy.TxIn)) sort.Sort(sortableOutputSlice(txCopy.TxOut)) @@ -44,7 +44,7 @@ func Sort(tx *domainmessage.MsgTx) *domainmessage.MsgTx { // IsSorted checks whether tx has inputs and outputs sorted according to BIP // 69. -func IsSorted(tx *domainmessage.MsgTx) bool { +func IsSorted(tx *appmessage.MsgTx) bool { if !sort.IsSorted(sortableInputSlice(tx.TxIn)) { return false } @@ -54,8 +54,8 @@ func IsSorted(tx *domainmessage.MsgTx) bool { return true } -type sortableInputSlice []*domainmessage.TxIn -type sortableOutputSlice []*domainmessage.TxOut +type sortableInputSlice []*appmessage.TxIn +type sortableOutputSlice []*appmessage.TxOut // For SortableInputSlice and SortableOutputSlice, three functions are needed // to make it sortable with sort.Sort() -- Len, Less, and Swap diff --git a/util/txsort/txsort_test.go b/util/txsort/txsort_test.go index 52483ea0e..fc9fdbfc6 100644 --- a/util/txsort/txsort_test.go +++ b/util/txsort/txsort_test.go @@ -11,7 +11,7 @@ import ( "path/filepath" "testing" - "github.com/kaspanet/kaspad/network/domainmessage" + "github.com/kaspanet/kaspad/app/appmessage" "github.com/kaspanet/kaspad/util/txsort" ) @@ -76,7 +76,7 @@ func TestSort(t *testing.T) { test.name, err) continue } - var tx domainmessage.MsgTx + var tx appmessage.MsgTx err = tx.Deserialize(bytes.NewReader(txBytes)) if err != nil { t.Errorf("Deserialize (%s): unexpected error %v",