@swisstronik/web3-plugin-swisstronik
TypeScript icon, indicating that this package has built-in type declarations

1.5.1 • Public • Published

Swisstronik Web3 Plugin

npm version

Swisstronik Web3.js Plugin allows the users to use Web3.js library with Swisstronik

Supported methods:

  • eth_estimateGas
  • eth_call
  • eth_sendTransaction
  • Custom - eth_getNodePublicKey

Installation

Note: Make sure you are using web3 version 4.11.1 or higher in your project.

npm install @swisstronik/web3-plugin-swisstronik web3@latest --save

Usage

Basic Usage

import { Web3 } from "web3";
import { SwisstronikPlugin } from "@swisstronik/web3-plugin-swisstronik";

const web3 = new Web3("https://json-rpc.testnet.swisstronik.com/"); // Any RPC node you wanted to connect with
web3.registerPlugin(new SwisstronikPlugin());

// Get node public key
web3.swisstronik.getNodePublicKey().then((resp) => {
  console.log(resp);
});

Sending transactions & performing calls

import { Web3 } from "web3";
import { SwisstronikPlugin } from "@swisstronik/web3-plugin-swisstronik";

const web3 = new Web3("https://json-rpc.testnet.swisstronik.com/"); // Any RPC node you wanted to connect with
web3.registerPlugin(new SwisstronikPlugin());
let wallet = web3.eth.accounts.wallet.add("0x..."); // Private Key

let tx = {
  to: '0xF8bEB8c8Be514772097103e39C2ccE057117CC92',
  from: wallet[0].address,
  data: '0x61bc221a'
}
let callResult = await web3.eth.call(tx);
console.log(callResult);

let estimateGasResult = await web3.eth.estimateGas(tx);
console.log(estimateGasResult);

let sentTxReceipt = await web3.eth.sendTransaction(tx, undefined, {
  checkRevertBeforeSending: false,
});
console.log(sentTxReceipt);

Interacting with a Smart Contract

import { Web3, DEFAULT_RETURN_FORMAT } from "web3";
import { SwisstronikPlugin } from "@swisstronik/web3-plugin-swisstronik";

const web3 = new Web3("https://json-rpc.testnet.swisstronik.com/"); // Any RPC node you wanted to connect with
web3.registerPlugin(new SwisstronikPlugin());
let wallet = web3.eth.accounts.wallet.add("0x..."); // Private Key

const contract = new web3.eth.Contract(abi, ERC20_CONTRACT_ADDRESS);

const balanceOf = await contract.methods
  .balanceOf(wallet[0].address)
  .call();
console.log(balanceOf);

const gas = await contract.methods
  .transfer(wallet[0].address, 5n)
  .estimateGas({ from: wallet[0].address });
console.log(gas);

const sentTxReceipt = await contract.methods.transfer(wallet[0].address, 5n).send({from: wallet[0].address});
console.log(sentTxReceipt);

Connecting Accounts to Web3

import { Web3 } from "web3";
import { SwisstronikPlugin } from "@swisstronik/web3-plugin-swisstronik";

// With any RPC node and private key
const web3 = new Web3("https://json-rpc.testnet.swisstronik.com/");
const wallet = web3.eth.accounts.wallet.add("0x..."); // Private Key
const { address: account } = wallet[0];

// or with browser wallets
const web3 = new Web3(window.ethereum);
const [account] = await window.ethereum.request({
  method: "eth_requestAccounts"
});

web3.registerPlugin(new SwisstronikPlugin("https://json-rpc.testnet.swisstronik.com/"));

Refer to Swisstronik Developer Docs for more information & usage scenarios.

Publishing

To publish a new version of the package to npm, run the following command:

npm run build

npm publish

Resources

Safety

This is experimental software and subject to change over time.

This package is not audited and has not been tested for security. Use at your own risk. I do not give any warranties and will not be liable for any loss incurred through any use of this codebase.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i @swisstronik/web3-plugin-swisstronik

Weekly Downloads

3

Version

1.5.1

License

MIT

Unpacked Size

36.7 kB

Total Files

14

Last publish

Collaborators

  • splend1d_man