npm package: @staratlas/crew-transporter
Description: Bulk imports of crew into sage
Author: Sammy Harris
Latest version: 0.1.4

# Crew Transporter

### Disclaimer ⚠️

**IMPORTANT:** This script is provided "as is," without any express or implied warranties. By using this script, you
agree that you are solely responsible for any and all actions taken with it, including but not limited to the batch
transfer of assets. The authors and associated organizations are not liable for any loss, damage, or legal issues that
may arise from its use, including but not limited to:

- Loss of digital assets due to incorrect usage or mishandling.
- Errors caused by improper configuration or execution of the script.
- Any form of negligence or misunderstanding of the script's functionality.

**USE AT YOUR OWN RISK.** It is your responsibility to understand the code and how it operates. If you do not fully
understand the risks involved, it is recommended that you do not proceed. The authors and their associated organizations
are not responsible for any unintended consequences resulting from the use of this script.

---

### ⚠️ Warning

Running this script can perform batch actions on your wallet. **If used improperly, it can burn your assets.**  
**Please read this entire document so you understand your options, and proceed with caution.**

---

## ⚙️ Prerequisites

Before using the script, make sure you have the following installed:

1. [Node.js](https://nodejs.org/en/download/) (v20.x or above)
2. A working wallet with sufficient SOL for transactions.

---

## 🚀 Installation: crew-transporter

To install the `crew-transporter` globally on your system, use the following command:

```bash
npm install -g @staratlas/crew-transporter
```

---

## 🎯 Fetch Your "Destination Player Profile" Address

**Note**: For this to work, your target player profile must have already completed the following:

- Chosen a faction
- Created a starbase player
- Formed at least one fleet
- Imported one crew member through the port of entry

These actions create the necessary accounts for the script to run properly.

### Steps

1. Connect to [Star Atlas Based](https://based.staratlas.com/)
2. Select your faction CSS
3. Click **Details**
4. Copy **Details -> Player Information and Details -> Player Profile**
5. Use this address with the `-p` flag in the commands below.

> ⚠️ **Important**: This is the address where your crew will be sent. **If you get this address wrong, your crew could
> be burned!**

---

## 📝 Example Commands

### Batch Transfer Crew from Ledger to Player Profile

```bash
transporter import-all-crew -r https://rpc.ironforge.network/mainnet?apiKey=your_key_here -p destination_player_profile_address -k usb://ledger?key=1/0
```

---

## 🔐 Optional: Convert Ledger to Software Wallet

If you'd like to avoid manually approving each transaction on a Ledger hardware wallet, you can convert it to a hot wallet. For maximum security you will need to use two ledger devices with different seeds.

> ⚠️ **Warning**: Proceed carefully! Converting a harware wallet to a hot wallet increases your risk of exposure. 
> Only perform this step if you fully understand the security implications.

### Steps

1. Prepare a second ledger with a new seed phrase
2. Transfer your player profile from the old ledger to the new ledger;
   - Connect both Ledgers to your computer
   - Unlock each and select the Solana app
   - Make sure blind signing is enabled
   - Run the following command from your computer

   ```bash
   transporter transfer-profile -r https://rpc.ironforge.network/mainnet?apiKey=your_key_here -p current_player_profile_to_transfer
   ```
   - Follow the on-screen prompts to migrate the player profile from one Ledger to another 

3. Transfer non-crew assets from the old ledger to the new ledger. Anything else important (except for
   SOL needed to run the script) should be in the new Ledger before proceeding

4. Convert your old Ledger to a hot wallet with Solflare:

   - Log out of Solflare; Settings -> Security & Privacy -> Log out
   - Import your Ledgers seed into Solflare with the "I already have a wallet" option 
   - When prompted, choose to import the address that has your CREW in it
   - Export that wallets private key, and paste it into a file a file called `mywallet.json`

   > ⚠️ **Warning**: Anyone with access to this file has full control of your old Ledger and it's contents.

5. Run the batch transfer from the software wallet:

   ```bash
   transporter import-all-crew -r https://rpc.ironforge.network/mainnet?apiKey=your_key_here -p destination_player_profile_address -k mywallet.json
   ```

---

## 💻 CLI Usage

Here’s a breakdown of the available CLI options:

| Option                           | Description                                                                            |
| -------------------------------- | -------------------------------------------------------------------------------------- |
| `-r, --rpc <url>`                | The RPC URL to use (e.g., <https://rpc.ironforge.network/mainnet>)                     |
| `-w, --ws-url <ws-url>`          | An override for the WebSocket URL                                                      |
| `-p, --profile <profile key>`    | The player profile public key to deposit crew to                                       |
| `-k, --keypair <path>`           | Path to the crew owner keypair file or ledger (e.g., `usb://ledger?key=1/0`)           |
| `-d, --das-rpc <url>`            | The RPC URL to use for DAS queries (defaults to the RPC input)                         |
| `-g, --game-id <key>`            | Override for custom game IDs (default: `GAMEzqJehF8yAnKiTARUuhZMvLvkZVAsCVri5vSfemLr`) |
| `--priority-fee <microlamports>` | Optional priority fee to pay for each transaction (to speed up processing)             |
| `--use-single-proofs`            | Sends multiple `getAssetProof` requests instead of a single `getAssetProofs` request.  |
| `-c, --concurrency <number>`     | Number of transactions (groups of three crew) to try sending at once (default: 10)     |
| `-m, --min-task-length <number>` | Minimum task length in milliseconds (default: 2000)                                    |
| `-h, --help`                     | Display help for the command                                                           |

---

## 📚 Additional Information

For any additional support or information, visit the official [Star Atlas Documentation](https://build.staratlas.com/).

```

```