- Bitchat adalah aplikasi perpesanan P2P terdesentralisasi untuk iOS·macOS yang menggabungkan jaringan mesh Bluetooth dan Nostr berbasis internet, sehingga dapat beroperasi tanpa akun, nomor telepon, atau server pusat
- Saat offline, aplikasi ini mendukung relay hingga 7 hop melalui Bluetooth LE, dan saat terhubung ke internet akan terhubung ke kanal global maupun berbasis lokasi melalui lebih dari 290 relay Nostr
- Pesan pribadi memprioritaskan Noise Protocol di Bluetooth, beralih ke NIP-17 milik Nostr jika tidak bisa terhubung, dan jika keduanya tidak memungkinkan maka disimpan dalam antrean sampai dapat dikirim
- Berdasarkan presisi geohash, tersedia kanal tingkat blok, lingkungan, kota, provinsi, dan negara, serta mendukung perintah ala IRC seperti
/slap, /msg, /who dan Emergency Wipe untuk menghapus data dengan tiga kali ketukan
- Proyek ini dirilis ke domain publik dan dapat dijalankan dengan Xcode atau
just, tetapi build untuk perangkat fisik memerlukan pengaturan Developer Team ID dan entitlement
Arsitektur transport yang menggabungkan Bluetooth dan Nostr
- Bitchat adalah aplikasi native iOS·macOS yang menggabungkan pesan Bluetooth dan Nostr, dan juga tersedia di App Store
- Jaringan mesh Bluetooth secara otomatis menemukan dan menghubungkan perangkat di sekitar tanpa internet
- Berkomunikasi langsung secara P2P melalui Bluetooth LE, dan merelay pesan hingga 7 hop melalui perangkat terdekat
- Mendukung enkripsi end-to-end berbasis Noise Protocol dan forward secrecy
- Menggunakan format paket biner terkompresi yang disesuaikan dengan batasan Bluetooth LE serta duty cycle yang dioptimalkan untuk baterai
- Kanal
mesh #bluetooth ditujukan untuk komunikasi offline dalam situasi seperti demonstrasi, bencana, atau wilayah terpencil
- Lapisan transport Nostr menyediakan pesan internet melalui lebih dari 290 relay global
- Membuat ruang obrolan berbasis lokasi dengan koordinat geohash, dan menggunakan identitas terenkripsi sementara yang baru untuk setiap wilayah
- Pesan pribadi dilindungi dengan pembungkusan gift wrapping NIP-17
- Kanal lokasi memerlukan koneksi internet dan dapat digunakan untuk komunitas lokal, acara setempat, dan diskusi regional
block 7 karakter: blok kota
neighborhood 6 karakter: kawasan·lingkungan
city 5 karakter: kota
province 4 karakter: provinsi
region 2 karakter: negara·wilayah besar
- Routing pesan pribadi secara otomatis memilih sarana transport yang tersedia
- Jika sesi Noise yang ada dapat digunakan, koneksi Bluetooth yang cepat dan lebih privat akan diprioritaskan
- Jika Bluetooth tidak tersedia, pesan dikirim melalui jaringan relay dengan kunci publik Nostr penerima dan NIP-17
- Jika kedua cara tidak tersedia, pesan disimpan dalam antrean lalu dikirim otomatis saat koneksi terbentuk
- Juga tersedia kompresi pesan LZ4, mode baterai adaptif, optimasi jaringan, perintah ala IRC, dan Emergency Wipe untuk segera menghapus semua data dengan tiga kali ketukan
- Detail protokol lebih lanjut dapat dilihat di Technical Whitepaper
Build, lokalisasi, dan lisensi
- Untuk menjalankan di Xcode, gunakan perintah berikut dari repositori
cd bitchat
open bitchat.xcodeproj
- Untuk menjalankan di perangkat fisik, Anda perlu menyiapkan konfigurasi lokal dan code signing
- Gandakan berkas konfigurasi dengan
cp Configs/Local.xcconfig.example Configs/Local.xcconfig
- Tambahkan Developer Team ID ke berkas baru tersebut, lalu Bundle ID default akan disetel menjadi
chat.bitchat.<team_id>
- Anda harus mengubah entitlement
group.chat.bitchat secara manual menjadi group.<your_bundle_id>
- Di macOS, setelah
brew install just, Anda dapat menyiapkan dan menjalankan source dengan just run
- Setelah itu, jalankan
just clean untuk mengembalikan ke keadaan semula untuk build dan pengembangan aplikasi mobile
- Sumber daya lokalisasi dibagi antara aplikasi dan shared extension
- Tambahkan string aplikasi dasar dan aturan bentuk jamak ke
Localizable.strings dan Localizable.stringsdict di bitchat/Localization/Base.lproj/
- String shared extension dikelola di
bitchatShareExtension/Localization/Base.lproj/Localizable.strings
- Kunci sebaiknya ditulis agar maksudnya terlihat jelas, seperti
app_info.features.offline.title, dan sebisa mungkin gunakan kembali kunci yang sudah ada
- Untuk perubahan lokalisasi, verifikasi kompilasi dengan
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build
- Proyek ini didistribusikan ke domain publik, dan syarat detailnya dapat dilihat di LICENSE
1 komentar
Komentar Hacker News
Kemarin saya memasang klien desktop Radicle dan memasukkan nama pengguna serta kata sandi baru, tetapi tidak terjadi apa-apa. Bahkan setelah aplikasi dimulai ulang, saya tetap tidak bisa melewati layar pembuatan akun/login, jadi penggunaan Radicle berakhir di sana
Jika mementingkan ketersediaan, dependensi
libs.gms.locationperlu ditinjau ulang dan aplikasinya juga harus didistribusikan di F-Droid(https://gitlab.com/fdroid/fdroiddata/-/merge_requests/24907#...)Saat Fusion Festival, saya menyalakan Bitchat sambil berkeliling dan menemukan sekitar 20 perangkat serta beberapa pesan, tetapi tidak ada yang membalas pesan yang saya kirim. Dari 80 ribu orang, 20 perangkat berarti bukan tidak ada pengguna sama sekali, tetapi juga tidak banyak, dan hanya sampai maksimal 2 hop, sehingga kepadatannya belum cukup untuk menjangkau seluruh area acara
Ini berguna saat terpisah dari rombongan di pesawat karena tidak mau membayar 50 dolar ekstra untuk duduk berdampingan
Jika tertarik dengan BitChat, ada baiknya memasangnya dulu untuk berjaga-jaga jika nanti populer atau bertemu orang yang juga memakainya. Setelah mencobanya langsung, rasanya tidak nyata bisa saling mengirim pesan teks tanpa Wi-Fi atau jaringan seluler
Geohash bertumpuk mungkin tidak buruk, tetapi saya khawatir akan membingungkan seperti radio dua arah, ketika hanya satu pihak yang berada dalam jangkauan sehingga hanya setengah percakapan yang terlihat. Saat ini geohash dipersempit hingga sekitar 1 acre sehingga terlalu presisi, tetapi bisa berguna jika seluruh asrama kampus 12 lantai memakai satu ruang chat
Situs Radicle menampilkan desain yang menarik sebagai platform repositori Git. Saya suka margin lebar penuh, struktur navigasi yang tersusun baik, dan rendering kode yang enak dilihat
Bitchat adalah proyek dari AOS. Agak mengejutkan bahwa proyek ini tidak di-host ulang di ngit, yang juga merupakan proyek AOS
Jika terlalu tenggelam dalam purisme Nostr, sering kali hasilnya hanya 5 orang yang melihat postingan. Saya suka protokolnya, tetapi untuk menambah pengguna, aplikasi harus ditempatkan di tempat orang-orang sudah berada
Saya penasaran apakah ada fitur khusus dibanding produk messaging terdesentralisasi lain seperti Nostr atau XMTP
Diskusi terkait dari hari sebelumnya: “Government orders GitHub to remove Bluetooth-based chat app Bitchat: Jack Dorsey”
https://news.ycombinator.com/item?id=49036433