Hey, welcome!

ddProxy - Intelligent AETH、BFS、BHD、BILL、BOOM、BSH、BSN、BTB、BURST、COWBOY、DISC、FML、HDD、KCOIN、LAVA、LHD、NEWBI、QTC、SPOK、VOL、XHD multi-mining proxy

Enjoy multiple mining proceeds; prolong your hard disk lifespan!

Collect from Website Template

Main Features

  • 1) Intelligent multi-mining scheduling, 100% hard disk collision-free

    Scan higher priority coin first while all chains come at the same time;
    Lower priority coins will wait until higher priority coin finish scanning;
    Higher priority will intercept lower priority coins immediately;
    Configurable waiting time if the lower priority coins are going to finish soon;
    Self-adjustable coin switching, zero collision, and zero waiting time during switching.
  • 2) Unified POC+POW scheduling, a new era of multi-mining!

    Auto starts POW mining during the gap of POC blocks, your machine capability is fully utilized.
  • 3) High speed push email notification

    Real-time push email for pool offline, stop scanning, abnormal disk speed, disk offline, disk I/O error(only supports Scavenger), miner hang, forging.
  • 4) Nonce range checking

    Overall nonce range checking for all network miners including both local network machines and off-site machines; Unfinished plot files.
  • 5) Flexible mining setup

    Supports all pools; GPU scanning is doable by using Scavenger; Supports multiple PIDs on one single machine; Each PID is configurable for different pool.
  • 6) Centralized Management

    One-click upgrade, restart, push configuration, push files with ease.
  • 7) 3 Different Topologies

    Standalone Cluster, Master-Slave Cluster, Central Proxy, there is always one suitable for your mining needs.
  • 8) Helix Ready

    Fully compatible with Helixhard disk compression; supports the latest Conqueror mining software, remains collusion free mining experience.

Buy Software

Refund will not be accepted for any reason, including but not limited to the wrong PID has given; any damage to existing functions due to any possible upgrading my wallet, pool, or mining software; both hardware, software incompatible form user's computer; network speed.

Price: 8000 BURST, or 300 BHD, or 25 USD
BURST wallet: BURST-85JF-9FUG-CZSC-EVG39
BHD wallet: 3MGQXbuSFn3f81teWxdLh6ZzU6PScobSLU
USD payment, please use PayPal: sales@hexniche.com

Upon successful payment, please email your PLOTID, payment method, payment amount, payment wallet to chenwei1107@hotmail.com to get your license file.

Next

User Manual

ddProxy only supports 64 bits Windows OS, .NET Framework 4.6.1 or above is also required. You may download .NET Framework 4.6.1 from Microsoft directly.

Software will auto launch itself upon machine reboot.

