Please try the following:
 - It seems like you've tried to created a custom chain definition to synchronise and validate with different authorities. 
But you've only created a custom chain specification customSpec.json based on code changes in your "dev" chain id that you specified in src/chain_spec.rs. 
But when you've tried to then build a "raw" chain definition for the new chain from the custom chain specification you haven't used `--raw`, so try using that as shown below:
```
./target/release/transmit-node build-spec --chain customSpec.json --disable-default-bootnode --raw > dev.json
```
 - Have you tried changing the `--node-key` to `88dc3417d5058ec4b4503e0c12ea1a0a89be200fe98922423d4334014fa6b0ee` (without the `0x` prefix)? 
 - Why don't you explicitly specify a different `--rpc-port` for Bob (i.e. 9934) and Charlie (i.e. 9935) other than the RPC port 9933 that Alice is using? 
 - Why are you running two Charlie validators (both using `--charlie`) instead of just one Charlie and one Dave `--dave`? 
 - Have you tried using `--unsafe-ws-external` and `--unsafe-rpc-external` too? 
 - Does `unsafe` need to use a capital letter like `--rpc-methods=Unsafe`? 
 - Why do you need `--in-peers 256`? 
 - Have you tried using `--execution=native -lruntime=debug`?