Oddbean new post about | logout
 any #damus  @damus users know the work around for zaps on non test flight people 
 Run this script 🤙🏾

https://zap.army/ 
 How often do I need to run this script? 
 Only once. Except if you fully delete the app. Then you’ll have to run it again 
 Sweet! 
 I don't have an iPhone or Damus, but how does this work actually? 
 It enables the zap button on notes. It’s disabled by default. @jb55 would be able to explain it better though 
 Black magic fuckery 
 😂 
 How come can't link Mutiny wallet? I know it's not your problem 
 You can link it in the wallet section, in settings. Via NWC 
 It looks very fishy.
The link that thr On button opens begins with “damus:nostr:nscript1…” and then a bech32 blob that after decoding contains “asm”, “nostr_set_bool”, “memory” and some long binary stuff in between.
Why would you need such a long script to override a single boolean?
@damus is this legit? 
 Don’t trust, verify 
 @jb55 Is this a legit script? How can I parse it? 
 echo nscript… | bech32 -d > zap.wasm && wasm-objdump -x zap.wasm

nostrscripts are sandboxed. They can’t do anything other than set boolean flags in your settings atm 
 Can it send an http request with my nsec to a third party?

Anyways, here is the script. I don’t know much about WebAssembly, what does the last “data” operations do?

(module
  (type $t0 (func (param i32 i32 i32) (result i32)))
  (type $t1 (func))
  (import "nostr" "nostr_set_bool" (func $nostr.nostr_set_bool (type $t0)))
  (func $f1 (type $t1)
    (drop
      (call $nostr.nostr_set_bool
        (i32.const 1056)
        (i32.shr_u
          (i32.load
            (i32.const 1052))
          (i32.const 1))
        (i32.const 0))))
  (memory $memory (export "memory") 1)
  (start $f1)
  (data $d0 (i32.const 1036) "\1c")
  (data $d1 (i32.const 1048) "\02\00\00\00\0c\00\00\00n\00o\00z\00a\00p\00s")) 
 data defines well…. data. In this case its a utf16 string called “nozaps” this is used as an argument to the nostr_set_bool function call:

nostr_set_bool(“nozaps”, false)

This is the entire script 
 its not actually that long if you consider what it is. This is probably one of the smallest examples of a small, portable, sandboxed binary executable.

These will be used for executing turing complete algos, so I needed the flexibility of a portable executable. 
 @ZapOnBehalf 1000 Seems to work and makes ZapOnBehalf bot useless… 
 @ZapOnBehalf 1000 Seems to work and makes ZapOnBehalf bot useless… 
 Thank you Oren! 
 I was having the same problem, but as my test flight expired, I got the information from Tanel that all I had to do was run the same script that runs in the script and it would work. Indeed, problem solved!