Welcome to Coin98 Extension Wallet Developer Guide. This documentation contains guides for developers to get started developing on Coin98 Extension Wallet.
To detect Coin98 Extension with Viction
To detect whether your browser is running Coin98 Extension, please use:
if(window.coin98 ||window.ethereum ||window.ethereum?.isCoin98){console.log('Coin98 Extension is installed!');}
Notice: Coin98 Extension Testnet is under development and not available now. The Coin98 Extension on Ethereum JavaScript provider API is specified by EIP-1193. Support window.ethereum only and removal window.web3
To connect Coin98 Extension Wallet
To connect Coin98 Extension means to access the user's [blockchain - like Ethereum] account(s).
// Connect & get accountswindow.ethereum.request({method:'eth_accounts'});// Alias for connectionwindow.ethereum.request({method:'eth_requestAccounts'});//Check if dapp connectedwindow.ethereum.isConnected();//Check if the caller's current permissionswindow.ethereum.request({method:'wallet_getPermissions'});//Check if request the given permissions window.ethereum.request({method:'wallet_requestPermissions'});
To disconnect Coin98 Extension Wallet
To disconnect Coin98 Extension, please use:
window.ethereum.disconnect()
To experience functions
Once your account is connected, let's start experiencing more functions.
Get Current Account
return Promise<Array[String]>
If wallet can not be found, return [] instead of throw Error
window.ethereum.request({ method:'eth_accounts' }).then(accounts => {if (accounts[0]) {// Do something with accounts } else {// Wallet not found }})
return Promise<string>- The public encryption key of the Ethereum account whose encryption key should be retrived
let encryptionPublicKeywindow.ethereum.request({ method:'eth_getEncryptionPublicKey', params: [accounts[0]],// you must have access to the specified account }).then((result) => { encryptionPublicKey = result; }).catch((error) => {if (error.code ===4001) {// EIP-1193 userRejectedRequest errorconsole.log("We can't encrypt anything without the key."); } else {console.error(error); } });
You can connect and receive multiChain address at the same time by using the following methods
asyncfunctionconnect(){if(!window.coin98){thrownewError('Coin98 Extension is required'); }constaccounts=awaitwindow.coin98.connect([<chain 1>, <chain 2>, ...]); if(!accounts){thrownew Error('Connect Error | Usercancelyour request'); }// Do anything with accounts:[<address of chain 1>, <address of chain 2>]}
When your connection is success, chain's properties will be available for your next request. For example:
// For example | connect ether & solanaasyncfunctionconnect(){constconn=awaitwindow.coin98.connect(['ether','solana']);// If user accept the request, those properties will available at window.coin98;// window.solana || Checkout document of solana connection guide for more methods;// window.ether || Checkout document of ether connection guide for more methods;}
Chain's Name can be found at
const { CHAIN_NAME } =window.coin98
Subscription
Support subscribe using JSON-RPC notifications. This allows clients to wait for events instead of polling for them. All result will be release at data event.
Methods
// For Subscribewindow.ethereum.request({ method:'eth_subscribe', params: ['<type>','<options>']})// Its result will be subscription ID which can be used for unsubscribe// For Unsubscribewindow.ethereum.request({ method:'eth_unsubscribe', params: ['<Subscription ID>']});
Example
// Subscribe for eventconstsubscriptionID=window.ethereum.request({ method:'eth_subscribe', params: ["logs", { address:"0x8320fe7702b96808f7bbc0d4a888ed1468216cfd", topics: ["0xd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902"]}]})// You can listen for incoming notifications bywindow.ethereum.on("data", data => {// Do the rest of your work with data})
To handle events
List of events
Currently we only support some action event from wallet extension