# @openblockhq/dappsdk

> A simple, powerful SDK to interact with the OpenBlock

Latest version **5.0.15** (published 2024-06-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install @openblockhq/dappsdk
pnpm add @openblockhq/dappsdk
yarn add @openblockhq/dappsdk
bun add @openblockhq/dappsdk
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 5.0.15 |
| Published | 2024-06-18 |
| First published | 2022-11-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 12.0.0 |
| Dependencies | 9 |
| Unpacked size | 3.7 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | OpenBlock |
| Maintainers | acceyuriko, openblockmaster |
| Keywords | openblock, dapp, sdk, ethereum, aptos, starcoin, evm, javascript, web3, frontend, trust-wallet, walletconnect |

## Links

- npm: https://www.npmjs.com/package/@openblockhq/dappsdk
- Homepage: https://openblock.com
- npm.io page: https://npm.io/package/@openblockhq/dappsdk

## Dependencies (9)

- [bs58](https://npm.io/package/bs58.md) ^5.0.0
- [mitt](https://npm.io/package/mitt.md) ^3.0.0
- [buffer](https://npm.io/package/buffer.md) ^6.0.3
- [tronweb](https://npm.io/package/tronweb.md) ^5.1.0
- [@mysten/sui.js](https://npm.io/package/@mysten/sui.js.md) ^0.32.1
- [@solana/web3.js](https://npm.io/package/@solana/web3.js.md) ^1.73.3
- [@mysten/wallet-standard](https://npm.io/package/@mysten/wallet-standard.md) ^0.5.3
- [@wallet-standard/features](https://npm.io/package/@wallet-standard/features.md) ^1.0.3
- [@solana/wallet-standard-features](https://npm.io/package/@solana/wallet-standard-features.md) ^1.0.1

## Alternatives

- [lodash.startswith](https://npm.io/package/lodash.startswith.md) — 769.7K weekly downloads
- [@tarojs/service](https://npm.io/package/@tarojs/service.md) — 33.9K weekly downloads
- [io.extendreality.tilia.indicators.spatialtargets.unity](https://npm.io/package/io.extendreality.tilia.indicators.spatialtargets.unity.md) — 131 weekly downloads
- [@rtarojs/taro](https://npm.io/package/@rtarojs/taro.md) — 90 weekly downloads
- [node-branch-io](https://npm.io/package/node-branch-io.md) — 50 weekly downloads

## Recent versions

- 5.0.15 (latest) — 2024-06-18
- 5.0.14 — 2024-06-18
- 5.0.13 — 2023-08-08
- 5.0.12 — 2023-08-08
- 5.0.9 — 2023-04-19
- 5.0.8 — 2023-04-18
- 5.0.7 — 2023-02-27
- 5.0.6 — 2023-02-20
- 5.0.5 — 2023-02-11
- 5.0.4 — 2023-01-17
- 5.0.3 — 2023-01-13
- 5.0.2 — 2022-12-05
- 5.0.1 — 2022-12-03
- 5.0.0 — 2022-11-28

## README

# OpenBlock DApp SDK

OpenBlock SDK is an open-source SDK that allows you to connect your DApps to our users, their assets and NFTs. We currently support major EVM chains, Aptos, Starcoin and more. Login to [openblock.com](https://openblock.com) for more details.

## Introduction

- OpenBlock is a next-gen on-chain wallet committed to MPC protocol, keyless, seedless, and pushing security limits through distributed credentials and wallet recovery mechanisms.  


## Install 

```shell
yarn add @openblockhq/dappsdk
```

## Using SDK

### Ethereum

```Javascript
import '@openblockhq/dappsdk';

window.addEventListener('DOMContentLoaded', () => {
  const provider = window.openblock;

  // Config
  provider.autoRefreshOnNetworkChange = false;

  // On Chain Changed
  provider.on('chainChanged', (chain) => {
    // handler
  });

  // On Accounts Changed
  provider.on('accountsChanged', (accounts) => {
    // handler
  });

  // Request Accounts
  const accounts = await provider.request({
    method: 'eth_requestAccounts',
  });

  // Chain ID
  const chainId = await provider.request({
    method: 'eth_chainId',
  });

  // Net Version
  const networkId = await provider.request({
    method: 'net_version',
  });

  // Get Block By Number
  const block = await provider.request({
    method: 'eth_getBlockByNumber'
  });

  // Switch Ethereum Chain
  await provider.request({
    method: 'wallet_switchEthereumChain',
    params: [
      {
        chainId,
      }
    ]
  });

  // Send Transaction
  await provider.request({
    method: 'eth_sendTransaction',
    params: [
      {
        from,
        to,
        value,
        gasLimit,
        gasPrice,
        type,
        data,
      }
    ]
  });

  // Add Ethereum Chain
  await provider.request({
    method: 'wallet_addEthereumChain',
    params: [
      {
        chainId,
        rpcUrls: [
          'https://http-mainner-node.huobichain.com',
          'https://http-mainner.hecochain.com',
        ],
        chainName: 'Huobi ECO Chain',
        nativeCurrency: { name: 'HECO', decimals: '18', symbol: 'HT' },
        blockExplorerUrls: ['https://hecoinfo.com'],
      }
    ]
  });

  // Sign
  await provider.request({
    method: 'eth_sign',
    params: ['accounts', 'msg'],
  });

  // Personal Sign
  await provider.request({
    method: 'personal_sign',
    params: ['msg', 'from'],
  });

  //  eth_signTypedData_v4
  await provider.request({
    method: 'eth_signTypedData_v4',
    params: ['accounts','typedata msg'],
  });

  // Personal Sign Verify
  await provider.request({
    method: 'personal_ecRecover',
    params: ['msg', 'sign'],
  });
});
```
### Aptos

```Javascript
import '@openblockhq/dappsdk';

window.addEventListener('DOMContentLoaded', () => {
  const provider = window.openblock.aptos;

  // connect 
  const account = await provider.connect();

  // Sign And Submit Transaction
  await provider.signAndSubmitTransaction({
    type: 'entry_function_payload',
    function: '0x1::managed_coin::register',
    arguments: [],
    type_arguments: [
      'address::move_coin::MoveCoin',
    ],
  });

  // Sign Message
  const signed = await provider.signMessage({
    address: true,
    application: true,
    chainId: true,
    message: 'hello world!',
    nonce: 888,
  });

  // Get Account
  const account = await provider.account();

  // Get Network
  const network = await provider.network();

  // Disconnect
  await provider.disconnect();

  // Check isConnected
  await provider.isConnected();

  // On Account Change
  await provider.onAccountChange((account) => {
    // handler
  });

  // On Network Change
  await provider.onNetworkChange((network) => {
    // handler
  });
});
```

### Starcoin

```Javascript
import '@openblockhq/dappsdk';
import { providers } from '@starcoin/starcoin';

window.addEventListener('DOMContentLoaded', () => {
  const provider = new providers.Web3Provider(window.obstarcoin, 'any');

  // Config
  window.obstarcoin.autoRefreshOnNetworkChange = false;

  // On Chain Changed
  window.obstarcoin.on('chainChanged', () => {
    // handler
  });

  // On Network Changed
  window.obstarcoin.on('networkChanged', () => {
    // handler
  });

  // On Accounts Changed
  window.obstarcoin.on('accountsChanged', () => {
    // handler
  });

  // Connect
  window.obstarcoin.request({
    method: 'stc_requestAccounts',
  });

  // Get Accounts
  const accounts = await window.obstarcoin.request({
    method: 'stc_accounts',
  });

  // Get Chain
  const chainInfo = await window.obstarcoin.request({
    method: 'chin.id',
  });

  // Request Permissions
  const permissions = await window.obstarcoin.request({
    method: 'wallet_requestPermission',
    params: [{ stc_accounts: {} }]
  });

  // Get Permissions
  const permissions = await window.obstarcoin.request({
    method: 'wallet_getPermissions',
  });

  // Resolve Functions
  const funcInfo = await window.obstarcoin.request({
    method: 'contract.resolve_function',
    params: [functionId]
  });

  // Resolve Module
  const moduleInfo = await window.obstarcoin.request({
    method: 'contract.resolve_module',
    params: [moduleId],
  });

  // Personal Sign
  const sign = await window.obstarcoin.request({
    method: 'personal_sign',
    params: [msg, from , extraParams]
  });

  // Get Encryption Key
  const key = await window.obstarcoin.request({
    method: 'stc_getEncryptionPublicKey',
    params: [accounts[0]]
  });

  // Auto Accept Token
  const result = await window.obstarcoin.request({
    method: 'state.get_resource',
    params: [accounts[0], '0x1::Account::AutoAcceptToken'],
  });

  // Send Transaction
  const hash = await provider
    .getSigner()
    .sendUncheckedTransaction({
      to,
      value,
      gasPrice,
    });

  // Get Transaction
  const transaction = await provider.getTransactionInfo(transactionHash);

  // Get Token Address
  const result = await provider.call({
    function_id: `${accounts[0]}::ABC::token_address`,
    type_args: [];
    args: [],
  });

  // Call Function
  const result = await provider.send('contract.call_v2', [
    {
      function_id,
      type_args,
      args,
    },
  ]);
});
```

### Sui
```Javascript
import '@openblockhq/dappsdk';

window.addEventListener('DOMContentLoaded', () => {
  const provider = window.openblock.sui;

  // Connect
  provider.features['standard:connect'].connect();

  // Listen
  provider.features['standard:events'].on('event', () => {});

  // Execute Transaction
  provider.features['sui:signAndExecuteTransactionBlock'].signAndExecuteTransactionBlock({
    transactionBlock, // class TransactionBlock
    options,
  });

  // Sign Message
  provider.features['sui.signMessage'].signMessage({
    message // UInt8Array
  });
});
```

### Solana
```Javascript
import '@openblockhq/dappsdk';

window.addEventListener('DOMContentLoaded', () => {
  const provider = window.openblock.solana;

  // Connect
  provider.connect();

  /**
   * Sign And Send Transaction
   * @param transaction {Transaction | VersionedTransaction}
  */
  provider.signAndSendTransaction(transaction);

  /**
   * Sign Transaction
   * @param transaction {Transaction | VersionedTransaction}
  */
  provider.signTransaction(transaction);

  /**
   * Sign All Transactions
   * @param transactions {Array<Transaction | VersionedTransaction>}
  */
  provider.signAllTransactions([transaction1, transaction2]);

  /**
   * Sign Message
   * @param message {Uint8Array}
  */
  provider.signMessage(message);
});
```

---
_Source: https://npm.io/package/@openblockhq/dappsdk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
