This guide has been created to illustrate the right process to buy tickets by using the exccwallet
. The content will include the processes of both manual and automatic ticket purchases in the case of solo-voting and stakepool voting.
Prerequisites:
- Download the latest version of the
exccinstall
to installexccd
,exccwallet
, andexccctl
. This option is for direct installation as alternative methods will require additional processes. - There are some differences in the launch commands for the Windows command prompt and the MacOS/Linux Bash; the differences can be seen here.
- Launch
exccd
it will continue running in the background. - Launch
exccwallet
to enable the program to run in the background. - Learn the basics of using
exccctl
. - Learn the staking process and the ticket lifecycle
This guide has been created for users who have set-up exccd
and the exccwallet
through the configuration files. For those of you who used the exccinstall
, the configuration files have already been uploaded. It is highly recommended that the configuration files are ready, due to their function in promoting the issuance of commands to exccwallet
and exccd
via the exccctl
.
NOTE: There are two sections for the exccwallet.conf
, they are - [Application Options]
and [Ticket Buyer Options]
. If the prefix ‘ticketbuyer’
is seen in the setting it will be replaced with the lower [Ticket Buyer Options]
section. The remaining settings are in order with the [Application Options]
.
Making the Right Decisions
Before proceeding to apply this guide, you will be required to make some decisions such as determining whether you would use a stakepool to manage your ticket voting rights or if you will be using the ticket buyer platform to purchase your tickets manually or automatically.
By using the stakepool ticket, stakeholders can pass on voting rights to a stakepool. The advantage is that stakeholders stand to benefit more because the stakepools are always online (24/7) hence the chances of a missed vote is considerably reduced. However, stakeholders will be required to pay a pool fee which is a percentage of their voting reward. The process of delegating tickets will also be possible only for big transactions (~540 Bytes vs. ~300 Bytes for solo-voting tickets) in the case of making a purchase; the ticket fees are slightly higher due to the values obtained from the calculation - EXCC/kB.
The process of solo voting requires voting wallet which is always unlocked (24/7), to avoid missing votes and to lose the reward. The stakeholder will not be mandated to pay pool fees, and their ticket purchases will be mined for a lower absolute fee (because the miners select tickets based on the calculation EXCC/kB for ticket fee rates and solo tickets which have lower transaction size).
Regarding the manual ticket and automatic ticket purchase, you can choose to use the automated ticket buyer or not. While the automated features of the ticketbuyer seem convenient, some stakeholders find it quite difficult to configure all the variables. In addition, the stakeholders’ profits are reduced due to the fees charged by the ticketbuyer. For lower rates, some users now manually purchase their tickets which is more economical. However, to use either method, your wallet must always be unlocked.
Solo-voting
Please be reminded that the voting wallet used during solo voting will not be online 24/7 thus votes may be missed and rewards lost.
The process of solo voting starts with enabling the voting option at the launch of the exccwallet
; you will be required to enter your paraphrase to unlock the wallet and buy your tickets. When these processes are complete, the voting will be done by your wallet.
You can set-up your exccwallet
for solo-staking, from the [Application Options]
section, include the following line to your exccwallet.conf
config file:
enablevoting=1
Re-launch the app with this line added to your exccwallet.conf
and the set-up for solo voting will be complete, you are now eligible to start purchasing tickets.
Stakepool-voting
If you choose to vote through the stakepool, sign up to get your stakepool. You can make a choice from the list here. You will be given the instructions to create a new P2SH address and import your multi-sig voting script. Find more information about this area here:
- Ensure that your wallet is open and send the
exccctl --wallet getnewaddress
command to retrieve an address. - With this address, issue the
exccctl --wallet validateaddress
<address from step 1> command. The result is a JSON object that will look like this:{"isvalid": true, "address": "YourExampleAddress", "ismine": true, "pubkeyaddr": "ExamplePublicKeyAddress", "pubkey": "030288337b9ska0pffee1dab8d4ffra42a782466c9a1fc00ca1332de5438dexcc821", "iscompressed": true, "account": "voting"}
- Copy and paste the
pubkeyaddr
in the stakepools “submit address” form and click on the submit button. You will then be redirected to the tickets page where further instructions can be seen. - Locate the “Ticket Information” section at the top of the tickets page. Copy your “Redeem Script” and send the
exccctl --wallet importscript
<Insert Redeem Script Here> command.
After configuring the stakepool, and successfully importing your multi-sig script to your wallet, you are free to start purchasing tickets.
Purchasing Your Tickets
First, ensure that your wallet is unlocked through the exccctl to enable manual or automatic ticket purchasing-wallet walletpassphrase <private passphrase> <time limit> command.
Before purchasing your tickets, it is essential that you understand these three things:
- the right command for purchasing a ticket,
- the importance of the ticketfee,
- the essence of the ticket price.
Purchaseticket
The purchaseticket
command will be required to purchase tickets regardless of whether you choose to use the manual or automatic purchase option. The following is a representation of the command and the associated arguments:
purchaseticket "fromaccount" spendlimit (minconf=1 "ticketaddress" numtickets "pooladdress" poolfees expiry "comment")
fromaccount
= Required String: The account where tickets can be purchased (e.g. “default”).spendlimit
= Required Number: the highest amount that can be spent on ticket purchase (e.g., 50).minconf
= Optional Number: lowest number of block confirmations required (e.g. 1).ticketaddress
= Optional String: The ticket address which has the voting rights.numtickets
= Optional Number: The number of tickets that can be purchased in one transaction (e.g. 1)pooladdress
= Optional String: The address stakepool fees will be sentpoolfees
= Optional Number: The percentage paid as stakepool fees (e.g., 5)expiry
= Optional Number: The block height where un-mined tickets will expire from the mempool, and the original value of EXCC sent back to your “fromaccount,” If no entry is made, tickets will only expire in the mempool when there is a change in the ticket price.- comment = Optional String: This argument has been found to be irrelevant.
Ticket Fees
The ticket fee is calculated by EXCC/kB to get the value that will be paid before your ticket is added to a block by a miner. It can be observed that the purchaseticket command above does not feature any ticketfee argument. Thus, the ticketfee argument can be created in two ways:
- By including the ticket fee at the startup =<fee rate> to the
[Application Options]
of yourexccwallet.conf
. - While using exccctl to run your wallet
--wallet setticketfee
<fee rate> command. This is not a permanent setting and will return to a default value 0.001 whenever your wallet is re-launched except a ticketfee has been specified in the exccwallet.conf.
What is the essence of the ticketfees? The default fee which is 0.001 is sufficient to enable miners add your ticket to a block, but in some cases, an increase in the ticket fee can be an advantage. In situations when the demand for tickets exceeds supply (only 2,880 tickets are available at the different price intervals), the stakeholders can increase the value of tickets in order to speed up the mining of their tickets before the others whose fees are lower. However, this situation which can be described as a ‘fees war’ is prevented because of the ticket price algorithm which acts as a preventive measure.
Ticket Price
For the actual ticket price to be issued via exccctl
, send the wallets getstakeinfo command find the difficulty value which represents the current price of each ticket window, you can lower your spendlimit argument from the purchaseticket command to a higher value than the difficulty level during the manual purchase of the ticket.
Manual Ticket Purchase
Solo Tickets
For the purpose of solo staking, you can purchase tickets by setting the fromaccount and spendlimit arguments with the purchaseticket command. To give an example, exccctl- wallet purchaseticket “default”
50 will involve the use of EXCC held in your default account to purchase a ticket when the current price is at a maximum of 50 EXCC.
To specify the numtickets
or expiry arguments, you can specify the minconf
of 1, which is an empty ticketaddress
(“”), an empty pooladdress
(“”), and an empty poolfees
(0). The following examples can be used as a guide:
exccctl --wallet purchaseticket "default" 50 1 "" 5
would purchase 5 tickets, as the 5th argument(numtickets)
is set to 5.exccctl --wallet purchaseticket "default" 50 1 "" 5 "" 0 100000
for the purchase of 5 tickets expected to expire from the mempool if the ticket is not mined by block 100,000, as the 8th argument(expiry)
is set to 100000.
Pool Tickets
The full purchaseticket command is used by stakeholders who need to purchase tickets that have voting rights which have been assigned to a stakepool. The following is required:
- Your
ticketaddress
is the P2SH Address located at the top of “Tickets” page of your stakepool under the “Ticket Information” section. - Your
pooladdress
–this is the address where your stakepool’s fees are collected. It is located in the “Ticket Instructions” section of your stakepool’s “Tickets” page. - Your poolfees – this is the percentage of the stake reward sent to the pooladdress when a ticket votes. It is important to match your pool’s advertised fee.
For example:
exccctl --wallet purchaseticket "default" 23 1 EXCCExampleAddr1For2Demo3PurposesOnly 1 EXCCExampleAddr1For2Demo3PurposesOnly 7.5
will use EXCC from your default account to purchase 1 ticket if the current ticket price is a max of 23 EXCC. The P2SH Address received from the stakepool is EXCCExampleAddr1For2Demo3PurposesOnly
, and their fee address is EXCCExampleAddr1For2Demo3PurposesOnly
. They will collect a 7.5% fee if this ticket successfully votes. This ticket will not expire from the mempool until the ticket price changes, as only 7 arguments were specified.
Ticketbuyer Configuration
The ticketbuyer feature of your exccwallet can be activated by adding the following line to your exccwallet.conf config file located in the [Application Options]
section:
enableticketbuyer=1
For stakeholders using the stakepool, the following lines found in the stakepool’s “Tickets” page should be added.
ticketaddress=<P2SH Address shared with Stakepool>
pooladdress=<Stakepool's Fee Collection Address>
poolfees=<Stakepool's Required Reward Fee>
The ticketbuyer will be activated in its default settings with this configuration. The configuration can also be modified to alter its behavior; you can find a comprehensive breakdown of the configuration options and the default values on the chart below. While your wallet is unlocked, the ticketbuyer will be active, and you can manage the console of your exccwallet to observe if any ticket will be purchased. The console will display a reason if no ticket has been purchased.
Full Ticketbuyer Options
It is advised that you read and understand the available options before proceeding to use this feature because you may be led to set higher fees and ticket prices different from your intention.
The different options can be specified on the command line or from your exccwallet.conf located in the [Ticket Buyer Option] section. Please note that it will not be possible to alter the setting while the exccwallet is active: if there is a need to modify your settings, you will need to re-launch the program.
Parameter | Description | Default | Explanation |
---|---|---|---|
ticketbuyer.avgpricemode | The formula for the calculation of average price when the pricetarget is disabled (vwap, pool, dual) | vwap | ! |
ticketbuyer.avgpricevwapdelta | The number of blocks derived from the current block needed to calculate the VWAP | 2880 | ! |
ticketbuyer.maxfee | Maximum ticket fee per KB | 0.1 EXCC | The tickets compiled according to the fee per kilobyte and added to the mempool to determine the maximum fee you can afford to pay. |
ticketbuyer.minfee | Minimum ticket fee per KB | 0.001 EXCC | The minimum fee per kilobyte you can afford to pay. The value is best left unaltered at 0.001 except you are sure of your decision.. |
ticketbuyer.feesource | The fee source to use for ticket fee per KB (median or mean) | median | The ticketbuyer’s fee selected based on the median (middle value of the total fees arranged in order) or the mean (average value of the total fees). It is best to use the median value due to circumstances where fees have been manipulated by buying a single outrageously high ticket to increase the average value. |
ticketbuyer.maxperblock | The highest number of tickets per block and the negative number show that one ticket should be purchased for every n block. | 5 | You should avoid purchasing more than this number of tickets per block. The negative number indicates that a ticket should be purchased for every n block (e.g., the number 2 means a ticket should be purchased after every second block. |
ticketbuyer.blockstoavg | Average number of blocks needed to determine fees | 11 | Calculating the fees based on previous blocks. This value can be left at default. |
ticketbuyer.feetargetscaling | Scaling factor to pay the ticket fee, multiplied by the average fee | 1 | The average fee multiplied by this value to determine the fee that will be paid. THIS VALUE SHOULD NOT BE ALTERED until you are sure about your decision, to avoid increasing your fees. Please note that the fees are non-refundable. |
ticketbuyer.dontwaitfortickets | It is best to make an attempt to purchase more tickets before your last tickets are entered into the blockchain | In the default setting, the ticket buyer will avoid more purchases until the previous tickets have been entered into the blockchain. You can adjust the settings to make more purchases even when there are still tickets in the mempool. | |
ticketbuyer.nospreadticketpurchases | Avoid spreading your ticket purchases in an even pattern across the window | From the default setting, the ticketbuyer spreads the purchase tickets in view of gaining higher fees. Thus compelling the ticketbuyer to purchase all tickets in one transaction. | |
ticketbuyer.maxinmempool | The highest number of tickets that can exist in the mempool before more tickets can be purchased. | 40 | The ticketbuyer will reject an attempt to buy more tickets if the number in the mempool is this many, when some tickets are entered into the blockchain, new tickets can be purchased. |
ticketbuyer.expirydelta | Number of blocks in the future before the ticket expires | 16 | The expiry of your tickets can be set so that they will be canceled if the tickets are not successfully entered into the blockchain. This offers you another opportunity to raise your fees. |
ticketbuyer.maxpriceabsolute | Maximum absolute price to purchase a ticket | 0 EXCC | At a price above this value, you will not be permitted to purchase more tickets until the 0 default removes this restriction. |
ticketbuyer.maxpricerelative | Evaluating the factors for selecting the maximum price, multiplied by the average price. | 1.25 | It is best to avoid buying more tickets when the current window price is higher than the previous windows. For example, considering a default value of 1.25, if the average price of the previous windows was 50 EXCC, avoid purchase within a window that offers higher than 75EXCC. |
ticketbuyer.balancetomaintainabsolute | Value of funds to hold in the wallet when stake mining | 0 EXCC | A balance lower than this number is an indication that you should avoid buying tickets. The 0 default value will exhaust your funds if you attempt to buy tickets. |
ticketbuyer.balancetomaintainrelative | Amount of funds to hold in your wallet when stake mining. | 0.3 | The advice above applies here; however, there will be a change if the value is based on a percentage of your total funds. |
Comments
0 comments
Article is closed for comments.