14.0.0 • Published 2 months ago

chia-agent v14.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

chia-agent

npm version License: MIT

chia rpc/websocket client library for NodeJS.
Supports all RPC/Websocket API available at chia 2.2.1.
(If you need previous version, search for the corresponding release here)

you can develop your own nodejs script with chia-agent to:

  • retrieve latest data from RPC servers like farmer, harvester, full_node, wallet, pool, data_layer, crawler.
  • send email when proof is found.
  • trigger scripts when target event is observed.
  • start/stop services.
  • write program to schedule plotting with javascript.
  • etc, etc, etc

Install

npm install chia-agent
# or
yarn add chia-agent

Compatibility

This code is compatible with:

API

There are 2 kinds of APIs in chia.
RPC API and Websocket API.

RPC API

RPC API is used to send message directly to chia services like farmer, harvester, full_node, wallet, data_layer, crawler.

RPC API is just an async function in a traditional request/response style.

const {RPCAgent, setLogLevel} = require("chia-agent");
const {get_plots} = require("chia-agent/api/rpc");
setLogLevel("debug");

const agent = new RPCAgent({
  service: "harvester",
});

const res = await get_plots(agent);
console.log(res.plots[0]);

/*
// sample output
{
  file_size: 108875876912,
  filename: 'M:\\plot-k32-yyyy-mm-dd-xx-xx-xxxxxxxxxxxxxxxxxxxxxxxxx.plot',
  plot_id: '...',
  plot_public_key: '0x934a93489...',
  pool_contract_puzzle_hash: null,
  pool_public_key: '0xb0aa9485c0d...',
  size: 32,
  time_modified: 1619540745
}
*/

// Or you can request RPC API via daemon websocket like this
const {getDaemon, setLogLevel} = require("chia-agent");
const {get_plots} = require("chia-agent/api/rpc");
const daemon = getDaemon();
await daemon.connect(); // connect to local daemon using config file.
const res = await get_plots(daemon);

Websocket API

Websocket API is used to connect to chia daemon.

With websocket API, you can request chia daemon to start/stop plotting or other services,
or capture various broadcast messages like:

  • Plotting progress
  • Farming info such as passed filter, proofs found, etc.
const {getDaemon, setLogLevel} = require("chia-agent");
const {on_new_farming_info} = require("chia-agent/api/ws");

setLogLevel("debug");

const daemon = getDaemon();
await daemon.connect(); // connect to local daemon using config file.
const unsubscribe = await on_new_farming_info(daemon, (e) => {
  console.log(e.data);
})

setTimeout(async () => {
  unsubscribe(); // Stop capturing message
  daemon.close();
}, 30*1000); // Disconnect after 30s passed.

/*
// sample output
{
  farming_info: {
    challenge_hash: '0x07228cf04e8877797adc1e0605018007def282548f009564b00286886e23e88b',
    passed_filter: 0,
    proofs: 0,
    signage_point: '0xfe1272a8e6659c0a3875cac37f8b170f1f85d47fecfee36d825dfae0b2a73a31',
    timestamp: 1621255822,
    total_plots: 299
  },
  success: true
}
 */

API Reference

See Documentation here

Examples

See documentation here

Here are some of those examples

Build from source

Once source files is build by npm run build:prod, files will be output to /dist directory.
Then the files/directories are published to npm registry.
Please note it does not upload files in project root to npm registry, but files inside '/dist'.

Read details here

Donation

For continuous development, please support me with donation xch1wr8g2k7cn55xvepmg480dsu2xhf4rz5ezghwwapulj7jxqcz9ztqqclwdj

14.0.0

2 months ago

14.0.0-beta.3

2 months ago

14.0.0-beta.2

2 months ago

14.0.0-beta.1

3 months ago

14.0.0-beta.0

3 months ago

13.2.0

4 months ago

13.2.0-beta.3

5 months ago

13.2.0-beta.2

5 months ago

13.1.0

7 months ago

13.0.0

8 months ago

13.0.1

8 months ago

13.2.0-beta.1

6 months ago

13.2.0-beta.0

7 months ago

12.1.0

10 months ago

12.0.1

11 months ago

12.0.0

11 months ago

11.1.1

12 months ago

11.1.0

1 year ago

11.0.0

1 year ago

10.1.0

1 year ago

10.0.0

1 year ago

9.2.0

1 year ago

9.1.0

2 years ago

7.0.0

2 years ago

8.0.0

2 years ago

9.0.1

2 years ago

9.0.0

2 years ago

6.0.0

2 years ago

5.0.0

2 years ago

4.0.0

2 years ago

3.0.1

2 years ago

3.0.1-beta.0

2 years ago

3.0.0

3 years ago

2.0.6

3 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.3

3 years ago

2.0.2

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.1.0

3 years ago

1.1.0-beta.12

3 years ago

1.1.0-beta.11

3 years ago

1.1.0-beta.9

3 years ago

1.1.0-beta.10

3 years ago

1.1.0-beta.8

3 years ago

1.1.0-beta.7

3 years ago

1.1.0-beta.2

3 years ago

1.1.0-beta.1

3 years ago

1.1.0-beta.0

3 years ago

1.1.0-beta.6

3 years ago

1.1.0-beta.5

3 years ago

1.1.0-beta.4

3 years ago

1.1.0-beta.3

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago

0.0.0

3 years ago