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 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
yarn add @openblockhq/dappsdk
Using SDK
Ethereum
import '@openblockhq/dappsdk';
window.addEventListener('DOMContentLoaded', () => {
const provider = window.openblock;
provider.autoRefreshOnNetworkChange = false;
provider.on('chainChanged', (chain) => {
});
provider.on('accountsChanged', (accounts) => {
});
const accounts = await provider.request({
method: 'eth_requestAccounts',
});
const chainId = await provider.request({
method: 'eth_chainId',
});
const networkId = await provider.request({
method: 'net_version',
});
const block = await provider.request({
method: 'eth_getBlockByNumber'
});
await provider.request({
method: 'wallet_switchEthereumChain',
params: [
{
chainId,
}
]
});
await provider.request({
method: 'eth_sendTransaction',
params: [
{
from,
to,
value,
gasLimit,
gasPrice,
type,
data,
}
]
});
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'],
}
]
});
await provider.request({
method: 'eth_sign',
params: ['accounts', 'msg'],
});
await provider.request({
method: 'personal_sign',
params: ['msg', 'from'],
});
await provider.request({
method: 'eth_signTypedData_v4',
params: ['accounts','typedata msg'],
});
await provider.request({
method: 'personal_ecRecover',
params: ['msg', 'sign'],
});
});
Aptos
import '@openblockhq/dappsdk';
window.addEventListener('DOMContentLoaded', () => {
const provider = window.openblock.aptos;
const account = await provider.connect();
await provider.signAndSubmitTransaction({
type: 'entry_function_payload',
function: '0x1::managed_coin::register',
arguments: [],
type_arguments: [
'address::move_coin::MoveCoin',
],
});
const signed = await provider.signMessage({
address: true,
application: true,
chainId: true,
message: 'hello world!',
nonce: 888,
});
const account = await provider.account();
const network = await provider.network();
await provider.disconnect();
await provider.isConnected();
await provider.onAccountChange((account) => {
});
await provider.onNetworkChange((network) => {
});
});
Starcoin
import '@openblockhq/dappsdk';
import { providers } from '@starcoin/starcoin';
window.addEventListener('DOMContentLoaded', () => {
const provider = new providers.Web3Provider(window.obstarcoin, 'any');
window.obstarcoin.autoRefreshOnNetworkChange = false;
window.obstarcoin.on('chainChanged', () => {
});
window.obstarcoin.on('networkChanged', () => {
});
window.obstarcoin.on('accountsChanged', () => {
});
window.obstarcoin.request({
method: 'stc_requestAccounts',
});
const accounts = await window.obstarcoin.request({
method: 'stc_accounts',
});
const chainInfo = await window.obstarcoin.request({
method: 'chin.id',
});
const permissions = await window.obstarcoin.request({
method: 'wallet_requestPermission',
params: [{ stc_accounts: {} }]
});
const permissions = await window.obstarcoin.request({
method: 'wallet_getPermissions',
});
const funcInfo = await window.obstarcoin.request({
method: 'contract.resolve_function',
params: [functionId]
});
const moduleInfo = await window.obstarcoin.request({
method: 'contract.resolve_module',
params: [moduleId],
});
const sign = await window.obstarcoin.request({
method: 'personal_sign',
params: [msg, from , extraParams]
});
const key = await window.obstarcoin.request({
method: 'stc_getEncryptionPublicKey',
params: [accounts[0]]
});
const result = await window.obstarcoin.request({
method: 'state.get_resource',
params: [accounts[0], '0x1::Account::AutoAcceptToken'],
});
const hash = await provider
.getSigner()
.sendUncheckedTransaction({
to,
value,
gasPrice,
});
const transaction = await provider.getTransactionInfo(transactionHash);
const result = await provider.call({
function_id: `${accounts[0]}::ABC::token_address`,
type_args: [];
args: [],
});
const result = await provider.send('contract.call_v2', [
{
function_id,
type_args,
args,
},
]);
});
Sui
import '@openblockhq/dappsdk';
window.addEventListener('DOMContentLoaded', () => {
const provider = window.openblock.sui;
provider.features['standard:connect'].connect();
provider.features['standard:events'].on('event', () => {});
provider.features['sui:signAndExecuteTransactionBlock'].signAndExecuteTransactionBlock({
transactionBlock,
options,
});
provider.features['sui.signMessage'].signMessage({
message
});
});
Solana
import '@openblockhq/dappsdk';
window.addEventListener('DOMContentLoaded', () => {
const provider = window.openblock.solana;
provider.connect();
provider.signAndSendTransaction(transaction);
provider.signTransaction(transaction);
provider.signAllTransactions([transaction1, transaction2]);
provider.signMessage(message);
});