This repository contains a demo application that demonstrates the process of signing transactions on multiple blockchain networks using a single NEAR account. The application supports signing transactions on Ethereum (ETH), Binance Smart Chain (BNB), and Bitcoin (BTC) testnets.
- Sign transactions on ETH, BNB, and BTC testnets using a NEAR account
- Derive addresses for each supported chain based on a derivation path
- Check account balances on each supported chain
- Send transactions on each supported chain
- Node.js
- NPM package manager
- A NEAR testnet account - Instructions to create an account: https://docs.near.org/tools/near-cli
Clone the repository:
Install the dependencies:
npm i
Set up the environment variables: Create a .env file in the root directory of the project and add the following variables:
NEXT_PUBLIC_NEAR_ACCOUNT_ID=your-near-testnet-account-id
NEXT_PUBLIC_NEAR_PRIVATE_KEY=your-near-testnet-private-key
Replace your-near-testnet-account-id with your NEAR testnet account ID and your-near-testnet-private-key with your NEAR testnet private key.
To start the development server, run the following command:
npm run dev
Open your browser and navigate to http://localhost:3000/multi-chain to access the application.
- Select the desired chain (ETH, BNB, or BTC) from the dropdown menu.
- Enter the derivation path for the selected chain.
- Click the "Check Balance" button to fetch the account balance on the selected chain.
- Enter the recipient's address in the "Address" field.
- Enter the amount to send in the "Value" field.
- Click the "Send Transaction" button to initiate the transaction.
The main components of the application are located in the following files:
pages/index.tsx:
The main page of the application that handles user interactions and state management.utils/chain/EVM.ts:
Contains the EVM class that provides functions for interacting with Ethereum and Binance Smart Chain.utils/chain/Bitcoin.ts:
Contains the Bitcoin class that provides functions for interacting with the Bitcoin testnet.utils/contract/signer.ts:
Contains functions for signing transactions using the smart contract.utils/kdf.ts:
Contains functions for key derivation.