Replying to Avatar NEW1

any #damus nostr:npub18m76awca3y37hkvuneavuw6pjj4525fw90necxmadrvjg0sdy6qsngq955 users know the work around for zaps on non test flight people

Run this script 🤙🏾

https://zap.army/

Reply to this note

Please Login to reply.

Discussion

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. nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s 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?

nostr:npub18m76awca3y37hkvuneavuw6pjj4525fw90necxmadrvjg0sdy6qsngq955 is this legit?

Don’t trust, verify

nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s 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…

nostr:npub1qm05ghrt2xuc970rxpsuchs504ah4rllxsgevdyjc0v5uha77m6qujz78x 1000 Seems to work and makes ZapOnBehalf bot useless…

Thank you Oren!