namillum
Version:
Bubble Protocol SDK
57 lines (48 loc) • 1.56 kB
text/typescript
import { Contract } from '@ethersproject/contracts';
import { getAddress } from '@ethersproject/address';
import resolveENSContentHash from '@/helpers/resolveENSContentHash';
import { decodeContenthash } from '@/helpers/content';
import abi from '@/helpers/abi';
export async function resolveContent(provider, name) {
const contentHash = await resolveENSContentHash(name, provider);
return decodeContenthash(contentHash);
}
export async function signMessage(web3, msg) {
return await web3.wallet.sign(msg);
}
export async function getBlockNumber(provider) {
try {
const chainInfo: any = await provider.blockchain.getBlockChainInfo();
return parseInt(chainInfo.result.NumTxBlocks);
} catch (e) {
return Promise.reject();
}
}
export async function getTotalSupply(provider, address: string) {
const field = 'total_supply';
const res: any = await provider.blockchain.getSmartContractSubState(
address,
field
);
if (res && res['result'] && res['result']['total_supply']) {
return res['result']['total_supply'];
}
throw new Error('cannot fetch total_supply');
}
export async function sendTransaction(
web3,
[contractType, contractAddress, action, params]
) {
const signer = web3.getSigner();
const contract = new Contract(
getAddress(contractAddress),
abi[contractType],
web3
);
const contractWithSigner = contract.connect(signer);
const overrides = {};
// overrides.gasLimit = 12e6;
const tx = await contractWithSigner[action](...params, overrides);
await tx.wait();
return tx;
}