Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@blockchain-web3/web3-tg-sdk

Package Overview
Dependencies
Maintainers
0
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@blockchain-web3/web3-tg-sdk

web3 sdk for tg

  • 0.1.9
  • latest
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

resource

  • tg-dapp-demo
  • quickstart
  • API guide
  • @rainbow-me/rainbowkit and wagmi

Install

npm install @uxuycom/web3-tg-sdk

Usage Etherum Provider API

import { WalletTgSdk } from 'https://cdn.jsdelivr.net/npm/@uxuycom/web3-tg-sdk';

import { WalletTgSdk } from '@uxuycom/web3-tg-sdk'

const { ethereum } = new WalletTgSdk({
    metaData: {
        name: 'your name',
        icon:"https://example.com/icon.png"
       
    }
})


The supported methods are consistent with the main methods of the official website

support version >=0.1.0

    import TronLinkProvider from '@uxuycom/web3-tg-sdk/dist/tronLinkProvider.es'

    const tronLink = new TronLinkProvider({
        injected: true, // Whether TronLink is injected into the window. `window.tronLink`
        metaData: {
            name: 'your name',
            icon:"https://example.com/icon.png"
        }
    });


MetaMask Standard Wallet Integration (Beta)

Based on your request, I'll rephrase the content in the image using more professional open-source project terminology:

MetaMask Standard Wallet Integration (Beta)

We are pleased to announce the integration of MetaMask's standard wallet. Connection can now be established with a single line of code.

Current Status:

  • Standard API mode support implemented
  • Full MetaMask feature set not yet supported
  • Incremental functionality enhancements planned

Code snippet for connection:

import { WalletTgSdk } from '@uxuycom/web3-tg-sdk'
const { ethereum } =  new WalletTgSdk({ 
  injected: true  // Whether ethereum is injected into the window; if MetaMask is present, it will not be injected.
})

//Trigger Telegram
ethereum
// use window.ethereum to interact with the wallet
window.ethereum

Ethereum Provider API

Supported Networks: [Additional details would be listed here]

Note: This beta release focuses on core functionality. We appreciate community feedback as we work towards expanding capabilities and refining the integration.

Ethereum Provider API

Supported Chains

The UXUY Wallet Connection is designed to be multi-chain. The following chains are supported:

ChainChainID
Ethereum1 (0x1)
BNB Chain56 (0x38)
Base8453 (0x2105)
Arbitrum42161 (0xa4b1)
Polygon137 (0x89)
Fantom250 (0xfa)
Optimism10 (0xa)
Avalanche C-Chain43114 (0xa86a)
zkSync Era324 (0x144)
Linea59144 (0xe708)
Core1116 (0x45c)
zkLink810180 (0xc5cc4)

request Api

The request method is used to make RPC requests to the connected wallet. It takes an object with the following properties:

  • id (optional): A number or string that identifies the request.
  • method: The RPC method to request.
  • params (optional): An array or object of parameters for the RPC method.

The method returns a Promise that resolves with the result of the RPC method call.


interface RequestArguments {
  id?:number | string
  /** The RPC method to request. */
  method: string;

  /** The params of the RPC method, . */
  params?: Array<unknown> | object;
}

ethereum.request = (args: RequestArguments): Promise<any>

from UXuy Wallet rpc api

eth_requestAccounts

connect to the wallet and return the address of the connected wallet.

  • method: eth_requestAccounts
  • params: [] |
  • returns: Promise<string[address]>

 ethereum.request({ method: 'eth_requestAccounts' })

eth_accounts

return the address of the connected wallet.

  • method: eth_accounts
  • params:
  • returns: Promise<string[address]>
 ethereum.request({ method: 'eth_accounts' })

eth_chainId

return the chainId of the connected wallet.

  • method: eth_chainId
  • params:
  • returns: Promise
 ethereum.request({ method: 'eth_chainId' })

wallet_switchEthereumChain

switch the connected wallet to the specified chainId.

  • method: wallet_switchEthereumChain
  • params:
    • chainId: number | string
  • returns: Promise
try {
  await ethereum.request({
    method: 'wallet_switchEthereumChain',
    params: [{ chainId: '0xf00' }],
  });
} catch (switchError) {
  // This error code indicates that the chain has not been added to Uxuy Wallet.
}
eth_sendTransaction

send a transaction to the connected wallet.

  • method: eth_sendTransaction
  • params:
    • transaction: TransactionObject
  • returns: Promise

const accounts = await ethereum.request({ method: 'eth_accounts', params: [{}] })  
const fromAddress =  ethereum.selectedAddress
const transactionParameters = {
  nonce: '0x00', // ignored by Uxuy Wallet
  gasPrice: '0x09184e72a000', // customizable by user during Uxuy Wallet confirmation.
  gas: '0x2710', // customizable by user during Uxuy Wallet confirmation.
  to: '0x0000000000000000000000000000000000000000', // Required except during contract publications.
  from:  fromAddress || accounts[0], // must match user's active address.
  value: '0x00', // Only required to send ether to the recipient from the initiating external account.
  data:
    '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', // Optional, but used for defining smart contract creation and interaction.
  chainId: '0x3', // Used to prevent transaction reuse across blockchains. Auto-filled by Uxuy Wallet.
};

 ethereum.request(
    { 
        method: 'eth_sendTransaction', 
        params: [ 
            transactionParameters
        ] 
    }
)

signData Api

  • personal_sign
  • eth_signTypedData
  • eth_signTypedData_v3
  • eth_signTypedData_v4

You can refer to docs signing-data-with-metamask eth-sig-util

personal_sign

sign a message with the connected wallet.

  • method: personal_sign
  • params:
    • message: string
    • address: string
  • returns: Promise
 ethereum.request({ method: 'personal_sign', params: ['hello', '0x1234567890'] })

eth_signTypedData_v3
  • params:
  • returns: Promise
 ethereum.request({ method: 'eth_signTypedData_v3', params: [{}, '0x1234567890'] })
eth_signTypedData_v4
  • params:
  • returns: Promise
 ethereum.request({ method: 'eth_signTypedData_v4', params: [{}] })

Event listeners

Notify when address and network change. Uses eventemitter3.

accountChanged
  • params:
 ethereum.on('accountsChanged', handler: (accounts: Array<string>) => void);

 ethereum.on('accountChanged', (accounts) => {
    console.log(accounts || [])
})
chainChanged
  • params:

 ethereum.on('chainChanged', (chainId) => {
    console.log(chainId)
})
// remove all event listeners
ethereum.removeAllListeners();

function handleAccountsChainChanged() {
  ethereum.on('accountsChanged', ([address]) => {
    // Handle the new accounts, or lack thereof.
    // "accounts" will always be an array, but it can be empty.
    alert('address changed');
  });
  ethereum.on('chainChanged', async (chainId) => {
    // Handle the new chain.
    // Correctly handling chain changes can be complicated.
    // We recommend reloading the page unless you have good reason not to.
    alert('chainid changed');
  });
}


// add event listener
function handleAccountsChanged(accounts) {
  // ...
}
//remove
ethereum.removeListener('accountsChanged', handleAccountsChanged); // only remove one 
ethereum.on('accountsChanged', handleAccountsChanged);

Keywords

FAQs

Package last updated on 06 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc