I want a policy that behaves like so:
- Before block 1 000 000 → spendable by a 2‑of‑3 multisig quorum (keys A, B, C)
- At / after block 1 000 000 → only spendable by a different 2‑of‑3 quorum (keys X, Y, Z); the A/B/C path should be disabled.
A naive Miniscript attempt is:
andor(
ln:after(1000000), // height check
multi(2, X, Y, Z), // “after” branch
multi(2, A, B, C) // “before” branch
)
But I believe after() can only add conditions; it cannot make the earlier A/B/C branch permanently invalid. So both 2‑of‑3 quorums remain usable forever.
Is my understanding correct, or am I missing something? Does it require a new opcode/soft-fork to “revoke” earlier spending conditions?











