web3.js
1 import Web3 from 'web3'; 2 3 export const connect = () => { 4 return new Promise(async (resolve,reject) => { 5 if (window.ethereum) { 6 const web3 = new Web3(window.ethereum); 7 try { 8 const accounts = await window.ethereum.enable(); 9 web3.eth.defaultAccount = accounts[0]; 10 resolve(web3); 11 } catch (error) { 12 reject(error); 13 } 14 } else if (window.web3) { 15 resolve(new Web3(window.web3.currentProvider)); 16 } else { 17 reject(Error('Non-Ethereum browser detected. You should use MetaMask!')); 18 } 19 }); 20 } 21 22 export const estimateGas = ({web3, contract, args}) => { 23 return new web3.eth.Contract(contract.abiDefinition) 24 .deploy({data: `0x${contract.code}`, arguments: args}) 25 .estimateGas({from: web3.eth.defaultAccount}); 26 } 27 28 export const deploy = ({web3, contract, args}) => { 29 return new Promise((resolve, reject) => { 30 new web3.eth.Contract(contract.abiDefinition) 31 .deploy({data: `0x${contract.code}`, arguments: args}) 32 .send({from: web3.eth.defaultAccount}) 33 .on('error', reject) 34 .on('receipt', resolve) 35 }); 36 }