| Title: | Blockchain-Enabled Maritime Transportation System Simulator |
|---|---|
| Description: | Simulates Blockchain-Enabled Maritime Transportation Systems (BMTS) by integrating asynchronous, great-circle vessel kinematics with decentralised edge-computing consensus layers. The package provides a fully self-contained cyber-range running completely offline, permitting the risk-free injection of spatial and telemetry threat vectors (e.g., geofence breaches, coordinate modification, and node impersonation). It includes an interactive workspace engine built using 'shinydashboard' and 'leaflet' map layers for monitoring vessel states and ledger updates. Implemented consensus structures are modeled on a lightweight Proof-of-Authentication framework optimized for resource-constrained distributed nodes. |
| Authors: | Isaac Osei [aut, cre], Yamini Alakunta [aut] |
| Maintainer: | Isaac Osei <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 1.1.0 |
| Built: | 2026-07-15 20:45:51 UTC |
| Source: | https://github.com/cran/MarineChain |
The Application Server Logic
app_server(input, output, session)app_server(input, output, session)
input |
The Shiny input binding element list array mapping object. |
output |
The Shiny output rendering layout UI element structure list. |
session |
The active user environment session context container runtime. |
No return value, called for application runtime side effects.
The Application User Interface
app_ui(request)app_ui(request)
request |
The Shiny request object parameter environmental state. |
A Shiny UI object representing the dashboard structural layout.
Calculate Geodetic Distance (Haversine Formula)
calc_distance(lat1, lng1, lat2, lng2)calc_distance(lat1, lng1, lat2, lng2)
lat1, lng1
|
Latitude and Longitude of Node 1 |
lat2, lng2
|
Latitude and Longitude of Node 2 |
Distance in kilometers
Inject Malicious Attacks into Maritime Telemetry Streams
inject_attack(clean_packet, attack_type)inject_attack(clean_packet, attack_type)
clean_packet |
A list containing data, signature, and metadata from a vessel |
attack_type |
Character. One of "None", "Replay", "Modification", "Impersonation" |
A modified packet structure representing an intercepted/compromised transmission
Launches the interactive, self-contained Shiny dashboard sandbox.
run_app(...)run_app(...)
... |
Optional arguments passed directly to the |
No return value, called to launch the interactive web application interface side effects.
# Only run execution loops in interactive R sessions if (interactive()) { run_app() }# Only run execution loops in interactive R sessions if (interactive()) { run_app() }
Simulate Cryptographic Processing Overhead
simulate_crypto_ops(data_size_kb, operation)simulate_crypto_ops(data_size_kb, operation)
data_size_kb |
Numeric. Size of the sensor telemetry data in Kilobytes. |
operation |
Character. The step to simulate ("encrypt", "sign", "verify", "decrypt"). |
A list containing processing time (ms) and output data size (kb).
Simulate Multi-Hop Maritime Network Routing
simulate_network_routing(vessel_coord, cs_coord, haps_coord, payload_size_kb)simulate_network_routing(vessel_coord, cs_coord, haps_coord, payload_size_kb)
vessel_coord |
Vector of c(lat, lng) for the vessel |
cs_coord |
Vector of c(lat, lng) for the Control Station |
haps_coord |
Vector of c(lat, lng) for the nearest HAPS platform |
payload_size_kb |
Numeric size of the telemetry packet |
A list detailing routing path, hop count, and transmission latency
Simulate PoAH Blockchain Block Generation
simulate_poah_block(dynamic_ledger, incoming_txs)simulate_poah_block(dynamic_ledger, incoming_txs)
dynamic_ledger |
A list representing the current blockchain ledger |
incoming_txs |
A list of verified vessel data payloads to combine into a block |
An updated ledger list containing the new block