Does one of these approaches have some advantage over the other or does it depend on personal taste?
If you add public keys, instead of multiplying some public key with some known number, then you can potentially implement it on top of Taproot. Because if you have two Schnorr signatures, then they can be combined, and then, public keys are added, to make an aggregated signature. So, I would recommend picking addition, because it is implemented in that way in other places.
And is VanityPool still reliable?
I don't know, but I think it should be technically possible to do something like that in a completely trustless way, just by locking some coins on some addresses, and then, the miner could simply take the coins, while also publishing the solution in the input Script. Now, it is possible to check the size of some DER signature, and require grinding small s-value, to grab some coins. Maybe by picking the right public key, it would be possible to translate the solution from "pay to Proof of Work address" into "pay to vanity address" instead.
Currently, when we have Pay to Proof of Work scripts, we have:
s=(z+rd)/k
r=(G/2).x=const
k=1/2
s=(z+const*d)*2
By picking a different private key, than just "d=1", we have "s=(z+template)*2" instead. Which means, that we can pick any difference between s-value and z-value, and the only way to claim such output, would require grinding it (you can see some examples with d=1, by checking addresses like
tb1qzsjnew5qcn75e4cqdsc6r9v8fjy5ensancqmv2l2n82p0q5f5tls758l9d).
And also, there is Taproot, where we have aggregated signatures:
https://en.bitcoin.it/wiki/Schnorrs=k+ed
e=hash(R||P||m)
s1=k1+e*d1
s2=k2+e*d2
s1*G=R1+e*Q1
s2*G=R2+e*Q2
s1+s2=(k1+k2)+e*(d1+d2)
(s1+s2)*G=(R1+R2)+e*(Q1+Q2)
Which means, that not only signatures can be combined, but they can be also splitted. And I wonder, if there is a way, to prepare some Taproot and TapScript, and claim it by grinding a given public key, to match a given pattern. Because also, each TapScript is committed to the Taproot address, by using just some SHA-256 hash of a given TapScript, and it is mixed with the internal public key.
Edit: I have more untested ideas. I think it is possible to pay to vanity address, which would form a valid DER signature.
Input: <realSignature> <recoveredKey> <pubkey>
Output: OP_DUP OP_HASH160 OP_SWAP OP_TOALTSTACK OP_SWAP OP_CHECKSIGVERIFY OP_FROMALTSTACK OP_CHECKSIG
Execution:
<realSignature> <recoveredKey> <pubkey>
<realSignature> <recoveredKey> <pubkey> <pubkey>
<realSignature> <recoveredKey> <pubkey> <vanitySignature>
<realSignature> <recoveredKey> <vanitySignature> <pubkey>
<realSignature> <recoveredKey> <vanitySignature>
<realSignature> <vanitySignature> <recoveredKey>
<realSignature>
<realSignature> <pubkey>
OP_TRUE
Then, a given public key will be first hashed with OP_HASH160, and then used as a DER signature, with some randomly recovered public key, matching for a given transaction. And then, the same public key can be checked again, but this time with user-given signature, which would prove private key ownership.
Which means, that this Script above is spendable by anyone, who can give a public key, which would form a valid, 20-byte DER signature, when hashed. Because of DER format, it would be something like that:
30110207 //DER encoding
3b78ce5630207d //r-value
0206 //DER encoding
52b332d15b18 //s-value
83 //sighash
Different sighashes can be tried, as well as different sizes for r-value and s-value. But overall, I estimate something around six or seven bytes should be grinded, which means checking something around 2^56 hashes for both SHA-256 and RIPEMD-160.
Edit: When it comes to available signatures, we have something like that:
+------------------------------------------+-------------------------+-------------------------+
| HASH160 of a given public key | Vanity address (legacy) | Vanity address (Segwit) |
+------------------------------------------+-------------------------+-------------------------+
| 30110201..020c........................01 | 15P9ow9... | bc1qxqgsyq... |
| 30110201..020c........................02 | 15P9ow9... | bc1qxqgsyq... |
| 30110201..020c........................03 | 15P9ow9... | bc1qxqgsyq... |
| 30110201..020c........................81 | 15P9ow9... | bc1qxqgsyq... |
| 30110201..020c........................82 | 15P9ow9... | bc1qxqgsyq... |
| 30110201..020c........................83 | 15P9ow9... | bc1qxqgsyq... |
+------------------------------------------+-------------------------+-------------------------+
| 30110202....020b......................01 | 15P9ow5... | bc1qxqgsyq... |
| 30110202....020b......................02 | 15P9ow5... | bc1qxqgsyq... |
| 30110202....020b......................03 | 15P9ow5... | bc1qxqgsyq... |
| 30110202....020b......................81 | 15P9ow5... | bc1qxqgsyq... |
| 30110202....020b......................82 | 15P9ow5... | bc1qxqgsyq... |
| 30110202....020b......................83 | 15P9ow5... | bc1qxqgsyq... |
+------------------------------------------+-------------------------+-------------------------+
| 30110203......020a....................01 | 15P9owC... | bc1qxqgsyq... |
| 30110203......020a....................02 | 15P9owC... | bc1qxqgsyq... |
| 30110203......020a....................03 | 15P9owC... | bc1qxqgsyq... |
| 30110203......020a....................81 | 15P9owC... | bc1qxqgsyq... |
| 30110203......020a....................82 | 15P9owC... | bc1qxqgsyq... |
| 30110203......020a....................83 | 15P9owC... | bc1qxqgsyq... |
+------------------------------------------+-------------------------+-------------------------+
| 30110204........0209..................01 | 15P9owG... | bc1qxqgsyp... |
| 30110204........0209..................02 | 15P9owG... | bc1qxqgsyp... |
| 30110204........0209..................03 | 15P9owG... | bc1qxqgsyp... |
| 30110204........0209..................81 | 15P9owG... | bc1qxqgsyp... |
| 30110204........0209..................82 | 15P9owG... | bc1qxqgsyp... |
| 30110204........0209..................83 | 15P9owG... | bc1qxqgsyp... |
+------------------------------------------+-------------------------+-------------------------+
| 30110205..........0208................01 | 15P9owL... | bc1qxqgsyp... |
| 30110205..........0208................02 | 15P9owL... | bc1qxqgsyp... |
| 30110205..........0208................03 | 15P9owL... | bc1qxqgsyp... |
| 30110205..........0208................81 | 15P9owL... | bc1qxqgsyp... |
| 30110205..........0208................82 | 15P9owL... | bc1qxqgsyp... |
| 30110205..........0208................83 | 15P9owL... | bc1qxqgsyp... |
+------------------------------------------+-------------------------+-------------------------+
| 30110206............0207..............01 | 15P9owP... | bc1qxqgsyp... |
| 30110206............0207..............02 | 15P9owP... | bc1qxqgsyp... |
| 30110206............0207..............03 | 15P9owP... | bc1qxqgsyp... |
| 30110206............0207..............81 | 15P9owP... | bc1qxqgsyp... |
| 30110206............0207..............82 | 15P9owP... | bc1qxqgsyp... |
| 30110206............0207..............83 | 15P9owP... | bc1qxqgsyp... |
+------------------------------------------+-------------------------+-------------------------+
| 30110207..............0206............01 | 15P9owT... | bc1qxqgsyp... |
| 30110207..............0206............02 | 15P9owT... | bc1qxqgsyp... |
| 30110207..............0206............03 | 15P9owT... | bc1qxqgsyp... |
| 30110207..............0206............81 | 15P9owT... | bc1qxqgsyp... |
| 30110207..............0206............82 | 15P9owT... | bc1qxqgsyp... |
| 30110207..............0206............83 | 15P9owT... | bc1qxqgsyp... |
+------------------------------------------+-------------------------+-------------------------+
| 30110208................0205..........01 | 15P9owW... | bc1qxqgsyz... |
| 30110208................0205..........02 | 15P9owW... | bc1qxqgsyz... |
| 30110208................0205..........03 | 15P9owW... | bc1qxqgsyz... |
| 30110208................0205..........81 | 15P9owW... | bc1qxqgsyz... |
| 30110208................0205..........82 | 15P9owW... | bc1qxqgsyz... |
| 30110208................0205..........83 | 15P9owW... | bc1qxqgsyz... |
+------------------------------------------+-------------------------+-------------------------+
| 30110209..................0204........01 | 15P9owa... | bc1qxqgsyz... |
| 30110209..................0204........02 | 15P9owa... | bc1qxqgsyz... |
| 30110209..................0204........03 | 15P9owa... | bc1qxqgsyz... |
| 30110209..................0204........81 | 15P9owa... | bc1qxqgsyz... |
| 30110209..................0204........82 | 15P9owa... | bc1qxqgsyz... |
| 30110209..................0204........83 | 15P9owa... | bc1qxqgsyz... |
+------------------------------------------+-------------------------+-------------------------+
| 3011020a....................0203......01 | 15P9owd... | bc1qxqgsyz... |
| 3011020a....................0203......02 | 15P9owd... | bc1qxqgsyz... |
| 3011020a....................0203......03 | 15P9owd... | bc1qxqgsyz... |
| 3011020a....................0203......81 | 15P9owd... | bc1qxqgsyz... |
| 3011020a....................0203......82 | 15P9owd... | bc1qxqgsyz... |
| 3011020a....................0203......83 | 15P9owd... | bc1qxqgsyz... |
+------------------------------------------+-------------------------+-------------------------+
| 3011020b......................0202....01 | 15P9owh... | bc1qxqgsyz... |
| 3011020b......................0202....02 | 15P9owh... | bc1qxqgsyz... |
| 3011020b......................0202....03 | 15P9owh... | bc1qxqgsyz... |
| 3011020b......................0202....81 | 15P9owh... | bc1qxqgsyz... |
| 3011020b......................0202....82 | 15P9owh... | bc1qxqgsyz... |
| 3011020b......................0202....83 | 15P9owh... | bc1qxqgsyz... |
+------------------------------------------+-------------------------+-------------------------+
| 3011020c........................0201..01 | 15P9owk... | bc1qxqgsyr... |
| 3011020c........................0201..02 | 15P9owk... | bc1qxqgsyr... |
| 3011020c........................0201..03 | 15P9owk... | bc1qxqgsyr... |
| 3011020c........................0201..81 | 15P9owk... | bc1qxqgsyr... |
| 3011020c........................0201..82 | 15P9owk... | bc1qxqgsyr... |
| 3011020c........................0201..83 | 15P9owk... | bc1qxqgsyr... |
+------------------------------------------+-------------------------+-------------------------+
Which means, that such vanity addresses would always start with 15P9ow... (legacy) and bc1qxqgsy... (Segwit). I wonder, if some Script tricks can be used to get different patterns out of that.