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

cashscript-clone

v0.1.2

Published

[![Build Status](https://travis-ci.org/Bitcoin-com/cashscript.svg)](https://travis-ci.org/Bitcoin-com/cashscript) [![Coverage Status](https://img.shields.io/codecov/c/github/Bitcoin-com/cashscript.svg)](https://codecov.io/gh/Bitcoin-com/cashscript/) [![NP

Downloads

5

Readme

CashScript

Build Status Coverage Status NPM Version NPM Monthly Downloads NPM License

CashScript is a high level language enabling basic smart contract functionality on Bitcoin Cash. While these cash contracts are less powerful than Ethereum's smart contracts, CashScript was in many ways inspired by Ethereum's development ecosystem. Ethereum has always had one of the most accessible development ecosystems in terms of tooling, and with CashScript we want to bring that accessibility to Bitcoin Cash.


Attention: CashScript is in active development, and is currently in a beta phase. While CashScript is in beta stage, its APIs and usage is subject to change, so be sure to check the documentation. During the beta phase it is possible that the library still contains bugs, so for now the CashScript SDK can only be used on the testnet network.

This repository contains the code for the CashScript compiler & command line tool under packages/cashc. This repository also contains the code for the CashScript JavaScript SDK under packages/cashscript. This README includes the basic documentation for both of these packages, but their respective package directories go into a bit more detail.

The CashScript Language

CashScript is a high-level language that allows you to write Cash Contracts in a straightforward and familiar way. It is inspired by Ethereum's Solidity, but it is not the same, and cash contracts work very differently from Ethereum's smart contracts. See the Language documentation for a full reference of the language.

The CashScript Compiler

CashScript features a compiler as a standalone command line tool, called cashc. It can be installed through npm and used to compile .cash files into .json artifact files. These artifact files can be imported into the CashScript JavaScript SDK (or other SDKs in the future). Note that the CashScript SDK also has a fnuction to import and compile .cash files directly, so it is not required to use the cashc command line tool.

For more information on cashc, refer to its README.

Installation

npm install -g cashc

Usage

Usage: cashc [options] [source_file]

Options:
  --output, -o  Specify a file to output the generated artifact.
                                                             [string] [required]
  --help        Show help                                              [boolean]
  --version     Show version number                                    [boolean]

The CashScript SDK

The main way to interact with cash contracts and integrate them into applications is using the CashScript SDK. This SDK allows you to compile .cash files or import .json artifact files, and convert them to Contract objects. These objects are used to create new contract instances. These instances are used to interact with the contracts using the functions that were implemented in the .cash file. For more information on the CashScript SDK, refer to its README or the full SDK documentation.

Note: The CashScript currently only supports NodeJS, as it uses some NodeJS-specific functionality (fs, path). We are working on making the library compatible with the browser as well as NodeJS, but this is currently not supported.

Installation

npm install cashscript

Usage

import { Contract, ... } from 'cashscript';
const { Contract, ... } = require('cashscript');

Using the CashScript SDK, you can import / compile existing cash contract files, create new instances of these contracts, and interact with these instances:

...
  // Compile the P2PKH Cash Contract
  const P2PKH: Contract = Contract.fromCashFile(path.join(__dirname, 'p2pkh.cash'), 'testnet');

  // Instantiate a new P2PKH contract with constructor arguments: { pkh: pkh }
  const instance: Instance = P2PKH.new(pkh);

  // Get contract balance & output address + balance
  const contractBalance: number = await instance.getBalance();
  console.log('contract address:', instance.address);
  console.log('contract balance:', contractBalance);

  // Call the spend function with the owner's signature
  // And use it to send 0. 000 100 00 BCH back to the contract's address
  const tx: TxnDetailsResult = await instance.functions.spend(pk, new Sig(keypair, 0x01))
    .send(instance.address, 10000);
  console.log('transaction details:', tx);
...

Examples

If you want to see CashScript in action and check out its usage, there are several example contracts in the examples/ directory. The .cash files contain example contracts, and the .ts files contain example usage of the CashScript SDK to interact with these contracts.

The "Hello World" of cash contracts is defining the P2PKH pattern inside a cash contract, which can be found under examples/p2pkh.cash. Its usage can be found under examples/p2pkh.ts or examples/p2pkh-artifact.ts.

Running the examples

To run the examples, clone this repository and navigate to the examples/ directory. Since the examples depend on the SDK, be sure to run npm install or yarn inside the examples/ directory, which installs all required packages.

git clone [email protected]:Bitcoin-com/cashscript.git
cd cashscript/examples
yarn / npm install

All .ts files in the examples/ directory can then be executed with ts-node.

npm install -g ts-node
ts-node p2pkh.ts

All .js files can be executed with node.

node p2pkh.js