Chainweb node client
Kadena Chainweb clients are application programming interfaces that provide TypeScript-based calls for interacting with Chainweb nodes on the Kadena network.
The Chainweb node client—@kadena/chainweb-node-client
—is a typed JavaScript wrapper with fetch to call chainweb-node
API endpoints.
For the Chainweb node client, chainweb-node
endpoints are broken down into the following categories:
- blockchain - wrapper around chainweb-node peer-to-peer endpoints.
- pact - wrapper for Pact endpoints.
- rosetta - wrapper for Rosetta endpoints.
For generated API reference information, see chainweb-node-client.api.md
Pact
The Pact API will contain the following functions:
listen
local
mkCap
parseResponse
parseResponseTEXT
poll
send
spv
stringifyAndMakePOSTRequest
listen
Listens for the result of a Pact command on a Chainweb node server and retrieves a raw response.
const requestKey: IListenRequestBody = { listen: 'ATGCYPWRzdGcFh9Iik73KfMkgURIxaF91Ze4sHFsH8Q',}; const response: ICommandResult | Response = await listen(requestKey, '');
const requestKey: IListenRequestBody = { listen: 'ATGCYPWRzdGcFh9Iik73KfMkgURIxaF91Ze4sHFsH8Q',}; const response: ICommandResult | Response = await listen(requestKey, '');
local
Calls the /local
endpoint on a Chainweb node to submit a synchronous command for non-transactional execution.
In a blockchain environment, this would be a node-local “dirty read”.
Any database writes or changes to the environment are rolled back.
const signedCommand: LocalRequestBody = { cmd, hash, sigs: [{ sig }],}; const response: ICommandResult | Response = await local(signedCommand, '');
const signedCommand: LocalRequestBody = { cmd, hash, sigs: [{ sig }],}; const response: ICommandResult | Response = await local(signedCommand, '');
mkCap
Creates a Pact capability object.
You can use the output from this helper function with the mkSignerCList
function.
mkCap('coin.TRANSFER', ['fromAcctName', 'toAcctName', 0.1]);
mkCap('coin.TRANSFER', ['fromAcctName', 'toAcctName', 0.1]);
parseResponse
Parses a raw fetch
response into a typed JSON value.
const parsedResponse = await parseResponse(response as Response);
const parsedResponse = await parseResponse(response as Response);
parseResponseTEXT
Parses a raw fetch
response into a typed JSON value.
const parsedResponse = await parseResponseTEXT(response as Response);
const parsedResponse = await parseResponseTEXT(response as Response);
poll
Allows polling for one or more transaction results by request key.
const signedCommand: IPollRequestBody = { requestKeys: ['ATGCYPMNzdGcFh9Iik73KfMkgURIxaF91Ze4sHFsH8Q'],}; const response: Response | IPollResponse = await poll(signedCommand, '');
const signedCommand: IPollRequestBody = { requestKeys: ['ATGCYPMNzdGcFh9Iik73KfMkgURIxaF91Ze4sHFsH8Q'],}; const response: Response | IPollResponse = await poll(signedCommand, '');
send
Submits asynchronous transaction with one or more public (unencrypted) commands to the blockchain for execution.
const signedCommand1: ICommand = { cmd, hash, sigs: [{ sig }],}; // A tx created for chain 0 of devnet using `pact -a`.const signedCommand2: ICommand = { cmd, hash, sigs: [{ sig }],}; const sendRequest: IISendRequestBody = { cmds: [signedCommand1, signedCommand2],}; const response: Response | ISendResponse = await send(sendRequest, '');
const signedCommand1: ICommand = { cmd, hash, sigs: [{ sig }],}; // A tx created for chain 0 of devnet using `pact -a`.const signedCommand2: ICommand = { cmd, hash, sigs: [{ sig }],}; const sendRequest: IISendRequestBody = { cmds: [signedCommand1, signedCommand2],}; const response: Response | ISendResponse = await send(sendRequest, '');
spv
Sends a request to the /spv
endpoint and retrieves a simple payment verification proof of a cross chain transaction.
const spvResponse: string | Response = await spv(spv_request, '');
const spvResponse: string | Response = await spv(spv_request, '');
stringifyAndMakePOSTRequest
Formats API request body to use with fetch
function.
const body: object = { name: 'hello', val: 'Kadenians',}; stringifyAndMakePOSTRequest(body);
const body: object = { name: 'hello', val: 'Kadenians',}; stringifyAndMakePOSTRequest(body);