mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-07-25 05:05:20 +00:00
@@ -78,6 +78,7 @@ class GeohashMessageHandler(
|
||||
if (isTeleportPresence) return@launch
|
||||
|
||||
val senderName = repo.displayNameForNostrPubkeyUI(event.pubkey)
|
||||
val hasNonce = try { NostrProofOfWork.hasNonce(event) } catch (_: Exception) { false }
|
||||
val msg = BitchatMessage(
|
||||
id = event.id,
|
||||
sender = senderName,
|
||||
@@ -88,7 +89,9 @@ class GeohashMessageHandler(
|
||||
senderPeerID = "nostr:${event.pubkey.take(8)}",
|
||||
mentions = null,
|
||||
channel = "#$subscribedGeohash",
|
||||
powDifficulty = try { NostrProofOfWork.calculateDifficulty(event.id).takeIf { it > 0 } } catch (_: Exception) { null }
|
||||
powDifficulty = try {
|
||||
if (hasNonce) NostrProofOfWork.calculateDifficulty(event.id).takeIf { it > 0 } else null
|
||||
} catch (_: Exception) { null }
|
||||
)
|
||||
withContext(Dispatchers.Main) { messageManager.addChannelMessage("geo:$subscribedGeohash", msg) }
|
||||
} catch (e: Exception) {
|
||||
|
||||
@@ -54,6 +54,12 @@ object NostrProofOfWork {
|
||||
fun validateDifficulty(event: NostrEvent, minimumDifficulty: Int): Boolean {
|
||||
if (minimumDifficulty <= 0) return true
|
||||
|
||||
// Require explicit nonce tag to recognize PoW per NIP-13 intent
|
||||
if (!hasNonce(event)) {
|
||||
Log.w(TAG, "Event ${event.id.take(16)}... missing nonce tag; treating as no PoW")
|
||||
return false
|
||||
}
|
||||
|
||||
val actualDifficulty = calculateDifficulty(event.id)
|
||||
val committedDifficulty = getCommittedDifficulty(event)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user