dbosk / crocus

Securely and privately verifiable protests
Other
0 stars 0 forks source link

How to handle transaction fees on the blockchain? #188

Open dbosk opened 5 years ago

dbosk commented 5 years ago

I believe the authors need to reconsider their blockchain design. It seems like they aim to set up a blockchain only for this application. It is unclear who runs the blockchain and who pays the
miners of the transactions. Given that it is likely a small blockchain, it seems like it would be easy for Grace to take it over and prevent the inclusion of proofs. Even if Grace cannot control the blockchain, she might create congestion on the chain that prevents the inclusion of real proofs. An alternative is running the scheme on a public blockchain
but that will definitively cost fees participants are probably unwilling to pay. The authors completely ignore these issues, which are important for their solution to work.

On Bitcoin, it's at most $2 now. On Ethereum, the cost is $0.02. The amounts are small, especially in the trusted witnesses case.

"In-app purchase" to convert normal currency to cryptocurrency?

From @Simon-Bouget ?

Re:Transaction fees: this website seems to have useful data to estimate cost: https://bitinfocharts.com/comparison/ethereum-median_transaction_fee.html They have 50-or-so different blockchains, and info about average and median transaction fees.

dbosk commented 5 years ago

@sbuc: Look at CareChain. @sgambs: Look at various blockchains for alternatives.

dbosk commented 5 years ago

From @Simon-Bouget:

Symon [11:59 2019-04-10] for the person working on the transaction fee issue: how can we pay the fee without revealing/linking the participation in the protest to the real identity that provides the funds. I think it was @dbosk who said he would work on that at first i believed it was "just" a question of making it economically viable but having fees to pay actually introduce additional privacy issues

One could use Monero or Zcash to anonymise payments.

sbuc commented 5 years ago

see google doc, social/free chains or pooling by NGOs as 2 possibilities

dbosk commented 5 years ago

From @sbuc:

To me, the pricing is less of an issue (unless it’s zero, of course), than the logistics around it. To avoid that and privacy risks, one could pool proof shares somewhere else (some NGO for example), who would then upload as many shares as possible per transaction and pay the fees. This might be vulnerable to DOS attacks, from both sides. A compromised uploading entity could drop proof shares and anyone could spam the entity with invalid proof shares. Checking the proofs contained in the proof shares would be a prerequisite for uploading to the blockchain, but getting the entity to check fake proof shares would be a way to slow it down.

From @sbuc:

A did a quick search for social blockchains without transaction fees; not all will be suitable but here are some examples. https://steem.com/ , WWF using blockchain for tracking fish (consensys and provenance.org), IOTA cryptocurrency, RaiBlocks (probably not suitable, individual blockchains)

dbosk commented 5 years ago

How much can we stuff into one transaction? I.e. how much pooling of proof-shares can we do?

The opening to the rabbit hole that might lead to an answer: https://stackoverflow.com/questions/43732402/storing-data-on-blockchain

Simon-Bouget commented 5 years ago

Well, that's entirely dependent on the specific block chain used. Transaction size is one of the most variable parameters in the system.

On Thu, Apr 11, 2019 at 12:42 PM Daniel Bosk notifications@github.com wrote:

How much can we stuff into one transaction? I.e. how much pooling of proof-shares can we do?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/dbosk/crocus/issues/188#issuecomment-482063807, or mute the thread https://github.com/notifications/unsubscribe-auth/ACPIwF7BtPZ1WlVAQYAF_KHQoiAegvI7ks5vfxGggaJpZM4ckju1 .

dbosk commented 5 years ago

There is always the option of simply storing a hash and make that hash the head of a Merkle tree. Then one could store as many proofs as one likes in one transaction.

However, then one would need to store the data somewhere else, I suppose. There is a suggestion on SO to use IPFS.

dbosk commented 5 years ago

Another idea is to use a smart contract: Ethereum smart contracts can have a lot of money "stored" and can use those. In our case, we could have a CROCUS contract to which one sends proofs and then the contract pays the miners from its reserve. I think that can be done, but we should look into the details.