https://github.com/sigmagmbh/web3-plugin-swisstronik
Swisstronik plugin for Web3.js
https://github.com/sigmagmbh/web3-plugin-swisstronik
Last synced: 3 months ago
JSON representation
Swisstronik plugin for Web3.js
- Host: GitHub
- URL: https://github.com/sigmagmbh/web3-plugin-swisstronik
- Owner: SigmaGmbH
- Created: 2024-02-08T19:55:11.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-04-25T11:17:50.000Z (about 1 year ago)
- Last Synced: 2024-04-25T12:30:33.361Z (about 1 year ago)
- Language: TypeScript
- Size: 274 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Swisstronik Web3 Plugin
[](https://www.npmjs.com/package/@swisstronik/web3-plugin-swisstronik)
Swisstronik Web3.js Plugin allows the users to use Web3.js library with [Swisstronik](https://swisstronik.com)
### 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.
```bash
npm install @swisstronik/web3-plugin-swisstronik web3@latest --save
```## Usage
### Basic Usage
```js
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
```js
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 Keylet 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
```js
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 Keyconst 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
```js
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](https://swisstronik.gitbook.io/swisstronik-docs/) for more information & usage scenarios.
### Publishing
To publish a new version of the package to npm, run the following command:
```bash
npm run buildnpm publish
```## Resources
- [Swisstronik Docs](https://swisstronik.gitbook.io/swisstronik-docs/)
- [Web3js Plugins Documentation](https://docs.web3js.org/guides/web3_plugin_guide/)
- [Swisstronik Website](https://swisstronik.com)## 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](https://choosealicense.com/licenses/mit/)