Take a chance to win SBI! Provably fair and random through upvoting. 11 SBI pot.

in Hive SBI2 months ago

Several months ago I entered a contest to win SBI from @noloafing. In the interest of paying it forward I am running a contest also. With enough SBI you can receive a “basic income” in the form of upvotes from SBI accounts. I hope it gives you a start.

All eligible upvoters will have a chance to win. Upvoters will be eligible with at least a .001 Hive upvote after the seven days have passed.

The winners will be determined by the txid of their upvote. Highest to lowest.

1st - 5 SBI
2nd - 3 SBI
3rd - 2 SBI
4th - 1 SBI

SBI will be awarded after the 7 days.

Sort:  

Upvoted !
Oh wait ... is txid incremental ? :D
Thank you for organising the giveaway

Posted Using LeoFinance Beta

This is an awesome idea.

I'm glad I was able to spur more competitions!

Cheers,
NL

Hi @lucky-elephant,
I'm not here for the SBI, I just want to let you know that the txid is not suitable as a 'random' variable for giveaways/contests/...

As you can see here, I've created a vote operation on your post starting with 0xfff:

image.png

While the txid itself is 'random', it is known before the transaction is sent to the blockchain. By modifying the parameters, I can try out several variations of the vote operation (and the resulting txid) before sending the transaction to the chain.

Well, thanks for the post! My understanding was the txid could not be manipulated. How is it possible? What is the procedure? Is there a way to fix it?

I believe the game I run (Hi-Lo) is okay because players do not know which they are to match until the end. Any advice you can give would be appreciated.

Here's the raw transaction for my vote:

{
'expiration': '2020-12-28T15:26:39', 
'ref_block_num': 8921, 
'ref_block_prefix': 3788342440, 
'operations': [
  ['vote', {
    'voter': 'crokkon', 
    'author': 'lucky-elephant', 
    'permlink': 'take-a-chance-to-win-sbi-provably-fair-and-random-through-upvoting-11-sbi-pot', 
    'weight': 8540}]
  ],
 'extensions': [], 
'signatures': ['20345a9...']}

all fields except signatures are chosen by the user before signing the transaction. If I vary expiration, ref_block_num, ref_block_prefix (with limitations, values depend on previous blocks and varie over time) or weight (what I did here), I'll get a different signature and therefore a different transaction ID. This all happens offline. Once I'm 'happy' with the txid (e.g. sufficiently high number), I can send the signed transaction to the blockchain. This is obviously nothing you could do easily by clicking the upvote button on peakd/leofinance/hive.blog/..., but with a bit of scripting this is no problem.

EpicDice also had to learn this the hard way :D

I think your Hi-Lo game cannot be gamed by your participants, but you could take influence on the outcome by posting your comment with a transaction id for one or the other result.

This is interesting!