
New releaseAug 1, 2026
bitchat v1.7.1
블루투스 메시 채팅, IRC 분위기
bitchat
이중 전송 아키텍처를 갖춘 탈중앙 피어투피어 메시징 앱: 오프라인 통신을 위한 로컬 블루투스 메시 네트워크와 글로벌 연결을 위한 인터넷 기반 Nostr 프로토콜. 계정도, 전화번호도, 중앙 서버도 없습니다. 바로 사이드 그룹챗입니다.
라이선스
이 프로젝트는 퍼블릭 도메인으로 공개됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
기능
- 이중 전송 아키텍처: 오프라인용 블루투스 메시 + 인터넷 기반 메시징용 Nostr 프로토콜
- 위치 기반 채널: 전역 Nostr 릴레이에서 지오해시 좌표를 사용한 지리적 채팅방
- 지능형 메시지 라우팅: 최적의 전송 방식을 자동 선택 (블루투스 → Nostr 폴백)
- 탈중앙 메시 네트워크: Bluetooth LE를 통한 자동 피어 발견 및 다중 홉 메시지 중계
- 프라이버시 우선: 계정, 전화번호, 영구 식별자 없음
- 비공개 메시지 종단간 암호화: 메시용 Noise Protocol, Nostr용 NIP-17
- IRC 스타일 명령어: 익숙한
/slap,/msg,/who스타일 인터페이스 - 유니버설 앱: iOS 및 macOS 기본 지원
- 비상 삭제: 세 번 탭으로 모든 데이터 즉시 삭제
- 성능 최적화: LZ4 메시지 압축, 적응형 배터리 모드, 최적화된 네트워킹
기술 아키텍처
BitChat은 두 가지 상호 보완적인 전송 계층을 가진 하이브리드 메시징 아키텍처를 사용합니다.
블루투스 메시 네트워크 (오프라인)
- 로컬 통신: 블루투스 범위 내 직접 P2P
- 다중 홉 중계: 근처 장치를 통해 메시지 라우팅 (최대 7홉)
- 인터넷 불필요: 재난 시나리오에서 완전히 오프라인으로 작동
- Noise Protocol 암호화: 순방향 비밀성을 갖춘 종단간 암호화
- 바이너리 프로토콜: Bluetooth LE 제약 조건에 최적화된 압축 패킷 형식
- 자동 발견: 피어 발견 및 연결 관리
- 적응형 전력: 배터리 최적화 듀티 사이클링
Nostr 프로토콜 (인터넷)
- 글로벌 도달: 인터넷 릴레이를 통해 전 세계 사용자와 연결
- 위치 채널: 지오해시 좌표를 사용한 지리적 채팅방
- 290+ 릴레이 네트워크: 안정성을 위해 전 세계에 분산
- NIP-17 암호화: 인터넷 프라이버시를 위한 선물 포장 비공개 메시지
- 임시 키: 지오해시 영역별로 새로운 암호화 ID
채널 유형
mesh #bluetooth
- 전송: Bluetooth Low Energy 메시 네트워크
- 범위: 다중 홉 범위 내 로컬 장치
- 인터넷: 불필요
- 사용 사례: 오프라인 통신, 시위, 재난, 원격 지역
위치 채널 (block #dr5rsj7, neighborhood #dr5rs, country #dr)
- 전송: 인터넷을 통한 Nostr 프로토콜
- 범위: 지오해시 정밀도로 정의된 지리적 영역
block(7자): 도시 블록 수준neighborhood(6자): 구/동 수준city(5자): 도시 수준province(4자): 주/도 수준region(2자): 국가/대규모 지역
- 인터넷: 필요 (Nostr 릴레이에 연결)
- 사용 사례: 위치 기반 커뮤니티 채팅, 지역 이벤트, 지역 토론
직접 메시지 라우팅
비공개 메시지는 지능형 전송 선택을 사용합니다.
-
블루투스 우선 (가능한 경우 선호)
- 설정된 Noise 세션으로 직접 연결
- 가장 빠르고 가장 비공개적인 옵션
-
Nostr 폴백 (블루투스를 사용할 수 없는 경우)
- 수신자의 Nostr 공개 키 사용
- 프라이버시를 위한 NIP-17 선물 포장
- 글로벌 릴레이 네트워크를 통해 라우팅
-
스마트 큐잉 (둘 다 사용할 수 없는 경우)
- 전송을 사용할 수 있을 때까지 메시지 대기
- 연결 설정 시 자동 전송
자세한 프로토콜 문서는 기술 백서를 참조하세요.
설정
옵션 1: Xcode 사용
cd bitchat
open bitchat.xcodeproj
기기에서 실행하려면 코드를 준비하기 위한 몇 가지 단계가 있습니다.
- 로컬 설정 복사:
cp Configs/Local.xcconfig.example Configs/Local.xcconfig - 새로 만든
Configs/Local.xcconfig에 개발자 팀 ID 추가- Bundle ID는
chat.bitchat.<team_id>로 설정됩니다 (다른 값으로 설정하지 않은 경우)
- Bundle ID는
- Entitlements를 수동으로 업데이트해야 합니다 (TODO: 자동화):
group.chat.bitchat을group.<your_bundle_id>(예:group.chat.bitchat.ABC123)로 검색 및 바꾸기
옵션 2: just 사용
brew install just
macOS에서 시도해 보려면: just run으로 설정 및 소스에서 실행합니다.
모바일 앱 빌드 및 개발을 위해 원래 상태로 복원하려면 이후에 just clean을 실행하세요.
현지화
- 기본 앱 리소스는
bitchat/Localization/Base.lproj/에 있습니다. 새 문구는Localizable.strings에, 복수 규칙은Localizable.stringsdict에 추가하세요. - 공유 확장 문자열은
bitchatShareExtension/Localization/Base.lproj/Localizable.strings에 별도로 있습니다. - 의도를 설명하는 키(
app_info.features.offline.title)를 선호하고 가능하면 기존 키를 재사용하세요. - 현지화 업데이트를 컴파일 확인하려면
xcodebuild -project bitchat.xcodeproj -scheme "bitchat (macOS)" -configuration Debug CODE_SIGNING_ALLOWED=NO build를 실행하세요.