RustMinerSystem

Documentation

PoolNode Fee, Revenue, and Subaccount API

PoolNode fee-account, revenue, payout address, small-withdrawal, subaccount fee, and rebate administration endpoints.

PoolNode Fee, Revenue, and Subaccount API

This chapter covers the fee, revenue, address, withdrawal, and subaccount calls needed by API clients. Revenue emails, codes, wallet addresses, and transaction hashes are sensitive and must be redacted.

PoolNode may wrap results as { status, error, data } or return data directly. See the PoolNode envelope.

Project coin fee

POST /api/poolnode/project/config
{
  "email": "[email protected]",
  "coin": "PI-BTC",
  "r": 0.01
}

r is a 0–1 fraction; 0.01 means 1%.

Revenue and records

Method Path Main body fields
POST /api/poolnode/profit email, coin.
POST /api/poolnode/address/info email.
POST /api/poolnode/rewards email, coin, page, size.
POST /api/poolnode/payouts email, coin, page, size.

The frontend recognizes all, yesterday, paid, and unpaid profit states. Reward and payout lists use:

{
  "records": [],
  "total": 0,
  "page_no": 1
}

Update payout address

Send a user-email code:

POST /api/poolnode/send/user/mail
{
  "address": "[email protected]",
  "token": "<captcha or verification token>"
}

Save the payout address and threshold:

POST /api/poolnode/update/address
{
  "email": "[email protected]",
  "code": "123456",
  "coin": "PI-BTC",
  "amount": "0.01",
  "address": "<payout wallet>"
}

The current frontend submits amount as a string.

Small withdrawal

Method Path Body
POST /api/poolnode/withdrawal/can/apply { email, coin }; check eligibility.
POST /api/poolnode/withdrawal/logs { email, coin }; read request history.
POST /api/poolnode/withdrawal/submit { email, coin }; submit a request.

The frontend interprets eligibility as [status, payload]. With status=0, payload is available balance; with status=-3, it is the next application time.

Subaccount fees

Query subaccounts:

POST /api/poolnode/subaccount/configs
{
  "page": 1,
  "size": 20,
  "coin": "PI-BTC",
  "name": "<optional subaccount filter>"
}

Set a subaccount fee:

POST /api/poolnode/subaccount/config
{
  "sid": 1,
  "coin": "PI-BTC",
  "action": 0,
  "r": 0.01
}

Set a subaccount rebate:

POST /api/poolnode/subaccount/rebate
{
  "sid": 1,
  "coin": "PI-BTC",
  "email": "[email protected]",
  "action": 0,
  "r": 0.005
}

Currency parameters use PoolNode codes: BTC is normally PI-BTC, and LTC is VA-LTC.

Complete response fields

Project fee

email is the owner-controlled revenue email. coin should come from project/info.data.config[].coin. A successful save returns business success or HTTP 200; refetch project info and verify config[].r.

Profit and address

/api/poolnode/profit returns an array in data:

[
  { "status": "all", "profit": 0 }
]

status is all, yesterday, paid, or unpaid; profit is the corresponding amount. Treat a missing state as zero.

/api/poolnode/address/info returns address rows:

Field Type Meaning
coin string PoolNode currency code.
address string Current revenue address.
amount string/number Minimum payout amount.

Look up the row by coin before editing it.

Rewards and payouts

Both responses use { records, total, page_no }.

Reward records[]:

Field Type Meaning
day string Revenue day.
avg_hashrate number/string Daily average hashrate.
day_profit number/string Daily profit.
r number/string Applied fee ratio.
status number/string Reward status enum.
account_type number/string Account-type enum.

Payout records[]:

Field Type Meaning
created_at string Payout-record time.
amount number/string Payout amount.
trans_id string On-chain transaction hash.
status number/string Payout status enum.
account_type number/string Account-type enum.

total is the total row count and page_no is the server-confirmed page. Request pages start at 1.

Address update

coin must come from address info or project configuration. A successful update returns business success; query /api/poolnode/address/info again to verify address and amount. The mail endpoint returns only the delivery result, never the code.

Small withdrawal

The eligibility response is [status, payload]:

Status Meaning
0 Eligible; payload is the balance.
-1 No eligible small balance.
-2 Balance exists but no payout address is bound.
-3 Too soon since the previous request; payload is the relevant time.
-4 Insufficient account permission.

withdrawal/logs.data[] fields consumed by the frontend are updated_at, amount, status, and hash. status=1 means awaiting payment; for status=0 the UI can expose the transaction hash. Recheck eligibility immediately before submit.

Subaccounts

The query returns { records, total, page_no }. Current records[] fields:

Field Type Meaning and reuse
id number/string Subaccount ID used as sid in fee/rebate writes.
name string Subaccount name.
created_at string Registration time.
hashrate number/string Current hashrate.
r number/string Independent fee ratio.
rb_r number/string Rebate ratio.
rb_email string/null Rebate revenue email.
tick string/null Read-only token fragment for the PoolNode observer link.

action=0 saves. For subaccount fees, action=1 restores the node default; the frontend sends compatibility value r=0.03. For rebates, action=1 removes the rebate. Refetch the current page after a successful write.

Field dependency map

Input Source
coin GET /api/poolnode/project/infodata.config[].coin, or the supported PoolNode currency list.
email Revenue email held by the caller; config[].email can be used for display verification.
Address address / amount The same-coin row from /api/poolnode/address/info.
sid /api/poolnode/subaccount/configsrecords[].id.
Rebate email on removal Current records[].rb_email.