As an intelligence proxy, together with other mining software, ddProxy will achieve smart multi-mining. Simply put, mining software submits DL to ddProxy, ddProxy then relays DL to pool or wallet. Below is a detailed explanation of all parameters. There is also a quick start guide available HERE. By the way, I also like to show off a bit of my first DIY machine, please click HERE.

  1. Modify ddProxy's configuration

    Configuration file is "proxy.conf". Below are details of each parameter, we will go through one by one.

    {
        Language: "zh",
        ddMode: "PROXY",
        Network: {
            ListenPort: 13000,
            NicName: "",
            GroupName: "GROUP1"
        },
        DeferRun: 0,
        Priority: [ BHD, BOOM ],
        OnePool: [
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
            "boom-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        ],
        POOLs: [
             {
                PoolName: "SOLO",
                CoinType: "BHD",
                PlotIDs: [*],
                SoloMode: true,
                Url: "127.0.0.1:8732",
                TargetDL: 7200,
                Snatch: true,
                ACTIONs: [
                    { Exec: BHD_IMPORTKEY, PrivKey: "cipher-of-wallet-private-key" },
                    { Exec: BHD_PAUSE, Wallet: "wallet-receiving-address" }
                ]
            },
            {
                PoolName: "BOOM-SOLO",
                CoinType: "BOOM",
                PlotIDs: [*],
                Url: "127.0.0.1:9925",
                SoloMode: false,
                MinerAlias: "MY-ALIAS",
                AccountKey: "00000000-0000-0000-0000-000000000000",
                PassPhrase: "Your_Passphrase",
                TargetDL: 86400,
                ShowDLWarn: true,
                SkipWorse: true,
                Snatch: true
            },
        ],
        POW: {
            Enable: false,
            RemoteCtrl: false,
            MinerApp: "xmrig\\xmrig.exe",
            Params: "--donate-level 1 -o mrlpool.walemo.com:10444 -u YOUR_WALLET_ADDRESS -p @#HOSTNAME#",
            Admin: false
        }
        Paths: [  ],
        ScanDuration: 30,
        GraceTime: 0,
        MinerName: "MACHINE01",
        PushMsg:{
            Heartbeat: true,
            Scan: true,
            Forge: true,
            Machine: true,
            NetworkNonce: false,
            Disk: true,
            NewVersion: true
        },
        Email : {
            Enable: false,
            FromAddr: "Sender's email",
            Password: "Password",
            ToAddr: "Recepient's email",
            Smtp: "smtp.qq.com",
            Port: 587,
            EnableSSL: true
        },
        DispMode: "ALL",
        DispLines: 1000,
        AutoStartApp: [
            "scavenger-1.7.4-cpu-only\\scavenger-skywalker.exe"
        ],
        AutoStartDeferTime: 30,
        AutoStartWaitTime: 30,
        HeartBeatWarn: 300,
        MinerLogPath: "scavenger-1.7.4-cpu-only\\Log",
        MinerLogEnc: "UTF8",
        Restart: {
            Time: "03:00:00",
            Interval: 7
        },
        EEPS: true,
        EEPSDays: 1,
        ErrLog: true,
        DLLog: true,
        Verbose: true,
        LogDays: 10,
        LicenseFiles: ["License.xml", "License_1234.xml"]
    }
                
    • Language

      Support both Chinese and English, default is Chinese. "zh" is Chinese; "en" is English.

    • ddMode

      Software mode, default is "PROXY", used as a proxy for multi-mining scheduling. "LOADER" mode is for centralized topology, proxy will act as a "loader" to launch POC and POW software automatically upon machine boot up. It will receive control commands from the central proxy to pause and resume POW software.

    • ListenPort

      Software is working on this port to communicate with POC miner software, the default is 13000. You can use any available port on your machine, as long as it is not be occupied.

    • NicName

      Name of your network connection. It is required to link up all machines on your LAN automatically. It will search for a default connection if this value is omitted. The default search name is Ethernet, Wi-Fi, 以太网, and 本地连接. A popup dialog will be displayed for you to choose from if an incorrect connection name is used, after which, you need to amend your conf file accordingly to avoid this popup dialog be displayed again on your next run.

    • GroupName

      Used to segment your LAN machines. Machines on the same LAN will watch out each other, a notification email will be sent if any of them go offline. However, this is only applicable to machines within the same group. If your machines belong to a different entity, you can apply a different group name to segregate. Make sure your machine time is accurate and synchronized to avoid false alarm. I recommend utility software NetTime.

    • DeferRun

      The waiting time in seconds before starting the core function of ddProxy. This is optional, the default value is 0. Some resources on certain machines will only be ready after a certain amount of time upon boot up, for example, hard disk. We can use this parameter to wait for such resources.

    • Priority

      Used to define the mining priority of each chain, ordered from high to low, be separated by a comma. Presently, It supports BHD, BURST, BOOM, NEWBI, DISC, LHD, HDD, SPOK, XHD, LAVA, BTB, KCOIN, VOL, BSN, BSH, COWBOY, EOC, AETH. This is also a main switch of multi-mining, you may remove any coin from this list if you don't want to mine it. BTB can mine together with any coin; NEWBI can mine together with KCOIN and BTB; BHD compatible coins can mine together with VOL but not the reverse way. A dedicated algorithm is used for SPOCK, therefore it is only able to mine together with BTB. Universal multi-mining is only possible if you utilize a special tool to find a matching pair of PIDs among different chains.

    • OnePool

      This is specially designed for OnePool, you just need to list down all respective AccountKeys and you are ready for multi-mining with OnePool. Presently, it supports BHD-ECO, LDH-CO, HDD-CO, and DISC. All AccountKeys need to be separated by comma. The order of AccountKey is not important here, what to mine and which chain is a higher priority is still determined by the Priority parameter. There is no AccountKey needed for OnePool BURST, you only need to add BURST into Priority. The rest of the mining details will be set up fully automatically. Once this parameter is used, all BHD, BURST, DISC, LHD, and HDD will be mined with OnePool. POOLs parameter will be not necessary at all(We will explain POOLs very soon). If you don't wish to use OnePool, you may simply delete this parameter from the config file.

    • OnePoolHK

      This parameter is solely for miners outside mainland China. The usage is exactly the same as the above OnePool parameter, except the mining address will be automatically chosen by the software for more stable connectivity. There is only one required among OnePool and OnePoolHK.

    • POOLs

      This is the place for POOL configuration. If there is any coin is the same as OnePool or OnePoolHK, the setting in this parameter will supersede OnePool and OnePoolHK. We will explain all available values, many of them are not mandatory, any optional setting can be removed from the config file and default value will be used instead.

      From a technical point of view, POOLs is an array of setting for each pool. The user can add as many as possible for your different mining needs. You may refer to the Template page for a detailed setting for each pool.

      1. PoolName: Optional, the name of the pool, must be unique among the entire settings. This is just a text, will be used in the notification email.
      2. CoinType: Mandatory, type of coin. Presently it accepts BHD, AETH, BURST(Must use BRS if you choose HDPOOL), BOOM, NEWBI, DISC, LHD, HDD, SPOK, XHD, LAVA, BTB, KCOIN, VOL, BSN, BSH, COWBOY, and EOC.
      3. PlotIDs: Optional, your PID value. More than one PIDs are supported and a comma is used as a separator. "*" denotes any PID value. You may specify different PID for different pools. If this setting is removed from the config file, the default will accept any PID, the effect is the same as "*".
      4. Url: Mandatory, mining address。HTTP and HTTPS are supported, port number can be used as well. These are some valid format: "http://burst.pool.onepool.co"; "burst.pool.onepool.co"; "burst.pool.onepool.co:80".
        Prefix "http://" can be omitted, port 80 will be used by default. "https://" will use port 413 by default. HDPOOL is using WebSocket, therefore neither "https://" and "https://" should be used. Please refer to the template page for url values.
      5. SoloMode: Optional, true = SOLO mode; false = POOL mode. Default is pool mode.
      6. PassPhrase: Optional, It is required for BURST, BOOM, and NEWBI of SOLO mode is chosen. Some coins do not need this even SOLO mode is chosen, for example, BHD, DISC.
      7. MinerAlias: Optional, it is is just an alias name of your mining machine. The default value is empty and MinerName will be used. If MinerName is also empty, then the computer hostname will be used automatically. When FOXY pool is used, this alias is representing your mining account, all MinerNames will be grouped under this MinerAlias.
      8. DistributionRatio: Optional, only FOXY and IKPOOL use this setting. There are 3 different settings available, they are "0-100", "50-50" and "100-0". If this is removed from the config file, the default value will be used by the pool automatically. The default value will not be necessary as "0-100", the pool will apply its default respectively.
      9. AccountKey: Optional. Some pools require an account key or account api. Please check with the pool for more details, or refer to the Template page.
      10. TargetDL: Optional, the default value is 18446744073709551615. Any DL bigger than this value will be discarded by the software automatically. Under a multi-minging setup, each pool defines its max allowed DL, therefore our mining software has to choose the maximum value among all pools. after this, ddProxy will do further filtering to reduce unnecessary DL submission. If this setting is omitted from the config file, miner software will choose a minimum value between its setting and the value set by the pool in getMiningInfo API.
      11. ScanWarn: Optional, the default value is 3600 seconds. If miner software does not submit any DL within this specified timeframe, a notification email will be sent. A notification will be sent again upon the resume of DL.
        Machines might not be able to find eligible DL in a short time with small capacity, therefore long time is needed, for example, 7200 seconds or even longer.
      12. ShowDLWarn: Optional, default is true. This value will determine whether to display any DL related warning message, for example, "DL exceed user's limit" or "Better DL already been submitted". true = display;false = do not display. The default value is to display.
      13. MasterUrl: Optional, default is empty. This is useful in Master-Slave topology. Instead of pulling the mining task from the pool every few seconds, the slave machine can get mining tasking from this address which is our master machine. However, DL submission will be still handled by each slave machine, it will be submitted to the pool directly. This will reduce internet traffic tremendously, it will offload a lot of pressure from the pool or wallet and it improves mining stability indirectly.
      14. InfoUrl: Optional, default is empty. Some pools use different addresses for mining tasks and DL submission. This address(InfoUrl) is used for pulling mining task and Url is for DL submission.
      15. Prime: Optional, default is false. If this value is true, when a higher priority chain comes, it will interrupt a low priority chain immediately, and start scanning hard disk immediately. This will ensure the top priority is always inforced for a high priority chain. If this value is false, the software will further check the value of GraceTime. If Prime = false and GraceTime > 0, if lower priority chain is going to finish scanning very soon, let's say just need 1 or 2 more seconds, then it might be a better idea to allow lower priority chain to finish first instead of coming back and re-scan. If Prime = false and GraceTime = 0, then it will be no different with Prime = true, chain switching will happen immediately if higher priority hits.
      16. SkipWorse: Optional, default is true. When this value is true, a bigger DL will be ignored if a smaller DL has been already submitted. This setting is only applicable to the central-proxy topology. Let's assume we have 3 machines A, B, and C. A submitted DL=1000 first; B came out DL=2000 10 seconds later, as A already submitted a smaller DL=1000, DL=2000 will be ignored; another 10 more seconds later, C got DL=500, C would submit this DL immediately as it was the best DL so far. As you can notice, not every DL will be submitted to pool, some unnecessary DLs are ignored and this will save a lot of network traffic to both miner and pool. For some pool, it might display as "error" due to the reason that not every machine will submit DL for every block. In some scenarios, it might take a very long time to have 1 effective DL be submitted for a particular machine. If this setting is false, then regardless of DL value, it will be submitted immediately as long as it falls under the pool's limit.

        Due to the reason that AWPOOL's profit distribution is based on both DL value and DL quantity, therefore SkipWorse MUST BE false when the central proxy topology is used to avoid profit losses. It will be no difference if you are in standalone mode.

      17. Snatch:Optional, default is false. If a new block appears on the same chain while the previous scanning yet complete, then this parameter can be used to determine whether to wait for the completion of the previous scanning; or switch to the new block immediately. It does not happen at the same time for a blockchain synchronization on a global scale, and the updates of each distributed ledger have their own time difference. This brings about a very interesting feature that even a new block appears in your wallet, it will still allow you to submit a better DL for its previous block. In layman's terms, as long as you have a better DL, you can still submit to "change the history". This only occurs between the current block and the previous block. This parameter is used to control whether it is allowed to wait for the previous block to be scanned before switching to the new block. From what is known presently, BHD supports this feature. As for other cryptos, yet to discover. The mining pools are required to support this feature. It is known that BHD wallet, HPOOL, UUPOOL, and OnePool support this feature. Please use true to enable this feature, false to disable.

        It needs to be emphasized that this feature is only applicable to the same chain. If a new block appears on another high-level chain, the switch will still occur immediately.

      18. ACTIONs: This parameter block is optional, can be used to define series of automatic actions, for instance, pause mining upon insufficient mortgage, auto-pledge/commitment. There will be different list of parameters for each automation, all default values can be omitted.
        ACTIONs: [
          { Enable: true,  Exec: ACTION1, list-of-parameters... },
          { Enable: false, Exec: ACTION2, list-of-parameters... }
        ]
        Below is the list of automation already implemented. Please click on each name for detailed implementation.
        1. BFS_ADDSIGNKEY:To add private key of BFS wallet. This is useful for SOLO mining. Otherwise, or else to execute "addsignprivkey" manually when starts your wallet.
        2. BFS_PAUSE:Pause BFS mining upon insufficient mortgage. It should be configured on all machines.
        3. BHD_ADDSIGNKEY:To add private key of BHD wallet. This is useful for SOLO mining. Otherwise, or else to execute "addsignprivkey" manually when starts your wallet.
        4. BHD_PAUSE:Pause BHD mining upon insufficient mortgage. It should be configured on all machines.
        5. BTB_PAUSE:Pause BTB mining upon over-estimated on-chain capacity. It should be configured on all machines.
        6. QTC_ADDSIGNKEY:To add private key of QTC wallet. This is useful for SOLO mining. Otherwise, or else to execute "addsignprivkey" manually when starts your wallet. This can be ignored if your wallet is not encrypted.
        7. QTC_PAUSE:Pause QTC mining upon insufficient mortgage. It should be configured on all machines.
        8. SIGNA_COMMIT:Auto add SIGNA commitment. You only need to set up one among all your machines.
    • POW

      This is used for POW mining control. The software will activate POW mining automatically during the idle time of POC.

      • Enable: Optional, default is false. true = Allow POW mining; false = Disable POW mining.
      • RemotreCtrl: Optional, default is false. true = Allow sending control commands to a remote machine, the remote machine must run ddProxy at "LOADER" mode; false = Disable sending commands to a remote machine.
      • MinerApp: Path to POW mining software, it supports both absolute and relative directory path. xmrig has been tested and is fully compatible.
      • Params: Mandatory, is POW command line parameters, for example, pool address, miner name, etc. Most of the POW software is using a similar parameter, please refer to POW software for more details.
      • Admin: Optional, default is true. True = Launch POW software with administrator rights; false = Launch POW software with current user rights. Some POW software, for example, xmrig.exe, can produce a higher hash rate under administrator rights. However, you also need to launch ddProxy.exe under administrator rights. ddProxy will set up an auto-startup mechanism base on your configuration.
    • Paths

      This is the place to list down all folders of your plot files. Your capacity will be calculated and reported base on the size of all your plot files. Please pay more attention to all your plot folders, incorrect capacity will be used if you omit any plot folder. A comma will be used as a separator if more folders are used.

      When this parameter is empty, the plot path will be imported from the mining software automatically. Presently only Scavenger and Blago are supported.

    • ScanDuration

      Optional, default is 30 seconds. This is the duration in seconds of your hard disk scanning. You may add 5 more seconds if your machine takes 20 seconds to scan your disks. This figure will be used to determine chain switching base on given priority, it will be also used as a gauge for abnormal disk speed. It will be considered as disk abnormal if you take more than D+10 seconds for disk scanning, a notification email will be sent.

      Start from version 1.4.3.0, Skywalker edition (scavenger-skywalker.exe) should be used for better performance. ddProxy can communicate with Skywalker edition directly. Any waiting chain will be started immediately according to the priority given upon the completion of the preceding chain. ScanDuratrion is an essential parameter for ddProxy, It can be much greater than actual scan duration but not less than. You should not use 10 if your actual scan speed is 15 seconds, otherwise, the current chain will be intercepted by lower priority chain after 10 seconds from the beginning of the scanning. However, you can use 30 or even 50 seconds in this scenario. Because Skywalker edition will inform us immediately upon completion of the scanning, a much greater number can be used freely, ddProxy will adjust itself automatically in order to suit your dynamic scan speed. If your machine speed is ranging from 30 to 50 seconds, you may set it as 55. ddProxy will still handle chain switching correctly without wasting any waiting time in between. Also, a much greater number will not affect chain switching at all, but (D + 5 seconds) formula is still recommended. A notification email will be sent if you encounter abnormal slow disk speed.

      One of the best features of ddProxy is able to achieve zero waiting time between chain switching, even on a speed fluctuation machinbe. Different machine will be handled indivisually and fast speed machine will not wait for slower machine at all during chain switching. You will gain more time for each chain by minimizing the time wasted on switching.

    • GraceTime

      Optional, default is 0, the unit is second. When GraceTime is greater than 0, a higher priority chain will wait for the lower chain if the remaining scan time of the lower chain is lesser than GraceTime. When GraceTime equals 0, a switching will effective immediately if a higher priority chain comes. This method will reduce the numbers of interruption on lower priority chain and still maintain an amper scanning time for higher priority chain. We suggest this value should not exceed 20% of the machine scan duration. If your machine takes 20 seconds to scan hard disk, it will be better to ensure GraceTime will not be greater than 4 seconds.

      If you like to ignore this setting for a particular chain, you just need to set Prime: true under POOLs parameter respectively.

    • MinerName

      It is the name of your machine, it must be a unique name among all of your machines. It will be better to only use alpha-numeric due to the reason that certain pools do not support Unicode. If this value is empty, then your machine hostname will be used automatically.

    • PushMsg

      This is the switch to determine whether to send notification emails.

      • Heratbeat: true = allows heartbeat warning; false = disable the warning. A notification email will be sent if a machine lost a heartbeat with the pool for more than 60 seconds.
      • Scan: true = allows scan disk warning; false = disable the warning. A notification email will be sent if a machine does not submit a deadline for more than 1 hour by default. This value is configurable as ScanWarn in the POOLs section.
      • Forge: true = allows forge notification; false = disable forge notification. A notification email will be sent if you forge a block. The software will also check against blockchain explorer to ensure other people's deadline is always smaller than yours, otherwise, a warning email will be sent.
      • Machine: true = allows machine offline warning; false = disable the warning. When a machine is offline, for example, powered off, blue screen, etc, a warning email will be sent by one of other machines.
      • NetworkNonce: Default is false. true = allow nonce range checking for the same network group machines. Only one machine is needed to be true within the same network group; false = disable checking. This checking will start automatically upon software launching, We will wait for 3 minutes to give enough time for other machines send over its nonce range. Result will be sent via email. A popupo dislog window will also be displayed if nonce overlapping is detected.
      • Disk: true = allows disk offline warning; false = disable the warning. A disk will be offline due to hardware failure, a warning email will be sent if we detect this failure.
      • NewVersion: true = allows new version notification; false = disable notification. An email notification will be sent upon every new release of ddProxy.
    • Email

      This section is used for email setup. Gmail, Hotmail, and QQ Mail have been tested. For QQ Mail, the sender needs to activate SMTP service and setup authorization code accordingly; the recipient account needs to activate Exchange service. Please click HERE for detailed procedures. The authorization code of QQ Mail is referring to SMTP service rather than Exchange service.

      Attention: Due to the usage of your email password, for security reasons, please DON'T use any existing email of your mining pool or crypto exchange. A dedicated email account is highly recommended.

      • Enable: true = allow email sending; false = disable email sending.
      • FromAddr: Sender's email address.
      • Password: Sender's email password or authorization code.
      • ToAddr: Recipient's email address, sending to self-address is allowed. Multiple recipients are supported, a comma can be used as a separator among email addresses.
      • Smtp: The address of the sender's SMTP server.
      • Port: The port number of the sender's SMTP server.
      • EnableSSL: true = allows encrypted channel; false = to use clear text channel.
      Email Service Smtp Password Port EnableSSL
      Gmail smtp.gmail.com App Passwords 587 true
      Hotmail smtp.outlook.com Email Password 587 true
      QQ Mail smtp.qq.com Authorization Code 587 true
      163 Mail smtp.163.com Email Password 25 true
    • DispMode

      Display mode if deadline. It supports "ALL", "MACHINE_BEST", and "BLOCK_BEST".

      • ALL: This is the default value, all deadline related messages will be displayed. However, this will make your machine very busy in a central-proxy setup due to lots of messages to be handled.
      • MACHINE_BEST: Only display the best deadline for each machine, all other warning or error messages will be discarded. The display will lag for one block.
      • BLOCK_BEST: Only display the best deadline of a block among all machines, all other warning or error messages will be discarded. The display will lag for one block. This mode reduces a lot of display messages and it is very suitable for central-poxy setup.
    • DispLines

      This is used to limit the number of lines to display. The default value is 1000 lines. The more lines to display, the more memory will be needed. Users should reduce this value if a low-end machine is used in a multi-mining setup, for example, mine 6 different coins simultaneously.

    • PreStartApp

      This is used to specify any external software to be launched before ddProxy. We can use this to start any external executable program, for example, a wallet, etc. Both relative and absolute path is supported. Double backslash("\\") should be used in path declaration. More than one external program is allowed, a comma is used as a separator.

      The absolute path should be used if an external program locates outside ddProxy folder tree; if it locates inside ddProxy folder tree, a relative path can be used.

      Some external program needs longer time for initialization, for example, AETH wallet, we can use DeferRun to wait for the external program be fully initialized.

    • AutoStartApp

      This is used to specify any external software to be launched after ddProxy. We can use this to start any external executable program, for example, a miner software like Scavenger or Blago. Both relative and absolute path is supported. Double backslash("\\") should be used in path declaration. More than one external program is allowed, a comma is used as a separator.

      The absolute path should be used if an external program locates outside ddProxy folder tree; if it locates inside ddProxy folder tree, a relative path can be used.

    • AutoStartWaitTime

      The waitng time between external programs in seconds. The default value is 30 seconds.

    • HeartBeatWarn

      The heartbeat threshold in seconds, the default value is 60 seconds. A warning email will be sent if there is no heartbeat signal be detected with the mining pool or wallet. Another notification will be sent upon the resume of the heartbeat.

    • MinerLogPath

      The log path of the mining software. ddProxy will check this log file periodically to find out if disk error occurred, a warning email will be sent. Only Scavenger and Blago are supported. Below parameter should be set as true in Scavenger configuration:

      logfile_log_level: 'info'

      If Blago is used, you should set below parameter:

       "Debug": true,

    • MinerLogEnc

      Optional, the encoding of miner's log file, the default value is empty. It should be set as "UTF8" for Unicode support on none-English OS. Default will use OS default encoding.

    • Restart

      Optional, restart the software itself according to the defined interval. The default interval is every 7 days 3:00: 00 AM. It only restarts ddProxy itself instead of the entire computer.

      • Time: Restart time, default is string value "03:00:00", representing 3:00:00 AM.
      • Interval: The number of days between restarts. The default value is 7 days.
    • EEPS

      EEPS (Estimated Effective Plot Size), whether to enable the capacity estimation function, the default value is true. The software will use confirmed DLs to estimate your mining capacity, and only the DLs submitted through the software will be counted. If the central proxy mode is used, the DLs of all machines will be submitted through the local machine, then the estimation is an overall capacity of all mining machines on your local network. This estimation reflects the DL's quality of your mining machine to a certain extent. Under normal circumstances, 80% of the actual capacity is considered within the acceptable range. This feature requires Microsoft's "Office 365 Access runtime" to support it, please click HERE to download.

    • EEPSDays

      The number of days to use your DLs for capacity estimation, the default is 1 day. Experiments show that the number of DLs in 24 hours can already estimate the capacity fairly accurately.

    • ErrLog

      Optional, whether to save an error log, the default value is true. true = allows error log; false = disable error log. An error log will be saved under "Log" folder and the date is used as the filename.

    • DLLog

      Optional, whether to save a deadline log, the default value is true. true = allows deadline log; false = disable deadline log. A deadline log will be saved under "Log" folder and the date is used in the filename.

    • Verbose

      Optional, whether to save a detailed software log, the default value is true. true = allows detailed log; false = disable detailed log. A very detailed log will be saved under "Log" folder and the date is used in the filename, all kinds of data traffic are recorded.

    • LogDays

      The number of days to keep all log files, the default value is 10 days. The expired log file will be deleted automatically. 0 = keep log file forever.

    • LicenseFiles

      License file, multiple licenses are supported, the comma is used as a separator between license files. All license files should put together with ddProxy.exe. 50% of deadlines will be ignored randomly if no license file is found.

  2. Configuration of Mining Software

    We use Scavenger ver 1.7.4 as our example, the config file is config.yaml. We will explain all necessary settings base on the below example, for those parameters are not mentioned below, you can use the default value.

    
    #account_id_to_secret_phrase:   # define accounts and passphrases for solo mining 
    #  10282355196851764065: 'glad suffer red during single glow shut slam hill death lust although'  
    
    #Folder paths to your plot files
    plot_dirs:
       - 'D:\'
       - 'E:\'
       - 'F:\'
       - 'G:\'
    
    url: 'http://localhost:13000'   # point to the pool site or to the wallet
    
    hdd_reader_thread_count: 0      # default 0 (=auto: number of disks) 
    hdd_use_direct_io: true         # default true
    hdd_wakeup_after: 240           # default 240s
    
    cpu_threads: 0                  # default 0 (=auto: number of logical cpu cores) 
    cpu_worker_task_count: 4        # default 4 (0=GPU only) 0 = 关闭CPU扫盘; 
                                    # Optimized:disk count = cpu_worker_task_count + gpu_worker_task_count
    cpu_nonces_per_cache: 65536     # default 65536
    cpu_thread_pinning: false       # default false
    
    gpu_threads: 0                  # default 0 (=GPU off) 
    gpu_platform: 0                 # default 0
    gpu_device: 0                   # default 0
    gpu_worker_task_count: 0        # default 0 (=CPU only) 
                                    # Optimized:disk count = cpu_worker_task_count + gpu_worker_task_count
    gpu_nonces_per_cache: 262144    # default 262144
    gpu_mem_mapping: false          # default false
    gpu_async: false                # default false
    
    target_deadline: 31536000       # default u32::MAX
    #account_id_to_target_deadline: # target dls for multi-id (optional)
    # 10282355196851764065: 600000
    # 1796535821016683299: 55555555
    
    get_mining_info_interval: 3000  # default 3000ms
    timeout: 5000                   # default 5000ms
    send_proxy_details: false       # central-proxy mode( =true ), auto add hostname and capacity in HTTP header
    #additional_headers:            # send_proxy_details = false, add below additional HTTP headers
    # "X-MinerName" : "Miner01"     # Unique machine name
    # "X-Capacity" : 107022         # Machine capacity,unit is GB,1T = 1024G
    
    console_log_level: 'info'       # default Info, options (off, error, warn, info, debug, trace)
    logfile_log_level: 'info'       # default Warn, options (off, error, warn, info, debug, trace)
    logfile_max_count: 10           # maximum number of log files to keep
    logfile_max_size : 20           # maximum size per logfile in MiB
    
    show_progress: true             # default true  
    show_drive_stats: true          # default false 
    benchmark_only: 'disabled'      # default disabled, options (disabled, I/O, XPU)
    
    # Low noise log patterns
    console_log_pattern: "{({d(%H:%M:%S)} [{l}]):16.16} {m}{n}"
    logfile_log_pattern: "{({d(%Y-%m-%d %H:%M:%S)} [{l}]):26.26} {m}{n}"
    
    # More detailed log patterns
    #console_log_pattern: "{d(%H:%M:%S.%3f%z)} [{h({l}):<5}] [{T}] [{t}] - {M}:{m}{n}"
    #logfile_log_pattern: "{d(%Y-%m-%dT%H:%M:%S.%3f%z)} [{h({l}):<5}] [{T}]-[{t}] [{f}:{L}] - {M}:{m}{n}"
    
    • plot_dirs

      Folder paths to plot files. A single backslash should be used in the path.

    • url

      Point to pool or wallet. It should be localhost in our example.

      url: 'http://127.0.0.1:13000'

    • hdd_reader_thread_count

      The number of disks read in parallel, the default value is 0 to detect automatically.

    • cpu_threads

      Number of active CPU threads for hashing operations, the default value is 0 to detect automatically.

    • cpu_worker_task_count

      Optimized formula: disk count = cpu_worker_task_count + gpu_worker_task_count. This value should be 0 if only use GPU for hashing.

    • cpu_nonces_per_cache

      To set the amount of RAM used for nonce caching. Thsi value can be higher if more RAM is used. Optimized formula:availabl RAM = cpu_nonces_per_cache * worker_thread_count * 2 * 64.

    • gpu_threads

      Number of GPU threads to use, 0 = disable GPU hashing.

    • gpu_platform, gpu_device

      Only applicable when is using GPU hashing. To use below method to find out GPUs available on the system.

      Go to Command Prompt,go to scavenger folder and execute :scavenger.exe -o, to get below information.

      On my machine,platform=1;device=0 is my AMD RX570;platform=0,device=0 is my onboard GPU. I want to use my RX570 for hasing:

      gpu_platform: 1                       # default 0
      gpu_device: 0                         # default 0
                          

      We also need to write down the value of "ideal_nonce_cache_multiplier", it will be used in a short while.

    • gpu_worker_task_count

      Optimized formula: disk count = cpu_worker_task_count + gpu_worker_task_count. This value should be 0 if only use CPU for hashing.

    • gpu_nonces_per_cache

      In some cases, increase this value will gain more hashing power, more GPU RAM will be used in this case.

      You may apply a multiplier on "ideal_nonce_cache_multiplier", can try x 1, x 2, x 3, etc, until no more improvement of hashing power.

    • gpu_mem_mapping

      The default value is false. It should be always false for a dedicated GPU. It might give you more hashing power on certain onboard GPU cards when this is set as true.

    • gpu_async

      "true" to improve the data transfer rate for dedicated GPU. It should be "false" for onboard GPU.

    • target_deadline

      The maximum allowed deadline for a mining pool. It should be the biggest value among all pools if multi-ming is using.

    • send_proxy_details

      It should be "true" when central-proxy is used. Both hostname and plot capacity will be addded to HTTP header automatically.

    • logfile_log_level

      This value should be 'info' for a detailed log file. ddProxy will exam this log file predically.

    All other parameters can leave it as default.

    If you like to know more details about Scavenger, please click HERE for official user guide. Please click HERE for download.

Screen Shot

Software Download

Versioning: Software practice the rule of Major.Minor.Build.Revison.

  • Major: Major change, for example, completely code re-writing or structure change.
  • Minor: Adding important functions.
  • Build: Adding minor functions, small scale code optimization.
  • Revision: Bugfix, or improvement of existing functions.
  • Ver: 1.6.6.6 (Mar 20, 2022)
    1. Add new QTC_PAUSE into ACTIONs, will pause mining upon insufficient mortgage.
    2. Add new Interval parameter, able to specify interval for each ACTION.
    3. Able to detect overlapped nonce in central proxy mode. But only able to identify at machine level but not at the disk level.
    4. Fixed display issue at NamPOOL.
  • Ver: 1.6.6.5 (Jan 24, 2022)
    1. SIGNA forge notification failed due to recent Blockchain Explorer change. Has been fixed now.
    2. Fix security loophole exposed by log files.
  • Ver: 1.6.6.4 (Nov 24, 2021)
    1. BFS forge notification failed due to recent Block Explorer change. Has been fixed now.
    2. Support new mining address of PANGPOOL.
    3. Minor modification of some display messages.
  • Ver: 1.6.6.3 (Nov 12, 2021)
    1. Supports new QTC pool, MarsPOOL.
    2. Fixed incorrect block time in QTC forge notification email.
  • Ver: 1.6.6.2 (Sep 30, 2021)
    1. Change BHD_IMPORTKEY to BHD_ADDSIGNKEY in ACTIONs.
    2. Add QTC_IMPORTKEY to ACTIONs.
    3. Add QTC for SOLO mining.
    4. Improved BFS SOLO mining.
  • Ver: 1.6.6.1 (Aug 05, 2021)
    1. Add new ACTIONs to support automation. Refer to the user manual for details.
    2. Add BFS for both SOLO and pool mining.
  • Ver: 1.6.6.0 (July 12, 2021)
    1. Add BILL SOLO mining.
    2. Fix SIGNA (AKA BURST) forge notification.
  • Ver: 1.6.5.3 (Oct 10, 2020)
    1. Add FML SOLO mining, able to buy firestone automatically.
    2. Add new Restart, able to restart software itself automatically.
    3. BUG fix, avoid mining interruption while JSON data appears in HTTP header.
  • Ver: 1.6.5.1 (Aug 22, 2020)
    1. Add new Snatch, allows snatching block, 'Change History' becomes an option.
    2. To use WebSocket for FOXY pool. More stable, faster, and lesser traffic. HTTP connection is still supported.
    3. Modify VOL mining process, supports VOL encryption.
    4. Suspend progress bar for BHD and BURST.
    5. EEPS related BUG fix.
  • Ver: 1.6.4.2 (July 14, 2020)
    1. Add EEPS(Estimated Effective Plot Size), Microsoft's Office 365 Access Runtime is required.
    2. Add BURST SOLO mining.
    3. Minor code clean up.
  • Ver: 1.6.4.1 (Jun 14, 2020)
    1. Verify against blockchain to notify the case of smaller DL but yet forge.
    2. Add new SkipWorse, reduce unnecessary DL traffic.
    3. Improve 'ScanWarn' checking in central-proxy topology.
    4. Fix bug, didn't show correct machine name while forging in central-proxy topology.
    5. Minor code clean up.
  • Ver: 1.6.4.0 (May 24, 2020)
    1. Add VOL forge notification.
    2. Add POC+POW multi-mining scheduling.
    3. Add miner software(POC+POW) version display.
    4. Mino bug fix.
    5. Support auto-startup for administrator right.
    6. Auto check scavenger config for optimized hashing performance.
  • Ver: 1.6.3.1 (Apr 30, 2020)
    1. Add VOL multi-mining.
    2. Optimize central-proxy, avoid traffic surge.
  • Ver: 1.6.3.0 (Mar 30, 2020)
    1. Support Cloud deployment, Scavenger Skywalker Edition upgrade to ver 1.7.8-m3.
    2. Add POC2+ Nonce overlapping check.
    3. Support BURST for HDPOOL.
    4. Support EOC Nodes.
  • Ver: 1.6.2.2 (Mar 13, 2020)
    1. Support AETH, including forge notification.
    2. Add 'DeferRun', to defer init ddProxy core.
    3. Add 'FaceTime', 'Prime', more flexible for last few seconds disk scanning.
    4. Add 'No DL found' message.
    5. Embed AETH Binding Tool
    6. Start to use code sign certificate.
    7. Add 'PreStartApp', able to launch external program before ddProxy core.
    8. Minor bug fix.
  • Ver: 1.6.1.1 (Feb 23, 2020)
    1. Reveal machine's real IP in central-proxy topology.
    2. Add 'PoolUsr', 'PoolPwd', and 'PoolTradePwd', to transfer EOC mining proceeds to mortgage automatically.
    3. Check block high sudden change, able to withstand incorrect block high to avoid unnecessary disk scanning.
  • Ver: 1.6.1.0 (Feb 14, 2020)
    1. Add support to BSN, BSH, COWBOY, and EOC.
    2. Improve the network communication of central-proxy.
    3. Fix network socket bug.
    4. Add 'ApiUrl', 'StartThreshold', and 'StopThreshold', to support dynamic mortgage BTB and COWBOY mining.
    5. Support scheduled task to auto-restart machine regularly.
    6. Minor bug fix.
  • Ver: 1.6.0.0 (Nov 20, 2019)
    1. Support HDD, XHD, LAVA, BTB, KCOIN, VOL.
    2. Rewrite forge notification.
    3. Support central-proxy topology.
    4. Add offsite nonce overlapping check.
    5. Add file pushing, config pushing within same network group.
    6. Add 'DispMode', and 'DispLines'.
    7. Add 'DistributionRatio' under POOLs section, applicable to FOXY pool.
  • Ver: 1.5.0.0 (Sep 18, 2019)
    1. Support LHD, and forge notification.
    2. Improved UI, display accumulated time of disk scanning.
    3. Add Master-Slave topology, add 'InfoUrl' in POOLs section.
    4. Add cluster function, including group upgrading, restart, and network nonce check.
    5. Support SPOK.
    6. Reduce UDP broadcast usage during network checking.
    7. Support LHD for HDPOOL.
  • Ver: 1.4.3.2 (Aug 12, 2019)
    1. Add NEWBI to OnePool section.
    2. Add forge notification for BOOM, MEWBI, DISC.
    3. Add 'ShowDLWarn', and 'Wallet'.
    4. Improvement for FOXY pool to achieve a more reliable mining experience.
    5. New Scavenger Skywalker Edition(cpu+gpu) for zero waiting time during chain switching. Special thanks to ツOop~ for compiling.
    6. Add BOOM for WALLPOOL.
  • Ver: 1.4.3.1 (Jul 24, 2019)
    1. Add 'OnePool', 'OnePoolHK' for easy setup.
    2. Add 'POOLs' section.
    3. Support DISC.
    4. New Scavenger Skywalker Edition(cpu only) for zero waiting time during chain switching.
  • Ver: 1.4.2.0 (Jul 7, 2019)
    1. Support BOOM for OnePool, B3POOL, and SOLO.
    2. Support BHD for F1POOL.
    3. Support NEWBI for SOLO.
    4. Add 'SoloMode' to support remote wallet.
    5. Coin tabs are created according to the 'Priority' list.
    6. Long offline machines will be removed from GUI.
    7. Avoid double submission for re-scanned chains.
  • Ver: 1.4.1.0 (Jun 20, 2019)
    1. Support BOOM, add 'Priority' list.
    2. This release is considered as beta. Please roll back to ver 1.4.0.1 if you encounter any issue.
  • Ver: 1.4.0.1 (Jun 14, 2019)
    1. Fix forge check due to BHD API V2 upgrading.
    2. Fix crash bug due to network firewall during nonce checking.
    3. Support AWPOOL.
    4. Defer DL submission due to inconsistent block timing on one chain multi-pool setup.
    5. Fully support Helix technology.
    6. Add display of pool name.
  • Ver: 1.4.0.0 (May 25, 2019)
    1. Support network nonce range checking.
    2. Add 'LicenseFiles', allows multiple PIDs on the same machine.
    3. Add 'BHDs', and 'BURSTs' section. It allows a mixture of multiple PID and multiple pools on one single machine.
    4. Support OnePool.
    5. Use WebSock for BHD progress bar.
    6. Support multiple email recipients.
  • Ver: 1.3.3.1 (May 8, 2019)
    1. Improve communication with HDPOOL.
    2. Fix bug for BUSRT forge notification.
    3. Support certain private pool.
    4. Support X-Proxy for HPOOL.
    5. Fix bug for disk speed notification.
  • Ver: 1.3.3.0 (Apr 20, 2019)
    1. Add 'MinerLogEnc' to support Unicode for disk failure notification.
    2. If 'MinerName" is empty, the hostname will be used automatically.
    3. Completely re-write WebSocket, compatible with WIN7 and WIN2008.
    4. If 'Paths' is empty, will auto-import plot paths from miner's config file, support Scavenger, and Blago only.
    5. Add 'UseNetworkCapacity'.
    6. Add 'Email' section, replace WeChat notification by push email.
  • Ver: 1.3.2.9 (Apr 4, 2019)
    1. Urgent upgrade, fix a dead-loop of WeChat notification.
  • Ver: 1.3.2.8 (Apr 1st, 2019)
    1. Support HDPOOL, able to communicate with it directly.
    2. Fix BURST forge notification.
    3. Add retry upon error 502 and 504 fromHPOOL.
    4. Add disk I/O error notification, supports Scavenger only.
  • Ver: 1.3.2.7 (Mar 23, 2019)
    1. Add port 13000 for Blago, existing port 11000 is still supported.
    2. Fix priority of 'BhdTargetDL' and 'BurstTargetDL'.
    3. Fix notification bug that forges email is sent by all machines.
    4. Minor bug fix.
  • Ver: 1.3.2.6 (Mar 12, 2019)
    1. Support multiple license files for different PIDs.
    2. Code improvement for HDPOOL.
    3. Improve compatibility for Server 2008.
  • Ver: 1.3.2.5 (Mar 5, 2019)
    1. Add 'BhdTargetDL' and 'BurstTargetDL'.
  • Ver: 1.3.2.4 (Feb 27, 2019)
    1. Support 'ShowWinner' API call from Blago.
    2. Improve compatibility for a private pool.
    3. Support Blago log file for disk error checking.
    4. Change some wording translation.
  • Ver: 1.3.2.3 (Feb 23, 2019)
    1. Add 'PushMsg' to allow the user to choose what to notify.
    2. Add pool URL display on heartbeat timing.
    3. Fix bug when more IPs on one network card.
  • Ver: 1.3.2.2 (Feb 22, 2019)
    1. Support the fallback URL of a pool. To use a comma as a separator between URLs.
    2. Bugfix for BURST on HPOOL.
  • Ver: 1.3.2.1 (Feb 21, 2019)
    1. Add disk monitoring, trigger notification upon abnormality.
    2. Bugfix for machine capacity display.
    3. Minor code clean up.
  • Ver: 1.3.2.0 (Feb 17, 2019)
    1. Support HDPOOL directly, hdproxy is no longer needed.
    2. Add 'Language', support Chinese and English now.
    3. ScanWanrn = 0, HeartBeatWarn = 0, to disable notification.
    4. Bugfix for BURST progress bar.
  • Ver: 1.3.1.3 (Feb 7, 2019)
    1. Add disk offline notification.
    2. Move log files to Log folder.
    3. Add 'LogDays' to determine how long to keep our log file.
    4. Bugfix for BURST forging notification.
  • Ver: 1.3.1.2 (Feb 6, 2019)
    1. Bugfix for BURST progress bar by using WebSocket.
    2. Add 'Network' section.
    3. Improvement on GUI.
  • Ver: 1.3.0.1 (Feb 1st, 2019)
    1. Local machines to form a group automatically, to monitor each other for offline.
    2. Add 'NicName', support the selection of network cards.
    3. Bugfix for false scan alarm upon a long block.
    4. Code clean up.
  • Ver: 1.2.0.0 (Jan 30, 2019)
    1. Major core upgrading to achieve collision-free dual mining.
    2. Add 'ListenPort' to support the new core module. 'BhdListenPort' and 'BurstListenPort' remains backward compatible.
    3. Heartbeat monitoring extends to between miner and ddProxy; and also ddProxy and pool.
  • Ver: 1.1.1.0 (Jan 28, 2019)
    1. Watchdog for the external program. Will launch again if exit accidentally.
  • Ver: 1.1.0.0 (Jan 7, 2019)
    1. Support SOLO.
    2. Modify the sequence of launching the external program.
    3. Add GUI display for miner name.
    4. Minor code change.
  • Ver: 1.0.1.3 (Jan 23, 2019)
    1. Add plot file name checking.
    2. Add unfinished plot file checking.
    3. Implement network retry on error.
    4. Bugfix on other issue.
  • Ver: 1.0.1.2 (Jan 21, 2019)
    1. Bugfix for getMiningInfo and submitNonce due to certain condition.
    2. Bugfix for HPOOL.
  • Ver: 1.0.1.1 (Jan 19, 2019)
    1. Add system tray support.
    2. Bugfix for BDH scanning monitoring; BURST has no impact.
    3. Minor code clean up.
    4. Introduce verion history.
  • Ver: 1.0.1.0 (Jan 16, 2019)
    1. Support Scavenger, PocMiner, and Blago.
    2. Add disk scan monitoring (no DL submission for a long time).
    3. Add 'HeartBeatWarn' and 'ScanWarn'.
    4. Change 'AccountKey' to 'BhdAccountKey'.
    5. Add 'BurstAccountKey'.
  • Ver: 1.0.0.4 (Jan 14, 2019)
    1. Add forge notification.
  • Ver: 1.0.0.3 (Jan 13, 2019)
    1. Add ErrLog.
    2. Auto-detect overlapping of nonce range.
    3. Add new version notification.
  • Ver: 1.0.0.2 (Jan 10, 2019)
    1. Add 'AutoStartApp' to support external program.
    2. Add 'AutoStartWaitTime' to add time delay during launching of external porgram.
    3. Shutdown down all external programs upon exit of ddProxy.
  • Ver: 1.0.0.0 (Jan 10, 2019)
    1. First realease for BHD and BURST dual mining.
    2. WeChat notification upon machine offline.
    3. Support Scavenger and Blago.

Announcement

  1. Notice of Price Change (Mar 12, 2020)

    Given the current price drop, we decided to adjust the price when the BHD price goes below 25 CNY. Your kind understanding and support are highly appreciated. As for the new pricing, please check our website regularly.

  2. ddProxy Using Code-Sign Certificate (Mar 11, 2020)

    In order to protect users stay away from malicious software and allow users to use genuine software with confidence, ddProxy has started to use code-sign certificate from now on. WIth the help from digital siganture, users are able to confirm whether the software has been modified maliciously or not.

  3. Notice of Price Change (Nov 20, 2019)

    Given the current price drop, we decided to adjust the price when the BHD price goes below 35 CNY. Your kind understanding and support are highly appreciated. As for the new pricing, please check our website regularly.

  4. Notice of Price Change (Jun 25, 2019)

    Given the BUSRT price raised tremendously, if it still holds at a high position in the coming 2 weeks, we will raise ddProxy price in CNY. As for the new pricing, please check our website regularly.

    If BURST price keeps on increasing, we will lower down ddProxy price including BURST, BHD, and CNY. If BURST price returns back to its current position, then our price will remain unchanged.

  5. Notice of Price Change (May 18, 2019)

    The long-awaiting "Nonce Overlapping Check" has been at the development and debugging stage. In view of the importance and difficulty of development of this feature, as well as the recent BURST price downturn, we will increase the price upon official release of this new feature, it includes BURST and RMB pricing, but BHD price remains unchanged.

    The ETA of this new release will be on May 25, 2019. The price will remain unchanged before this new release. All existing users will enjoy free software upgrades as always.

Contact Us

Telegram: hlbcal

Email:chenwei1107@hotmail.com

QQ: 1307047817, Skywakler

QQ Group: BHD Burst ddProxy MRL Evox Mass Aio, Group ID: 88181097

QQ Group: BHD^Burst^DDproxy技术支持讨, Group ID: 5150411

All suggestions are welcone,
for a better, interesting, and efficient POC ecosystem.