What is BitcoinSocialSync?
BitcoinSocialSync is an off-chain centralized proof aggregator for the Bitcoin (BTC) UTXO set.
It's the first service allowing Bitcoin users to quickly sync a new full node, by choosing WHO to trust: either the aggregate of proofs from the community, or some specific(s) member(s) in it.
This service is trying to improve on the fastsync used in
btcpayserver or service like
getbitcoinblockchain.com that are rellying on very few peoples to not lie
It is very similar, in spirit, to the
assumeutxo proposal, but build totally off the client by using RPC calls.
This allow any community member, by running a simple bash script, to sign proofs and verify those signatures in a simple way.
Why should I trust your service?
That's the beauty of it, you do not have to trust the service provider to give you valid proofs, you can verify independently that each proof is correctly signed by yourself by checking the PGP Fingerprint displayed in the signer Twitter feed.
The only way for this service to provide you with a fake UTXO-Set would be that all the signers are colluding together to lie about the state of their own full node.
The only nefarious act the service provider can do, by itself, is retain information: we can say someone never signed a proof when they actually did sign it.
Every single scripts that is run on your computer, either to sync, create proofs or batch verify them are
open sourcedHow to verify a proof?
There is two possibility:
- Run our verification script to batch verify every single proof existing on the server.
(coming soon) - Manually for each proof by following this process:
- Go to a community member's profile and check the twitter link to his PGP Fingerprint.
- Use PGP to verify that the PGP Public Key displayed on our website match his PGP Fingerprint displayed on Twitter.
- Use PGP to verify the proofs displayed on his profile are signed by that key.
Who can create proofs?
Any Bitcoin node owner that has:
- A full node with enough block history
- A Twitter account
- A PGP key
- That's it!
Why should you bother create proofs as a node owner?
Making the Initial Blockchain Download & construction of the UTXO set easier is one of bigger roadblocks in having every single Bitcoin user running its own full node.
This service try to facilitate that step, while requiring as little trust as possible, by integrating the social aspect of Bitcoin into it's synching mechanism.
How to create a proof for a specific block?
First of all, you need to register your PGP Fingerprint through our Twitter Bot:
@BitcoinSync register MY_PGP_FINGERPRINT
After, you need to
upload your PGP PubKey on our server.
To automatically create a proof and upload it to our server, you can
run our automated proof-generator.sh script Or follow those manual steps:
- Choose one of the proposed blocks on the dashboard you're going to create a proof for
- run the following command:
bitcoin-cli invalidateblock BLOCKHASH_TO_INVALIDATE
and wait for it to finish - run the following command:
bitcoin-cli gettxoutsetinfo
- Take the hash_serialized2 and blockHeight results from the previous command, compare them with the ones on the dashboard and if they are matching, use them to sign a PGP proof
echo "BitcoinSocialSync.com: BLOCK_HEIGHT HASH_SERIALIZED" | gpg --clearsign -a --output BLOCK_HEIGHT.bssproof
- Upload that proof to our server
- All that remains is for you to reset your node into its previous state with
bitcoin-cli reconsiderblock BLOCKHASH_TO_INVALIDATE
- That's it, your done!