core

The core is a TypeScript class that provides an interface for signing messages and transactions on the Ethereum blockchain. This library is used by all other Arianee SDK libraries to sign messages.

Usage

💡

This library uses the ethers library ethers library, which is a popular library for interacting with Ethereum.

You can instanciante Core with:

  • Mnemonic
import { Core } from '@arianee/core';
Core.fromMnemonic(mnemonic);
  • Passphrase
import { Core } from '@arianee/core';
Core.fromPassPhrase(passphrase);
  • PrivateKey
import { Core } from '@arianee/core';
Core.fromPrivateKey(privateKey);
  • Random: Generates random wallet.
    • For test purposes
    • Read-only wallet
import { Core } from '@arianee/core';
Core.fromRandom();

The returned instance will have the following methods:

  • signMessage(message:string): a function that behaves like the signMessage from ethers.
  • signTransaction(transaction:TransactionLike): a function that behaves like the signTransaction from ethers.

⚠️

Not compliant with MetaMask external wallet provider.

  • sendTransactions(transaction): a function that sends a transaction to MetaMask.
  • getAddress():string: a function that returns the address of the wallet.

Use Case - Implement Core to create an instance between Arianee and MetaMask

const accounts = await window.ethereum.request({
  method: 'eth_requestAccounts',
});

const address: string = accounts[0];

this.core = new Core({
  getAddress: () => {
    return address;
  },
  signMessage: async (message) => {
    const signature = await window.ethereum.request({
      method: 'personal_sign',
      params: [address, message],
    });
    return { message, signature };
  },
  sendTransaction: async (transaction) => {
    return window.ethereum.request({
      method: 'eth_sendTransaction',
      params: [transaction],
    });
  },
});

this.wallet = new Wallet({
  chainType: 'testnet',
  auth: { core: this.core },
});