0.10.0 • Published 4 months ago

@nexscript/nexscript v0.10.0

Weekly downloads
-
License
MIT
Repository
gitlab
Last release
4 months ago

NexScript

Build Status Coverage Status NPM Version NPM Monthly Downloads NPM License

NexScript is a high-level programming language for smart contracts on Bitcoin Cash. It offers a strong abstraction layer over Bitcoin Cash' native virtual machine, Bitcoin Script. Its syntax is based on Ethereum's smart contract language Solidity, but its functionality is very different since smart contracts on Bitcoin Cash differ greatly from smart contracts on Ethereum. For a detailed comparison of them, refer to the blog post Smart Contracts on Ethereum, Bitcoin and Bitcoin Cash.

See the GitHub repository and the NexScript website for full documentation and usage examples.

The NexScript Language

NexScript is a high-level language that allows you to write Bitcoin Cash smart contracts in a straightforward and familiar way. Its syntax is inspired by Ethereum's Solidity language, but its functionality is different since the underlying systems have very different fundamentals. See the language documentation for a full reference of the language.

The NexScript SDK

The main way to interact with NexScript contracts and integrate them into applications is using the NexScript SDK. This SDK allows you to import .json artifact files that were compiled using the nexc compiler 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 .nex file. For more information on the NexScript SDK, refer to the SDK documentation.

Installation

npm install @nexscript/nexscript

Usage

import { Contract, ... } from '@nexscript/nexscript';

Using the NexScript SDK, you can import contract artifact files, create new instances of these contracts, and interact with these instances:

...
  // Import the P2PKH artifact
  import P2PKH from './p2pkh-artifact.json' assert { type: 'json' };

  // Instantiate a network provider for NexScript's network operations
  const provider = new ElectrumNetworkProvider('mainnet');

  // Create a new P2PKH contract with constructor arguments: { pkh: pkh }
  const contract = new Contract(P2PKH, [pkh], provider);

  // Get contract balance & output address + balance
  console.log('contract address:', contract.address);
  console.log('contract balance:', await contract.getBalance());

  // 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 txDetails = await contract.functions
    .spend(pk, new SignatureTemplate(keypair))
    .to(contract.address, 10000)
    .send();

  console.log(txDetails);
...
0.10.0

4 months ago

0.9.0

6 months ago

0.8.0

6 months ago

0.7.0

7 months ago

0.6.1

8 months ago

0.6.0

8 months ago

0.5.0

8 months ago

0.4.0

8 months ago

0.3.0

9 months ago

0.1.3

9 months ago

0.1.2

9 months ago

0.1.1

9 months ago

0.1.0

9 months ago