@okwallet/extension
v1.0.19-beta
Published
OKX Wallet provides official SDK packages of multiple chains including [Ethereum](./wallet), [Aptos](./aptos-api), [Tron](./tron-api) and Solana. Developers can interact with different on-chain projects through OKX Wallet SDK.
Downloads
105
Readme
Introduction
OKX Wallet provides official SDK packages of multiple chains including Ethereum, Aptos, Tron and Solana. Developers can interact with different on-chain projects through OKX Wallet SDK.
Installation
Yarn
$ yarn add @okwallet/extension
npm
$ npm install --save @okwallet/extension
// https://www.npmjs.com/package/@okwallet/extension
Usage
ES6
import okxWeb3 from '@okwallet/extension';
console.log(okxWeb3);
Basic APIs
init
The initial access into OKX Wallet extension. You can achieve the following two functions with this method:
- Connecting to wallet
- Monitoring wallet account changes
Error Information
All errors follow this interface:
interface ProviderRpcError extends Error {
message: string;
code: number;
data?: unknown;
}
Returned Error Example
{
code: 4001;
message: 'Tx Signature: User denied transaction signature.';
stack: 'Error: Tx Signature: User denied transaction signature.';
}
Example
const success = (wallet) => {
// return wallet account information
console.log(wallet);
};
const changed = (wallet) => {
// return wallet account information
// if there is no wallet is connecting, it will be null
console.log(wallet);
};
const error = (error) => {
// Error returned when rejected
console.error(error);
};
const uninstall = () => {};
okxWeb3
.init({
success,
changed,
error,
uninstall,
})
.then((wallet) => {
// return wallet account information
console.log(wallet);
})
.catch((error) => {
// Error returned when rejected
console.error(error);
});
disconnect
Disconnect with wallet
import okWeb3 from '@okwallet/extension';
// only support extension
await okWeb3.disconnect();
addListener
import okWeb3 from '@okwallet/extension';
// add
okWeb3.addListener('connect', (isConnected) => {
console.log(isConnected); // boolean
});
okWeb3.addListener('disconnect', () => {});
okWeb3.addListener('connectWallet', (wallet) => {
console.log(wallet);
// [
// {
// keyringName: 'WalletA',
// name: 'Account01',
// address: [
// {
// address: '0x81Fc6F6E44a2313743bCAA060681d24597aDbDfB',
// coinType: '60',
// name: 'okc',
// }
// ]
// }
// ...
// ]
});
okWeb3.addListener('walletChanged', (wallet) => {
console.log(wallet);
});
okWeb3.addListener('accountChanged', (wallet) => {
console.log(wallet);
});
okWeb3.addListener('networkChanged', (chainId) => {
console.log(chainId);
});
okWeb3.addListener('streamFailed', () => {});
removeListener
import okWeb3 from '@okwallet/extension';
const changedCb = (wallet) => {
console.log(wallet);
};
// add
okWeb3.addListener('walletChanged', changedCb);
// remove
okWeb3.removeListener('walletChanged', changedCb);
getAddress
CHAINS objects are the correspondence between the chain and its name:
| Key | Value | | ----------- | ----------- | | BITCOIN | bitcoin | | ETHEREUM | ethereum | | APTOS | aptos | | OKC | okexchain | | BSC | bsc | | TRON | tron | | SOLANA | solana | | POLYGON | polygon | | AVAX | avax | | FTM | ftm | | ARBITRUM | arbitrum | | OPTIMISM | optimism | | CRONOS | cronos | | KLAYTN | klaytn | | KCC | kcc | | METIS | metis | | BOBA | boba | | GNOSIS | gnosis | | RONIN | ronin | | MOONRIVER | moonriver | | MOONBEAM | moonbeam | | HARMONY | harmony | | LITECOIN | litecoin | | BITCOINCASH | bitcoincash | | BITCOINSV | bitcoinsv | | ETHW | ethw | | ETHF | ethf |
import okWeb3 from '@okwallet/extension';
const { CHAINS } = okWeb3;
// get solana chain address
okWeb3
.getAddress(CHAINS.SOLANA)
.then((addr) => {
// return solana address
console.log(addr);
})
.catch((error) => {
// Error returned when rejected
console.log(error);
});
// get addresses of all chains
okWeb3
.getAddress()
.then((addrMap) => {
// return chain-address map
console.log(addrMap);
})
.catch((error) => {
// Error returned when rejected
console.log(error);
});
Send Transaction
EVM
import okWeb3 from '@okwallet/extension';
const { CHAINS } = okWeb3;
const payload = {
from: '0x2f00171409b0d4f08da9abe0b53815fa3c5c6596',
to: '0xd8E06c62ff0F6816487973d6EB7018C854599931',
data: '0x',
value: '0x00',
};
okWeb3
.sendTransaction({ chainName: CHAINS.OKC, payload })
.then((res) => {
console.log(res.hash);
})
.catch((error) => {
console.log(error);
});
Solana
import okWeb3 from '@okwallet/extension';
import {
Transaction,
SystemProgram,
LAMPORTS_PER_SOL,
PublicKey,
} from '@solana/web3.js';
const { CHAINS } = okWeb3;
const transaction = new Transaction({
feePayer: okxwallet.solana.publicKey,
}).add(
SystemProgram.transfer({
fromPubkey: okxwallet.solana.publicKey,
toPubkey: new PublicKey('CS8ifB68oddKXdW87RAyrxFSoz1DMMcX9WsWeAgbYDCC'),
lamports: LAMPORTS_PER_SOL / 1000,
})
);
okWeb3
.sendTransaction({ chainName: CHAINS.SOLANA, payload: { transaction } })
.then((res) => {
console.log(res.hash);
})
.catch((error) => {
console.log(error);
});
Aptos
const { CHAINS } = okWeb3;
const payload = {
from: '0x2f7a44297ab64890dfb618202dd552033551b71ee9b36ad7d8b2ff8b805e0281',
function: '0x1::aptos_account::transfer',
arguments: [
'0xd8a97d57565ca32babc4fca6498dbc3599ee4c23690287f76941df23c6c3aca3',
'500000',
],
};
okWeb3
.sendTransaction({ chainName: CHAINS.APTOS, payload })
.then((res) => {
console.log(res.hash);
})
.catch((error) => {
console.log(error);
});
Sign Personal Message
EVM
import okWeb3 from '@okwallet/extension';
const { CHAINS } = okWeb3;
const payload = {
message: 'test message',
account: '0xec92d8ea11587892f0516c19dcb1f8fd72993584',
};
okWeb3
.signMessage({ chainName: CHAINS.OKC, payload })
.then((signature) => {
console.log(signature);
})
.catch((error) => {
console.log(error);
});
Solana
import okWeb3 from '@okwallet/extension';
const { CHAINS } = okWeb3;
const payload = {
message: 'test message',
};
okWeb3
.signMessage({ chainName: CHAINS.SOLANA, payload })
.then((signature) => {
console.log(signature);
})
.catch((error) => {
console.log(error);
});
Aptos
import okWeb3 from '@okwallet/extension';
const { CHAINS } = okWeb3;
const payload = {
message: 'test message',
nonce: 1,
};
okWeb3
.signMessage({ chainName: CHAINS.APTOS, payload })
.then((signature) => {
console.log(signature);
})
.catch((error) => {
console.log(error);
});
Aptos
Special methods for Aptos are shown below. Methods of okWeb3.aptos objects are required to call Aptos chain.
Register Coin
import okWeb3 from '@okwallet/extension';
okWeb3.aptos
.registerAptosCoin({
contractAddress:
'0xa2eda21a58856fda86451436513b867c97eecb4ba099da5775520e0f7492e852::coin::T',
})
.then((hash) => {
console.log(hash);
})
.catch((error) => {
console.log(error);
});
Acquire Transaction Status by Hash
import okWeb3 from '@okwallet/extension';
okWeb3.aptos
.getAptosTransaction(
'0x042d2a5ce883e4c8e13351b9053ec0ec86728a88ba07331cd5389816930bdb31'
)
.then((status) => {
console.log(status);
})
.catch((error) => {
console.log(error);
});
Acquire Balance
- Main chain tokens
import okWeb3 from '@okwallet/extension';
okWeb3.aptos
.getAptosBalance({
address:
'0xcd30fbbda98b2aed026772c13e5ed90a7f056b589ef9e78cd96415e1af12451c',
currency: '0x1::aptos_coin::AptosCoin',
})
.then((value) => {
alert(value);
})
.catch((error) => {
console.log(error);
});
- Token
import okWeb3 from '@okwallet/extension';
okWeb3.aptos
.getAptosBalance({
address:
'0x253869f4b71ac5786c49c42b51faa0d0a58ff551cb9a7c267aaaa42018c89dd7',
currency:
'0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT',
})
.then((value) => {
console.log(value);
})
.catch((error) => {
console.log(error);
});
Check and Register Coin
import okWeb3 from '@okwallet/extension';
okWeb3.aptos
.checkAndRegAptosCoin({
address:
'0x253869f4b71ac5786c49c42b51faa0d0a58ff551cb9a7c267aaaa42018c89dd7',
currency:
'0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT',
})
.then((res) => {
const { registered, hash } = res;
console.log(registered);
if (!registered) {
console.log(res.hash);
}
})
.catch((error) => {
console.log(error);
});