A player node reads four config files (same set as the dealer — see
Dealer Configuration § 0). What
differs is which keys it actually consults from each, and that the
player.ini filename is typically replaced by a per-seat variant
(p1.ini, p2.ini, …) so multiple players can share a host:
./bin/bet player -c poker/config/p1.ini
./bin/bet player -c poker/config/p2.ini
When -c is not passed, the default is poker/config/player.ini
(see bet_init_config_paths in poker/src/config.c).
player.ini / pN.iniThe shipped example is intentionally minimal:
[verus]
dealer_id = d1.sg777z.VRSCTEST@ # Dealer to join (FQN)
table_id = t1.sg777z.VRSCTEST@ # Table to join (FQN)
wallet_addr = * # Wallet address to spend from ("*" = any)
player_id = p1.sg777z.VRSCTEST@ # Player's Verus ID (FQN, must be signable)
ws_port = 9001 # WebSocket port for GUI mode
All identity fields must be fully-qualified Verus IDs (containing
@); the parser rejects bare short names with ERR_INI_PARSING.
[verus]| Key | Default | Meaning |
|---|---|---|
dealer_id |
— | Fully-qualified Verus ID of the dealer identity to join (e.g. d1.sg777z.VRSCTEST@). |
table_id |
— | Fully-qualified Verus ID of the table identity to sit at (e.g. t1.sg777z.VRSCTEST@). |
player_id |
— | Fully-qualified Verus ID of the player’s own identity (e.g. p1.sg777z.VRSCTEST@). The node must hold a private key authorized to sign updates for this identity. |
wallet_addr |
* |
R-address (or *) used to fund the payin. * lets the wallet pick a UTXO automatically. |
ws_port |
9001 |
TCP port for the GUI WebSocket. The example pN.ini files use 9001/9002 to keep two players non-overlapping on the same host. |
[player] (all optional)The parser (bet_parse_player_config_ini_file in config.c)
recognises these fields:
| Key | Units | Default | Meaning |
|---|---|---|---|
max_allowed_dcv_commission |
% | 2 |
If the dealer advertises a higher cut, the player aborts the join. Only consulted in the nanomsg-era bet_player_stack_info path (client.c:1549), which is not wired in the current Verus build. |
table_stake_size |
BB (integer) | 20 |
Stake to post on join, expressed in big-blinds. Clamped server-side to [min_stake, max_stake] from the dealer’s dealer.ini. |
name |
string | empty | Free-form display name surfaced in walletInfo/seats. |
gui_ws_port |
TCP port (integer) | 9001 |
Alternative name for ws_port. The two are parsed by separate code paths; keep one in any given file. |
[private table] (all optional, dormant)| Key | Default | Meaning |
|---|---|---|
is_table_private |
0 |
If 1, the player will only attempt to join private tables and supply table_password. |
table_password |
empty | Shared secret previously distributed off-chain. |
Same caveat as for the dealer side: these fields are parsed and
stored but the join handshake that consumed them
(bet_player_stack_info) goes through the disabled nanomsg loop and
has no effect today.
[gui] (legacy)Older player.ini files used to enumerate cashier-hosted GUIs:
[gui]
cashier-1 = http://141.94.227.65:1234/
cashier-2 = http://141.94.227.66:1234/
The parser still scans these (bet_display_cashier_hosted_gui in
config.c) but the values are only printed as warnings — the player
node no longer drives the user to a remote GUI URL. In the current
build the GUI is hosted on the player node itself at
http://localhost:<ws_port>/.
blockchain.ini — same content as on a dealer node;
blockchain_cli, currency, new_block. See
Dealer Configuration § 2.keys.ini — same content as on a dealer node;
the cashier_id and dealers_id aggregator FQNs. Must match the
dealer’s keys.ini (otherwise the two address different
identities and cannot see each other’s CMM updates)..rpccredentials — RPC username/password for the player’s
local Verus daemon. Required for verus-CLI invocations.Joining is permissionless: any Verus identity under the parent namespace can be used to sit at a table that has open seats. The operational steps are:
registernamecommitment +
registeridentity) under the parent — see
revoke-recovery.md for
the registration flow.dealer_id, table_id, and player_id in your
pN.ini to match what the dealer is hosting.Start the player node:
./bin/bet player -c poker/config/p1.ini
In GUI mode, open http://localhost:<ws_port>/ and follow the
join flow described in
PLAYER_JOIN_FLOW.md.
The dealer-side admission decision is the on-chain seat
reservation, not the dealer’s local config: writing your join intent
to the table identity’s CMM is the equivalent of a “request to join”,
and the dealer either commits a payin_tx claim back to your
identity or rejects.