npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mazzaroth-cli

v0.5.0

Published

Tool that wraps the mazzaroth-js node/contract clients and facilitates interaction with a Mazzaroth node.

Downloads

18

Readme

Mazzaroth-CLI

CircleCI

A node CLI tool that wraps the mazzaroth-js node/contract clients and facilitates interaction with a Mazzaroth node. Gives access to both the raw node rpc endpoints and abstracted access to the contract on a given Node.

Installation

The CLI can be installed by using npm.

npm install -g mazzaroth-cli

Commands

Below is the list of commands provided by mazzaroth-cli. The more complex commands will be explained in further detail below.

| Command | Description | Example | | ------- | ----------- | ------- | | transaction-call | Submits a call transaction to a mazzaroth node. Arguments are XDR formatted as base64 encoded strings. | mazzaroth-cli transaction-call my_func -a 9uZz -a f1zsfABG7J | | contract-update | Submits an update transaction to a mazzaroth node. The format of the argument is a path to a file containing contract wasm bytes. | mazzaroth-cli contract-update ./test/data/hello_world.wasm | | permission-update | Submits a permission transaction to a mazzaroth node that allows another account to act on your behalf. The argument to this call is the public key of the account you would like to grant access to. | mazzaroth-cli permission-update 3a547668e859fb7b112a1e2dd7efcb739176ab8cfd1d9f224847fce362ebd99c | | transaction-lookup | Looks up the current status and results of a transaction by ID. Argument is a transaction ID (256 bit hex value). | mazzaroth-cli transaction-lookup 3a547668e859fb7b112a1e2dd7efcb739176ab8cfd1d9f224847fce362ebd99c | | block-lookup | Looks up a Block using either a block ID as hex or block Number. | mazzaroth-cli block-lookup 3a547668e859fb7b112a1e2dd7efcb739176ab8cfd1d9f224847fce362ebd99c | | block-header-lookup | Looks up a Block Header using either a block ID as hex or block Number. | mazzaroth-cli block-header-lookup 3a547668e859fb7b112a1e2dd7efcb739176ab8cfd1d9f224847fce362ebd99c | | receipt-lookup | Looks up a transaction receipt. Argument is a transaction ID (256 bit hex value). | mazzaroth-cli receipt-lookup 3a547668e859fb7b112a1e2dd7efcb739176ab8cfd1d9f224847fce362ebd99c | | account-lookup | Looks up the current information for an account. Argument is an account ID (256 bit hex value). | mazzaroth-cli account-lookup 3a547668e859fb7b112a1e2dd7efcb739176ab8cfd1d9f224847fce362ebd99c | | channel-lookup | Looks up the current information for a channel. Argument is what specifically to lookup about the channel. Current options: config/contract | mazzaroth-cli channel-lookup config | | contract-cli | Drops into a contract cli where you can call contract functions interactively. | mazzaroth-cli contract-cli abi.json | | subscribe | Subscribes to the receipts received by a readonly/standalone node. | mazzaroth-cli subscribe '{"receiptFilter": {}, "transactionFilter": {"configFilter":{}}}'| | deploy | Helper for deploying a contract to a mazzaroth network. Takes a json config file, a sample config file can be found here | mazzaroth-cli deploy ./deploy.json | | xdr | Command used for converting between JSON and base64 representations of xdr objects. Also can be piped to from stdin. | mazzaroth-cli xdr Transaction '{"action": { "nonce": "3" } }' |

Contract CLI

The call and lookup operations are relatively low level. The results need to be interpreted from base64 strings or require multiple calls to complete. For example to complete a 'transaction-call', you would need to look up an account nonce, make the call, and finally lookup the results after execution. An example of this being done (using node.js) can be seen in the mazzaroth-js repo.

This is cumbersome, so we've provided a further abstraction called the contract client. This wraps the low level operations and gives the user access to their contract through an rpc-like interface. We'll walk through how to drop into the contract clients interactive CLI for a simple contract.

# The contract client requires the ABI json produced from our contract to run
# properly. Which will drop you into an interactive CLI. Normally this would
# be output by part of the mazzaroth build process, for this example we'll
# just pretend we have an abi json in the location it would normally be output
# to. This example can be found in our ore extensive example contract:
# https://github.com/kochavalabs/full-contract-example
mazzaroth-cli contract-cli contract/target/json/ExampleContract.json
Mazz>

# You can see the currently available functions by typing abi
Mazz> abi

Functions:
  args(string, string, string) -> uint32
  complex(Foo, Bar) -> string

ReadOnly Functions:
  simple() -> string

# And call them
Mazz> simple()
Hello World!
Mazz> args("one", "two", "three")
11
Mazz> complex('', '')
Error: Type not identified: Foo
    at nodeClient.nonceLookup.then.result
    at process._tickCallback
Mazz>

Deploy

The deploy command is used to initialize a mazzaroth channel with its starting configuration and contract. It also allows you to run some initial transactions on startup if you desire.

# If you're just testing out a standalone node you can just echo an empty config
# into the deploy command to initialize a node to the default configuration.
echo '{}' | mazzaroth-cli deploy

# Or for a more complete configuration:
cat deploy.json
# {
#     "abi": {
#         "type": "file",
#         "value": "./contract/target/json/ExampleContract.json"
#     },
#     "channel-id": "0000000000000000000000000000000000000000000000000000000000000000",
#     "contract": "./contract/target/wasm32-unknown-unknown/release/contract.wasm",
#     "node-addr": "http://localhost:8080",
#     "on-behalf-of": "",
#     "owner": "3b6a27bcceb6a42d62a3a8d02a6f0d73653215771de243a63ac048a18b59da29",
#     "init-transactions": {
#         "initialize-configuration": [
#             {
#                 "args": [],
#                 "function_name": "setup",
#                 "sender": ""
#             }
#         ]
#     },
#     "xdr-types": "./xdrTypes.js"
# }
mazzaroth-cli deploy ./deploy.json

XDR

Mazzaroth-cli also provides an xdr command that will allow easier conversion of the common XDR types found in our mazzaroth-xdr repository between base64 and the JSON representations. Some basic examples:


# Translate a basic empty transaction to base64 and back
mazzaroth-cli xdr Transaction '{}'
# AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

# You can also pipe to the xdr command from stdin
mazzaroth-cli xdr Transaction '{}' | mazzaroth-cli xdr Transaction --inputType base64
# {
#    "signature":"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
#    "signer":{
#       "type":0,
#       "data":""
#    },
#    "action":{
#       "address":"0000000000000000000000000000000000000000000000000000000000000000",
#       "channelID":"0000000000000000000000000000000000000000000000000000000000000000",
#       "nonce":"0",
#       "category":{
#          "type":0,
#          "data":""
#       }
#    }
# }

# Translate a ReceiptSubscriptionResult from base64

mazzaroth-cli xdr ReceiptSubscriptionResult --inputType base64 AAAAAQwZ2DC+GfzdV7UPw15cE/P6KQawvWjsfMgpLh4i//8qAAAAAHfJJ+t0nVQb1/bhniZi1NoR7UNVy3X8ccPnhzSdwlPb
# {
#    "receipt":{
#       "status":1,
#       "stateRoot":"0c19d830be19fcdd57b50fc35e5c13f3fa2906b0bd68ec7cc8292e1e22ffff2a",
#       "result":""
#    },
#    "transactionID":"77c927eb749d541bd7f6e19e2662d4da11ed4355cb75fc71c3e787349dc253db"
# }

License

MIT