You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Handshake uses a Vickrey auction, so the winner should only pay the second highest bid. With Handshake, bidders lose access to their funds for the duration of the auction. Only when the auction closes can losers sendredeem to recover their bid amount. Winners can sendupdate to register their name, which creates a REGISTER output and a NONE output containing their (1st bid - 2nd bid) refund. However, the wallet client erroneously reports both of those outputs as being locked up, effectively making the winner pay their full 1st highest bid.
To Reproduce
Make 2 wallets, A and B each with 100 HNS.
rpc selectwallet A
open NAME
bid 50, 75 lockup
rpc selectwallet B
bid 25, 50 lockup
rpc selectwallet A
reveal 50
a. (75-50) HNS returned to wallet A
rpc selectwallet B
reveal 25
a. (50-25) HNS returned to wallet B
redeem NAME
a. 25 HNS returned to wallet B
b. B still has ~100 HNS with 0 locked up, as expected
rpc selectwallet A
update NAME '{}'
a. REGISTER output with 25 tokens (this is the 2nd highest bid price)
b. NONE output with 25 tokens (this is the 1st - 2nd price)
get --id=A
a. A has 100 HNS with 50 HNS still locked up
b. expected: A has 100 HNS with 25 HNS locked up
Details
I ran all of these steps locally on simnet, but have observed this same behavior on testnet. Here is the result of the winner's sendupdate:
Next, I exported A's wallet seed and created a new wallet based on that seed. Then, I rescan the db to bring the new wallet up-to-date. Here is its balance report:
Description
Handshake uses a Vickrey auction, so the winner should only pay the second highest bid. With Handshake, bidders lose access to their funds for the duration of the auction. Only when the auction closes can losers
sendredeem
to recover their bid amount. Winners cansendupdate
to register their name, which creates a REGISTER output and a NONE output containing their (1st bid - 2nd bid) refund. However, the wallet client erroneously reports both of those outputs as being locked up, effectively making the winner pay their full 1st highest bid.To Reproduce
rpc selectwallet A
open NAME
bid 50, 75 lockup
rpc selectwallet B
bid 25, 50 lockup
rpc selectwallet A
reveal 50
a. (75-50) HNS returned to wallet A
rpc selectwallet B
reveal 25
a. (50-25) HNS returned to wallet B
redeem NAME
a. 25 HNS returned to wallet B
b. B still has ~100 HNS with 0 locked up, as expected
rpc selectwallet A
update NAME '{}'
a. REGISTER output with 25 tokens (this is the 2nd highest bid price)
b. NONE output with 25 tokens (this is the 1st - 2nd price)
get --id=A
a. A has 100 HNS with 50 HNS still locked up
b. expected: A has 100 HNS with 25 HNS locked up
Details
I ran all of these steps locally on simnet, but have observed this same behavior on testnet. Here is the result of the winner's
sendupdate
:Here is the balance result of
get --id=A
:Next, I exported A's wallet seed and created a new wallet based on that seed. Then, I rescan the db to bring the new wallet up-to-date. Here is its balance report:
The text was updated successfully, but these errors were encountered: