Skip to content

1. One-Key Setup ​

1.1 Download the HashNut MPC Client ​

Download the latest HashNut MPC Client for your OS and CPU architecture from the address below, then unpack it.

https://github.com/nuttybounty/hashnut-mpc-client/releases

NOTE

There is no windows-arm64 build yet, but the windows-amd64 build has been tested and runs fine on windows-arm64 machines.

NOTE

On macOS you also need to run the following to get past Gatekeeper.

shell
xattr -cr ./hashnut-mpc-mainnet-darwin-arm64

If you downloaded the amd64 build, run:

shell
xattr -cr ./hashnut-mpc-mainnet-darwin-amd64

NOTE

HashNut never stores your private key or your password — keep them safe, they cannot be recovered. Importing a private key creates keys.db; keep that safe too, or you will not be able to add receipt addresses later. Always keep keys.db in the same folder as the client.

1.2 Initialise the wallet ​

  • Set a password img

  • Import your wallet's private key

    Import the private key into the wallet. The default chain type is evm; choose tron if it is a Tron wallet.

  • Click "Import Wallet" img

  • Choose the wallet type img

  • Paste the private key and import img

  • Imported img

  • Switch to the chain you want to use img

1.3 Filling in the one-key setup parameters ​

  • Open the One-Key Setup page img

  • Fill in the parameters img

    • What each parameter does:
    ParameterPurpose
    Contract aliasA name for the split contract. After deployment you will see the contract under this name in the dashboard and in the MPC Client.
    Withdrawal addressWhere funds go when you withdraw, after the money customers paid has been aggregated.
    TokenThe token the receipt addresses authorise the split contract to move, usdt by default. Each receipt address grants the split contract permission to transfer this token, which is how aggregation works.
    Number of receipt addressesHow many receipt addresses to create. Start with 5; once you have verified order creation, aggregation and withdrawal, top it up to at least 50.
    notifyUrlThe URL HashNut calls with order notifications — think of it as your webhook URL.
    callbackUrlWhere the HashNut payment page redirects the user after the order is created.
    bindIpThe public IP of the server that creates orders. Leave it as * for now and bind it in the dashboard once you have finished debugging.
    Overpayment policyWhat to do when a customer overpays. The default is auto-confirm: an overpaid order is treated as successful.
    Underpayment policyWhether HashNut notifies you when a customer underpays. The default is to notify.
    RemarkA label for the API key, visible in the dashboard after setup completes.

TIP

During local development your machine is not reachable from the internet, and notifyUrl is the address HashNut calls you on, so it must be publicly reachable. If you have a public server, use it; otherwise a tunnel (ngrok, frp, Cloudflare Tunnel…) will do for now — see Appendix: Making notifyUrl publicly reachable. Get the public address ready before filling in the parameters below, so you do not have to come back and change them after discovering notifications never arrive.

callbackUrl is a browser redirect and does not need to be public. During local development just use the demo shop's frontend address, http://localhost:5173/payment-result.

  • Estimate the fee img

  • Confirm img

  • In progress img

  • Finished img

1.4 Save the account info ​

img

  • The exported account info looks like this. The client is Chinese-only for now, so the export is too — the field order is what matters, and it matches the parameter table above:
    text
    HashNut 一键开户结果
    生成时间: 2026-08-01 14:54:46
    ============================================================
    
    链            ETH
    分账合约      0xbd09...fca
    合约别名      demo-1
    提现地址      0x4d....ec
    Token        usdt (0xdac17f958d2ee523a2206206994597c13d831ec7)
    收款地址数    5
    部署交易      0xa19....73d
    
    accessKey     01...YW
    secretKey     H1...Tt
    notifyUrl     https://.../api/notify
    callbackUrl   http://.../payment-result
    bindIp        *
    长款策略      自动确认(默认) (AUTO_CONFIRM)
    短款策略      通知商户(默认) (NOTIFY)
    
    ------------------------------------------------------------
    粘贴到 demo-go / demo-java 的 migrate.sql
    ------------------------------------------------------------
    -- HashNut 一键开户导出:ETH / demo-1
    INSERT INTO t_hashnut_api_key (block_chain, splitter, access_key_id, secret_key) VALUES
        ('ETH', '0xbd09...fca', '01...YW', 'H1...Tt')
    ON CONFLICT (block_chain) DO UPDATE SET
        splitter = EXCLUDED.splitter,
        access_key_id = EXCLUDED.access_key_id,
        secret_key = EXCLUDED.secret_key;

WARNING

The secretKey is shown once only — it is not stored locally and the client cannot show it again. Export the TXT (or copy the SQL) before you leave this page. If you lose it, reset the API key in the dashboard.