@d11k-ts/ethereum
v0.1.5
Published
ethereum module for d11k chain
Downloads
4
Readme
@d11k-ts/ethereum
Modules
Installation
yarn add @d11k-ts/ethereum
Documentation : Basic usage examples
Connect wallet to new EthereumClient
- Create new EthereumChain client
- Network default is
Mainnet
- InfuraApiKey: Optional (Api key provided by 'Infura' for mainnet calls. Sign up for getting one)
// Imports
import {Network} from '@d11k-ts/client'
import {EthereumClient} from '@d11k-ts/ethereum'
//Connect wallet, validate address and check balance
const connectWallet = async () => {
let phrase = "phrase"
// Mainnet
const ethClient = new EthereumClient({
phrase
})
// testnet
// const ethClient = new EthereumClient({
// phrase,
// network: Network.DojTestnet,
// rpcUrl: 'https://eth-test.h4s.dojima.network/',
// If above rpc url doesn't work use below one
// rpcUrl: 'https://eth-test.h4s.dojima.network:9545/',
// network: Network.Testnet,
// rpcUrl: 'https://goerli.infura.io/v3/',
// infuraApiKey: '***********************',
// })
let address = ethClient.getAddress()
try {
const balance = await ethClient.getBalance(address)
console.log(`Adress: ${address} with balance ${balance}`)
} catch (error) {
console.log(`Caught: ${error} `)
}
}
Transfer eth using EthereumClient
- Create new EthereumClient instance
- Returns txHash as string
- Note: Uses only required gas for Tx and remaining will be sent back
const transferEth = async () => {
// First initiate EthereumClient
let amount = 0.001
let recipient = 'insert address'
console.log("Building transaction")
try {
const txid = await ethClient.transfer({
amount,
recipient,
// fee: number, // optional. Calculated by default(if not provided) based on input amount.
// memo: string, // optional
})
console.log(`Transaction sent: ${txid}`)
return txid
} catch (error) {
console.log(`Caught: ${error} `)
}
}
Get transaction Data
- Create new EthereumClient instance
- Call getTransactionData(hash) returns hash-details
- Call getTransactionsHistory(address) returns list of transactions (if any)
- Get 'Etherscan' api key for txs list
- Note : DojTestnet doesn't provide txs list
// Retrieve transaction data for a particular hash
const transactionData = async () => {
let hash = "insert hash"
try {
const txData = await ethClient.getTransactionData(
hash,
)
console.log(`Transaction data ${txData}`)
} catch (error) {
console.log(`Caught: ${error} `)
}
}
// Retrieve transaction history for a particular address
const transactionHistory = async () => {
let Address = ethClient.getAddress()
try {
const txHistory = await ethClient.getTransactionsHistory({
address: Address,
apiKey: '********',
})
console.log(`Found ${txHistory.total.toString()}`)
txHistory.txs.forEach(tx => console.log(tx))
} catch (error) {
console.log(`Caught: ${error} `)
}
}
Get transfer Fees estimations
- Retrieve estimated gas fees from ethereum client
// Retrieve fee estimations from transaction parameters
const feeEstimations = async () => {
let amountToTransfer = 0.001
try {
const fees = await ethClient.gasFees({
amount: amount,
// memo: string // optional
})
console.log(`Fees : ${fees}`)
} catch (error) {
console.log(`Caught: ${error} `)
}
}
Add ETH token into liquidity pool
- Add ETH tokens into liquidity pool
- Get Ethereum Inbound address from hermes chain
const addETHToLiquidityPool = async () => {
let amountToTransfer = 0.001
const inboundAddress = await ethClient.getEthereumInboundAddress()
try {
const liquidityPoolHash = await ethClient.addLiquidityPool(
amountToTransfer,
inboundAddress,
dojAddress, // optional dojima address
)
console.log('Liquidity pool hash : ', liquidityPoolHash)
} catch (error) {
console.log(`Caught ${error}`)
}
}
Swap ETH tokens
- Swap ETH tokens to required token using receiver address
- Get Ethereum Inbound address from hermes chain
- Supported tokens for swapping - 'DOT', 'DOJ', 'AR', 'SOL'
import {SwapAssetList} from '@d11k-ts/utils'
const swapETH = async () => {
let amountToTransfer = 0.001
const inboundAddress = await ethClient.getEthereumInboundAddress()
try {
const swapHash = await ethClient.swap(
amountToTransfer,
SwapAssetList,
inboundAddress,
reciepient // Respective receiver SwapAssetList token address
)
console.log('Swap tx hash : ', swapHash)
} catch (error) {
console.log(`Caught ${error}`)
}
}
Example Code
For sample code check out example test case in ./examples/test.ts